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掉。
linux系統開機自動掛載光驅 和 fstab文件詳解
一、開機自動掛載光驅
1.按習慣,root用戶,在/mnt目錄下建立目錄cdrom0
mdir /mnt/cdrom0
2.修改/etc/fstab文件。在該文件最后按順序添加如下內容:
/dev/sr0 /mnt/cdrom0 iso9660 auto 0 0
3.重啟CentOS系統
二、fstab文件內容詳解
/etc/fstab就是在開機引導的時候自動掛載到linux的文件系統。
在linux中/etc/fstab的數據項如下所示:
/dev/device mountpoint type rules 0 order
例如這是一個普通的/etc/fstab:
/dev/hda2 / ext3 defaults 0 1 /dev/hda3 swap swap defaults 0 0 /dev/hda5 /usr ext3 defaults 0 0 /dev/fdo /mnt/flopy ext3 noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
/dev/device就是需要掛載的設備,/hda2就是第一個IDE插槽上的主硬盤的
第二個分區。如果是第二個IDE插槽主硬盤的第三個分區,那就是/dev/hdc3,具體可以在linux下使用fdisk -l 查看。
mountpoint 就是掛載點。/、 /usr、 swap 都是系統安裝時分區的默認掛載點。
如果你要掛載一個新設備,你就要好好想想了,因為這個新設備將作為文件系統永久的一部分,需要根據FSSTND(文件系統標准),以及它的作用,用戶需求來決定。比如你想把它做為一個共享資源,放在/home下面就是一個不錯選擇。
type 是指文件系統類形。
rules 是指掛載時的規則。下面列舉幾個常用的:
auto 開機自動掛載
default 按照大多數永久文件系統的缺省值設置掛載定義
noauto 開機不自動掛載
nouser 只有超級用戶可以掛載
ro 按只讀權限掛載
rw 按可讀可寫權限掛載
user 任何用戶都可以掛載
請注意光驅和軟驅只有在裝有介質時才可以進行掛載,因此它是noauto
0 是指dump(系統備份工具)。這一項為0,就表示從不備份。如果上次用dump備份,將顯示備份至今的天數。
order 指fsck(啟動時fsck檢查的順序)。為0就表示不檢查,(/)分區永遠都
是1,其它的分區只能從2開始,當數字相同就同時檢查(但不能有兩1)。
如果我要把第二個IDE插槽主硬盤上的windows C 區掛到文件系統中,那么數據項是:
/dev/hdc1 /c vfat defaults 0 0
(/c 是事先建立的文件夾,作為c盤的掛載點。)
當你修改了/etc/fstab后,一定要重新引導系統才會有效。
fstab中存放了與分區有關的重要信息,其中每一行為一個分區記錄,每一行又可分為六個部份,下面以/dev/hda7 / ext2 defaults 1 1為例逐個說明:
1. 第一項是您想要mount的儲存裝置的實體位置,如hdb或如上例的/dev/hda7。
2. 第二項就是您想要將其加入至哪個目錄位置,如/home或如上例的/,這其實就是在安裝時提示的掛入點。
3. 第三項就是所謂的local filesystem,其包含了以下格式:如ext、ext2、msdos、iso9660、nfs、swap等,或如上例的ext2,可以參見/prco/filesystems說明。
4. 第四項就是您mount時,所要設定的狀態,如ro(只讀)或如上例的defaults(包括了其它參數如rw、suid、exec、auto、nouser、async),可以參見「mount nfs」。
5. 第五項是提供DUMP功能,在系統DUMP時是否需要BACKUP的標志位,其內定值是0。
6. 第六項是設定此filesystem是否要在開機時做check的動作,除了root的filesystem其必要的check為1之外,其它皆可視需要設定,內定值是0。