如何在 Linux 中挂载和卸载文件系统/分区
将新硬盘插入系统后,通常会使用fdisk或parted等实用程序来创建分区。创建分区后,您将使用mkfs 命令创建 ext2、ext3 或 ext4 分区。
创建分区后,应使用 mount 命令将分区挂载到挂载点(目录),以开始使用文件系统。
本文通过 15 个实际示例解释了您需要了解的有关 mount 和 umount 命令的所有内容。
挂载设备的通用 mount 命令语法:
mount -t type device destination_dir
1. 挂载光盘
CD 的设备文件将存在于 /dev 目录下。例如,将安装一个 CD-ROM 设备,如下所示。
# mount -t iso9660 -o ro /dev/cdrom /mnt
在上面的示例中,选项“-o ro”表示应该以只读访问权限安装 cdrom。此外,在执行 mount 命令之前,请确保目标目录(在上面的示例中为 /mnt)存在。
2. 查看所有坐骑
执行挂载分区或文件系统后,执行不带任何参数的挂载命令以查看所有挂载。
在下面的示例中,在系统上挂载 USB 驱动器后,挂载的输出如下所示。如下所示,USB 设备(即:/dev/sdb)挂载在 /media/myusb 上,显示为挂载命令的最后一行。
# mount
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda6 on /mydata type ext2 (rw)
/dev/sda7 on /backup type vfat (rw)
gvfs-fuse-daemon on /home/bala/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=bala)
/dev/sdb on /media/myusb type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
您还可以使用df 命令查看所有挂载点。
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda5 195069136 128345036 56958520 70% /
udev 2008336 4 2008332 1% /dev
tmpfs 806244 928 805316 1% /run
none 5120 0 5120 0% /run/lock
none 2015604 228 2015376 1% /run/shm
/dev/sda6 17729076 176200 16657596 2% /mydata
/dev/sda7 11707200 573312 11133888 5% /backup
/dev/sdb 3910656 2807160 1103496 72% /media/myusb
3.挂载/etc/fstab中提到的所有文件系统
/etc/fstab 中列出的文件系统在引导过程中被挂载。启动后,系统管理员可能会出于各种原因卸载某些分区。如果您希望按照 /etc/fstab 中指定的方式安装所有文件系统,请使用带有 mount 的 -a 选项,如下所示:
示例 /etc/fstab 文件条目:
# cat /etc/fstab
#
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda5 during installation
/dev/sda5 / ext4 errors=remount-ro 0 1
# /mydata was on /dev/sda6 during installation
/dev/sda6 /mydata ext2 defaults 0 2
# /backup was on /dev/sda7 during installation
/dev/sda7 /backup vfat defaults 0 3
使用 -a 选项执行 mount 命令以挂载所有 /etc/fstab 条目。
# mount -a
# mount
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda6 on /mydata type ext2 (rw)
/dev/sda7 on /backup type vfat (rw)
gvfs-fuse-daemon on /home/bala/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=bala)
umount 可以使用相同的 -a 选项来卸载 /etc/mtab 中提到的所有文件系统
# umount -a
umount: /run/shm: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
umount: /run: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
umount: /dev: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
umount: /: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
某些文件系统由于忙或当前正在使用而未卸载。请注意,文件 /etc/mtab 和 /proc/mounts 的内容是相似的。
4. 仅从 /etc/fstab 挂载特定文件系统
当您仅将目录名称传递给挂载时,它会查找挂载点条目,如果未找到,则在 /etc/fstab 中连续搜索设备并进行挂载。
# mount | grep /mydata
# cat /etc/fstab | grep mydata
##########/mydata was on /dev/sda6 during installation##########
/dev/sda6 /mydata ext2 defaults 0 2
如上所示,/mydata 目录不是挂载点,但它存在于 /etc/fstab 中。
# mount /mydata
# mount | grep /mydata
/dev/sda6 on /mydata type ext2 (rw)
如果您再次执行相同的操作,您将收到如下错误消息:
# mount /mydata
mount: /dev/sda6 already mounted or /mydata busy
mount: according to mtab, /dev/sda6 is already mounted on /mydata
在这里,您还可以传递设备名称而不是目录名称(从 /etc/fstab 文件中获取)。
# mount /dev/sda6
请注意,文件 /etc/mtab 和 /proc/mounts 的内容是相似的。
5.查看所有挂载的特定类型的分区
可以只列出使用选项 -l 和 -t 挂载的特定类型的文件系统,如下所示:
# mount -l -t ext2
/dev/sda6 on /mydata type ext2 (rw)
# mount -l -t ext4
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
如上所示,/dev/sda6 是唯一的 ext2 分区,/dev/sda5 是唯一的 ext4 分区。
6. 挂载软盘
软盘的设备文件将存在于 /dev 目录下。例如,将安装一张软盘,如下所示。
# mount /dev/fd0 /mnt
# cd /mnt
挂载成功后,您就可以访问软盘的内容了。完成后,在从系统中物理删除软盘之前使用 umount。
# umount /mnt
7.绑定挂载点到新目录
挂载点可以绑定到新目录。这样您就可以同时通过多个挂载点访问文件系统的内容。
使用 -B 选项与 olddir 和 newdir 绑定如下,
# mount -B /mydata /mnt
现在绑定已完成,您可以按如下方式验证它,
# mount | grep /mydata
/dev/sda6 on /mydata type ext2 (rw)
/mydata on /mnt type none (rw,bind)
如上所示,绑定已正确完成。因此,当您在一个地方对文件系统进行修改时,您可以在其他挂载点看到它的反映,如下所示:
# cd /mydata
# ls
test
# mkdir dir1
# mkdir dir2
# ls
test dir1 dir2
# cd /mnt
# ls
test dir1 dir2
8.从新的挂载点访问内容
Mount 允许您从新的挂载点访问挂载点的内容。它只不过是将一棵已安装的树移到另一个地方。
在下面的示例中,挂载点 /mydata 将使用选项 -M 从 /mnt 访问,如下所示:
# mount -M /mydata /mnt/
完成后,您不能将旧的挂载点移动到新的挂载点,这可以验证如下:
# mount | grep /mydata
# mount | grep /mnt
/dev/sda6 on /mnt type ext2 (rw)
9. 挂载而不将条目写入 /etc/mtab
在/etc/只读挂载期间,挂载命令不能修改/etc/mtab文件条目。但是,可以通过使用选项 -n 来完成挂载,而无需写入 /etc/mtab,如下所示,
# mount -n /dev/sda6 /mydata
您在 mount 命令输出以及 /etc/mtab 文件中看不到此 /mydata 的任何条目,如下所示:
# mount | grep /mydata
# cat /etc/mtab | grep /mydata
访问已安装目录 /mydata 的内容:
# cd /mydata
# ls
dir1 dir2 test
10. 挂载具有读或读/写访问权限的文件系统
要将分区挂载为只读,请使用 -r 选项,它是 -o ro 的同义词。
# mount /dev/sda6 /mydata -r
# mount | grep /mydata
/dev/sda6 on /mydata type ext4 (ro)
ext3 和 ext4 文件系统仍然允许您在文件系统脏时执行写操作。因此,您可能必须使用“ro,noload”来防止此类写操作。
# mount /dev/sda6 /mydata -t ext4 -o ro -o noload
# mount | grep /mydata
/dev/sda6 on /mydata type ext4 (ro,noload)
要挂载具有读/写访问权限的分区,请使用与“-o rw”相同的 -w 选项(即:默认值)。
11.重新挂载挂载的文件系统
为了挂载已经挂载的文件系统,使用 remount 选项,它通常用于在以前以读访问权限挂载文件系统时以读/写访问权限重新挂载文件系统。
/mydata 挂载点将通过读访问的读/写访问重新挂载,如下所示:
# mount | grep /mydata
/dev/sda6 on /mydata type ext4 (ro,noload)
# mount -o remount,rw /mydata
# mount | grep /mydata
/dev/sda6 on /mydata type ext4 (rw)
12. 挂载iso镜像到目录
可以安装iso镜像,如下图:
# mount -t iso9660 -o loop pdf_collections.iso /mnt
# cd /mnt
# ls
perl/ php/ mysql/
13.卸载多个挂载点
umount 允许您在一次执行 umount 命令时卸载多个挂载点,如下所示:
# umount /mydata /backup
# mount | grep /mydata
# mount | grep /backup
14. 延迟卸载文件系统
这是 umount 中的一个特殊选项,以防您想在磁盘操作完成后卸载分区。您可以使用该分区发出命令 umount -l ,卸载将在磁盘操作完成后完成。
例如,考虑一个任务(即:脚本或任何其他命令)正在磁盘上执行复制操作的场景,同时您可以使用 -l 发出卸载,这样卸载就会在复制结束(即:磁盘操作)。
# umount /mydata -l
15. 强制卸载文件系统
umount 提供了在设备繁忙时使用选项 -f 强制卸载文件系统的选项,如下所示:
# umount -f /mnt
如果这对您不起作用,那么您可以进行延迟卸载。
同时,您还可以查看ps 命令输出当前哪个进程正在使用挂载点,如下所示:
# ps ajx | grep /mydata
2540 3037 3037 2468 pts/2 3037 D+ 0 0:00 cp -r /home/tiamo/ProjectData/ /mydata
您还可以执行fuser 命令来找出哪个进程正在保存该目录以进行操作。
# fuser -cu /mydata
/mydata: 3087(root)
它为您提供带有用户名的进程 id(只有进程的所有者)。如果您知道该进程是什么,您可能希望停止该进程,然后再次尝试 umount。
- 点赞
- 收藏
- 关注作者
评论(0)