約束條件
- 根分區文件系統為xfs的鏡像不支持自動擴容。
- 有LVM分區的鏡像不支持自動擴容。
- 推薦使用文件系統為ext3、ext4的單分區鏡像。
說明:
- 版本太老的OS分區擴容成功后需要重啟,文件系統才能刷新。
不同OS的growpart安裝方式
為了支持私有鏡像自動擴容root分區,需要安裝growpart工具,不同操作系統的安裝方式如下。
不同操作系統growpart安裝包
| 操作系統 | 工具包 |
|---|---|
| Debian/Ubuntu | cloud-init、cloud-utils、cloud-initramfs-growroot |
| Fedora/CentOS | cloud-init、cloud-utils、cloud-utils-growpart |
| SUSE/openSUSE | cloud-init、growpart |
說明:
- Debian 9請優先使用“方法一”安裝growpart,如安裝失敗,請參考“方法二”的操作步驟完成安裝。
方法一:
Debian 9請執行如下命令安裝growpart工具。
apt-get install -y -f cloud-init cloud-utils cloud-initramfs-growroot
方法二:
如使用“方法一”安裝失敗,可能是由于Debian 9.0.0的安裝源有問題,故需自行下載依賴包cloud-utils和cloud-initramfs-growroot后安裝。
- 執行以下命令下載依賴包:
wget 包下載地址
可從如下地址獲取依賴包:
- 執行以下命令修復依賴:
apt --fix-broken install
- 執行以下命令進行安裝:
dpkg -i cloud-utils包路徑 cloud-initramfs-growroot包路徑
例如:dpkg -i /root/cloud-utils_0.29-1_all.deb /root/cloud-initramfs-growroot_0.18.debian5_all.deb
Debian其他系列請執行以下命令安裝:
apt-get update;apt-get install cloud-utils cloud-initramfs-growroot
操作步驟
私有鏡像磁盤分區方式以如下兩種場景為例:
當root分區在最末尾分區的情況請參考root分區在末尾分區。
當root分區在非末尾分區的情況請參考root分區在非末尾分區。
說明:
-
parted命令無法使用時,請確保OS已經安裝parted工具,請按照如下方式安裝:
-
CentOS系列,請執行以下命令:
yum install parted
- Debian系列,請執行以下命令:
apt-get install parted
- root 分區在末尾分區(例如:/dev/xvda1: swap ,/dev/xvda2: root )
以CentOS 6.5 64bit系統盤為40GB為例,介紹root分區在末尾分區時如何自定義可自動擴容root分區的Linux私有鏡像的配置方法。
a. 執行如下命令查看/dev/xvda的磁盤分區。
parted -l /dev/xvda
回顯信息如下所示,此時root分區為第二分區,大小為38.7GB。
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 4296MB 4295MB primary linux-swap(v1)
2 4296MB 42.9GB 38.7GB primary ext4 boot
b. 為了支持鏡像自動擴容到root分區,請安裝growpart工具。
執行以下命令完成growpart安裝。
yum install cloud-*
說明:
- growpart可能集成在cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init包里,可以直接執行上述命令并確保growpart命令可用。
c. 執行如下命令,獲取文件系統類型和UUID。
blkid
回顯信息如下所示。
/dev/xvda1: UUID="25ec3bdb-ba24-4561-bcdc-802edf42b85f" TYPE="swap"
/dev/xvda2: UUID="1a1ce4de-e56a-4e1f-864d-31b7d9dfb547" TYPE="ext4"
d. 關閉云主機轉成私有鏡像。
[root@sluo-ecs-e6dc-resizefs ~]# poweroff
Connection closed by foreign host.
Disconnected from remote host at 11:08:54.
Type `help′ to learn how to use Xshell prompt.
e. 用此新私有鏡像發放云主機,系統盤指定50GB為例,重新登錄后,執行如下命令查看分區擴容情況。
parted -l /dev/xvda
回顯信息如下所示,此時root分區已完成自動擴容。
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
NumberStartEndSizeTypeFile systemFlags
1 1049kB 4296MB 4295MB primary linux-swap(v1)
2 4296MB 53.7GB 49.4GB primary ext4 boot
f.執行如下命令,檢查磁盤掛載是否成功。
df -Th
回顯信息如下所示。
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda2 ext4 49.4G 2.6G 46.8G 4% /dev/shm
tmpfs tmpfs 4295M 0 4295M 0% /
- root 分區在非末尾分區(例如:/dev/xvda1: root ,/dev/xvda2: swap )
以CentOS 7.3 64bit系統盤為40GB為例,介紹root分區在非末尾分區時如何自定義可自動擴容root分區的Linux私有鏡像的配置方法。
a. 執行如下命令查看/dev/xvda的磁盤分區。
parted -l /dev/xvda
回顯信息如下所示,此時,第一個分區是root分區,大小為40.9GB。第二個分區是swap分區。
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 41.0GB 40.9GB primary ext4 boot
2 41.0GB 42.9GB 2000MB primary linux-swap(v1)
b. 執行如下命令,查看/etc/fstab文件的配置。
tail -n 3 /etc/fstab
回顯信息如下所示,可以看到兩個分區的UUID信息。
#
UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1
UUID=5de3cf2c-30c6-4fb2-9e63-830439d4e674 swap swap defaults 0 0
c. 執行如下命令,打開/etc/fstab文件,按“i”鍵進入編輯狀態。
vi /etc/fstab
d. 清除swap分區配置,按“ESC”鍵退出編輯狀態并執行如下命令保存配置。
wq!
e. 執行如下命令,查看配置是否已更改。
tail -n 3 /etc/fstab
回顯信息如下所示,此時只有root分區的UUID信息。
UUID=7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea / ext4 defaults 1 1
f.執行如下命令,關閉swap設備。
swapoff -a
g. 執行如下命令,查看/dev/xvda磁盤分區情況。
parted /dev/xvda
回顯信息如下所示。
[root@test-0912 bin]# parted /dev/xvda
GNU Parted 3.1
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
h. 輸入如下命令,查看當前分區情況。
p
回顯信息如下所示。
(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 4296MB 4295MB primary linux-swap(v1)
2 4296MB 42.9GB 38.7GB primary xfs boot
(parted)
i.輸入如下命令,刪除第2個磁盤分區。
rm 2
回顯信息如下所示。
(parted) rm 2
(parted)
j.輸入如下命令,查看當前分區情況。
p
回顯信息如下所示。
(parted) p
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 41.0GB 40.9GB primary ext4 boot
k. 輸入quit退出。
l.執行如下命令,查看/dev/xvda磁盤分區情況。
parted -l /dev/xvda
回顯信息如下所示,swap分區已經刪除。
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 41.0GB 40.9GB primary ext4 boot
m. 為了支持鏡像自動擴容到root分區,請安裝growpart。
執行以下命令完成growpart安裝。
yum install cloud-*
說明:
- growpart可能集成在cloud-utils-growpart/cloud-utils/cloud-initramfs-tools/cloud-init包里,可以直接執行上述命令并確保growpart命令可用。
n. 執行如下命令,將/dev/xvda的swap分區擴容給root分區所在的第1個分區。
growpart /dev/xvda 1
回顯信息如下所示:
CHANGED: partition=1 start=2048 old: size=79978496 end=79980544 new: size=83873317,end=83875365
o. 執行如下命令,查看/dev/xvda磁盤分區情況。
parted -l /dev/xvda
回顯信息如下所示:
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 42.9GB 42.9GB primary ext4 boot
p. 執行如下命令,獲取文件系統類型和UUID。
blkid
回顯信息如下所示:
/dev/xvda1: UUID="7c4fce5d-f8f7-4ed6-8463-f2bd22d0ddea" TYPE="ext4"
q. 關閉云主機轉成私有鏡像。
[root@sluo-ecs-e6dc-resizefs ~]# poweroff
Connection closed by foreign host.
Disconnected from remote host at 11:08:54.
Type `help′ to learn how to use Xshell prompt.
r. 用此新私有鏡像發放云主機,系統盤指定100GB為例,重新登錄以后,執行以下命令查看/dev/xvda磁盤分區情況。
parted -l /dev/xvda
回顯信息如下所示,確認root分區已完成擴容,此時擴容后的root分區大小為107GB。
Model: Xen Virtual Block Device (xvd)
Disk /dev/xvda: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 107GB 107GB primary ext4 boot
說明:
- 回顯信息中Size的大小為擴容后的大小。