Linux 挂载和卸载设备操作
常用设备名
设备在 Linux 系统中显示为文件,常见设备以及设备在系统中文件名如下:
设备 | 设备在系统内的文件名 |
---|---|
IDE 硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB 硬盘 | /dev/sd[a-p] |
U 盘 | /dev/sd[a-p] |
软驱 | /dev/fd[0-7] |
打印机 | 25 针:/dev/lp[0-2] USB:/dev/usb/lp[0-15] |
鼠标 | USB:/dev/usb/mouse[0-15] PS2:/dev/psaux |
当前 CD/DVD ROM | /dev/cdrom |
当前鼠标 | /dev/mouse |
磁带机 | IDE:/dev/ht0 SCSI:/dev/st0 |
挂载点
在 Linux 中,挂载是将一个目录作为进入点,将磁盘分区的数据放置在该目录下,进入该目录等同于读取该分区中的内容。进入点的目录被称为挂载点,也就是虚拟目录中用于分配额外存储设备的目录。
例如,磁盘 1 挂载到根目录/
,磁盘 2 挂载到/ext333
目录,则/ext333
目录下的文件最上层目录是/ext333
,而不是/
:
[root@101c7 ext333]$ ls -lid /ext333/
2 drwxr-xr-x. 3 root root 4096 Sep 9 15:37 /ext333/
ext
文件系统最顶层目录的 inode 一般为 2 号,而xfs
文件系统最顶层目录的 inode 一般为 128 号。由于同一个文件系统中某个 inode 只会对应一个文件,因此可以通过 inode 号码来确认不同文件名是否为相同文件。
挂载设备
硬盘格式化后需要挂载在目录中才能访问,磁盘挂载前需要注意以下事项:
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中。
- 单一目录不应该重复挂载多个文件系统。
- 作为挂载点的目录理论上应该都是空目录。
如果用于挂载的目录不为空,则挂载文件系统后,原目录下的内容将暂时无法访问。
mount
命令可用选项如下:
选项 | 说明 |
---|---|
-a |
依照配置文件/etc/fstab 的数据将所有未挂载的磁盘都挂载上来 |
-l |
显示 Label 名称 |
-t |
加上文件系统类型来指定欲挂载的类型 |
-n |
默认系统会将实时挂载的情况实时写入/etc/mtab 中。-n 可以取消写入 |
-L |
利用文件系统的卷标名来挂载 |
-o |
后面接一些挂载时额外加上的参数,比如账号、密码、权限等 |
-o
后接的可挂载参数如下:
参数 | 说明 |
---|---|
ro /rw |
挂载为只读或可读写 |
async /sync |
修改默认写入方式同步或异步,默认异步 |
auto /noauto |
允许此分区被以mount -a 自动挂载 |
dev /nodev |
是否允许分区上可创建设备文件,dev 为允许 |
suid /nosuid |
是否允许含有 suid/sgid 的文件格式 |
exec /noexec |
是否允许拥有可执行文件 |
user /nouser |
是否允许此分区让任何用户执行mount ,一般只有root 可用mount |
defaults |
默认值为rw ,suid ,dev ,exec ,auto ,nouser ,async |
remount |
重新挂载,重新更新参数时可以重新挂载 |
例如将/dev/sdb4
挂载到/root/sdb4m
文件夹上:
[root@101c7 ~]$ mount /dev/sdb4 /root/sdb4m/
[root@101c7 ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 1038336 190536 847800 19% /boot
tmpfs 386128 0 386128 0% /run/user/0
/dev/sdb4 92580 332 87128 1% /root/sdb4m
查看挂载情况:
[root@101c7 ~]$ mount -l | grep sdb
/dev/sdb4 on /root/sdb4m type ext3 (rw,relatime,seclabel,data=ordered) [boss]
重新挂载
如果进入维护模式,根目录以只读状态挂载的,可以使用重挂载功能将其挂载成可读写:
[root@101c7 ~]$ mount -o remount,rw,auto /
卸载设备
有些设备例如 CD 光驱,必须卸载了才能退出来。可以使用umount
来卸载设备。
使用-f
参数强制卸载,例如卸载硬盘sdb4
:
[root@101c7 ~]$ umount -f /root/sdb4m/
如果加入-f
卸载不掉还可以使用-l
参数试试。
开机挂载
开机配置文件/etc/fstab
实际上将挂载记录到/etc/mtab
与/proc/mounts
这两个文件中。
系统挂载的限制如下:
- 根目录
/
必须挂载,并且必须先于其他挂载点进行挂载。 - 挂载点必须为已存在的目录。
- 每个挂载点在同一时间内,只能挂载一次。
- 每个分区在同一时间内,只能挂载一次。
- 若要进行卸载,必须先将工作目录移到挂载点之外。
查看 /etc/fstab
文件:
[root@101c7 ~]$ cat /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
^ ^ ^ ^ ^ ^
设备名 挂载点 文件系统 挂载参数 备份 扫描
以第一条为例从左到右分别为:
- 第一列:需要挂载的设备名、Label 或 UUID。
- 第二列:挂载点(必须是目录)。
- 第三列:文件系统类型。
- 第四列:挂载参数,如
defaults
、rw
、ro
、noauto
等。这里的默认值等于mount -o default
时用的值。 - 第五列:是否需要使用 dump 命令备份,
0
代表不需要备份,1
表示每天需要备份。 - 第六列:用
fsck
检查文件系统顺序,0
表示不需要检查,1
代表在根文件系统/
之前检查,2
代表在其他文件系统之后检查。
其实/etc/fstab
(file system table)就是将我们利用mount
命令挂载时所用到的参数写入到了文件。
例如,要在 /dev/sdb4
开机自动挂载到 /root/sdb4m
目录下,可以在 /etc/fstab
中添加一行:
[root@101c7 ~]$ vi /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb4 /root/sdb4m ext3 defaults 0 0
然后用 mount -a
命令更新挂载状态:
[root@101c7 ~]$ mount -a ; df | grep sdb
/dev/sdb4 92580 332 87128 1% /root/sdb4m
可以看到硬盘已经挂载成功了。当系统重启时,/dev/sdb4
就会自动挂载到 /root/sdb4m
目录下了。
特殊设备挂载
意思为直接挂载存在硬盘中的镜像文件。也可以挂载大文件,作为虚拟磁盘使用。
例如挂载/root/TinyCore-current.iso
到/mnt/tinycore_iso
:
[root@101c7 ~]$ mount -o loop /root/TinyCore-current.iso /mnt/tinycore_iso/
mount: /dev/loop0 is write-protected, mounting read-only
[root@101c7 ~]$ df | grep loop
/dev/loop0 20348 20348 0 100% /mnt/tinycore_iso
在 CentOS 7 中可以省略-o loop
参数。
挂载内存盘
所谓内存盘就是将一部分内存当作文件系统挂载起来,不过关机或卸载里面的资料会完全丢失。
在挂载时使用-t ramfs none
参数:
[root@server1 ~]$ mount -t ramfs none /root/ram
[root@server1 ~]$ df -ha
Filesystem Size Used Avail Use% Mounted on
none 0 0 0 - /root/ram