若想访问根文件系统之外的文件系统,必将将其关联到某个目录上来实现,此操作即为挂载(mount),此目录即为挂载点(mount point),挂载点就是访问另一个文件系统的入口。
显示系统当前已挂载的所有设备:
- 直接使用
mount
命令 - 直接查看
/etc/mtab
的内容,所有的挂载和卸载操作都会实时同步更新到/etc/mtab
文件。 - 查看伪文件系统
cat /proc/mounts
挂载点的特点:
- 未使用且不会被其他进程使用的目录
- 挂载点下原有的文件将会被隐藏
mount命令
mount [-fnrsvw] [-t vfstype] [-o options] [device] dir
选项 | 作用 |
---|---|
-r, --read-only | readonly,只读挂载,比如光驱 |
-w, --rw, --read-write | read and write , 读写挂载,默认的挂载方式 |
-n, --no-mtab | 挂载的时候,禁止同步更新到/etc/mtab 文件 |
-t VFS_TYPE | 指明挂载设备的文件类型,多数情况的可以省略,mount 会根据blkid 命令自动判断挂载设备的文件系统类型 |
-L LABEL | 挂载时,以卷标的方式指定设备 |
-U UUID | 挂载时,以uud 的方式来指定设备 |
-o option,option,option...
选项 | 作用 |
---|---|
sync/async | 同步/异步执行对挂载设备的操作 |
atime/noatime | 文件/目录在被访问时,是否会自动更新访问时间戳 |
diratim/nodiratime | 目录被访问时,是否更新访问时间戳 |
remount | 重新挂载,包含了卸载,再挂载两个动作 |
acl | 支持访问控制列表 |
ro | 只读 |
rw | 读写 |
auto/noauto | 是否允许自动挂载 |
user/nouser | 是否允许普通用户挂载此设备 |
suid/nosuid | 是否允许suid/sgid 权限 |
dev/nodev | 是否允许创建设备文件 |
exec/noexec | 是否允许此设备上的文件运行 |
defaults | 默认配置:rw, suid, dev, exec, auto, nouser, and async. |
挂载本地回环文件
回环设备( loopback device
)允许用户以一个普通磁盘文件虚拟一个块设备。设想一个磁盘设备,对它的所有读写操作都将被重定向到读写一个名为disk-image
的普通文件而非操作实际磁盘或分区的轨道和扇区。(当然,disk-image 必须存在于一个实际的磁盘上,而这个磁盘必须比虚拟的磁盘容量更大。)回环设备允许你这样使用一个普通文件。
比如光盘镜像文件也可以看做是一个回环设备,如果想将其作为光盘挂载,可以使用-o loop
参数。
$ mkdir loop
$ sudo mount -o loop /vagrant_data/deepin-20-beta-amd64.iso loop
$ mount | grep "loop"
/vagrant_data/deepin-20-beta-amd64.iso on /tmp/loop type iso9660 (ro,relatime)
$ cd loop
$ ll
total 61
drwxr-xr-x. 1 root root 2048 4月 15 09:18 boot
drwxr-xr-x. 1 root root 2048 4月 15 09:10 dists
drwxr-xr-x. 1 root root 2048 4月 15 09:18 EFI
drwxr-xr-x. 1 root root 4096 4月 15 09:18 isolinux
drwxr-xr-x. 1 root root 2048 4月 15 09:18 live
-rw-r--r--. 1 root root 39421 4月 15 09:18 md5sum.txt
drwxr-xr-x. 1 root root 2048 4月 15 09:18 oem
drwxr-xr-x. 1 root root 2048 4月 15 09:10 pool
drwxr-xr-x. 1 root root 2048 4月 15 09:18 preseed
-rw-r--r--. 1 root root 3795 4月 15 09:18 README.diskdefines
目录绑定
可以使用mount
来实现将一个目录绑定到另一个目录上,做为临时访问入口mount --bind <source dir> <target dir>
$ mkdir /tmp/opt
$ sudo mount --bind /opt /tmp/opt
umount命令
卸载已经挂载的设备,umount {device,dir}
,正在被进程访问的设备挂载点无法卸载。
查看文件正在被哪些进程所占用:
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有正在访问某挂载点的进程:
fuser -km MOUNT_POINT
开机自动挂载
/etc/fstab
用于保存开机自动挂载设备的配置。若要某个设备在开机的时候就自动挂载,在这个文件中配置就可以。
$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Jun 1 17:13:31 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=8ac075e3-1124-4bb6-bef7-a6811bf8b870 / xfs defaults 0 0
/swapfile none swap defaults 0 0
以我centos7
根文件系统的自动挂载为例,看下/etc/fstab
的结构。
UUID=8ac075e3-1124-4bb6-bef7-a6811bf8b870 / xfs defaults 0 0
UUID=8ac075e3-1124-4bb6-bef7-a6811bf8b870 | 要挂载的设备文件,有三种方式: 1. 使用 /dev/sdb5 ,直接指定设备文件2. 使用 LABEL=LABEL_NAME 指定挂载的设备3. 使用 UUID=UUID_CONTENT 指定挂载的设备 |
/ | 挂载点,swap 类型的文件系统挂载点为none |
xfs | 文件系统类型 |
defaults | 挂载选项,defaults 表示默认,这里的内容和mount -o 配置的内容相同,可以通过逗号分割,配置更多。 |
0 | 转储频率 0从不备份 1每天备份 2每隔一天备份 |
0 | 自检次序 0从不自检 1 首先自检,一般是跟文件系统 2 次级自检 3… |
mount -a
可自动挂载定义在/etc/fstab
中所有支持自动挂载的设备。
df/du
df命令
Linux df命令用于显示已挂载文件系统的使用情况。格式:df [选项]... [DEVICE|FILE]...
,若为非磁盘设备文件,则列出文件所在文件系统的情况,否则列出指定文件系统的情况。
参数 | 作用 |
---|---|
-h, --human-readable | 使用人类可读的格式 |
-H | 很像 -h, 但是用 1000 为单位而不是用 1024 |
-k | 以 KB 为单位输出文件系统分区使用情况 |
-m | 以 MB 为单位输出文件系统分区使用情况 |
-a | 列出所有的文件系统分区,包含大小为 0 的文件系统分区。 |
-i, --inodes | 列出inode 的使用情况 |
-t, --type=TYPE | 列出类型为TYPE 的文件系统 |
-T, --print-type | 列出文件系统的类型 |
-x, --exclude-type=TYPE | 不要列出类型为TYPE 的文件系统 |
查看各个挂载点,inode
的使用情况
查看各个挂载点的文件系统类型
查看某个目录所在分区的磁盘使用情况:
$ df -h /etc/profile
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 14G 27G 35% /
du 命令
通常使用ls
去查看一个目录的时候,会发现它的大小显示的都是几十或者十几kb
,而不是目录下所有文件的实际大小的和,因为ls
显示的只是目录列表在文件系统中所占块的大小,而没有将目录下的所有文件大小加起来。
du
命令可以显示目录/文件所占用磁盘实际空间大小。从下面的示例可以看出区别。
$ ls -ldh /etc
drwxr-xr-x. 83 root root 8.0K 6月 19 02:01 /etc
$ sudo du -sh /etc
36M /etc
命令格式du [option] 文件/目录
参数 | 作用 |
---|---|
-h, --human-readable | 以容易理解的格式(给人看的格式)输出文件系统分区使用情况 |
-H | 很像 -h, 但是用 1000 为单位而不是用 1024 |
-D | 显示指定符号连接的源文件大小。 |
-s | 仅显示总计大小 |
-S | 显示目录的大小时,并不含其子目录的大小。 |
-m | 以 MB 为单位输出文件系统分区使用情况 |
–exclude=<目录或文件> | 略过指定的目录或文件 |
–max-depth=<目录层数> | 超过指定层数的目录后,予以忽略。 |
-h 以容易理解的格式(给人看的格式)输出文件系统分区使用情况,例如 10kB、10MB、10GB 等。
显示文件或整个目录的大小,默认单位为 kB。