标签:linux 文件系统 挂载 卸载
磁盘的挂载与卸载
挂载:将系统额外的文件系统通过根下的目录与根文件系统建立起关联关系,将该目录成为进入新磁盘分区(即文件系统)的入口操作。
卸载:解除此关联关系的过程。
挂载点 mount point:设备挂载的目录
注意:挂载点在挂载后,其目录下的原有文件和目录将会暂时隐藏,等新分区卸载后,原有文件和目录会再次显示出来。所以建议 挂载点使用空目录。
挂载 mount:
mount [-l] 通过读取/etc/mtab文件来显示当前系统所有已经挂载的设备
[root@localhost test]# mount proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) /dev/sda3 on / type ext4 (rw,relatime,seclabel,data=ordered) /dev/sda2 on /usr type ext4 (rw,relatime,seclabel,data=ordered) ....省略... debugfs on /sys/kernel/debug type debugfs (rw,relatime) /dev/sda1 on /boot type ext4 (rw,relatime,seclabel,data=ordered) /dev/sda5 on /home type ext4 (rw,relatime,seclabel,data=ordered)
mount -a: 按照配置文件/etc/fstab的数据挂载所有没有挂载的磁盘
mount [-fnrsvw] [-t vfstype] [-o options] device mount_point
device :要挂载的设备
1 设备文件: /dev/sdb5
2 卷标: -L ‘label’
3 uuid: -U ‘uuid’
4 伪文件系统
5 文件路径:绑定挂载
mount_point :挂载点
建议空目录
选项:
-l:显示当前挂载信息时,增加Label列的显示
-n:不写入/etc/mtab,默认情况下,将实际挂载情况实时写入/etc/mtab中
此时,如果想查看挂载的所有文件系统:cat /proc/mounts
-t:指定将要挂载的文件系统类型
-L : 通过指定卷标label挂载
-r:以只读方式挂载
-a:挂载在/etc/fstab中的所有文件系统
-f : 跳过系统挂载,试运行
-B:绑定一个目录到另外一个目录上
-o options 主要用来描述设备或档案的挂接方式。
参数:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
async:文件系统使用异步写入
sync:文件系统使用同步写入
auto,noauto:允许分区被使用mount -a 自动挂载
dev,nodev:是否允许此分区上创建设备文件
suid,nosuid:是否允许此分区上有suid/sgid的文件格式
user,nouser:是否允许在此分区下任何用户执行mount
defaults:默认值rw, suid, dev, exec, auto, nouser, and async.
remount:重新挂载,多在系统出错时,或更新参数时使用
示例
#按指定卷标挂载 -L [root@localhost ~]# mount -L ‘mytest‘ /mnt/test1 [root@localhost ~]# mount | grep ‘/dev/sdb.‘ 30:/dev/sdb1 on /root/test_mount/test1 type ext4 (rw,relatime,seclabel,data=ordered) #只读方式挂载分区 [root@localhost ~]# mount -r /dev/sdb5 /mnt/test2 [root@localhost ~]# mount | grep ‘/dev/sdb.‘ 30:/dev/sdb1 on /root/test_mount/test1 type ext4 (rw,relatime,seclabel,data=ordered) 31:/dev/sdb5 on /root/test_mount/test2 type ext4 (ro,relatime,seclabel,data=ordered) [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on ....省略... /dev/sdb1 999320 2564 927944 1% /mnt/test1 /dev/sdb5 499656 784 462176 1% /mnt/test2 #将/home目录挂载到/mnt/test3下面 [root@localhost mnt]# mount -B /home/ /mnt/test3/ [root@localhost mnt]# ll /home/ /mnt/test3/ /home/: total 32 drwx------. 2 hadoop hadoop 4096 Sep 9 08:04 hadoop drwx------. 2 root root 16384 Aug 20 06:12 lost+found drwx------. 2 roger roger 4096 Aug 20 06:34 roger drwx------. 3 test1 test1 4096 Sep 7 04:28 test1 drwx------. 2 testuser1 testuser1 4096 Sep 13 18:03 testuser1 /mnt/test3/: total 32 drwx------. 2 hadoop hadoop 4096 Sep 9 08:04 hadoop drwx------. 2 root root 16384 Aug 20 06:12 lost+found drwx------. 2 roger roger 4096 Aug 20 06:34 roger drwx------. 3 test1 test1 4096 Sep 7 04:28 test1 drwx------. 2 testuser1 testuser1 4096 Sep 13 18:03 testuser1
umount:卸载命令
umount [-fn] DEVICE
DEVICE 设备文件名
umount [-fn] MOUNT_POINT
MOUNT_POINT 挂载点
参数:
-f:强制卸载
-n:不更新/etc/mtab的情况下卸载
示例:
#设备名称卸载 [root@localhost ~]# umount /dev/sdb1 #因为挂载的是目录,所以只能同过挂载点卸载 [root@localhost ~]# umount /mnt/test3/
卸载时遇到设备被占用
[root@localhost ~]# umount /dev/sdb1 umount: /mnt/test3: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
查看正在访问指定挂载点的进程:
# fuser -v MOUNT_POINT
[root@localhost ~]# fuser -v /mnt/test3/ USER PID ACCESS COMMAND /mnt/test3: root kernel mount /mnt/test3 root 3356 ..c.. bash
终止所有正在访问指定的挂载点的进程:
# fuser -km MOUNT_POINT
[root@localhost ~]# fuser -km /mnt/test3/ /mnt/test3: 3356c #成功卸载 [root@localhost ~]# umount /dev/sdb1
补充说明:
fuser命令:显示所有正在使用着指定的file, file system 或者 sockets的进程信息
fuser [-fuv] [-a|-s] [-4|-6] [-c|-m|-n space] [ -k [-i] [-M] [-w] [-SIGNAL] ] 文件名/文件系统/sockets
参数:
-k,--kill:杀死正在访问的文件的进程
-i:交互模式 杀死进程前进行确认
-m:后面接的那个文件名会主动上提到该文件系统的最顶层,对umount不成功很有效
-u :进程号后圆括号中显示进程拥有者
-v:输出进程详细信息
默认情况下,每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。
c 文件作为当前目录
e 文件作为程序的可执行对象
r 文件作为根目录
m 文件作为mmap文件或共享库
示例:
[root@localhost ~]# fuser /mnt/ /mnt: 3427c [root@localhost ~]# fuser -u /mnt/ /mnt: 3427c(root) [root@localhost ~]# fuser -v /mnt/ USER PID ACCESS COMMAND /mnt: root 3427 ..c.. bash [root@localhost ~]# fuser -ki /mnt/ /mnt: 3427c Kill process 3427 ? (y/N) n
挂载相关配置文件:
/etc/fstab (file system table)
记录是系统准备装载文件系统,用来设置 开机挂载
[root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Aug 20 06:13:01 2015 # # 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=8306bbdb-4c6b-4975-8596-c3721eeb6998 / ext4 defaults 1 1 UUID=4bfd1d98-b114-4685-84a0-d44130fb3128 /boot ext4 defaults 1 2 UUID=86be1f1b-e7b0-4d86-a743-7cc99ba332ec /home ext4 defaults 1 2 UUID=cc4474b4-402e-4e99-9b04-f55327d94faa /usr ext4 defaults 1 2 UUID=f885b330-d561-454f-90d2-259c4a81a5f9 swap swap defaults 0 0
/etc/fstab文件中每一行定义一个文件系统
每行有6个字段:
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
要挂载的设备
设备名/dev/sda5, UUID=, Label=, 伪文件系统名
挂载点:
目录
文件系统类型:
ext2/ext3/ext4, xfs...
挂载选项:
defaults,rw/ro, nouser,async/sync, auto/noauto...
转储频率:
0代表不做备份
1代表每天进行dump操作
2代表不定期进行dump操作
自检次序:fsck检验扇区
0表示不自检
1表示最早自检
2 优先级比1低
示例:
#编辑 /etc/fstab [root@localhost ~]# vim /etc/fstab /dev/sdb1 /mnt/test3 ext4 defaults 0 0 # 挂载 [root@localhost ~]# mount -a #查看 [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 9947976 554736 8864856 6% / devtmpfs 493016 0 493016 0% /dev ..... /dev/sdb1 999320 2564 927944 1% /mnt/test3
/etc/mtab文件:
记录当前系统已经装载的文件系统,包括操作系统建立的虚拟文件等;
[root@localhost ~]# cat /etc/mtab rootfs / rootfs rw 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0 devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=493016k,nr_inodes=123254,mode=755 0 0 securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0 tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0 devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /run tmpfs rw,seclabel,nosuid,nodev,mode=755 0 0 tmpfs /sys/fs/cgroup tmpfs rw,seclabel,nosuid,nodev,noexec,mode=755 0 0 ....
当 mount
挂载分区、umount 卸载分区,都会实时更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df
这类程序,必须要读取 mtab
文件,才能获得当前系统中的分区挂载情况。还可以通过读取/proc/mount也可以来获取当前挂载信息。
如有错误,敬请指正!
谢谢!
标签:linux 文件系统 挂载 卸载
原文地址:http://rogerwang.blog.51cto.com/5326353/1695067