深入解析 /etc/fstab:大多數(shù)運(yùn)維都容易忽略的系統(tǒng)啟動(dòng)關(guān)鍵點(diǎn)!
今天分享一下系統(tǒng)自動(dòng)掛載文件:/etc/fstab。
應(yīng)該很多人遇到過(guò)下面這種情況。
進(jìn)不去系統(tǒng)了,大概率可能是兩種原因:第一是文件系統(tǒng)損壞了,第二種是/etc/fstab文件沒(méi)配置好,導(dǎo)致系統(tǒng)自動(dòng)掛載時(shí)失敗。
接下來(lái)就詳細(xì)介紹一下。
一、/etc/fstab 簡(jiǎn)介
/etc/fstab 是 Linux 系統(tǒng)啟動(dòng)時(shí)自動(dòng)掛載文件系統(tǒng)的配置表。它的全稱是 File Systems Table,系統(tǒng)在啟動(dòng)時(shí)會(huì)參考它來(lái)自動(dòng)執(zhí)行 mount 操作。
在生產(chǎn)環(huán)境中,fstab 影響著:
- 系統(tǒng)能否成功啟動(dòng)(掛載失敗會(huì)進(jìn)入 emergency 模式)
- 分區(qū)是否以正確方式掛載(只讀?緩存策略?用戶掛載?)
- 是否自動(dòng)掛載 swap、RAID、NFS 等資源
- 性能和安全策略的預(yù)設(shè)(如 noatime、nosuid)
二、/etc/fstab內(nèi)容詳解
格式如下,每行一個(gè)掛載配置,共六個(gè)字段:
<設(shè)備> <掛載點(diǎn)> <文件系統(tǒng)類型> <掛載選項(xiàng)> <dump> <fsck順序>
第1列:設(shè)備
可以是:
- /dev/sdX:傳統(tǒng)設(shè)備名,不穩(wěn)定【容易留坑】
- UUID=xxxx:推薦,唯一標(biāo)識(shí)設(shè)備【推薦使用】
- LABEL=label:標(biāo)簽,更易識(shí)別【我很少用】
- 網(wǎng)絡(luò)路徑:如 10.0.0.110:/data/nfs/share【NFS掛載常用】
查 UUID:
blkid
更改標(biāo)簽:
e2label /dev/sdb1 DATA_DISK
第2列:掛載點(diǎn)
掛載點(diǎn)必須存在,沒(méi)有的話需要提前創(chuàng)建目錄,否則系統(tǒng)啟動(dòng)會(huì)失敗,這個(gè)根據(jù)需求自定義就行。
創(chuàng)建目錄:
# 多級(jí)目錄就加`-p`,表示遞歸創(chuàng)建
mkdir /data
第3列:文件系統(tǒng)類型
常見(jiàn)類型:
類型 | 場(chǎng)景 |
| 通用 Linux 文件系統(tǒng) |
| 大量數(shù)據(jù)寫入、高性能 |
| 支持快照、壓縮等 |
| 網(wǎng)絡(luò)掛載 |
| 虛擬內(nèi)存分區(qū) |
| 內(nèi)存文件系統(tǒng) |
使用 lsblk -f 查看類型。
第4列 掛載選項(xiàng)
這是重中之重,常見(jiàn)選項(xiàng)如下:
選項(xiàng) | 含義 |
| rw, suid, dev, exec, auto, nouser, async |
| 訪問(wèn)文件時(shí)不更新 atime,提升性能 |
| 同上,但僅目錄 |
/ | 只讀 / 讀寫掛載【默認(rèn)讀寫掛載】 |
| 禁用 SUID 程序,增強(qiáng)安全性 |
| 禁用設(shè)備文件 |
| 禁止執(zhí)行文件 |
| 折中方案,默認(rèn)選項(xiàng) |
| 啟用 SSD 的 TRIM 操作 |
/ | 允許普通用戶掛載 |
我大多數(shù)情況只用defaults選項(xiàng)。
性能建議:
- 對(duì)于大多數(shù)數(shù)據(jù)盤,推薦:
defaults,noatime,nodiratime
- 對(duì)于 SSD:
defaults,noatime,discard
第5列:dump
是否啟用 dump 命令進(jìn)行備份,大多數(shù)情況設(shè)為 0,1就是啟用。
第6列:fsck 順序
控制開(kāi)機(jī)時(shí)的文件系統(tǒng)檢查順序:
- 0:不檢查
- 1:通常是根分區(qū) /
- 2:其它分區(qū)(如 /home、/data)
切記不要多個(gè)設(shè)置為 1,否則引發(fā) fsck 混亂!
三、注意事項(xiàng)
配置完 fstab 后,永遠(yuǎn)不要直接 reboot!
先執(zhí)行:
mount -a
它會(huì)按 /etc/fstab 模擬一次掛載,能否成功掛載全憑這條命令的反饋。如果這里掛載有問(wèn)題,就會(huì)出現(xiàn)我開(kāi)始放那個(gè)截圖一樣,會(huì)讓你進(jìn)入緊急模式。
四、系統(tǒng)掛載失敗的應(yīng)急方案
要是上面一個(gè)步驟你修改完/etc/fstab,沒(méi)有檢查并且配置錯(cuò)誤,還reboot了服務(wù)器,大概率進(jìn)去下面的界面
怎么辦,也很簡(jiǎn)單,直接輸入密碼后,將/etc/fstab文件配置修改正確就行,也是執(zhí)行mount -a沒(méi)問(wèn)題后重啟。
五、運(yùn)維實(shí)戰(zhàn)用法
1. 自動(dòng)掛載 NFS 文件系統(tǒng)
192.168.1.100:/data /mnt/nfs nfs defaults,_netdev 0 0
_netdev 確保網(wǎng)絡(luò)就緒后掛載,防止開(kāi)機(jī)掛載失敗
2. 使用UUID掛載
比如你新增一個(gè)/dev/sdb,你需要先找出/dev/sdb的UUID,然后第一列就使用UUID,不要使用設(shè)備名稱
blkid /dev/sdb
3. tmpfs 內(nèi)存盤
這個(gè)主要用于加速臨時(shí)目錄讀寫,不過(guò)我比較少用
tmpfs /mnt/tmpfs tmpfs defaults,size=512M 0 0
適用于緩存、構(gòu)建臨時(shí)文件存儲(chǔ)等。
4. 掛載 ISO 鏡像
# 第一列iso路徑根據(jù)實(shí)際來(lái)填寫。
/mnt/image.iso /mnt/iso iso9660 loop 0 0
再次強(qiáng)調(diào),配置完要記得mount -a檢查一下。