使用 growpart 在 CentOS 7 下調整分割區容量

前言

使用虛擬機、雲端機房的雲主機時,一開始硬碟空間可能夠用。不過隨著儲存的資料增加,就可能出現硬碟空間不足的情況。這個時候雖然可以使用額外掛載一顆硬碟,再將資料搬移到新的硬碟中的方式來因應。不過這個方式除了要花費許多的時間,也會需要許多額外的調整操作。因此,直接擴大原本硬碟的大小,或許會是一個比較好的選擇。

使用 Logical Volume Manager (LVM) 管理分割區,可以直接透過 LVM 工具調整 Volume 大小。

調整硬碟大小

常見虛擬機 VMWare、VirtualBox、Hyper-V 解決方案,或是雲端主機供應商如 Amazon Web Services、Microsoft Azure、Google Cloud Platform (GCP),都有提供修改硬碟大小的方式。所以這邊先依照各自的技術文件修改硬碟大小的配置,再來操作 CentOS 中的分割區擴容。

檢查硬碟及分割區大小

把原先 sda 硬碟大小,從原先 10 GB 調整為 20GB 後,執行 lsblk 列出所有硬碟及分割區。可以看到 sda 這個硬碟大小是 20 GB,但是只有一個 10 GB 的分割區 sda1。這是因為上個步驟其實只調整了硬碟大小,還沒分配多出來的新容量,因此需要透過磁碟分割相關的指令,將原本的分割區擴大。

$ lsblk

NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda      8:0    0  20G  0 disk 
└─sda1   8:1    0  10G  0 part /

擴大分割區大小

接下來透過 growpart 命令,指定要擴大的硬碟及分割區編號擴大分割區。

$ sudo growpart /dev/[DISK_ID] [PARTITION_NUMBER]

這次我們要把 /dev/sda 的硬碟的第一個分割區擴大,所以要執行 growpart /dev/sda 1

$ sudo growpart /dev/sda 1

CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=41927602,end=41929650

安裝 growpart 工具套件

如果找不到 growpart,代表沒有安裝對應的工具套件。可以執行下面的 yum 指令安裝:

$ sudo yum install cloud-utils-growpart

擴大檔案系統

最後就是擴大作業系統的檔案系統。根據不同的檔案系統,進行不同的操作。如果是 ext2、ext3、ext4 這些檔案系統,可以使用 resize2fs;如果是 xfs,則是使用 xfs_growfs 指令。

ext2、ext3、ext4

指令格式是 resize2fs /dev/[DISK_ID][PARTITION_NUMBER]。在下面的範例中,要修改的分割區是 /dev/sda1。

$ sudo resize2fs /dev/sda1

xfs

指令格式是 xfs_growfs [MOUNT-POINT]。在下面的範例中,要修改的分割區是掛載在 / 路徑。

$ sudo xfs_growfs /

meta-data=/                      isize=256    agcount=4, agsize=655296 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=2621184, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2621184 to 5240950

結尾

最後使用 dflsblk 指令檢查硬碟空間是否有增加。上面指令執行如果都沒錯誤,就可以看到分割區大小顯示為 20 GB。

$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G   10G   10G  50% /
# lsblk

NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda      8:0    0  20G  0 disk 
└─sda1   8:1    0  20G  0 part /

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端