动机
重新安装Ubuntu系统之后发现硬盘的挂载位置非常之迷,而且甚至有时会自动变化,导致文件时常找不到,再不能开心地傻瓜式使用了。把文件系统的挂载相关知识学习下。
几个有用的工具命令
-
列出系统中所有磁盘列表:
lsblk
示例
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 956K 1 loop /snap/gnome-logs/100 sda 8:0 0 232.9G 0 disk ├─sda1 8:1 0 100M 0 part └─sda2 8:2 0 232.8G 0 part /media/lab301/wdisk sdb 8:16 0 2.7T 0 disk ├─sdb1 8:17 0 128M 0 part └─sdb2 8:18 0 2.7T 0 part /media/lab301/DataSet sdc 8:32 0 931.5G 0 disk ├─sdc1 8:33 0 139G 0 part /media/lab301/0EF30E6E0EF30E6E ├─sdc2 8:34 0 110.9G 0 part
会列出
NAME
:设备文件名(省略\dev
等先导目录),RM
:是否为可卸载设备,SIZE
:容量,RO
:是否为只读设备,TYPE
:是磁盘disk
或分区part
等,MOUNTPOINT
:挂载点。 -
列出设备的
UUID
等信息:lsblk -f
示例
$ lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT loop0 squashfs /snap/gnome-logs/100 sda ├─sda1 ntfs 系统保留 585A8E625A8E3D2E └─sda2 vfat wdisk 9111-7321 /media/lab301/wdisk sdb ├─sdb1 └─sdb2 ntfs DataSet 9EFEB2DDFEB2AD41 /media/lab301/DataSet sdc ├─sdc1 ntfs FE36065436060E79 /media/lab301/0EF30E6E0EF30E6E ├─sdc2 ntfs 7AA4FCC6A4FC8643
UUID
是全局唯一标识符(Universally uniue indentifier),Linux会为系统内所有的设备都给予一个独一无二的标识符,这个标识符可以用来挂载或是使用这个设备。
文件系统的挂载与卸载
挂载
文件系统要链接到目录树上才能被我们使用。将文件系统与目录树结合的操作称为挂载。挂载点一定是目录,该目录为进入该文件系统(磁盘分区)的入口。挂载前有几点需要明确:
- 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
- 单一目录不应该挂载多个系统;
- 要作为挂载点的目录,理论上应该是空目录才对。否则会导致该目录下其他文件暂时性地消失(卸载后会重新出现)。
挂载文件系统使用mount
命令。它的一些简单操作示例如下:
$ mount -a # 依照配置文件etc/fstab的数据将所有未挂载的磁盘都挂载上来
$ mount # 当前挂载信息
$ mount <NAME> or <UUID> or <LABEl> <MOUNTPOINT> # 通过<NAME> or <UUID> or <LABEl>索引到某一文件系统,将其挂载到MOUNTPOINT
示例
STEP1
:创建一个挂载点,就是新建一个空目录
mkdir ~/dir
STEP2
:挂载
mount /dev/sdb2 ~/dir
STEP3
:查看是否挂载成功
df # 或者使用lsblk 、mount命令查看当前磁盘挂载情况
显示
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sdb2 2930134012 1450305892 1479828120 50% /home/lab301/dir
表示挂载成功。
卸载
卸载文件系统使用umount
命令。
umount <NAME> or <MOUNTPOINT> # 将<NAME>或者 <MOUNTPOINT>对应的文件系统卸载
设置启动时自动挂载
手动挂载的话,每次重新启动后需要重复操作。可通过修改/etc/fstab
实现启动时自动挂载。/etc/fstab
是启动时的配置文件。在最后添加一行,每一行的格式为
[设备NAME/UUID等] [挂载点] [文件系统] [文件系统参数] [dump] [fsck]
其中文件系统
可通过lsblk -f
(手动)查看,一般情况下文件系统参数
、dump
、fsck
依次填写defaults 0 0
就可以了(更详细的可以参考鸟哥的Linux私房菜,手动敲了半天才发现原来有电子版…)
示例:要将/dev/vda4
设置为启动时自动挂载在主文件夹的dir
目录下
STEP1
:在/etc/fstab
中按上述添加一行
/dev/vda4 /home/user/dir xfs defaults 0 0
注意这里挂载点需要从根目录显式地写起,比如这里
/home/user/
是我的主文件目录,但写~/
,/
都是不对的(后面的测试过程也会提示错误。)
STEP2
:以下两步为测试上述文件配置是否正确的步骤。测试很重要!因为这个文件如果写错了, 则你的 Linux 很可能将无法顺利开机完成!为了便于测试,首先查看该硬盘是否已经挂载,如果挂载了,则先将其卸载
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda4 1038336 32864 1005472 4% /data/xfs
# 竟然不知道何时被挂载了?赶紧给他卸载先!
# **因为,如果要被挂载的文件系统已经被挂载了(无论挂载在哪个目录),那测试就不会进行喔!**
$ umount /dev/vda4
STEP3
:挂载测试
# 依照配置文件etc/fstab的数据将所有未挂载的磁盘都挂载上来
$ mount -a # 如果报错,则根据报错信息对/etc/fstab进行修改
$ lsblk -f # 查看/dev/vda4是否已经成功挂载,如果成功挂载,则配置成功
致谢
以上内容根据《鸟哥的Linux私房菜》整理而来。感谢鸟哥的工作!这本书也有Web版,有需要的读者可以点击链接阅读学习。