據(jù)盤掛載全攻略:從識(shí)別分區(qū)到自動(dòng)掛載實(shí)戰(zhàn))
很多剛接觸Linux服務(wù)器的朋友最容易遇到的一個(gè)情況就是系統(tǒng)裝好了CentOS也跑起來(lái)了但買的那塊數(shù)據(jù)盤卻怎么也看不到。問(wèn)身邊人對(duì)方甩你一句“掛載一下就好了”然后你對(duì)著終端一臉茫然——掛載是什么怎么掛為什么我df -h里看不到這篇文章就圍繞“CentOS系統(tǒng)開(kāi)通后數(shù)據(jù)盤如何掛載”這一個(gè)問(wèn)題展開(kāi)把從識(shí)別硬盤到分區(qū)、格式化、掛載、設(shè)置開(kāi)機(jī)自動(dòng)掛載的完整流程拆開(kāi)揉碎講清楚。我用的環(huán)境是CentOS 7但CentOS 8、Rocky Linux、AlmaLinux這些后續(xù)版本操作幾乎一模一樣命令都是通用的。無(wú)論你是剛買了一臺(tái)云服務(wù)器還是自己組裝的物理機(jī)只要想往系統(tǒng)里加一塊數(shù)據(jù)盤這篇文章都能幫你少走很多彎路。先說(shuō)一下我自己的經(jīng)歷。早年我給人裝服務(wù)器加了塊新硬盤進(jìn)系統(tǒng)后df -h里看不到以為硬盤是壞的折騰了半天才想起來(lái)沒(méi)分區(qū)沒(méi)格式化。從那以后我就養(yǎng)成了一個(gè)習(xí)慣新盤到手先別急著操作按識(shí)別、分區(qū)、格式化、掛載四步走一步都不能跳。1. 內(nèi)容整體設(shè)計(jì)與思路拆解1.1 為什么要單獨(dú)掛載數(shù)據(jù)盤很多人不理解數(shù)據(jù)盤插上去系統(tǒng)為什么不自動(dòng)識(shí)別這里要先搞清楚一個(gè)概念系統(tǒng)盤和數(shù)據(jù)盤在Linux里的角色是不一樣的。系統(tǒng)盤用來(lái)安裝操作系統(tǒng)啟動(dòng)引導(dǎo)程序固定從這塊盤讀取數(shù)據(jù)盤純粹用來(lái)存數(shù)據(jù)比如網(wǎng)站文件、數(shù)據(jù)庫(kù)備份、日志、用戶上傳的內(nèi)容等等。CentOS默認(rèn)只會(huì)把系統(tǒng)盤和它上面的分區(qū)自動(dòng)掛載到根目錄、/boot這些位置。數(shù)據(jù)盤插上去之后Linux內(nèi)核確實(shí)能識(shí)別到這塊硬件設(shè)備但不會(huì)自動(dòng)為你創(chuàng)建文件系統(tǒng)也不會(huì)自動(dòng)掛載到某個(gè)目錄。它只是把這塊盤當(dāng)作一個(gè)裸設(shè)備等著你決定怎么用。這就像你買了一個(gè)空柜子回家它能被“看到”硬件識(shí)別但里面的隔層怎么分、能放什么東西都要你自己安排。把數(shù)據(jù)單獨(dú)放到數(shù)據(jù)盤還有一個(gè)實(shí)際好處系統(tǒng)盤出問(wèn)題要重裝系統(tǒng)時(shí)只要數(shù)據(jù)盤不格式化數(shù)據(jù)就能完整保留下來(lái)。系統(tǒng)盤壞了換一塊新盤重裝系統(tǒng)再把數(shù)據(jù)盤掛回去數(shù)據(jù)都還在。這也解釋了為什么生產(chǎn)環(huán)境中強(qiáng)烈建議把重要數(shù)據(jù)放在數(shù)據(jù)盤而不是系統(tǒng)盤。1.2 整個(gè)掛載流程的總體脈絡(luò)拿到一塊新數(shù)據(jù)盤完整的處理流程可以概括為五個(gè)環(huán)節(jié)環(huán)節(jié)目的常用命令識(shí)別硬盤確認(rèn)系統(tǒng)能否看到新硬盤及設(shè)備名lsblk、fdisk -l創(chuàng)建分區(qū)給裸設(shè)備劃分存儲(chǔ)空間區(qū)域fdisk、parted格式化文件系統(tǒng)在分區(qū)上建立文件系統(tǒng)ext4/xfs等mkfs.ext4、mkfs.xfs臨時(shí)掛載把分區(qū)關(guān)聯(lián)到系統(tǒng)的某個(gè)目錄mount持久化配置重啟后依然自動(dòng)掛載編輯/etc/fstab實(shí)際工作中我的經(jīng)驗(yàn)是先把“識(shí)別”這一步做扎實(shí)因?yàn)楹竺嫠胁僮鞫冀⒃谡_的設(shè)備名基礎(chǔ)上。如果設(shè)備名看錯(cuò)了格式化錯(cuò)盤那是災(zāi)難。1.3 方案選型分區(qū)還是直接整盤格式化關(guān)于是否分區(qū)實(shí)際操作中存在兩種流派一種是用fdisk先把整塊盤分成一個(gè)或多個(gè)分區(qū)然后在分區(qū)上建文件系統(tǒng)另一種是直接在整塊裸盤上建文件系統(tǒng)比如mkfs.xfs /dev/sdb跳過(guò)分區(qū)環(huán)節(jié)。我的建議是如果你確定這塊盤將來(lái)就作為一個(gè)獨(dú)立的存儲(chǔ)空間使用不再做多分區(qū)規(guī)劃那么直接整盤格式化沒(méi)問(wèn)題。但如果你有后續(xù)擴(kuò)容、多分區(qū)或者調(diào)整結(jié)構(gòu)的計(jì)劃規(guī)規(guī)矩矩創(chuàng)建分區(qū)更穩(wěn)妥。生產(chǎn)環(huán)境里我一般都會(huì)創(chuàng)建分區(qū)因?yàn)榉謪^(qū)表的存在讓后續(xù)的運(yùn)維操作比如用LVM做邏輯卷管理留出了余地。2. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)2.1 如何判斷數(shù)據(jù)盤是否被系統(tǒng)識(shí)別新硬盤接入系統(tǒng)后第一步就是確認(rèn)設(shè)備名。lsblk是我最常用的命令它能把系統(tǒng)中的塊設(shè)備關(guān)系樹(shù)狀顯示出來(lái)一眼就能看出新增的盤。lsblk輸出大概長(zhǎng)這樣NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 39G 0 part / sdb 8:16 0 100G 0 disksd開(kāi)頭的是SCSI/SATA/虛擬磁盤設(shè)備后面的字母按照檢測(cè)順序排列sda是第一塊盤sdb是第二塊盤以此類推。sdb下面沒(méi)有子塊說(shuō)明這塊盤目前是裸狀態(tài)還沒(méi)分區(qū)。這就是我們要處理的數(shù)據(jù)盤。還有一個(gè)命令是fdisk -l它能顯示更詳細(xì)的設(shè)備信息包括磁盤扇區(qū)大小、總?cè)萘?、分區(qū)表類型等。注意fdisk -l在部分系統(tǒng)上需要用sudo執(zhí)行否則看不到完整信息。提示有些云平臺(tái)比如阿里云、騰訊云掛載數(shù)據(jù)盤后設(shè)備名可能是vdb、vdc虛擬化環(huán)境下磁盤類型不同設(shè)備名也會(huì)不同。判斷原則不變找出那塊沒(méi)有分區(qū)的、容量與數(shù)據(jù)盤吻合的設(shè)備。2.2 設(shè)備名和分區(qū)名的對(duì)應(yīng)關(guān)系這里特別說(shuō)一個(gè)新手容易繞暈的地方/dev/sdb是整個(gè)磁盤設(shè)備/dev/sdb1是這塊磁盤上的第一個(gè)分區(qū)。你最終掛載的是分區(qū)不是磁盤。打個(gè)比方/dev/sdb是一整棟樓/dev/sdb1是樓里的第一家住戶。你要找到這家人的地址得寫(xiě)“1棟”還是“1棟101”當(dāng)然是后者。掛載也一樣操作對(duì)象必須是分區(qū)名。在使用fdisk給/dev/sdb創(chuàng)建分區(qū)后系統(tǒng)會(huì)生成一個(gè)/dev/sdb1。如果你跳過(guò)分區(qū)直接在整塊盤上格式化那么就沒(méi)有/dev/sdb1這個(gè)概念掛載時(shí)寫(xiě)的是/dev/sdb。兩種方式的掛載命令有差別別搞混。2.3 常見(jiàn)文件系統(tǒng)的選擇格式化就是在分區(qū)上創(chuàng)建文件系統(tǒng)CentOS系統(tǒng)里最常見(jiàn)的兩個(gè)選擇是xfs和ext4此外還有ext3、btrfs等。文件系統(tǒng)適用場(chǎng)景特點(diǎn)xfsCentOS 7/8默認(rèn)系統(tǒng)文件系統(tǒng)適合大文件、高并發(fā)擴(kuò)容方便但縮容困難ext4通用型方案兼容性極好功能均衡支持在線擴(kuò)容適合中小數(shù)據(jù)量btrfs高級(jí)存儲(chǔ)管理需求支持快照、壓縮、自檢但對(duì)運(yùn)維能力要求更高我的建議很簡(jiǎn)單沒(méi)有特殊需求就跟著系統(tǒng)默認(rèn)走。CentOS 7默認(rèn)是xfsCentOS 6時(shí)代默認(rèn)是ext4。如果你不確定用哪個(gè)選ext4基本不會(huì)出錯(cuò)它的生態(tài)成熟文檔多踩坑的機(jī)會(huì)少。如果你用的是CentOS 7及以上版本直接選xfs也完全沒(méi)問(wèn)題兩者在常規(guī)業(yè)務(wù)場(chǎng)景下的性能差異普通用戶根本感知不到。3. 實(shí)操過(guò)程與核心環(huán)節(jié)實(shí)現(xiàn)3.1 步驟一用lsblk確認(rèn)數(shù)據(jù)盤狀態(tài)開(kāi)始前先檢查一下當(dāng)前系統(tǒng)的磁盤情況。lsblk如果數(shù)據(jù)盤已經(jīng)接入你會(huì)看到一個(gè)無(wú)分區(qū)的設(shè)備。比如上一節(jié)示例里的/dev/sdb大小為100G沒(méi)有子設(shè)備沒(méi)有掛載點(diǎn)。此時(shí)確認(rèn)這個(gè)設(shè)備名后就可以進(jìn)行下一步。這里多提一句如果lsblk里看不到你新加的盤先別急??赡茉蛴袔追N服務(wù)器還沒(méi)識(shí)別到熱插拔設(shè)備試試重啟或者重新掃描SCSI總線云服務(wù)器在控制臺(tái)掛盤后通常需要重啟才能生效物理機(jī)的話檢查一下數(shù)據(jù)線和電源線是否接好虛擬機(jī)的話確認(rèn)宿主機(jī)是否正確把磁盤附加給了這個(gè)虛擬機(jī)。不要一上來(lái)就懷疑盤壞了。3.2 步驟二用fdisk給數(shù)據(jù)盤創(chuàng)建分區(qū)我對(duì)新手的要求是分區(qū)操作一律用fdisk它交互式提示清晰風(fēng)險(xiǎn)小。sudo fdisk /dev/sdb然后按提示操作Welcome to fdisk (util-linux 2.23.2). Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-209715199, default 2048): 回車 Using default value 2048 Last sector, sectors or size{K,M,G} (2048-209715199, default 209715199): 回車 Using default value 209715199 Partition 1 of type Linux and of size 100 GiB is set Command (m for help): w The partition table has been altered!這段操作的核心邏輯是n創(chuàng)建新分區(qū)p選擇主分區(qū)分區(qū)號(hào)默認(rèn)1起始扇區(qū)默認(rèn)2048這是現(xiàn)代磁盤對(duì)齊慣例為了性能最佳結(jié)束扇區(qū)直接回車表示使用全部剩余空間。最后w保存并退出。這個(gè)w很關(guān)鍵如果你輸入q那就是不保存退出剛才的所有操作全部作廢。注意如果數(shù)據(jù)盤超過(guò)2TBfdisk可能無(wú)法正確處理GPT分區(qū)表這時(shí)候改用parted工具用mklabel gpt創(chuàng)建GPT分區(qū)表再創(chuàng)建分區(qū)。這是一個(gè)比較容易踩的坑。3.3 步驟三格式化文件系統(tǒng)分區(qū)創(chuàng)建成功后用lsblk確認(rèn)是否生成了/dev/sdb1。然后執(zhí)行格式化sudo mkfs.xfs /dev/sdb1如果你選擇ext4則用sudo mkfs.ext4 /dev/sdb1格式化完成后會(huì)輸出類似下面的信息meta-data/dev/sdb1 isize512 agcount4, agsize6553344 blks sectsz512 attr2, projid64bit data bsize4096 blocks26213376, imaxpct25不需要看懂所有字段只要沒(méi)有報(bào)錯(cuò)就說(shuō)明格式化成功。這里順便解釋一下mkfs的含義它是“make filesystem”的縮寫(xiě)本質(zhì)上是在分區(qū)上寫(xiě)入文件系統(tǒng)的元數(shù)據(jù)結(jié)構(gòu)好比給新房子的空房間里安裝隔斷和儲(chǔ)物架決定你能怎么用這個(gè)空間。3.4 步驟四創(chuàng)建掛載點(diǎn)并掛載掛載點(diǎn)就是一個(gè)空目錄數(shù)據(jù)盤會(huì)“變成”這個(gè)目錄的內(nèi)容。習(xí)慣上我們把它放在/data或者/mnt下面。我自己習(xí)慣用/data業(yè)務(wù)數(shù)據(jù)統(tǒng)一放這個(gè)目錄方便管理。sudo mkdir -p /data sudo mount /dev/sdb1 /data執(zhí)行完mount后立刻用df -h驗(yàn)證df -h輸出結(jié)果里應(yīng)該出現(xiàn)Filesystem Size Used Avail Use% Mounted on /dev/sdb1 99G 33M 99G 1% /data看到這個(gè)說(shuō)明掛載成功數(shù)據(jù)盤已經(jīng)可以正常使用了。你可以往/data下寫(xiě)文件測(cè)試一下echo hello, this is a test file /data/test.txt cat /data/test.txt寫(xiě)進(jìn)去還能讀出來(lái)說(shuō)明讀寫(xiě)鏈路是通的。3.5 步驟五配置開(kāi)機(jī)自動(dòng)掛載如果你以為掛載完就萬(wàn)事大吉了那就錯(cuò)了。mount命令只是“臨時(shí)掛載”重啟之后掛載關(guān)系就會(huì)丟失數(shù)據(jù)盤又會(huì)變成未掛載狀態(tài)。要讓系統(tǒng)開(kāi)機(jī)后自動(dòng)掛載需要配置/etc/fstab文件。先用blkid查看分區(qū)的UUIDsudo blkid /dev/sdb1輸出類似/dev/sdb1: UUID16f7c6c6-4c5e-4a24-8c35-3d3a1e5a4d4e TYPExfs然后用你熟悉的編輯器編輯/etc/fstabsudo vim /etc/fstab在文件末尾添加一行UUID16f7c6c6-4c5e-4a24-8c35-3d3a1e5a4d4e /data xfs defaults 0 0這一行的含義從左到右分別是設(shè)備標(biāo)識(shí)UUID、掛載點(diǎn)、文件系統(tǒng)類型、掛載參數(shù)、是否備份0表示不備份、是否開(kāi)機(jī)自檢0表示不檢查。這里強(qiáng)烈建議用UUID而不是直接寫(xiě)/dev/sdb1因?yàn)樵O(shè)備名在重啟后可能會(huì)發(fā)生漂移比如之前是sdb之后變成sdc但UUID是唯一的、穩(wěn)定的不會(huì)變。這是在真實(shí)生產(chǎn)環(huán)境里踩過(guò)坑之后總結(jié)出來(lái)的經(jīng)驗(yàn)。配置保存之后別忘了驗(yàn)證一下配置是否正確sudo mount -a這個(gè)命令會(huì)按照/etc/fstab中的配置重新執(zhí)行掛載。如果沒(méi)有報(bào)錯(cuò)說(shuō)明配置沒(méi)問(wèn)題。如果報(bào)錯(cuò)了別重啟先檢查語(yǔ)法和UUID是否寫(xiě)錯(cuò)。一個(gè)有效的小技巧是故意卸載后再執(zhí)行mount -a驗(yàn)證確保萬(wàn)無(wú)一失sudo umount /data sudo mount -a df -h如果df -h能看到/data掛載說(shuō)明開(kāi)機(jī)自動(dòng)掛載配置生效。4. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄4.1 報(bào)錯(cuò)wrong fs type, bad option, bad superblock這是掛載時(shí)最常見(jiàn)的一條報(bào)錯(cuò)完整信息通常是mount: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error這個(gè)錯(cuò)誤看著嚇人但實(shí)際原因大多數(shù)情況下非常簡(jiǎn)單你還沒(méi)有格式化這個(gè)分區(qū)或者格式化用的文件系統(tǒng)類型與mount命令指定的類型不一致。排查思路用lsblk -f查看分區(qū)的文件系統(tǒng)類型。FSTYPE一列為空說(shuō)明沒(méi)格式化顯示為xfs那掛載時(shí)就要用mount -t xfs。確認(rèn)命令沒(méi)有寫(xiě)錯(cuò)設(shè)備名比如把/dev/sdb1寫(xiě)成了/dev/sdb整塊盤沒(méi)有格式化時(shí)也會(huì)觸發(fā)類似報(bào)錯(cuò)。檢查/etc/fstab配置中文件系統(tǒng)類型是否與實(shí)際一致。這個(gè)報(bào)錯(cuò)在配置fstab后重啟時(shí)也會(huì)出現(xiàn)經(jīng)常導(dǎo)致系統(tǒng)直接進(jìn)入emergency mode。所以再次強(qiáng)調(diào)修改完/etc/fstab一定要執(zhí)行mount -a驗(yàn)證。4.2 報(bào)錯(cuò)特殊設(shè)備不存在 或 設(shè)備沒(méi)有發(fā)現(xiàn)mount: special device /dev/sdb1 does not exist這個(gè)提示十有八九是分區(qū)沒(méi)創(chuàng)建成功。執(zhí)行l(wèi)sblk看一下如果沒(méi)有/dev/sdb1這個(gè)設(shè)備說(shuō)明分區(qū)表沒(méi)寫(xiě)入或者創(chuàng)建完分區(qū)之后沒(méi)有執(zhí)行w保存。解決辦法也很直接重新執(zhí)行fdisk /dev/sdb創(chuàng)建分區(qū)后記得w保存退出。4.3 如何擴(kuò)容已有的數(shù)據(jù)盤關(guān)于擴(kuò)容分兩種情況說(shuō)。如果數(shù)據(jù)盤是用LVM管理的擴(kuò)容比較簡(jiǎn)單lvextend和xfs_growfs或resize2fs配合使用即可。這個(gè)屬于進(jìn)階操作這里先不展開(kāi)大家知道有這套工具即可。如果是云服務(wù)器直接在控制臺(tái)擴(kuò)容了云盤比如從100G擴(kuò)到200G分區(qū)表還是原來(lái)的大小你需要讓分區(qū)和文件系統(tǒng)都跟著變大。步驟大致是先確認(rèn)內(nèi)核識(shí)別到新容量可能需要重啟或掃描設(shè)備然后fdisk /dev/sdb刪除原分區(qū)后用相同起始扇區(qū)重建分區(qū)注意數(shù)據(jù)不會(huì)丟但操作風(fēng)險(xiǎn)極高必須做好備份再用xfs_growfs /data或resize2fs /dev/sdb1擴(kuò)展文件系統(tǒng)。注意擴(kuò)容操作在生產(chǎn)環(huán)境需要格外謹(jǐn)慎。除非你非常熟悉整個(gè)過(guò)程否則建議在操作前做快照云服務(wù)器或完整備份物理機(jī)。尤其是fdisk下刪除分區(qū)的操作一個(gè)扇區(qū)選錯(cuò)就可能毀掉整塊盤的數(shù)據(jù)。4.4 掛載后發(fā)現(xiàn)數(shù)據(jù)盤變只讀有時(shí)候掛載成功但往里面寫(xiě)數(shù)據(jù)提示Read-only file system。大概率是文件系統(tǒng)檢測(cè)到異常進(jìn)入了只讀保護(hù)狀態(tài)也可能是因?yàn)榇疟P硬件錯(cuò)誤或者之前沒(méi)有正常卸載。用dmesg | tail看看系統(tǒng)日志有沒(méi)有硬件錯(cuò)誤提示。如果是文件系統(tǒng)狀態(tài)問(wèn)題嘗試卸載后重新掛載或者用fsck檢查修復(fù)注意fsck必須在卸載狀態(tài)下執(zhí)行生產(chǎn)環(huán)境慎用。4.5 開(kāi)機(jī)后進(jìn)入emergency mode原因就是fstab寫(xiě)錯(cuò)了這是fstab配置錯(cuò)誤導(dǎo)致的典型故障。掛載配置寫(xiě)錯(cuò)后系統(tǒng)開(kāi)機(jī)掛載失敗會(huì)跳入emergency mode緊急模式很多新手在這一步就被嚇住了。處理思路在emergency mode提示符下輸入root密碼登錄。執(zhí)行mount -o remount,rw /把根文件系統(tǒng)重新掛載為可讀寫(xiě)。用vim /etc/fstab修正錯(cuò)誤配置檢查UUID、掛載點(diǎn)、文件系統(tǒng)類型。執(zhí)行mount -a驗(yàn)證通過(guò)后reboot重啟。這套流程我經(jīng)歷過(guò)不止一次記住三步remount根目錄、改fstab、mount -a驗(yàn)證。4.6 數(shù)據(jù)盤掛載前后設(shè)備名變了之前說(shuō)過(guò)設(shè)備名可能漂移。比如你重啟后發(fā)現(xiàn)之前掛載好的盤訪問(wèn)不了了df -h里沒(méi)有l(wèi)sblk一看原來(lái)/dev/sdb變成了/dev/sdc。原因可能是系統(tǒng)啟動(dòng)時(shí)設(shè)備名分配順序變化了。解決方案就是我在fstab部分反復(fù)強(qiáng)調(diào)的使用UUID而不是設(shè)備名。UUID不會(huì)變只要/etc/fstab里用的是UUID這種問(wèn)題就基本不會(huì)出現(xiàn)。4.7 卸載磁盤時(shí)提示target is busy想卸載數(shù)據(jù)盤卻提示umount: /data: target is busy說(shuō)明有進(jìn)程正在使用/data目錄下的文件。用lsof或者fuser找出是誰(shuí)占用lsof /data fuser -mv /data確認(rèn)占用進(jìn)程后要么等它結(jié)束要么用kill結(jié)束進(jìn)程再執(zhí)行umount。如果實(shí)在著急可以用umount -l強(qiáng)制延遲卸載但生產(chǎn)環(huán)境不建議可能造成數(shù)據(jù)損壞。5. 有條件時(shí)還可以做的優(yōu)化5.1 修改掛載參數(shù)提升性能/etc/fstab掛載參數(shù)不只是defaults一種選擇根據(jù)不同業(yè)務(wù)場(chǎng)景可以加參數(shù)。xfs文件系統(tǒng)下比較實(shí)用的是noatime和nodiratime作用是讓系統(tǒng)不再記錄文件訪問(wèn)時(shí)間減少不必要的寫(xiě)盤操作對(duì)數(shù)據(jù)庫(kù)和日志類應(yīng)用有一定性能提升。寫(xiě)法如下UUID16f7c6c6-4c5e-4a24-8c35-3d3a1e5a4d4e /data xfs defaults,noatime,nodiratime 0 05.2 使用LVM管理數(shù)據(jù)盤如果數(shù)據(jù)盤以后可能會(huì)頻繁擴(kuò)容、縮容或者跨越多個(gè)磁盤做存儲(chǔ)池我建議直接上LVM。LVM的全稱是Logical Volume Manager邏輯卷管理它像一層代理讓你操作的是“邏輯卷”而不是物理磁盤分區(qū)擴(kuò)縮容靈活得多。LVM的基本架構(gòu)是物理卷PV→ 卷組VG→ 邏輯卷LV。相當(dāng)于你把幾塊物理硬盤合并成一個(gè)大的“硬盤池”再?gòu)倪@個(gè)池里切出一個(gè)個(gè)“邏輯硬盤”。后續(xù)加新盤進(jìn)池子、擴(kuò)容邏輯卷都是在線操作。LVM的搭建步驟大概是sudo pvcreate /dev/sdb sudo vgcreate vg_data /dev/sdb sudo lvcreate -l 100%FREE -n lv_data vg_data sudo mkfs.xfs /dev/vg_data/lv_data sudo mount /dev/vg_data/lv_data /data這套方案在生成環(huán)境尤其常用因?yàn)閿?shù)據(jù)盤擴(kuò)容不用停機(jī)在線就能完成。不過(guò)LVM也有自己的麻煩比如內(nèi)核崩潰時(shí)可能丟失卷組信息所以還是一句話正規(guī)備份不能省。5.3 軟鏈接來(lái)整合數(shù)據(jù)盤和業(yè)務(wù)目錄有朋友會(huì)遇到這種情況業(yè)務(wù)程序死活要求數(shù)據(jù)必須放在/var/lib/mysql可你不想把數(shù)據(jù)盤掛載到這個(gè)目錄里或者/var/lib/mysql已經(jīng)有系統(tǒng)文件了。這時(shí)候可以直接把業(yè)務(wù)目錄掛到數(shù)據(jù)盤上然后把原目錄拷過(guò)去之后搬家?;蛘哂密涙溄拥姆绞桨褦?shù)據(jù)盤掛載到/data然后在/var/lib/mysql創(chuàng)建軟鏈接指向/data/mysql。不過(guò)我個(gè)人不太推薦在生產(chǎn)環(huán)境用軟鏈接處理這類問(wèn)題直接在fstab里把數(shù)據(jù)盤掛載到業(yè)務(wù)需要的目標(biāo)目錄更清爽也少一層間接跳轉(zhuǎn)。6. 一個(gè)完整實(shí)例帶你看全流程為了加深理解我把從零開(kāi)始的完整操作串一遍你照著敲就行。場(chǎng)景CentOS 7系統(tǒng)新增一塊100G數(shù)據(jù)盤設(shè)備名/dev/sdb我要將它掛載到/data目錄文件系統(tǒng)用xfs。# 1. 查看磁盤狀態(tài) lsblk # 2. 給/dev/sdb創(chuàng)建分區(qū) sudo fdisk /dev/sdb # 依次輸入n - p - 回車 - 回車 - w # 3. 確認(rèn)分區(qū)生成 lsblk # 應(yīng)該看到 /dev/sdb1 # 4. 格式化 sudo mkfs.xfs /dev/sdb1 # 5. 創(chuàng)建掛載點(diǎn)并掛載 sudo mkdir -p /data sudo mount /dev/sdb1 /data # 6. 查看掛載結(jié)果 df -h # 7. 獲取UUID sudo blkid /dev/sdb1 # 8. 寫(xiě)入fstab sudo vim /etc/fstab # 添加UUID上一步得到的UUID /data xfs defaults 0 0 # 9. 驗(yàn)證fstab配置 sudo mount -a # 10. 測(cè)試讀寫(xiě) echo test /data/test.txt cat /data/test.txt第9步是最關(guān)鍵的驗(yàn)證步驟。很多人寫(xiě)錯(cuò)fstab之后直接重啟結(jié)果系統(tǒng)起不來(lái)其實(shí)一條mount -a就能提前發(fā)現(xiàn)問(wèn)題。7. 操作心得與經(jīng)驗(yàn)總結(jié)最后說(shuō)幾句實(shí)在話。數(shù)據(jù)盤掛載本身不是一個(gè)高難度技術(shù)棧但它非??简?yàn)一個(gè)人的細(xì)心程度。設(shè)備名看錯(cuò)、分區(qū)忘記保存、fstab寫(xiě)錯(cuò)、掛載點(diǎn)沒(méi)建任何一個(gè)環(huán)節(jié)出問(wèn)題都可能導(dǎo)致數(shù)據(jù)盤無(wú)法正常使用嚴(yán)重的還能把系統(tǒng)搞掛。我的經(jīng)驗(yàn)是每個(gè)命令執(zhí)行完用lsblk和df -h確認(rèn)一下結(jié)果不要一股腦敲到最后再回頭看。關(guān)于fstab我再說(shuō)一次能用UUID就不要用設(shè)備名寫(xiě)完必須mount -a驗(yàn)證。這兩條做到位至少能避免80%的掛載故障。關(guān)于數(shù)據(jù)安全不管你是格式化新盤還是擴(kuò)容舊盤備份永遠(yuǎn)放在第一位。我遇到過(guò)不少用戶擴(kuò)展分區(qū)時(shí)一個(gè)操作失誤整個(gè)數(shù)據(jù)盤一夜回到解放前。服務(wù)器的數(shù)據(jù)是無(wú)價(jià)的備份的時(shí)間成本完全可以接受。如果你的CentOS版本是8或以上或者用的是Rocky Linux、AlmaLinux這些RHEL系發(fā)行版這套流程依然適用命令幾乎不需要改動(dòng)。如果用的是Debian/Ubuntu文件系統(tǒng)管理思路也一樣只是安裝工具和部分命令細(xì)節(jié)有差異基本原理通用。數(shù)據(jù)盤掛載這個(gè)技能你花一次時(shí)間學(xué)會(huì)之后的每一次服務(wù)器部署、擴(kuò)容、故障排查都用得上。把它當(dāng)作Linux服務(wù)器入門的第一課不虧。