文件系统的简单操作

文件系统的简单操作

1.df和du命令

df

列出文件系统的整体磁盘使用量,df读取的数据几乎针对一整个文件系统,因为读取范围是超级区块内的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@vultr ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 214728 0 214728 0% /dev
tmpfs 246392 0 246392 0% /dev/shm
/dev/vda1 10291200 2231176 7519412 23% /
# Filesystem表示文件系统在哪个磁盘分区
# 1K-blocks表示单位为1k,可以利用-h来变成人们易于理解的单位格式
# Mounted on表示挂载点
--------------------------------------------------------------
[root@vultr ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 210M 0 210M 0% /dev
tmpfs 241M 0 241M 0% /sys/fs/cgroup
/dev/vda1 9.9G 2.2G 7.2G 23% /
--------------------------------------------------------------
[root@vultr ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 210M 0 210M 0% /dev
tmpfs tmpfs 241M 0 241M 0% /sys/fs/cgroup
/dev/vda1 ext4 9.9G 2.2G 7.2G 23% /
# Type表示文件系统类型

du

du不同于df,du会在整个文件系统内去查找所有的文件数据

2.硬件链接和软链接(符号链接)

2.1硬件链接

目录的数据区块下新增一条文件名链接到某个inode号码的关联记录。即多个文件名对应到同一个inode号码。

硬链接的限制:1.不能跨文件系统。2.不能连接目录

1
2
3
4
5
6
7
8
9
[root@vultr tmp]# ll -i
total 4
11618 -rw-r--r-- 1 root root 0 Apr 18 06:16 test
[root@vultr tmp]#
[root@vultr tmp]# ln test zhang
[root@vultr tmp]# ll -i
total 4
11618 -rw-r--r-- 2 root root 0 Apr 18 06:16 test
11618 -rw-r--r-- 2 root root 0 Apr 18 06:16 zhang

2.2符号链接

符号链接就是建立一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名

当源文件被删除后,符号链接的文件就会打不开。类似于是Windows下的快捷方式

需要注意的是,通过符号链接进入到了某个目录或是打开了某个文件。操作的对象实际上还是原始文件。所以你在符号链接里面打开了东西,进行了操作,那原始文件也会发生改变。如果你在符号链接里面把内容删除了,相当于原始文件的实际内容也删除了。

1
2
3
4
5
6
[root@vultr tmp]# ln -s test zhangshuaiyang            加上-s就是符号链接,不加是硬链接
[root@vultr tmp]# ll -i
total 4
11618 -rw-r--r-- 2 root root 0 Apr 18 06:16 test
11618 -rw-r--r-- 2 root root 0 Apr 18 06:16 zhang
23193 lrwxrwxrwx 1 root root 4 Apr 18 06:43 zhangshuaiyang -> test

3.磁盘分区、格式化、检验及挂载

如果想在系统里面新增一块硬盘,操作过程如下:

  1. 对磁盘进行划分,进行磁盘分区
  2. 对分区进行格式化,以建立文件系统
  3. 对文件系统进行检验(可选)
  4. 在linux系统上,建立一个挂载点(目录),把该文件系统挂载上来

3.1查看磁盘分区状态

lsblk(list block device)显示出所有存储设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@vultr tmp]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
#name表示设备文件名,会省略/dev等前面的目录;disk表示一整块磁盘;part表示分区
#在vda这个磁盘下,有一个分区vda1
----------------------------------------------------------
[root@vultr tmp]# lsblk -ipf 通过-f选项可以列出UUID
NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/sr0
/dev/vda
`-/dev/vda1 ext4 19c82273-828c-4d85-bc4e-6fc269acc524 /
-----------------------------------------------------------
[root@vultr tmp]# blkid 通过blkid也可以显示出UUID
/dev/vda1: UUID="19c82273-828c-4d85-bc4e-6fc269acc524" TYPE="ext4"

parted列出磁盘的分区表类型及分区信息

1
2
3
4
5
6
7
8
9
[root@vultr tmp]# parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos #分区表格式,比如MBR/GPT,这里显示的是msdos
Disk Flags:
#下面内容是分区数据
Number Start End Size Type File system Flags
1 1049kB 10.7GB 10.7GB primary ext4 boot

3.2磁盘分区

MBR分区表使用fdisk工具进行,GPT分区表使用gdisk工具进行。

3.3磁盘格式化

所谓格式化,其实是指在分区上创建文件系统。使用的命令是mkfs(make filesystem)

如果我们要创建的文件系统是xfs。那么命令的写法就是mkfs.xfs。例如mkfs.xfs /dev/vda4,表示在/dev/vda4这个分区上建立一个xfs文件系统。

如果是创建ext4文件系统。则命令写法是mkfs.ext4。只是xfs的文件系统建立起来速度更快。

想知道能创建哪些文件系统。只要再命令行中输入mkfs[tab][tab],就能看到了。

3.4文件系统的挂载

注意点:

  1. 单一文件系统不要被重复挂载到不同的挂载点中
  2. 单一目录不要重复挂载多个文件系统
  3. 作为挂载点的目录,最好是空目录
1
2
3
4
5
[root@vultr tmp]# blkid                       
/dev/vda1: UUID="19c82273-828c-4d85-bc4e-6fc269acc524" TYPE="ext4"

[root@vultr tmp]# mount UUID="19c82273-828c-4d85-bc4e-6fc269acc524" /data/ext4
其中UUID表示文件系统的ID。/data/ext4表示挂载点。也就是说把这个文件系统挂载在/data/ext4目录下。