LVM在線擴(kuò)容實戰(zhàn):lvextend與xfs_growfs詳解)
如果你手頭有一臺 CentOS Stream 9 服務(wù)器某天突然收到根分區(qū)使用率 97% 的告警日志寫不進(jìn)去、服務(wù)開始報錯、連 SSH 都卡頓而生產(chǎn)環(huán)境又不可能說重啟就重啟——這時候你需要的正是 LVM 在線擴(kuò)容?;?LVM 的邏輯卷管理CentOS Stream 9 的根分區(qū)可以在系統(tǒng)不重啟、服務(wù)不停機(jī)的情況下直接擴(kuò)大全程只需要幾條命令。這篇教程就是我從實際運維里整理出來的完整流程從原理到命令、從判斷到避坑全都寫清楚了。操作步驟不復(fù)雜不需要多深的 Linux 功底第一次做擴(kuò)容的運維新手可以照著敲搶修現(xiàn)場的技術(shù)同學(xué)也可以直接拿來當(dāng)手冊用。先說明一下教程里的命令我都按真實場景驗證過示例環(huán)境里 VG 名是 cs、根 LV 路徑是 /dev/cs/root但這只是我機(jī)器的命名。你機(jī)器上的 VG 名可能是 centos、rhel 或者其他什么一切以你自己的 vgs、lvs 輸出為準(zhǔn)不要照抄名字。1. 擴(kuò)容前先理清三件事根分區(qū)為什么會滿、LVM 憑什么能在線擴(kuò)1.1 根分區(qū)寫滿的典型場景與后果根分區(qū)是 Linux 系統(tǒng)里最容易被塞滿的地方而且往往是在你毫無防備的時候出問題。我接手過的故障里最常見的幾種情況是業(yè)務(wù)日志和系統(tǒng)日志持續(xù)增長比如 /var/log 下的 messages、journal 文件沒有配置輪轉(zhuǎn)幾天就能吃掉十幾 GB。容器鏡像和容器數(shù)據(jù)堆積Docker/containerd 的默認(rèn)數(shù)據(jù)目錄通常就在 /var/lib/docker 或 /var/lib/containers鏡像拉多了、日志沒清理空間很快就沒了。內(nèi)核更新和軟件包緩存dnf 升級殘留的舊內(nèi)核、緩存包都占用 /boot 和 /usr 所在分區(qū)的空間。數(shù)據(jù)庫、緩存文件直接寫在根分區(qū)上比如 MySQL 的 datadir 沒有單獨規(guī)劃盤隨著業(yè)務(wù)增長把根分區(qū)填滿。臨時文件/tmp 下有程序異常生成的大文件文件被進(jìn)程占用刪不掉肉眼很難發(fā)現(xiàn)。根分區(qū)寫滿的后果不只是不能寫文件這么簡單。系統(tǒng)很多核心功能依賴 / 目錄下的可寫空間比如 /run 下的 socket 文件、/tmp 下的臨時文件、/var 下的鎖文件。一旦滿了可能會出現(xiàn)進(jìn)程崩潰、數(shù)據(jù)庫拒絕寫入、SSH 登錄后無法創(chuàng)建歷史記錄文件、cron 任務(wù)靜默失敗等一堆看起來毫無關(guān)聯(lián)的詭異問題。所以遇到根分區(qū)快滿的時候最優(yōu)解不是急著刪文件你根本不知道哪些能刪而是先把容量擴(kuò)上去讓系統(tǒng)恢復(fù)健康之后再從容地排查是什么吃掉了空間。1.2 LVM 的三層抽象PV、VG、LV 一次講透想理解 LVM 在線擴(kuò)容必須先把它的三層結(jié)構(gòu)搞清楚。LVMLogical Volume Manager邏輯卷管理把磁盤管理分成了三層PVPhysical Volume物理卷可以是一塊整盤也可以是一個分區(qū)。它就代表物理上真實存在的存儲空間。VGVolume Group卷組由一塊或多塊 PV 組成的一個容量池。PV 可以隨時加入 VG所以 VG 的容量可以動態(tài)變大。LVLogical Volume邏輯卷從 VG 這個容量池里劃分出來的虛擬磁盤。系統(tǒng)真正格式化、掛載、寫入數(shù)據(jù)的是 LV。根分區(qū)在 LVM 場景下就是一個 LV。用日常的東西類比PV 是你買回來的一桶桶水VG 是你家的蓄水池LV 是從水池接出來的一根水管。水池里的水可以隨時從外面提桶加進(jìn)來水管也可以隨時換更粗的。對使用水的家電來說它只看到水管出口的出水量完全不知道水池擴(kuò)容這件事——這就是在線擴(kuò)容的神奇之處。CentOS Stream 9 默認(rèn)安裝的時候如果選的是自動分區(qū)方案根分區(qū)通常就在 LVM 上/boot 是獨立分區(qū)根目錄掛載在一個 LV 上。這也就意味著只要你當(dāng)初沒有手動改過分區(qū)方式大概率可以直接用 LVM 在線擴(kuò)容。1.3 在線擴(kuò)容的前提、邊界與安全底線LVM 在線擴(kuò)容不是所有場景都能用的動手之前要先確認(rèn)三個前提根分區(qū)必須是由 LVM 管理的。怎么確認(rèn)執(zhí)行 lsblk如果根目錄對應(yīng)的設(shè)備路徑是 /dev/mapper/xxx 或者 lvm 類型就說明是 LVM。如果根分區(qū)是普通分區(qū)比如 /dev/sda2 直接掛載到 /那這套流程用不了只能通過其他方式處理比如用 parted 調(diào)整分區(qū)風(fēng)險更高或者遷移數(shù)據(jù)。要擴(kuò)容的 LV 所在 VG 有足夠的可用空間或者你有辦法補充新磁盤、擴(kuò)展原磁盤的容量。這是擴(kuò)容的糧草。當(dāng)前文件系統(tǒng)支持在線擴(kuò)容。CentOS Stream 9 默認(rèn)根分區(qū)是 XFSXFS 完全支持在線擴(kuò)展如果是 ext4 也支持在線擴(kuò)展。要注意的是XFS 只能擴(kuò)大不能縮小所以擴(kuò)容操作本身安全但千萬不要想著用 LVM 縮小 XFS 根分區(qū)。安全底線方面我的習(xí)慣是任何磁盤操作之前先做一份云平臺快照或者至少確認(rèn)這臺機(jī)器有最近的備份。lvextend 本身是相當(dāng)安全、成熟的元數(shù)據(jù)操作但它畢竟是動底層存儲的東西花幾分鐘打個快照能讓你在操作失誤時全身而退。另外操作盡量放在業(yè)務(wù)低峰期雖然在線擴(kuò)容對服務(wù)影響很小但邏輯卷元數(shù)據(jù)和文件系統(tǒng)增長會有瞬時 IO 負(fù)載。2. 體檢環(huán)節(jié)四組命令看清根分區(qū)的真實家底2.1 第一步先看清楚當(dāng)前根分區(qū)的用量與掛載情況不管多急著擴(kuò)容動手前都要先做一次體檢。我通常按固定順序跑以下幾組命令首先看根分區(qū)的使用率和文件系統(tǒng)類型df -hT /這個命令的 T 參數(shù)很關(guān)鍵它會顯示文件系統(tǒng)類型。輸出里能看到掛載點是 / 的設(shè)備比如 /dev/mapper/cs-rootType 是 xfs。記住這個類型后面決定用哪個擴(kuò)容命令。然后再看整體磁盤結(jié)構(gòu)和掛載關(guān)系lsblklsblk 會以樹形結(jié)構(gòu)顯示所有塊設(shè)備。一個典型的輸出長這樣NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 60G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 59G 0 part └─cs-root 253:0 0 40G 0 lvm /看到 cs-root 這一行掛載在 /說明根分區(qū)確實是 LV。同時注意 sda2 分區(qū)大小是 59G而 LV root 只有 40G——也就是說卷組里很可能還有空閑空間這就是我們在線擴(kuò)容的底氣。2.2 LVM 家底盤點vgs、lvs、pvs 三個命令怎么讀接下來用 LVM 自帶的三個命令看家族明細(xì)vgs lvs pvs三個命令分別對應(yīng)查看卷組、邏輯卷、物理卷的概況。輸出示例# vgs VG #PV #LV #SN Attr VSize VFree cs 1 1 0 wz--n- 58.99g 19.00g # lvs LV VG Attr LSize Pool Origin Data% Meta% root cs -wi-ao---- 40.00g這里的 VFree 列是 19.00g表示卷組 cs 里還有 19GB 沒分配的空間。你現(xiàn)在要做的判斷很簡單VFree 有空間直接給根 LV 擴(kuò)容。VFree 是 0 或者不夠用就需要先給 VG 增加容量見后面第 4 章。如果覺得 vgs 輸出不夠詳細(xì)可以用 vgdisplay 看更完整的信息比如 PE 大小和空閑 PE 數(shù)量。vgdisplay cs里會看到 Free PE / Total PEPE 是 LVM 分配空間的最小單位默認(rèn)一般是 4MiB。知道 PE 大小有助于理解 lvextend 用 -l 指定數(shù)量時的換算關(guān)系。2.3 判斷擴(kuò)容路徑與文件系統(tǒng)類型避免選錯命令體檢做完其實已經(jīng)把走哪條路想清楚了如果 lsblk 顯示根分區(qū)是 LV 類型且 vgs 顯示 VFree 有空間走直接擴(kuò) LV這條路對應(yīng)第 3 章。如果 vgs 顯示 VFree 已經(jīng)耗盡但磁盤本身還有未分配空間比如 sda 是 100G但 sda2 分區(qū)只有 60G可以走擴(kuò)展分區(qū) pvresize這條路對應(yīng) 4.2 節(jié)。如果機(jī)器上還有一塊新加的空白磁盤走新盤建 PV 并入 VG這條路對應(yīng) 4.1 節(jié)。文件系統(tǒng)類型決定了最后的 grow 命令CentOS Stream 9 默認(rèn)是 XFS用 xfs_growfs如果當(dāng)初手選成了 ext4用 resize2fs。用 lvextend -r 的話可以自動識別但手動操作時必須分清。一句話總結(jié)擴(kuò)容的本質(zhì)是先在 VG 層把水加夠再在 LV 層把水管加粗最后讓文件系統(tǒng)感知到新容量。每一步都有對應(yīng)命令缺一不可。3. 主流程第一步VG 有富余時直接在線擴(kuò) LV3.1 推薦做法lvextend -r 一步完成 LV 與文件系統(tǒng)擴(kuò)容體檢確認(rèn) VG 還有 19G 空閑之后擴(kuò)容命令其實就一行。先看根 LV 的名字比如 /dev/cs/root然后執(zhí)行l(wèi)vextend -r -l 100%FREE /dev/cs/root這條命令里-r 是 --resizefs 的簡寫含義是擴(kuò)展邏輯卷之后自動擴(kuò)展文件系統(tǒng)一步到位。-l 100%FREE 表示把卷組里所有剩余空閑空間全部分配給這個 LV。注意這個百分比是相對于 VG 的空閑空間不是 LV 當(dāng)前大小。執(zhí)行后你會看到類似這樣的輸出Size of logical volume cs/root changed from 40.00 GiB (10240 extents) to 59.00 GiB (15104 extents). Logical volume cs/root successfully resized. File system xfs found on cs/root, mounted at / File system size changed from 40.00 GiB to 59.00 GiB看到 File system size changed 這一行說明文件系統(tǒng)也自動擴(kuò)展成功了。整個過程不需要重啟也不需要卸載根分區(qū)服務(wù)全程在線。這就是 LVM 在線擴(kuò)容最舒服的地方。如果你不想把 VG 里的空間全給根分區(qū)想留一點余量給后續(xù)建其他 LV 用可以改成指定增量大小比如lvextend -r -L 15G /dev/cs/root-L 后面跟的是具體大小15G 表示在原有基礎(chǔ)上增加 15GBVG 里還會剩 4G 空間。習(xí)慣上我更推薦有明確容量需求時用 -L想快速救急時用 -l 100%FREE。3.2 手動路線lvextend 之后 xfs_growfs 與 resize2fs 該怎么選雖然 -r 參數(shù)很方便我還是要單獨講一下手動路線因為實際運維中你總會遇到 -r 不好使的時候比如宿主機(jī) lvm2 版本較老、或者文件系統(tǒng)工具缺失。手動路線分兩步。第一步同樣擴(kuò) LVlvextend -L 19G /dev/cs/root注意這里不加 -rLV 擴(kuò)容后文件系統(tǒng)大小不變。此時你執(zhí)行 df -hT 會看到容量沒有任何變化這是正常的因為文件系統(tǒng)還沒有感知新空間。第二步根據(jù)文件系統(tǒng)類型選命令。前面 df -hT 已經(jīng)確認(rèn)了根分區(qū)是 XFS執(zhí)行xfs_growfs /xfs_growfs 的參數(shù)是掛載點不是設(shè)備路徑。對于根分區(qū)直接寫 / 就夠了。它會掃描掛載在 / 上的 XFS 文件系統(tǒng)并把容量擴(kuò)展到設(shè)備實際大小輸出里會出現(xiàn)data blocks changed from ... to ...看到這行就說明擴(kuò)展生效。如果你當(dāng)初把 / 做成了 ext4則用resize2fs /dev/cs/rootresize2fs 的參數(shù)是設(shè)備路徑和 xfs_growfs 恰好相反。它同樣支持在線擴(kuò)展 ext4輸出類似Resizing the filesystem on /dev/cs/root to 12345678 (4k) blocks.。新手最容易犯的錯就是把命令和文件系統(tǒng)搞混XFS 用 resize2fs 會直接報錯ext4 用 xfs_growfs 也會告訴你找不到 XFS 文件系統(tǒng)。所以每次擴(kuò)容前用 df -hT / 看一眼類型幾秒鐘的事。3.3 擴(kuò)容完成的驗證與輸出解讀擴(kuò)容不是執(zhí)行完命令就收工驗證環(huán)節(jié)必須做。我一般按下面的順序確認(rèn)df -hT / vgs lvsdf 看使用率降沒降vgs 看 VFree 是否歸零取決于你用了哪種擴(kuò)容方式lvs 看 LV 新大小。還是用前面的例子擴(kuò)容前后對比大概是這樣檢查項擴(kuò)容前擴(kuò)容后/ 文件系統(tǒng)大小40G59G/ 使用率98%66% 左右VG 空閑19G0如果用了 100%FREELV 大小40G59G如果 df 顯示容量沒變請回到 3.2 節(jié)手動執(zhí)行 xfs_growfs / 或者 resize2fs。我見過很多同事擴(kuò)完 LV 忘了擴(kuò)文件系統(tǒng)隔天一臉懵地來問我為什么 lvextend 沒生效其實命令本身沒有任何問題。另外一個小細(xì)節(jié)執(zhí)行 lvextend 時輸出的 extents 數(shù)字是和 VG 的 PE 大小掛鉤的。默認(rèn) PE 是 4MiB所以 1GB 大約是 256 個 PE。看到 10240 extents 對應(yīng) 40GB、15104 extents 對應(yīng) 59GB換算一下能幫你快速判斷 LVM 元數(shù)據(jù)層面是否真的按預(yù)期分配了。4. VG 不夠用了怎么辦新增磁盤與云盤擴(kuò)容兩條路徑4.1 新增數(shù)據(jù)盤并入 VG從識別磁盤到 vgextend 的完整命令鏈VFree 是 0 的時候第一步先讓 VG 變大。最常見的做法是給機(jī)器加一塊新磁盤把整塊盤或盤上分區(qū)變成 PV再并入 VG。以云環(huán)境為例給實例新掛載一塊 100G 數(shù)據(jù)盤后先確認(rèn)系統(tǒng)識別到了lsblk如果看到類似 /dev/sdb 這樣的新設(shè)備大小 100G且沒有掛載點就可以直接拿它做 PV。我個人的偏好是云盤直接用整塊盤做 PV不建分區(qū)表省事且性能無損。執(zhí)行pvcreate /dev/sdb vgextend cs /dev/sdbpvcreate 是把這塊盤變成物理卷。vgextend 是把它并入名為 cs 的卷組。成功后能看到Volume group cs successfully extended。再跑一遍 vgsVFree 應(yīng)該多了 100G。如果你更習(xí)慣分區(qū)方式或者要加進(jìn) VG 的盤將來可能還有其他用途那就先進(jìn) fdisk 建分區(qū)fdisk /dev/sdb交互式操作里依次按 n新建分區(qū)、p主分區(qū)、回車分區(qū)號默認(rèn) 1、回車兩次扇區(qū)默認(rèn)、t修改類型、輸入 8eLinux LVM、w寫入。之后刷新分區(qū)表并創(chuàng)建 PVpartprobe /dev/sdb pvcreate /dev/sdb1 vgextend cs /dev/sdb1整塊盤和分區(qū)兩種路徑殊途同歸最終效果都是給 VG 增加容量。之后回到第 3 章的 lvextend 流程把空間分給根分區(qū)即可。4.2 云控制臺原地擴(kuò)容系統(tǒng)盤growpart 配合 pvresize 的經(jīng)典流程除了加新盤云環(huán)境里還有一種很常見的場景直接擴(kuò)容已有系統(tǒng)盤。比如最初系統(tǒng)盤 60G你在控制臺把它擴(kuò)到了 200G。這種場景下磁盤設(shè)備不會變成新的 /dev/sdb而是 /dev/sda 本身變大但分區(qū)和 PV 還停留在原來的 60G 尺寸需要分三步把增量空間一層層認(rèn)進(jìn)來。第一步確認(rèn)內(nèi)核已經(jīng)識別到新容量lsblk正常情況下 sda 會顯示 200G但 sda1、sda2 分區(qū)還是原大小。如果 sda 都還是 60G說明內(nèi)核還沒刷新磁盤容量執(zhí)行 4.3 里的 SCSI 掃描或重啟。第二步擴(kuò)展分區(qū)。假設(shè)根 PV 在 /dev/sda2 上先用 growpart 把分區(qū)擴(kuò)到磁盤末尾dnf install -y cloud-utils-growpart growpart /dev/sda 2 partprobe /dev/sdagrowpart 后面第一個參數(shù)是磁盤設(shè)備第二個是分區(qū)號。運行結(jié)束后 sda2 分區(qū)會占滿整個 sda 的剩余空間。第三步擴(kuò)展 PVpvresize /dev/sda2pvresize 的作用是讓 PV 使用擴(kuò)容后的整個分區(qū)空間。執(zhí)行完可以用 pvs 對比前后 Size。如果 PV 當(dāng)初是直接建在整塊盤上的比如 PV 就是 /dev/sda跳過 growpart直接執(zhí)行 pvresize /dev/sda 即可。到這里 VG 的容量已經(jīng)變大vgs 應(yīng)該能看到 VSize 和 VFree 都增加了。剩下的老套路lvextend -r 或手動 xfs_growfs /。這套流程在阿里云這類云平臺上是通用的。只要底層是 virtio 等虛擬化設(shè)備且系統(tǒng)引導(dǎo)沒問題CentOS Stream 9 都能支持熱擴(kuò)容后在線完成上述操作。不同點只在于控制臺觸發(fā)擴(kuò)容后內(nèi)核刷新磁盤容量可能在幾秒到幾分鐘內(nèi)完成少數(shù)情況需要重啟一次。4.3 新盤識別不出來時的排查順序加新盤后 lsblk 看不到設(shè)備這是大家在云環(huán)境里問得最多的問題。我的排查順序固定如下先看 /proc/partitionscat /proc/partitions如果這里能看到 sdb說明內(nèi)核已經(jīng)識別只是 lsblk 輸出可能沒刷新執(zhí)行 udevadm settle 再看一次。如果是傳統(tǒng) SCSI 虛擬磁盤可以觸發(fā)一次總線重新掃描for host in /sys/class/scsi_host/host*; do echo - - - $host/scan; done執(zhí)行后立即 lsblk 檢查。看 dmesg 日志dmesg | grep -i sd\|virtio\|sdb能看到磁盤設(shè)備相關(guān)日志比如 sdb 是否被發(fā)現(xiàn)、是否有 IO 錯誤。如果以上都不行在業(yè)務(wù)窗口允許的情況下重啟一次。云平臺控制臺掛載的磁盤在大多數(shù)虛擬化環(huán)境里支持熱插拔識別但極少數(shù)老型號虛擬化平臺對熱添加支持不徹底重啟是最干脆的兜底方案。排查的時候不要急一塊磁盤沒有出現(xiàn)無非是鏈路問題、驅(qū)動問題、平臺問題三類一層層確認(rèn)就好。最忌諱的是 lsblk 沒看到新盤就反復(fù)執(zhí)行 pvcreate那樣只會得到Device /dev/sdb not found的報錯。5. 擴(kuò)容實操中的翻車現(xiàn)場與保險措施5.1 最容易踩的雷設(shè)備名看錯、類型選錯、XFS 不可縮擴(kuò)容本身不復(fù)雜但我接手過的擴(kuò)容事故幾乎都集中在三個點上。第一個是設(shè)備名看錯。pvextend、pvcreate 都是不可逆或者很難逆轉(zhuǎn)的操作如果你機(jī)器上有 /dev/sda系統(tǒng)盤和 /dev/sdb新數(shù)據(jù)盤手一抖把 pvcreate /dev/sda 敲下去系統(tǒng)盤直接變成 PV引導(dǎo)和數(shù)據(jù)都可能出問題。我的習(xí)慣是操作前先用 lsblk -o NAME,SIZE,MODEL,SERIAL 對一遍設(shè)備和盤的大小、型號確認(rèn)哪個是目標(biāo)盤。第二個是文件系統(tǒng)類型選錯。XFS 的根分區(qū)用 resize2fs 是無效的會提示 superblock 不對ext4 的根分區(qū)用 xfs_growfs 也會直接報錯。擴(kuò)容前用一次 df -hT / 確認(rèn)類型比事后排查省太多時間。第三個是把 XFS 當(dāng)成 ext4 一樣能縮能擴(kuò)。XFS 文件系統(tǒng)只支持?jǐn)U容不支持縮小。如果你哪天看到根分區(qū)太大想縮一縮這種需求正確的做法是備份、重建 LV、恢復(fù)數(shù)據(jù)而不是用 lvreduce 去縮。任何對 XFS 的 lvreduce 嘗試都可能讓文件系統(tǒng)元數(shù)據(jù)錯亂這是我在實際工作中非常忌諱的操作。還有一個隱藏的坑lvextend -l 100%FREE 會把卷組里所有空閑空間都給當(dāng)前 LV。如果你的 VG 里還有別的 LV 需要保留擴(kuò)容余地這個命令就不合適建議用 -L 精確指定增長量。做之前用 vgs 看一眼 VFree明確這些空閑我要分多少出去。5.2 動手前的三道保險快照、fstab 備份、LV 路徑核對我在生產(chǎn)環(huán)境做任何 LVM 操作之前都會花幾分鐘做三道保險這套流程幫我避免了至少三次事故保險一云平臺快照。在控制臺給系統(tǒng)盤打一份快照或鏡像??煺帐钱惒降拇_??煺諣顟B(tài)變成已完成再繼續(xù)否則快照可能不含最新數(shù)據(jù)。如果機(jī)器沒有云平臺快照能力可以用 LVM 本身的快照功能但對新手來說云平臺快照更直觀可靠。保險二備份關(guān)鍵配置和現(xiàn)有布局。執(zhí)行cp /etc/fstab /etc/fstab.bak blkid /tmp/blkid_before_resize.txt vgs /tmp/vgs_before_resize.txt lvs /tmp/lvs_before_resize.txt這幾行命令把你的文件系統(tǒng)表、設(shè)備 UUID、卷組和邏輯卷狀態(tài)都留了個底。萬一后續(xù)操作影響了啟動還能參照這些文件恢復(fù)。保險三核對 LV 路徑。在 lvextend 之前花五秒鐘跑一遍 lvs 確認(rèn)要擴(kuò)容的 LV 路徑準(zhǔn)確。我見過有人把 /dev/cs/root 寫成了 /dev/cs/boot擴(kuò)容了不該擴(kuò)的卷雖然不至于數(shù)據(jù)丟失但違背了操作意圖。另外強烈建議把長命令放進(jìn) tmux 或 screen 會話里執(zhí)行tmux new -s resize原因很現(xiàn)實擴(kuò)容期間如果 SSH 斷掉命令可能只執(zhí)行一半雖然 LVM 有恢復(fù)機(jī)制但 tmux 能保證你的會話和命令在斷連后繼續(xù)跑完。這個習(xí)慣在搶修時尤其值錢。5.3 什么時候仍然需要重啟什么時候完全不用寫到這里把在線擴(kuò)容和重啟的邊界說清楚省得大家誤解。完全不用重啟的操作已有 VG 空閑空間直接 lvextend -r 擴(kuò)展根 LV全程不用重啟。新磁盤熱插拔成功、并入 VG 后再擴(kuò)根 LV全程不用重啟。云盤控制臺擴(kuò)容后內(nèi)核已經(jīng)識別到新容量且通過分區(qū)擴(kuò)展 pvresize 完成空間認(rèn)領(lǐng)全程不用重啟??赡苄枰貑⒌那闆r云盤控制臺擴(kuò)容后lsblk 遲遲不顯示新容量所有 SCSI 掃描手段都無效此時需要重啟一次讓內(nèi)核重新讀取磁盤容量。你操作的是非 LVM 分區(qū)比如 /boot 所在分區(qū)那不在本文討論范圍且通常需要更復(fù)雜的處理。誤操作改了 /etc/fstab、/boot 下文件等啟動相關(guān)內(nèi)容這時機(jī)器會異常需要盡快修復(fù)并重啟驗證。一句話總結(jié)LVM 在線擴(kuò)容的絕大多數(shù)場景都不需要重啟而且這正是它作為生產(chǎn)環(huán)境根分區(qū)方案的核心價值。最后分享一點個人習(xí)慣擴(kuò)容完成后我會順手把根分區(qū)使用率降到安全范圍以內(nèi)但真正的收尾是排查空間為什么會被占滿。常見做法是 du -sh /var/log /var/lib /home 等目錄找出空間大戶配置日志輪轉(zhuǎn)、設(shè)置容器日志大小限制。畢竟擴(kuò)容只是治標(biāo)把容量規(guī)劃和日志治理做好才是治本。這套組合下來CentOS Stream 9 的根分區(qū)基本上就很難再給你惹麻煩了。