Linux

是否可以調整主分區的大小?

  • January 11, 2019

我的公司正在使用 CentOS 執行雲託管。過去,當它達到最大 SSD 容量時,他們會對其進行升級。

據我了解,他們通過創建主分區並將其安裝在 /. 所以我們以 sda 上的 4 個主分區結束。

現在我再次將空間從 300GB 升級到 400GB,我需要分配這 100 GB 的額外空間。

我能做的最好的事情是添加這 100GB 嗎?

我收集的一些資訊:

分開 /dev/sda > 列印:

Numero  Inicio  Fin     Tamaño  Typo     Sistema de ficheros  Banderas
1      1049kB  525MB   524MB   primary  xfs                  arranque
2      525MB   85,9GB  85,4GB  primary                       lvm
3      85,9GB  129GB   42,9GB  primary                       lvm
4      129GB   322GB   193GB   primary                       lvm

fdisk /dev/sda >p:

Disk /dev/sda: 429.5 GB, 429496729600 bytes, 838860800 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 label type: dos
Identificador del disco: 0x000a2b1e

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   167772159    83373056   8e  Linux LVM
/dev/sda3       167772160   251658239    41943040   8e  Linux LVM
/dev/sda4       251658240   629145599   188743680   8e  Linux LVM

df -h:

S.ficheros              Tamaño Usados  Disp Uso% Montado en
/dev/mapper/centos-root   298G   290G  8,4G  98% /
devtmpfs                  7,8G      0  7,8G   0% /dev
tmpfs                     7,8G      0  7,8G   0% /dev/shm
tmpfs                     7,8G    12M  7,8G   1% /run
tmpfs                     7,8G      0  7,8G   0% /sys/fs/cgroup
/dev/sda1                 497M   187M  311M  38% /boot
tmpfs                     1,6G      0  1,6G   0% /run/user/0

lsblk:

NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0   300G  0 disk 
├─sda1            8:1    0   500M  0 part /boot
├─sda2            8:2    0  79,5G  0 part 
│ ├─centos-swap 253:0    0     2G  0 lvm  [SWAP]
│ └─centos-root 253:1    0 297,5G  0 lvm  /
├─sda3            8:3    0    40G  0 part 
│ └─centos-root 253:1    0 297,5G  0 lvm  /
└─sda4            8:4    0   180G  0 part 
 └─centos-root 253:1    0 297,5G  0 lvm  /
sr0              11:0    1  1024M  0 rom  

與在這個問題上看到的評論相反,因為您的分區表是Disk label type: dos,而不是Disk label type: gpt,如果不先刪除物理分區以使其充當邏輯分區容器,就不可能添加邏輯分區,因為只有 4 個插槽用於物理MBR 中的分區。在不失去/損壞已經存在的數據的情況下執行此操作並非易事,因為邏輯分區的佈局與物理分區的對齊方式並不完全相同:最好不要。

你可以做以前可以做的事情(例如在第一個 LVM 分區上,而不是添加新分區),使用正在執行的系統(至少如果使用xfs:CentOS 的預設值,或者ext4可能還有其他幾個文件系統),無需重新啟動或停機時間。

  • 有備份。總有可能出錯(錯別字……)。
  • 擴大磁碟分區

有擴大空間的分區是最後一個(因為它的塊至少在這裡,也佔據了磁碟上的最後一個位置)。這是我回答中最棘手的部分:使用fdisk,注意分區 4 的開頭,並刪除分區 4。請注意,此操作目前僅在記憶體中完成。重新創建一個“新的”主分區 4(如上所述,不要嘗試任何邏輯分區),重用相同的分區開始:這應該是251658240. 讓它提供整個剩餘尺寸以使其更大。

警告:較新fdisk的工具可能會提供擦除檢測到的分區簽名,如果現在詢問或寫入磁碟時要這樣做:它檢測到您目前的 PV/LVM 簽名。

放回分區類型8e(可能只是裝飾性的)。如果一切正常,寫入新的分區表並退出fdisk

更新:要清楚,上面的操作首先在記憶體中完成。在相同的起始位置刪除和重新創建分區 4,在fdisk的記憶體中完成的總體結果是擴大了分區 4。當將其從fdisk磁碟送出時,只有 MBR(即:磁碟的第一個扇區由/dev/sda) 被重寫:儲存在扇區 251658240 及以後的數據沒有改變。更高級別(GUI… 甚至parted)工具會提供放大選項(resizepartfor parted),但最終結果是相同的。分區 4 從未在任何時候從磁碟中刪除(即使它被錯誤地從磁碟中刪除,這仍然不會是致命的,只要它在同一位置重新創建並且在作業系統抱怨之前)。

  • 更新分區新大小的核心視圖

因為分區正在使用(由設備映射器等)fdisk肯定會抱怨它不能讓系統重新讀取分區表並且舊的仍在使用中。為避免重新啟動,只需使用正確的工具來更新更改的內容:partx. 這很簡單,因為只有分區的大小發生了變化。

# cat /sys/class/block/sda4/size
188743680
# partx -u /dev/sda4
$ cat /sys/class/block/sda4/size
[bigger value]

驗證大小現在是否已增加並與使用 看到的結果相匹配fdisk。否則,出現問題,可能需要重新啟動。

  • 放大 PV、LV、文件系統。一些 LVM 選項可能能夠在更少的命令中連結這些選項,但這裡是所有步驟

如果沒有選項,它將使用所有可用空間。

# pvresize /dev/sda4

PV 上的額外空間立即在 VG 上可供 LV 使用。

# lvextend -l +100%FREE /dev/centos/root # or any other choice

然後對於 xfs:

# xfs_growfs / # remember that xfs may never shrink back

或 ext4:

# resize2fs /dev/centos/root # and ext4 can't be shrunk back while mounted

引用自:https://unix.stackexchange.com/questions/493757