19.2. 挂载文件系统
要附加某个文件系统,请使用以下格式的 mount 命令:
mount [option…] device directory
$ mount [option…option…] device directory
该设备 可通过以下方法识别:
- 块设备 的完整路径:例如
/dev/sda3
- 通用唯一标识符 (UUID):例如
UUID=34795a28-ca6d-4fd8-a347-73671d0c19cb
- 卷标签 :例如
LABEL=home
请注意,尽管挂载了文件系统,但无法访问 directory 中的原始内容。
重要:确保目录没有被使用
Linux 不阻止用户将文件系统挂载到已附加到其上的目录。要确定特定目录是否充当挂载点,请使用目录作为其参数运行 findmnt 工具,并验证退出代码:
findmnt directory; echo $?
findmnt directory; echo $?
如果没有将文件系统附加到目录,则给定命令会返回
1
。
当您运行不带所有所需信息的 mount 命令时,如果没有设备名称、目标目录或文件系统类型,挂载 会读取
/etc/fstab
文件的内容,以检查是否列出了给定的文件系统。/etc/fstab
文件包含设备名称列表、所选文件系统要挂载的目录,以及文件系统类型和挂载选项。因此,当挂载在 /etc/fstab
中指定的文件系统时,您可以选择以下选项之一:
mount [option…] directory mount [option…] device
mount [option…option…] directory
mount [option…option…] device
请注意,除非以
root
用户身份运行命令,否则挂载文件系统需要权限(请参阅 第 19.2.2 节 “指定挂载选项”)。
注: 确定 Particular 设备的 UUID 和标签
要确定 UUID 和-如果设备使用特定设备的标签,请使用以下格式的 blkid 命令:
blkid device
blkid device
例如:要显示
/dev/sda3
的信息:
blkid /dev/sda3
# blkid /dev/sda3
/dev/sda3: LABEL="home" UUID="34795a28-ca6d-4fd8-a347-73671d0c19cb" TYPE="ext3"
19.2.1. 指定文件系统类型 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在大多数情况下,mount 会自动检测文件系统。但是,有一些某些文件系统,如
NFS
(网络文件系统)或 CIFS
(通用互联网文件系统),它们不能被识别,需要手动指定。要指定文件系统类型,请使用以下格式的 mount 命令:
mount -t type device directory
$ mount -t type device directory
Type | 描述 |
---|---|
ext2 | ext2 文件系统。 |
ext3 | ext3 文件系统。 |
ext4 | ext4 文件系统。 |
btrfs | btrfs 文件系统。 |
xfs | xfs 文件系统。 |
iso9660 | ISO 9660 文件系统。它通常由光学介质(通常为 CD)使用。 |
nfs | NFS 文件系统。它通常用于通过网络访问文件。 |
nfs4 | NFSv4 文件系统。它通常用于通过网络访问文件。 |
udf | UDF 文件系统。它通常由光学介质(通常为 DVD)使用。 |
vfat | FAT 文件系统。它通常用于运行 Windows 操作系统的机器,以及某些数字媒体,如 USB 闪存驱动器或软盘。 |
有关示例用法,请查看 例 19.2 “挂载 USB 闪存驱动器”。
例 19.2. 挂载 USB 闪存驱动器
较旧的 USB 闪存驱动器通常使用 FAT 文件系统。假设此类驱动器使用
/dev/sdc1
设备,并且 /media/flashdisk/
目录存在,请以 root
用户身份在 shell 提示符后输入以下内容来将其挂载到此目录:
mount -t vfat /dev/sdc1 /media/flashdisk
~]# mount -t vfat /dev/sdc1 /media/flashdisk
19.2.2. 指定挂载选项 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要指定附加挂载选项,请使用以下格式的命令:
mount -o options device directory
mount -o options device directory
在提供多个选项时,不要在逗号后插入空格,或者 mount 会将以下空格的值错误地解析为额外的参数。
表 19.2 “常用挂载选项” 提供了常用挂载选项的列表.有关所有可用选项的完整列表,请参阅 “手册页文档”一节 中的相关手册页。
选项 | 描述 |
---|---|
async | 允许文件系统上的异步输入/输出操作。 |
auto | 允许使用 mount -a 命令自动挂载文件系统。 |
默认值 | 为 async,auto,dev,exec,nouser,rw,suid 提供别名。 |
exec | 允许在特定文件系统中执行二进制文件。 |
loop | 将镜像挂载为 loop 设备。 |
noauto | 默认行为不允许使用 mount -a 命令自动挂载文件系统。 |
noexec | 不允许在特定文件系统中执行二进制文件。 |
nouser | 不允许普通用户(即 root 以外的用户)挂载和卸载文件系统。 |
remount | 如果已经挂载文件系统,则会重新挂载文件系统。 |
ro | 仅挂载文件系统以读取。 |
rw | 挂载文件系统以进行读和写操作。 |
user | 允许普通用户(即 root 以外的用户)挂载和卸载文件系统。 |
有关示例用法,请查看 例 19.3 “挂载 ISO 镜像”。
例 19.3. 挂载 ISO 镜像
可以使用 loop 设备挂载 ISO 镜像(一般而言是磁盘镜像)。假设 Fedora 14 安装磁盘的 ISO 镜像存在于当前工作目录中,并且
/media/cdrom/
目录存在,请运行以下命令将镜像挂载到这个目录中:
mount -o ro,loop Fedora-14-x86_64-Live-Desktop.iso /media/cdrom
# mount -o ro,loop Fedora-14-x86_64-Live-Desktop.iso /media/cdrom
请注意,ISO 9660 设计为只读文件系统。
19.2.3. 共享挂载 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
有时,某些系统管理任务需要从目录树中的多个位置(例如,准备 chroot 环境时)访问同一文件系统。这可以实现,而且 Linux 允许您根据需要将同一文件系统挂载到多个目录。另外,mount 命令实现了
--bind
选项,它提供复制某些挂载的方法。其用法如下:
mount --bind old_directory new_directory
$ mount --bind old_directory new_directory
虽然此命令允许用户从两个位置访问文件系统,但它不适用于原始目录中挂载的文件系统。要包括这些挂载,请使用以下命令:
mount --rbind old_directory new_directory
$ mount --rbind old_directory new_directory
此外,为了提供尽可能多的灵活性,Red Hat Enterprise Linux 7 实现了称为 共享子树 的功能。此功能允许使用以下四种挂载类型:
- 共享挂载
- 共享挂载允许创建给定挂载点的精确副本。当挂载点标记为共享挂载时,原始挂载点中的任何挂载都会反映在其中,反之亦然。要将挂载点类型改为共享挂载,请在 shell 提示符下输入以下内容:
mount --make-shared mount_point
$ mount --make-shared mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,要更改所选挂载点的挂载类型,以及其下的所有挂载点:mount --make-rshared mount_point
$ mount --make-rshared mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关示例用法,请查看 例 19.4 “创建共享挂载点”。 - 从属挂载
- 从属挂载允许创建给定挂载点的有限副本。当挂载点标记为从属挂载时,原始挂载点中的任何挂载都会反映在其中,但从属挂载中的挂载不会反映在其原始挂载点中。要将挂载点类型改为从属挂载,在 shell 提示符下输入以下内容:
mount --make-slave mount_point
mount --make-slave mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,要更改所选挂载点的挂载类型,以及其下的所有挂载点,请输入:mount --make-rslave mount_point
mount --make-rslave mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关示例用法,请查看 例 19.5 “创建从属挂载点”。例 19.5. 创建从属挂载点
本例演示了如何使/media/
目录的内容也出现在/mnt/
中,但/mnt/
目录中的任何挂载都不会反映在/media/
目录中。以root
用户身份,首先将/media/
目录标记为共享:mount --bind /media /media mount --make-shared /media
~]# mount --bind /media /media ~]# mount --make-shared /media
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 然后,在/mnt/
中创建副本,但将其标记为"slave":mount --bind /media /mnt mount --make-slave /mnt
~]# mount --bind /media /mnt ~]# mount --make-slave /mnt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,验证/media/
中的挂载是否也出现在/mnt/
中。例如,如果 CD-ROM 驱动器包含非空介质,并且/media/cdrom/
目录存在,请运行以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 同时还要验证/mnt/
目录中挂载的文件系统没有反映在/media/
中。例如,如果插入了使用/dev/sdc1
设备的非空 USB 闪存驱动器,并且存在/mnt/flashdisk/
目录,请输入:mount /dev/sdc1 /mnt/flashdisk ls /media/flashdisk ls /mnt/flashdisk
~]# mount /dev/sdc1 /mnt/flashdisk ~]# ls /media/flashdisk ~]# ls /mnt/flashdisk en-US publican.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 私有挂载
- 私有挂载是默认挂载类型,与共享或从属挂载不同,它不接收或转发任何传播事件。要将挂载点显式标记为私有挂载,在 shell 提示符下输入以下内容:
mount --make-private mount_point
mount --make-private mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,也可以更改所选挂载点的挂载类型,以及其下的所有挂载点:mount --make-rprivate mount_point
mount --make-rprivate mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关示例用法,请查看 例 19.6 “创建私有挂载点”。例 19.6. 创建私有挂载点
考虑 例 19.4 “创建共享挂载点” 中的场景,假设之前已以root
用户身份使用以下命令创建了共享挂载点:mount --bind /media /media mount --make-shared /media mount --bind /media /mnt
~]# mount --bind /media /media ~]# mount --make-shared /media ~]# mount --bind /media /mnt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将/mnt/
目录标记为私有,请输入:mount --make-private /mnt
~]# mount --make-private /mnt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,可以验证/media/
中的挂载没有出现在/mnt/
中。例如,如果 CD-ROM 驱动器包含非空介质,并且/media/cdrom/
目录存在,请运行以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 也可以验证/mnt/
目录中挂载的文件系统没有反映在/media/
中。例如,如果插入了使用/dev/sdc1
设备的非空 USB 闪存驱动器,并且存在/mnt/flashdisk/
目录,请输入:mount /dev/sdc1 /mnt/flashdisk ls /media/flashdisk ls /mnt/flashdisk
~]# mount /dev/sdc1 /mnt/flashdisk ~]# ls /media/flashdisk ~]# ls /mnt/flashdisk en-US publican.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 不可绑定挂载
- 为了防止指定挂载点重复,需要使用不可绑定挂载。要将挂载点类型更改为不可绑定挂载,在 shell 提示符下输入以下内容:
mount --make-unbindable mount_point
mount --make-unbindable mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,也可以更改所选挂载点的挂载类型,以及其下的所有挂载点:mount --make-runbindable mount_point
mount --make-runbindable mount_point
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关示例用法,请查看 例 19.7 “创建不可绑定挂载点”。例 19.7. 创建不可绑定挂载点
要防止/media/
目录被共享,以root
用户身份:mount --bind /media /media mount --make-unbindable /media
# mount --bind /media /media # mount --make-unbindable /media
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这样,任何后续尝试重复此挂载都会失败,并显示错误:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.2.4. 移动挂载点 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要更改挂载文件系统的目录,请使用以下命令:
mount --move old_directory new_directory
# mount --move old_directory new_directory
有关示例用法,请查看 例 19.8 “移动现有的 NFS 挂载点”。
例 19.8. 移动现有的 NFS 挂载点
NFS 存储包含用户目录,并且已挂载到
/mnt/userdirs/
中。以 root
用户身份,使用以下命令将此挂载点移到 /home
:
mount --move /mnt/userdirs /home
# mount --move /mnt/userdirs /home
要验证挂载点是否已移动,请列出两个目录中的内容:
ls /mnt/userdirs ls /home
# ls /mnt/userdirs
# ls /home
jill joe
19.2.5. 为 root设置只读权限 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
有时,您需要使用只读权限挂载 root 文件系统。示例用例包括在系统意外断电后增强安全性或确保数据完整性。
19.2.5.1. 将 root 配置为在引导时使用只读权限挂载 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
- 在
/etc/sysconfig/readonly-root
文件中,将READONLY
更改为yes
:Set to 'yes' to mount the file systems as read-only.
# Set to 'yes' to mount the file systems as read-only. READONLY=yes [output truncated]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在
/etc/fstab
文件中的 root 条目(/
)中将默认更改为ro
:/dev/mapper/luks-c376919e... / ext4 ro,x-systemd.device-timeout=0 1 1
/dev/mapper/luks-c376919e... / ext4 ro,x-systemd.device-timeout=0 1 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将
ro
添加到/etc/default/grub
文件中的GRUB_CMDLINE_LINUX
指令中,并确保它不包含rw
:GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet ro"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet ro"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重新创建 GRUB2 配置文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您需要在
tmpfs
文件系统中添加需要挂载具有写权限的文件和目录,请在/etc/rwtab.d/
目录中创建一个文本文件,并将配置放在其中。例如,要挂载具有写入权限的/etc/example/file
,请将此行添加到/etc/rwtab.d/示例
文件中:files /etc/example/file
files /etc/example/file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要对tmpfs
中的文件和目录所做的更改不会在启动后保留。有关此步骤的详情,请查看 第 19.2.5.3 节 “保留写权限的文件和目录”。 - 重启系统。
19.2.5.2. 重新挂载 root Instantly 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
如果 root (
/
)在系统引导时以只读权限挂载,您可以使用写入权限重新挂载它:
mount -o remount,rw /
# mount -o remount,rw /
当
/
错误地挂载了只读权限时,这特别有用。
要再次以只读权限重新挂载
/
,请运行:
mount -o remount,ro /
# mount -o remount,ro /
注意
19.2.5.3. 保留写权限的文件和目录 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要使系统正常工作,一些文件和目录需要保留写权限。使用只读模式的 root 时,它们将挂载到
tmpfs
临时文件系统的 RAM 中。这些文件和目录的默认集合是从 /etc/rwtab
文件中读取的,该文件包含:
/etc/rwtab
文件中的条目遵循以下格式:
how the file or directory is copied to tmpfs path to the file or directory
how the file or directory is copied to tmpfs path to the file or directory
文件或目录可以通过以下三种方式复制到
tmpfs
:
空 路径
:空路径复制到tmpfs
。示例:空 /tmp
目录路径
:目录树被复制到tmpfs
,空。示例:dirs /var/run
文件路径
:将文件或目录树复制到tmpfs
。示例:文件 /etc/resolv.conf
在向
/etc/rwtab.d/
添加自定义路径时,也适用相同的格式。