Fedora

如何在不使用 LiveCD 或重新啟動的情況下調整 Fedora 中的根 LVM 分區

  • July 14, 2019

我有一個虛擬機,最近它的磁碟映像從 20GB 增加到 50GB,並fdisk -l驗證 VM 可以看到這個新大小。現在我需要調整我的根 LVM 分區以填充額外的 30GB。

我找到 幾篇 關於調整 LVM 大小的文章,但少數涉及調整根分區大小的文章都聲稱您需要從 LiveCD 啟動。有沒有辦法在不關閉伺服器的情況下做到這一點?伺服器很關鍵,所以我想盡量減少停機時間。

編輯:輸出fdisk -l

[root@fedora-host ~]# sudo fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders, total 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00097c90

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 36.1 GB, 36104568832 bytes
255 heads, 63 sectors/track, 4389 cylinders, total 70516736 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root doesn't contain a valid partition table

Disk /dev/mapper/VolGroup-lv_swap: 6308 MB, 6308233216 bytes
255 heads, 63 sectors/track, 766 cylinders, total 12320768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap doesn't contain a valid partition table

編輯:如何調整物理分區的大小?fdisk 可以看到可用空間,但我不知道如何調整主 LVM 分區的大小以使用它。我嘗試啟動到 LiveCD 並使用 parted’dresize命令,但它給我的只是錯誤“無法檢測文件系統”。我找到了這個指南,上面說我需要刪除分區並創建一個大小正確的新分區,但這聽起來很危險。

最終編輯:Parted 的resize命令奇怪地無法調整 LVM 分區的大小。去搞清楚。相反,我只是刪除了舊分區並使用新範圍創建了一個新分區,如上面連結中所述,並且正確調整了 LVM 分區的大小。然後我按照下面的建議來調整LVM 分區內的捲和文件系統的大小。

您可以線上增加邏輯卷。您必須解除安裝它以縮小它(這需要 LiveCD / 救援模式。)

  1. pvresize /dev/sda2(假設您的 LVM 分區是sda2. 根據需要替換。)
  2. lvextend /dev/mapper/root -l+100%FREE(或者,無論您的根邏輯卷被稱為什麼。)
  3. resize2fs /dev/mapper/root(假設 ext2/3/4)

安裝 gparted。以 root 身份執行(如果遠端使用 ssh -X 或 x2go)。選擇分區。它應該顯示結束後的可用空間(向右)。如果沒有,您需要重新啟動虛擬機以查看虛擬設備的新大小。這應該是 systemd 的最小停機時間。

右鍵點擊並選擇調整大小。將末端拖到磁碟的末端。確保不要觸摸開頭。gparted 能夠在調整大小期間移動分區,但這當然會破壞正在執行的系統。但移動端是好的。查看 gparted 將執行的待處理操作,以確保您正在擴展而不是移動分區。點擊應用。gparted 將更改磁碟上的分區,然後發出核心 ioctl 重新讀取分區表,同時更改活動塊設備的大小。然後,由於它認為它是一個 LVM PV,它會為您執行 pvresize。退出 gparted,vgs 現在會顯示您的新空間。

我聽說過 parted 可以在沒有 GUI 成本的情況下完成所有這些工作的傳言,但我一直無法弄清楚巫術。Parted 必須是我用過的最糟糕的 CLI 介面之一。

不要使用 fdisk,您必須刪除並重新分配分區以調整大小,預設情況下它會在寫入時擦除 LVM2 簽名。我想我看到了一個“高級”選項來關閉這種破壞性行為,但我從未測試過它。

您也可以嘗試 cfdisk(詛咒 fdisk)。它可能有一個可用的分區調整大小。手動執行 pvresize 很容易,並且有一個命令告訴核心重新讀取分區表。但是我必須進行測試以確保它不會像 fdisk 那樣擦除 LVM 簽名。

引用自:https://serverfault.com/questions/424678