掛載全流程:從lsblk認(rèn)盤(pán)到fstab開(kāi)機(jī)自動(dòng)掛載與排錯(cuò))
最近兩周我至少收到四個(gè)類似消息新買(mǎi)的SSD插上去了系統(tǒng)里看不到盤(pán)或者掛載時(shí)報(bào)個(gè)沒(méi)見(jiàn)過(guò)英文錯(cuò)直接卡在wrong fs type那里不知道怎么辦還有人在/etc/fstab里寫(xiě)了一行結(jié)果重啟后愣是卡在emergency mode。這類問(wèn)題我在工作里遇到過(guò)太多次其實(shí)Linux掛載硬盤(pán)這件事本身并不難難點(diǎn)在于大部分人上來(lái)就跳過(guò)“認(rèn)盤(pán)”和“選文件系統(tǒng)”這兩步直接執(zhí)行mount一旦環(huán)境跟教程不一致就容易翻車。這篇內(nèi)容我就按自己平時(shí)處理服務(wù)器的習(xí)慣來(lái)寫(xiě)從認(rèn)盤(pán)開(kāi)始到臨時(shí)掛載、開(kāi)機(jī)自動(dòng)掛載再到排查各種常見(jiàn)報(bào)錯(cuò)最后補(bǔ)一個(gè)開(kāi)發(fā)板和NFS場(chǎng)景。不管你是剛把第二塊硬盤(pán)塞進(jìn)臺(tái)式機(jī)還是在機(jī)房給新機(jī)器接存儲(chǔ)照著這套路子走基本不會(huì)再瞎折騰。1. 掛載之前先認(rèn)清硬盤(pán)1.1 lsblk和blkid兩個(gè)最常用的“透視鏡”拿到一塊沒(méi)有系統(tǒng)的新硬盤(pán)多數(shù)人第一反應(yīng)是fdisk -l這個(gè)命令確實(shí)能看到設(shè)備但輸出信息非常啰嗦尤其當(dāng)機(jī)器上插了好幾塊盤(pán)一堆扇區(qū)、磁頭、柱面參數(shù)看得人眼花。我更推薦先執(zhí)行l(wèi)sblk它的輸出是按樹(shù)形結(jié)構(gòu)列出來(lái)的一眼就能看出誰(shuí)是誰(shuí)的分區(qū)誰(shuí)還沒(méi)被分區(qū)。lsblk輸出大概長(zhǎng)這樣NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 223.6G 0 disk ├─sda1 8:1 0 500M 0 part /boot/efi ├─sda2 8:2 0 222.7G 0 part / └─sda3 8:3 0 512M 0 part [SWAP] sdb 8:16 0 1.8T 0 disk注意看sdb下面沒(méi)有任何─子項(xiàng)MOUNTPOINT列也是空的這表示整塊盤(pán)還沒(méi)分區(qū)、沒(méi)格式化系統(tǒng)根本不知道該拿它怎么辦。這時(shí)候直接mount /dev/sdb1 /mnt肯定報(bào)錯(cuò)因?yàn)?dev/sdb1還不存在。如果想看更詳細(xì)的文件系統(tǒng)信息用blkid。它會(huì)把每塊分區(qū)當(dāng)前已經(jīng)寫(xiě)好的文件系統(tǒng)類型、UUID都列出來(lái)blkid輸出類似/dev/sda2: UUIDa1b2c3d4... TYPEext4 PARTUUID... /dev/sdb: PTUUID... PTYPEgpt注意sdb那一行只有PTUUID、PTYPE沒(méi)有TYPE這同樣說(shuō)明它還沒(méi)有文件系統(tǒng)。一旦你看到某塊盤(pán)帶了TYPEext4這類信息那就說(shuō)明它曾經(jīng)被格式化過(guò)可以直接掛載。實(shí)操心得拿到自己不熟悉的機(jī)器先lsblk再blkid兩個(gè)命令一結(jié)合設(shè)備的“體檢報(bào)告”就出來(lái)了。別急著敲mount先花十秒鐘看清盤(pán)后面少踩一半的坑。1.2 分區(qū)表GPT還是MBR別再憑感覺(jué)分區(qū)表決定硬盤(pán)怎么組織分區(qū)。老的MBR最多支持4個(gè)主分區(qū)而且單分區(qū)容量超過(guò)2TB時(shí)會(huì)有各種別扭GPT沒(méi)有主分區(qū)數(shù)量限制也支持更大容量?,F(xiàn)在的新硬盤(pán)除非你有非常特殊的兼容性要求比如老主板純Legacy引導(dǎo)、某些老設(shè)備固件否則閉著眼睛選GPT就行。我見(jiàn)過(guò)有人在2TB以上的新盤(pán)上非要手動(dòng)建MBR分區(qū)表結(jié)果建完只有不到2TB可用的尷尬場(chǎng)面。所以這里給個(gè)明確建議新盤(pán)、大容量盤(pán)2TB一律GPT老設(shè)備、老系統(tǒng)裝機(jī)引導(dǎo)保留MBR拿不準(zhǔn)GPT優(yōu)先分區(qū)工具推薦gdisk或者parted操作風(fēng)格不同但底層都是改分區(qū)表。以最常見(jiàn)的場(chǎng)景為例一塊全新的盤(pán)打算整塊盤(pán)分成一個(gè)區(qū)來(lái)用用parted可以這樣parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary ext4 0% 100%0% 100%意思是從頭到尾占滿整塊盤(pán)。如果你只想分一半做數(shù)據(jù)盤(pán)可以把后面改成0% 50%再補(bǔ)一條命令建第二個(gè)分區(qū)。這個(gè)百分比寫(xiě)法比直接填扇區(qū)號(hào)友好太多我處理新盤(pán)時(shí)基本都用它。1.3 新盤(pán)收到之后的基本檢查流程收到一塊新盤(pán)別急著往機(jī)箱里塞我一般按下面的順序走一遍插上盤(pán)啟動(dòng)系統(tǒng)后執(zhí)行l(wèi)sblk確認(rèn)系統(tǒng)有沒(méi)有認(rèn)到設(shè)備如果完全沒(méi)有優(yōu)先檢查供電和線纜。執(zhí)行dmesg | tail看看有沒(méi)有異常報(bào)錯(cuò)。新盤(pán)通常會(huì)看到類似sdb: sdb1的信息如果看到I/O error基本可以斷定是盤(pán)本身或線材的問(wèn)題。確認(rèn)設(shè)備名后再確認(rèn)分區(qū)表類型和分區(qū)情況。格式化、掛載一步步來(lái)。這個(gè)流程聽(tīng)起來(lái)很基礎(chǔ)但真能省下不少排查時(shí)間。我遇到過(guò)好幾次“硬盤(pán)插上沒(méi)反應(yīng)”的求助最后查下來(lái)是SATA線沒(méi)插緊或者供電線分叉沒(méi)插到位?!跋到y(tǒng)認(rèn)不到盤(pán)”九成是硬件問(wèn)題不是軟件問(wèn)題別一開(kāi)始就在軟件里折騰。2. 臨時(shí)掛載先跑通再談?dòng)谰?.1 決定文件系統(tǒng)ext4、XFS、NTFS/exFAT怎么選掛載之前你得先讓盤(pán)上有文件系統(tǒng)也就是“格式化”。這塊盤(pán)將來(lái)要拿來(lái)做什么決定了你選什么格式場(chǎng)景推薦文件系統(tǒng)理由Linux系統(tǒng)盤(pán)、普通數(shù)據(jù)盤(pán)ext4兼容性最好老牌穩(wěn)定新手首選大文件存儲(chǔ)、數(shù)據(jù)庫(kù)備份XFS大文件讀寫(xiě)性能好適合單文件大容量場(chǎng)景跨Windows/Linux雙系統(tǒng)讀寫(xiě)NTFS或exFATWindows原生支持Linux要裝ntfs-3g移動(dòng)硬盤(pán)、U盤(pán)exFAT跨平臺(tái)兼容好避免單文件4GB限制ext4我還是最推薦給第一次接觸Linux的用戶原因無(wú)他生態(tài)最成熟網(wǎng)上能查到的資料最多出了問(wèn)題也好修。格式化命令mkfs.ext4 /dev/sdb1如果打算整塊盤(pán)不分區(qū)直接格式化也可以mkfs.ext4 /dev/sdb但不建議因?yàn)楹罄m(xù)做分區(qū)調(diào)整會(huì)非常被動(dòng)還是老老實(shí)實(shí)分一個(gè)區(qū)再格式化。2.2 mount的基本用法和常用參數(shù)格式化完成之后臨時(shí)掛載就簡(jiǎn)單了mkdir -p /data mount /dev/sdb1 /data掛載的本質(zhì)是把一塊已經(jīng)格式化好的分區(qū)跟系統(tǒng)目錄樹(shù)里的某個(gè)目錄“連接”起來(lái)。這里有個(gè)必須理解的邏輯掛載點(diǎn)目錄必須是已經(jīng)存在的空目錄。如果目錄里原本有文件掛載之后這些文件會(huì)被“遮住”你看不到了但數(shù)據(jù)還在卸載之后又會(huì)重新出現(xiàn)。mount還有一些常用參數(shù)挑幾個(gè)最實(shí)用的說(shuō)一下mount -o ro /dev/sdb1 /data # 只讀掛載適合排查盤(pán)的數(shù)據(jù)安全場(chǎng)景 mount -o noexec /dev/sdb1 /data # 禁止執(zhí)行二進(jìn)制文件適合防病毒的場(chǎng)景 mount -o loop ubuntu.iso /mnt/iso # 掛載鏡像文件 mount --bind /data /srv/data # 目錄綁定不新建分區(qū)也能把目錄掛到別處--bind這個(gè)用法很多人不知道但它在服務(wù)遷移時(shí)極好用。比如某個(gè)服務(wù)寫(xiě)死路徑/srv/data而你的真實(shí)數(shù)據(jù)在/data不用挪數(shù)據(jù)一條bind命令就搞定。2.3 umount卸不掉這說(shuō)明有人在占用對(duì)應(yīng)mount的是umountumount /data如果提示target is busy說(shuō)明還有進(jìn)程在訪問(wèn)這個(gè)目錄。先執(zhí)行l(wèi)sof f -- /data或fuser -mv /data看清楚是誰(shuí)占著再?zèng)Q定是停掉進(jìn)程還是用強(qiáng)制卸載兜底。umount -l /data-l參數(shù)是lazy umount意思是立刻把這個(gè)掛載點(diǎn)從目錄樹(shù)里摘掉但等占用它的進(jìn)程全部退出后才真正卸載底層設(shè)備。這個(gè)參數(shù)很適合生產(chǎn)環(huán)境你不能停掉正在寫(xiě)數(shù)據(jù)的業(yè)務(wù)進(jìn)程但你又確實(shí)需要卸載這塊盤(pán)去處理問(wèn)題。用了-l之后目錄里的數(shù)據(jù)不會(huì)丟進(jìn)程寫(xiě)到一半的數(shù)據(jù)也會(huì)繼續(xù)完成寫(xiě)入。踩過(guò)的坑很多人習(xí)慣cd到掛載目錄里再執(zhí)行umount結(jié)果永遠(yuǎn)提示target is busy。因?yàn)楫?dāng)前shell的工作目錄還停留在掛載點(diǎn)里shell本身就是那個(gè)占用進(jìn)程。先cd /再u(mài)mount問(wèn)題直接消失。3. 開(kāi)機(jī)自動(dòng)掛載fstab的正確打開(kāi)方式3.1 fstab的六個(gè)字段逐行講清楚臨時(shí)掛載只能解決當(dāng)下重啟之后系統(tǒng)不會(huì)自動(dòng)恢復(fù)掛載關(guān)系所以要把掛載信息寫(xiě)進(jìn)/etc/fstab。這個(gè)文件每行有固定的六個(gè)字段我用一個(gè)例子來(lái)拆解UUIDxxxx-xxxx-xxxx /data ext4 defaults 0 2依次是設(shè)備標(biāo)識(shí)推薦寫(xiě)UUID不推薦寫(xiě)/dev/sdb1掛載點(diǎn)一個(gè)不存在的目錄系統(tǒng)會(huì)先創(chuàng)建再掛載文件系統(tǒng)類型這里寫(xiě)ext4掛載選項(xiàng)defaults代表rw, suid, dev, exec, auto, nouser, async的組合dump備份標(biāo)記基本寫(xiě)0現(xiàn)在很少人用dumpfsck檢查順序根分區(qū)寫(xiě)1其他想開(kāi)機(jī)自檢的分區(qū)寫(xiě)2不想自檢寫(xiě)0一個(gè)典型的數(shù)據(jù)盤(pán)示例UUIDabcdef00-1234-5678-9abc-def012345678 /data ext4 defaults,nofail 0 23.2 為什么推薦用UUID而不是/dev/sdX新手最喜歡照抄教程里的/dev/sdb1但這是最不該學(xué)的一種寫(xiě)法。設(shè)備名不是固定的系統(tǒng)每次啟動(dòng)時(shí)發(fā)現(xiàn)硬盤(pán)的順序不一樣很可能這次是/dev/sdb下次就變成/dev/sdc了。一旦設(shè)備名錯(cuò)位fstab就會(huì)掛錯(cuò)盤(pán)。UUID是格式化時(shí)隨機(jī)生成的一串唯一標(biāo)識(shí)部分文件系統(tǒng)也可以手動(dòng)指定它跟盤(pán)走的跟系統(tǒng)啟動(dòng)順序無(wú)關(guān)。你把這盤(pán)插到另一臺(tái)機(jī)器上UUID還是同一個(gè)。獲取UUIDblkid /dev/sdb1復(fù)制那一長(zhǎng)串UUID...里的內(nèi)容填到fstab里就行。如果有人問(wèn)“我就一塊盤(pán)寫(xiě)/dev/sdb1應(yīng)該沒(méi)事吧”從概率上確實(shí)沒(méi)事但這習(xí)慣不好。哪天你把一塊新盤(pán)插上去原來(lái)的sdb變成了sdc系統(tǒng)起不來(lái)了那才是最疼的。UUID雖然長(zhǎng)但一勞永逸。3.3 調(diào)優(yōu)選項(xiàng)noatime、nofail、uid/giddefaults能應(yīng)付大部分場(chǎng)景但幾個(gè)實(shí)用選項(xiàng)值得記一下noatime不記錄文件的訪問(wèn)時(shí)間。能減少大量寫(xiě)I/O對(duì)SSD和機(jī)械盤(pán)的隨機(jī)讀都有明顯幫助。普通數(shù)據(jù)盤(pán)不是特殊審計(jì)需求建議加上。nofail如果掛載失敗比如外接硬盤(pán)沒(méi)插系統(tǒng)不會(huì)卡在emergency mode而是跳過(guò)并繼續(xù)啟動(dòng)。外接盤(pán)、虛擬機(jī)共享盤(pán)強(qiáng)烈建議加。uid和gid只對(duì)FAT/NTFS這類沒(méi)有Unix權(quán)限概念的文件系統(tǒng)有效可以指定掛載后文件歸屬的用戶和用戶組。后面講NTFS時(shí)會(huì)再細(xì)說(shuō)。舉個(gè)例子一個(gè)追求性能的本地?cái)?shù)據(jù)盤(pán)可以這么寫(xiě)UUIDxxxx /data ext4 noatime,nofail 0 2實(shí)操心得我維護(hù)的服務(wù)器里只要遇到外置USB硬盤(pán)或云盤(pán)冷備目錄nofail是必須加的。不加這個(gè)哪天設(shè)備沒(méi)插好整個(gè)機(jī)器開(kāi)機(jī)直接進(jìn)維護(hù)模式值班的人半夜就得爬起來(lái)處理。生產(chǎn)環(huán)境不要挑戰(zhàn)這種風(fēng)險(xiǎn)。3.4 驗(yàn)證fstab別把系統(tǒng)整得開(kāi)不了機(jī)改完fstab想驗(yàn)證對(duì)不對(duì)不要重啟。先執(zhí)行mount -a-a會(huì)把fstab里所有還沒(méi)掛載的條目按配置掛一遍如果配置有問(wèn)題這里當(dāng)場(chǎng)就會(huì)報(bào)錯(cuò)你還來(lái)得及改。如果沒(méi)報(bào)錯(cuò)再執(zhí)行l(wèi)sblk確認(rèn)掛載點(diǎn)生效。另一個(gè)穩(wěn)妥的驗(yàn)證方式是findmnt /data它顯示的是當(dāng)前系統(tǒng)對(duì)這個(gè)掛載點(diǎn)的真實(shí)解析結(jié)果。如果fstab寫(xiě)得不對(duì)但手動(dòng)掛載成功了findmnt會(huì)提示target is not mounted或是fstab與實(shí)測(cè)不一致。我還建議改文件之前先備份一下cp /etc/fstab /etc/fstab.bak一旦后面改壞了從單用戶模式或live CD里一條cp就能救回來(lái)。4. 典型故障報(bào)錯(cuò)信息就是最好的線索4.1 “wrong fs type, bad option, bad superblock”到底在說(shuō)什么掛載時(shí)報(bào)這串英文錯(cuò)的人特別多mount: /data: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.這一長(zhǎng)串其實(shí)是在說(shuō)我在掛載點(diǎn)里找不到一個(gè)我能識(shí)別的文件系統(tǒng)。常見(jiàn)原因有幾種盤(pán)上根本沒(méi)有文件系統(tǒng)沒(méi)格式化或者文件系統(tǒng)已經(jīng)損壞。指定的掛載類型不對(duì)比如明明是ext4盤(pán)你寫(xiě)成了-t xfs。缺少對(duì)應(yīng)的文件系統(tǒng)驅(qū)動(dòng)比如掛NTFS盤(pán)但沒(méi)裝ntfs-3g。排查辦法很簡(jiǎn)單先blkid /dev/sdb1看它到底識(shí)別出的TYPE是什么再跟掛載命令里的-t對(duì)比。如果blkid顯示TYPEntfs那你需要先裝apt install ntfs-3g如果blkid沒(méi)有任何輸出大概率盤(pán)沒(méi)有有效的文件系統(tǒng)只能重新格式化。注意重新格式化會(huì)清空所有數(shù)據(jù)執(zhí)行之前務(wù)必確認(rèn)盤(pán)上沒(méi)你想要的舊數(shù)據(jù)。4.2 明明是root為什么還是permission denied掛載成功了但cd /data進(jìn)去讀取文件時(shí)提示permission denied。這要分兩種情況看如果掛載的是ext4/xfs這類原生Linux文件系統(tǒng)問(wèn)題出在文件和目錄權(quán)限上。用ls -l /data看看屬主和權(quán)限位chown -R 你的用戶名:組名 /data改一下即可。如果掛載的是NTFS或exFAT問(wèn)題不在常規(guī)權(quán)限而是這兩個(gè)文件系統(tǒng)沒(méi)有Unix的owner/group概念內(nèi)核默認(rèn)把它們掛載成root擁有普通用戶自然進(jìn)不去。解法是掛載時(shí)指定uid/gid。先id 你的用戶名查到uid和gid然后mount -t ntfs-3g -o uid1000,gid1000,umask022 /dev/sdb1 /dataumask022含義是創(chuàng)建出來(lái)的文件權(quán)限是644、目錄權(quán)限是755普通用戶既可以讀也擁有自己的文件。想徹底可寫(xiě)可刪就把umask設(shè)成000——不推薦這樣所有用戶都能改任何文件雙系統(tǒng)共享盤(pán)上容易互相誤刪。4.3 開(kāi)機(jī)進(jìn)emergency mode大概率是fstab寫(xiě)錯(cuò)了系統(tǒng)重啟后沒(méi)有正常進(jìn)桌面而是黑屏里出現(xiàn)一句類似You are in emergency mode. After logging in, type journalctl -xb ...第一反應(yīng)不要慌九成是fstab有問(wèn)題。先輸入root密碼進(jìn)維護(hù)模式執(zhí)行mount -a它會(huì)明確告訴你哪一行出錯(cuò)。常見(jiàn)錯(cuò)誤包括UUID寫(xiě)錯(cuò)、掛載點(diǎn)不存在、文件系統(tǒng)類型不一致、盤(pán)沒(méi)插好。臨時(shí)把那行注釋掉行首加#再reboot就能先進(jìn)系統(tǒng)然后再仔細(xì)修正配置。還有一種情況需要特別注意掛載點(diǎn)目錄本身不在根目錄里。如果我寫(xiě)的是/mnt/data但忘記創(chuàng)建/mnt/data目錄fstab在實(shí)際掛載時(shí)會(huì)自動(dòng)創(chuàng)建這個(gè)倒不用擔(dān)心。真正坑的是掛載點(diǎn)的父目錄被另一張盤(pán)掛載了導(dǎo)致啟動(dòng)順序?qū)Σ簧线@種只能手動(dòng)先掛父目錄再掛子目錄。4.4 外接NTFS盤(pán)只讀掛載和中文亂碼雙系統(tǒng)用戶最常遇到外接NTFS盤(pán)只能讀、不能寫(xiě)。這往往是ntfs-3g沒(méi)裝或者是Windows開(kāi)啟了快速啟動(dòng)導(dǎo)致NTFS卷標(biāo)處于“休眠”狀態(tài)Linux為了安全會(huì)以只讀方式掛載。先裝ntfs-3gapt update apt install -y ntfs-3g如果還是只讀進(jìn)Windows關(guān)閉快速啟動(dòng)或者在Linux上強(qiáng)制以讀寫(xiě)方式掛載mount -t ntfs-3g -o remove_hiberfile /dev/sdb1 /dataremove_hiberfile會(huì)刪掉Windows的休眠鏡像文件相當(dāng)于放棄之前休眠狀態(tài)之后盤(pán)就正??蓪?xiě)了。已經(jīng)有舊內(nèi)核版本的ntfs驅(qū)動(dòng)也可能造成亂碼問(wèn)題但現(xiàn)代發(fā)行版默認(rèn)UTF-8基本都能正常顯示中文文件名。5. 延伸把本地經(jīng)驗(yàn)遷移到服務(wù)器和開(kāi)發(fā)板5.1 掛載NFS網(wǎng)絡(luò)存儲(chǔ)掛了本地盤(pán)很多人下一個(gè)需求就是掛NAS。NFS是最常見(jiàn)的網(wǎng)絡(luò)文件共享協(xié)議Linux對(duì)NFS的支持幾乎是原生級(jí)別的。假設(shè)NAS的IP是192.168.1.10共享目錄是/volume1/media你想掛到本機(jī)/mnt/nasapt install nfs-common mkdir -p /mnt/nas mount -t nfs 192.168.1.10:/volume1/media /mnt/nas這時(shí)用df -h能看到一條網(wǎng)絡(luò)存儲(chǔ)的記錄。想要開(kāi)機(jī)自動(dòng)掛載寫(xiě)進(jìn)fstab192.168.1.10:/volume1/media /mnt/nas nfs defaults,noatime,nofail 0 0NFS掛載相比本地盤(pán)多了網(wǎng)絡(luò)延遲的變量如果NAS沒(méi)響應(yīng)mount命令會(huì)卡很久。所以建議在mount參數(shù)里加soft和timeomount -t nfs -o soft,timeo50,retrans2 192.168.1.10:/volume1/media /mnt/nassoft表示網(wǎng)絡(luò)超時(shí)后放棄請(qǐng)求并報(bào)錯(cuò)hard則會(huì)讓進(jìn)程卡住重試。生產(chǎn)環(huán)境要數(shù)據(jù)不丟用hard自己家里玩玩用soft更不容易卡機(jī)。5.2 開(kāi)發(fā)板掛載ubuntu主機(jī)的目錄這塊可能偏嵌入式但我覺(jué)得值得寫(xiě)。開(kāi)發(fā)板上磁盤(pán)空間緊張常常需要直接訪問(wèn)Ubuntu主機(jī)上的交叉編譯工具鏈或代碼目錄。做法也不復(fù)雜在Ubuntu主機(jī)上裝NFS服務(wù)把需要共享的目錄export出去apt install nfs-kernel-server vim /etc/exports加一行/home/你用戶名/shared 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)然后執(zhí)行exportfs -ra systemctl restart nfs-server開(kāi)發(fā)板上再執(zhí)行mount命令掛過(guò)來(lái)效果等同于開(kāi)發(fā)板直接操作主機(jī)上的目錄。編譯產(chǎn)物直接寫(xiě)到主機(jī)磁盤(pán)開(kāi)發(fā)板的eMMC或TF卡空間壓力會(huì)小很多。no_root_squash如果不需要建議去掉。root_squash會(huì)讓遠(yuǎn)程root在本機(jī)自動(dòng)降權(quán)為nobody這對(duì)安全性是保護(hù)。我自己在調(diào)試時(shí)圖方便加過(guò)no_root_squash后來(lái)發(fā)現(xiàn)一旦開(kāi)發(fā)板被入侵攻擊者直接用root寫(xiě)我主機(jī)文件想想都后怕。平時(shí)調(diào)代碼完全用不上這個(gè)選項(xiàng)默認(rèn)配置就好。說(shuō)到最后我還想提一條關(guān)于“掛載習(xí)慣”的建議不要因?yàn)閽燧d命令看起來(lái)簡(jiǎn)單就跳過(guò)前面認(rèn)盤(pán)的環(huán)節(jié)直接執(zhí)行。我見(jiàn)過(guò)太多翻車案例最后定位都是“掛載點(diǎn)寫(xiě)錯(cuò)”“忘了確認(rèn)盤(pán)上有沒(méi)有文件系統(tǒng)”“fstab里用了不穩(wěn)定的設(shè)備名”。按我開(kāi)頭說(shuō)的流程走一遍認(rèn)盤(pán)、分區(qū)、格式化、臨時(shí)掛載、寫(xiě)fstab、mount -a驗(yàn)證每一步都確認(rèn)好了再往下走Linux掛硬盤(pán)這件事就能從“玄學(xué)”變成“肌肉記憶”。如果你手邊正好有塊閑置硬盤(pán)挑個(gè)不忙的晚上拿我這套流程練一遍之后遇到服務(wù)器加盤(pán)、開(kāi)發(fā)板擴(kuò)容、NAS掛載你會(huì)發(fā)現(xiàn)自己真的不再慌。