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