Linux 通過 UUID 在 fstab 中自動掛載分區
https://xiexianbin.cn/linux/disk/2018-04-13-linux-fstab/#fatab%E4%BB%8B%E7%BB%8D
fatab 介紹
通常情況,Linux 的 /etc/fstab 文件可能有如下內容:
#
# /etc/fstab
# Created by anaconda on Fri Aug 18 03:51:14 2017
#
# 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=59d9ca7b-4f39-4c0c-9334-c56c182076b5 / ext4 defaults 1 1
目前不少Linux系統(紅帽系列的Fedora,Cent OS,或Debian系列的Ubuntu,LinuxMint,等等)都采用UUID方式掛載分區。
UUID 全稱是 Universally Unique Identifier,也就是說,每個分區有一個唯一的 UUID 值,這樣就不會發生分區識別混亂的問題了。
從上面的fstab文件片段可以看出,一般分區的掛載:
UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 / ext4 defaults 1 1
fatab 格式說明
掛載分區的格式:
<file system> <mount point> <type> <options> <dump> <pass>
/etc/fstab文件詳解:
fie sysytem:這里用來指定你要掛載的文件系統的設備名稱或塊信息,也可以是遠程的文件系統。
如果想把本機上的某個設備(device)掛載上來,寫法如:/dev/sda1、/dev/hda2或/dev/cdrom,其中,/dev/sda1 表示第一個串口硬盤的第一個分區,也可以是第一個SCSI硬盤的第一個分區,/dev/hda1表示第一個IDE硬盤的第一個分區,/dev/cdrom 表示光驅。
此外,還可以label(卷標)或UUID(Universally Unique Identifier全局唯一標識符)來表示。用label表示之前,先要e2label創建卷標,如:e2label /dir_1 /dir_2,其意思是說用/dir_2來表示/dir_1的名稱。然后,再在/etc/fstab下按如下形式添加:LABEL=/dir_2 /dir_2 。重啟后,系統就會將/dir_1掛載到/dir_2目錄上。對於UUID,可以用vol_id -u /dev/sdax來獲取。比如我想掛載第一塊硬盤的第十一個分區,先用命令vol_id -u /dev/sda11 來取得UUID,比如是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,然后在這個域上填寫: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,即可表示/dev/sda11。Red Hat linux 一般會使用label,而Ubuntu linux 一般會用UUID。
mount point:掛載點,也就是自己找一個或創建一個dir(目錄),然后把文件系統掛到這個目錄上,然后就可以從這個目錄中訪問要掛載文件系統。對於swap分區,這個域應該填寫:none,表示沒有掛載點。
type:這里用來指定文件系統的類型。下面的文件系統都是目前Linux所能支持的:adfs、befs、cifs、ext3、 ext2、ext、iso9660、kafs、minix、msdos、vfat、umsdos、proc、reiserfs、swap、 squashfs、nfs、hpfs、ncpfs、ntfs、affs、ufs。
options:這里用來填寫設置選項,各個選項用逗號隔開。由於選項非常多,而這里篇幅有限,所以不再作詳細介紹,如需了解,請用 命令 man mount 來查看。但在這里有個非常重要的關鍵字需要了解一下:defaults,它代表包含了選項rw,suid,dev,exec,auto,nouser和 async。
dump:此處為1的話,表示要將整個里的內容備份;為0的話,表示不備份。現在很少用到dump這個工具,在這里一般選0。
pass:這里用來指定如何使用fsck來檢查硬盤。如果這里填0,則不檢查;掛載點為 / 的(即根分區),必須在這里填寫1,其他的都不能填寫1。如果有分區填寫大於1的話,則在檢查完根分區后,接着按填寫的數字從小到大依次檢查下去。同數字 的同時檢查。比如第一和第二個分區填寫2,第三和第四個分區填寫3,則系統在檢查完根分區后,接着同時檢查第一和第二個分區,然后再同時檢查第三和第四個 分區。
需要注意一點,如果掛載的是非/根分區,dump及pass選項最好都應該是0,即不備份,不檢查。
獲取 UUID 方式
一般我們可以通過兩種方式獲知每個已經存在分區UUID:
by-uuid 方式
通過查看 /dev/disk/by-uuid/ 下的設備文件信息:
[root@xiexianbin_cn ~]# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Oct 31 2017 59d9ca7b-4f39-4c0c-9334-c56c182076b5 -> ../../vda1
可以看出每個分區的UUID映射關系了。但是有個缺點,也許大家已經發現了,沒有分區類型,當然,如果你自己明確知道分區類型,那就沒有問題了,如果不知道,最好還是用下面將要介紹的blkid命令。
blkid 命令
blkid命令如下:
[root@xiexianbin_cn ~]# blkid
/dev/vda1: UUID="59d9ca7b-4f39-4c0c-9334-c56c182076b5" TYPE="ext4"
有了UUID后,我們就可以編輯fstab文件來掛載分區,編輯保存后,重啟,如果在啟動的時候,沒有出現掛載失敗信息,那么恭喜你!
硬盤掛載
查看硬盤信息命令:
fdisk -l
df -lh
格式化
mkfs.xfs /dev/sdb1 -f
mkfs.xfs -n ftype=1 /dev/sdb1
mkfs.xfs -f -n ftype=1 /dev/sdb
mount
通過blkid查找所有硬盤的uuid:
[root@xiexianbin_cn ~]# blkid
/dev/sdb: UUID="e965e17a-b1f8-4eeb-a23d-7b369df66f45" TYPE="xfs"
編輯/etc/fstab:
vim /etc/fstab
# 新增
UUID=e965e17a-b1f8-4eeb-a23d-7b369df66f45 /data xfs defaults 0 0
執行掛載:
mount -a
然后可以通過df -h查看掛載情況。
也可以使用如下臨時掛載方式:
mount /dev/sdb /data
mount -t auto /dev/sdb /data
umount
umount /dev/sdb1
umount /data -f
若果有進程操作該掛載文件,會導致umount失敗,可以采用lsof /data找到對應的進程,然后kill掉。