在 Windows 操作系统中,不同的分区可以理解为对应不同的盘符,例如可以将硬盘分为C盘、D盘等,如果接入了新的硬盘,则可分为E盘、F盘。
但在Linux操作系统中,则是以 目录树 的形式展现,所有的文件及目录都是从 根目录 / 开始的,以常见的服务器硬盘结构为例,系统盘通常可以理解对应为 根目录 / ,如果服务器此时有数据盘,那么就需要先对数据盘进行分区,然后将其挂在根目录上,此操作称为“挂载”
如下图所示,在 Linux 中,并没有并列存在的分区结构,如 Windows 中的C盘、D盘、E盘等,而是均以 根目录 / 做为起点,树型结构分布的。
挂载要求
挂载可以扩展根分区的存储量,使得Linux系统可以访问其他存储设备的数据。挂载操作通常需要指定要挂载的设备(如硬盘分区或设备文件)和挂载点(即目录)。
挂载点目录的相关要求:
1、挂载点目录必须存在,且最好为空目录。
2、同一挂载点不可重复挂载多个文件系统。
3、同一文件系统不可重复挂载在多个挂载点。
4、如果是一个全新的硬盘设备,应该先分区,然后格式化文件系统,最后再挂载才能正常使用。
分区、格式化操作可参考教程:【Linux入门】磁盘分区、格式化
如果挂载点的目录事先存在并且不为空,那么做为挂载点后,原目录就被隐藏起来了,当挂载点被卸载后,原目录中的文件将会被显示出来。
举例说明:如果 /home 目录本身存在,并且有文件 1.txt ,如果此时该目录被做为挂载点挂载了新的硬盘分区,那么再次进入到 /home 目录时,则相当于进入了新硬盘分区中,看到的数据也为新的分区中的数据,当挂载点被卸载后,又能看到 1.txt 文件了。
挂载与卸载命令 mount / unmount
mount 命令用于在 Linux 中挂载文件系统,unmount 命令用于卸载一个已挂载的文件系统。
需要注意:
1、mount 挂载并非永久的,为临时性挂载,在操作系统重启时就会失效。 2、在尝试卸载文件系统之前,应确保没有进程正在使用该文件系统,否则卸载操作可能会失败。
命令格式及示例:
# 挂载,将分区 /dev/vdb1 挂载至 /home 目录
mount /dev/vdb1 /home
# 卸载,将分区 /dev/vdb1 从挂载点上卸载
umount /dev/vdb1
命令练习:假设服务器有1块系统盘+1块数据盘,且数据盘已完成分区、格式化,现将分区挂载至空目录 /home 上。
# 1、输入命令
fdisk -l
#可能返回以下内容,存在分区 /dev/vdb1
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 104857566 52427759+ 83 Linux
Disk /dev/vdb: 75.2 GB, 75161927680 bytes, 146800640 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x093bd493
Device Boot Start End Blocks Id System
/dev/vdb1 2048 146800639 73399296 83 Linux
# 2、输入命令
df -TH
# 可能返回以下内容,发现分区 /dev/vdb1 尚未挂载至系统中
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs tmpfs 1.1G 25k 1.1G 1% /dev/shm
tmpfs tmpfs 1.1G 496k 1.1G 1% /run
tmpfs tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/vda1 ext4 53G 2.5G 49G 5% /
tmpfs tmpfs 210M 0 210M 0% /run/user/0
# 3、挂载分区
mount /dev/vdb1 /home
# 4、输入命令
df -TH
# 可能返回以下内容,此时分区 /dev/vdb1 已成功挂载 /home
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs tmpfs 1.1G 25k 1.1G 1% /dev/shm
tmpfs tmpfs 1.1G 496k 1.1G 1% /run
tmpfs tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/vda1 ext4 53G 2.5G 49G 5% /
tmpfs tmpfs 210M 0 210M 0% /run/user/0
/dev/vdb1 ext4 74G 55M 71G 1% /home
# 5、卸载分区
umount /dev/vdb1
# 6、输入命令
df -TH
# 可能返回以下内容,发现分区 /dev/vdb1 已从挂载点中卸载
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs tmpfs 1.1G 25k 1.1G 1% /dev/shm
tmpfs tmpfs 1.1G 496k 1.1G 1% /run
tmpfs tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/vda1 ext4 53G 2.5G 49G 5% /
tmpfs tmpfs 210M 0 210M 0% /run/user/0
永久性挂载 /etc/fstab
挂载可分为永久性挂载和临时性挂载两种方式。mount 命令为临时性挂载,在操作系统重启时就会失效。而永久性挂载则需要修改配置文件/etc/fstab
,将需要挂载的文件系统写入这个配置文件中,再使用命令 mount -a
让配置信息生效,挂载的文件即可使用,重启后挂载仍然有效。
/etc/fstab 配置文件格式说明
# 输入命令
vim /etc/fstab
# 打开文件默认内容如下
#
# /etc/fstab
# Created by anaconda on Thu Mar 7 06:38:37 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=4b499d76-769a-40a0-93dc-4a31a59add28 / ext4 defaults 1 1
以上内容为系统默认值,最好不要修改,如有新的挂载点,只需另起一行添加即可。
/etc/fstab文件中的每一行代表一个挂载信息,包含六个字段,分别是:
第一列:设备名或者设备卷标名。示例中为:UUID=4b499d76-769a-40a0-93dc-4a31a59add28
第二列:挂载点。挂载点必须是一个已存在的目录。示例中为:/
第三列:文件系统类型。例如ext4、xfs等。示例中为:ext4
第四列:挂载选项,多个选项之间用逗号分隔。默认的挂载选项为defaults。示例中为:defaults
第五列:是否进行dump备份,一般设为0。示例中为:1
第六列:是否使用fsck检查文件系统,一般设为0表示不检查,1表示最先检查,2表示其次检查(当fsck的优先级高于其他文件系统时)。示例中为:1
/etc/fstab 配置修改示例
通过以上格式说明,结合练习示例,可使用以下命令修改配置文件。
# 查看编辑配置文件
vim /etc/fstab
# 可能返回以下内容
UUID=4b499d76-769a-40a0-93dc-4a31a59add28 / ext4 defaults 1 1
# 添加以下内容,退出保存
/dev/vdb1 /home ext4 defaults 0 0
也可以使用以下命令实现相同的效果(与上述操作不可重复)
echo '/dev/vdb1 /home ext4 defaults 0 0'>> /etc/fstab
输入命令使挂载配置生效
# 按配置文件 /etc/fstab 的内容完成挂载
mount -a
# 查看磁盘情况
df -TH
# 测试重启后是否自动挂载
reboot
# 重启后输入命令查看磁盘情况
df -TH
如需取消永久性挂载,只需编辑配置文件/etc/fstab
,将对应的挂载信息删除即可。