遠(yuǎn)程連接ECS實例。
- 運行以下命令,確認(rèn)待擴容云盤及其分區(qū)信息。
如圖所示,表示該實例有2塊云盤,系統(tǒng)盤 /dev/vda 和數(shù)據(jù)盤 /dev/vdb ,我們以數(shù)據(jù)盤 /dev/vdb 為例。其中:
步驟1:擴容分區(qū)
本操作以公共鏡像Alibaba Cloud Linux 2.1903 LTS 64位操作系統(tǒng)、在ECS實例內(nèi)部將云盤分區(qū)/dev/vdb1 由40 GiB擴容至60 GiB(已在控制臺擴大容量為60 GiB)為例,請您根據(jù)實際環(huán)境進(jìn)行操作。
- 可選:根據(jù)準(zhǔn)備工作確認(rèn)的信息,如果您的云盤分區(qū)類型為MBR且在控制臺擴容后容量大于2 TiB,需先轉(zhuǎn)換分區(qū)為GPT分區(qū)。否則跳過該步驟。
- 運行以下命令,安裝工具。
- Alibaba Cloud Linux 2/3版本、CentOS 6及以上版本運行以下命令。
- 安裝growpart工具。
type growpart || yum install -y cloud-utils-growpart
- (可選)根據(jù)準(zhǔn)備工作確認(rèn)的信息,如果您的云盤分區(qū)類型為GPT,還需運行以下命令安裝gdisk工具。
type sgdisk || yum install -y gdisk
- Debian 8及以上版本、Ubuntu14及以上版本運行以下命令。
- 更新軟件源。
-
安裝cloud-guest-utils。
type growpart || apt-get install -y cloud-guest-utils
- (可選)根據(jù)準(zhǔn)備工作確認(rèn)的信息,如果您的云盤分區(qū)類型為GPT,還需運行以下命令安裝gdisk工具。
type sgdisk || apt-get install -y gdisk
- 運行以下命令,擴容分區(qū)。
以云盤分區(qū)名稱 /dev/vdb1 為例,運行如下命令。命令參數(shù)中的 /dev/vdb 和 1 之間需要空格分隔, 1 是分區(qū)編號。
LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
其中, LC_ALL=en_US.UTF-8 是環(huán)境變量設(shè)置,為了兼容中文操作系統(tǒng)的字符編碼。
重要 以下幾種分區(qū)情況,您需要特別注意:
- 如果您擴容的是系統(tǒng)盤,系統(tǒng)盤的設(shè)備名稱通常為
/dev/vda 。
- 如果單盤有多個連續(xù)分區(qū)的情況,僅能擴容最后一個分區(qū)。例如數(shù)據(jù)盤
/dev/vdb 有三個分區(qū)/dev/vdb1 、/dev/vdb2 和/dev/vdb3 。擴容時,只能擴容最后一個分區(qū)/dev/vdb3 ,即執(zhí)行growpart /dev/vdb 3 命令即可完成數(shù)據(jù)盤的分區(qū)擴容。
- 如果您是NVMe類型云盤,以分區(qū)名稱
/dev/nvme0n1p1 為例,其中/dev/nvme0n1 是設(shè)備名稱。擴容時執(zhí)行命令為growpart /dev/nvme0n1 1 ,而不是growpart /dev/nvme0n1p1 1 。
- 如果您需要擴容的云盤分區(qū)是MBR分區(qū)表下的擴展分區(qū)(通常判斷方式是分區(qū)號大于等于5),您需要先進(jìn)行擴展分區(qū)擴容后再對邏輯分區(qū)進(jìn)行擴容。例如您有
/dev/vdb1 (主分區(qū))、/dev/vdb2 (擴展分區(qū))、/dev/vdb5 (邏輯分區(qū))三個分區(qū),此時您需要依次執(zhí)行growpart /dev/vdb 2 、growpart /dev/vdb 5 完成分區(qū)的擴容。
- 使用growpart工具時,如果出現(xiàn)報錯信息,請參見常見問題進(jìn)行排查。
、
如下圖所示,輸出 CHANGED 字樣時,表示分區(qū)擴容成功。
- 可選:CentOS 6等較低版本的操作系統(tǒng),需要執(zhí)行
reboot 命令重啟實例,使分區(qū)擴容生效。
通常情況下,擴容分區(qū)不需要執(zhí)行重啟。但如果您擴容的是CentOS 6操作系統(tǒng)的云盤或者發(fā)現(xiàn)擴容后操作系統(tǒng)實際識別的分區(qū)沒有擴展,這是操作系統(tǒng)版本較低的原因,需要重啟實例使分區(qū)擴容生效。建議您選擇業(yè)務(wù)低谷的時間段進(jìn)行重啟,避免影響業(yè)務(wù)運行。
步驟2:擴容文件系統(tǒng)
說明 云盤和文件系統(tǒng)正在被使用的狀態(tài)下,采用resize2fs等工具在線擴容文件系統(tǒng),有可能會觸發(fā)文件系統(tǒng)數(shù)據(jù)問題,該問題與鏡像內(nèi)核版本、resize2fs工具版本相關(guān),與云盤擴容本身無關(guān)。建議您為云盤創(chuàng)建快照,做好數(shù)據(jù)備份。具體操作,請參見 創(chuàng)建一個云盤快照。
- 運行以下命令,查看文件系統(tǒng)類型。
Type值為文件系統(tǒng)類型,Mounted on值為分區(qū)的掛載目錄。如下圖,表示/dev/vdb1 分區(qū)的文件系統(tǒng)類型為ext4,掛載目錄為/mnt。
如果Filesystem取值后綴不帶數(shù)字(例如/dev/vdc ),則為裸設(shè)備。
- 運行以下命令,擴容文件系統(tǒng)。
擴容命令因文件系統(tǒng)類型而異,請您根據(jù)上一步中查詢到的文件系統(tǒng)類型選擇以下命令。
- ext*(例如ext2、ext3、ext4)文件系統(tǒng)
- 以擴容云盤分區(qū)
/dev/vdb1 的ext*文件系統(tǒng)為例,則運行如下命令:
- 以擴容裸設(shè)備
/dev/vdc 的ext*文件系統(tǒng)為例,則運行如下命令:
- xfs文件系統(tǒng)
以擴容掛載目錄為 /mnt的 xfs文件系統(tǒng)為例,則運行如下命令:
type xfs_growfs || yum install -y xfsprogs xfs_growfs /mnt
- btrfs文件系統(tǒng)
以擴容掛載目錄為 /mnt的 btrfs文件系統(tǒng)為例,則運行如下命令:
btrfs filesystem resize max /mnt
- 運行以下命令,確認(rèn)是否擴容成功。
當(dāng)查詢結(jié)果中的文件系統(tǒng)容量和控制臺容量一致時,表示擴容成功。
如下圖所示,分區(qū) /dev/vdb1 文件系統(tǒng)容量(59 GiB)和云盤容量(60 GiB)基本一致(因為文件系統(tǒng)本身會占用部分存儲空間),表示擴容完成。
擴容完成后,您需要根據(jù)實際情況檢查云盤數(shù)據(jù)是否正常。
- 如果擴容成功,ECS實例中的業(yè)務(wù)程序能夠正常運行,則完成操作。
- 如果擴容失敗,您可以通過備份的快照回滾數(shù)據(jù)。具體操作,請參見使用快照回滾云盤。
常見問題
說明如果您遇到難以解決的問題,您可以加入云盤擴容問題客戶釘釘群(釘釘群號:25920014655)與我們的工程師即時溝通。
growpart相關(guān)問題
resize2fs相關(guān)問題
- 問題:運行擴容分區(qū)growpart命令時,提示
unexpected output in sfdisk --version [sfdisk,來自 util-linux 2.23.2] 。
原因:中文版操作系統(tǒng)使用了非en_US.UTF-8的字符編碼類型。
解決方案:
- 運行
locale 命令查看ECS實例的字符編碼類型,將非en_US.UTF-8的字符編碼類型切換成en_US.UTF-8。
- 運行以下命令,切換字符編碼類型。
- 如果問題仍未解決,運行以下命令,切換字符編碼類型。
export LC_ALL=en_US.UTF-8
- 如果問題仍未解決,請您嘗試運行
reboot 命令重啟ECS實例。
重要 當(dāng)您通過切換字符編碼,成功完成擴容分區(qū)后,建議您按需切回原有字符編碼。
- 問題:運行擴容分區(qū)growpart命令時,提示
unexpected output in sfdisk --version [sfdisk (util-linux-ng 2.17.2)] 。
原因:您的fdisk版本與growpart版本不兼容。
解決方案:嘗試將growpart版本降低到0.27。如果問題仍未解決,請參考擴展分區(qū)和文件系統(tǒng)_Linux數(shù)據(jù)盤擴容分區(qū)。
- 問題:運行擴容分區(qū)growpart命令時,提示
FAILED: unable to determine partition type 。
原因:您的云盤是裸設(shè)備,未分區(qū)。裸設(shè)備無需執(zhí)行擴容分區(qū)操作,直接擴容文件系統(tǒng)即可。
解決方案:直接擴容文件系統(tǒng)。
- 問題:運行擴容分區(qū)growpart命令時,提示
WARNING: MBR/dos partitioned disk is larger than 2TB. Additional space will go unused. 。
原因:MBR分區(qū)類型不支持2 TiB以上的云盤。
解決方案:先將分區(qū)類型從MBR轉(zhuǎn)換為GPT,然后再擴容分區(qū)。具體操作,請參見轉(zhuǎn)換MBR分區(qū)為GPT分區(qū)。
- 問題:運行擴容分區(qū)growpart命令時,提示
mkdir: cannot create directory ... No space left on device
原因:磁盤空間不足,導(dǎo)致growpart命令創(chuàng)建臨時目錄時失敗。
解決方案:清理無用的文件釋放空間,然后再進(jìn)行擴容。
- 問題:為什么在CentOS 6中安裝growpart工具時提示
Error: Cannot retrieve repository metadata 。
原因:CentOS 6操作系統(tǒng)版本已結(jié)束生命周期(EOL),繼續(xù)使用默認(rèn)源會導(dǎo)致無法安裝包。
- 問題:設(shè)備名以
/dev/mapper 開頭的分區(qū)未擴容成功。
原因:設(shè)備名以/dev/mapper 開頭,通常是通過LVM(Logical Volume Manager)管理磁盤分區(qū)。
解決方案:需要先通過LVM擴容邏輯卷,然后再擴容文件系統(tǒng)。具體操作,請參見通過LVM擴容邏輯卷。
操作步驟
登錄CentOS 6系統(tǒng)的ECS實例。
具體操作,請參見連接方式概述。
運行以下命令編輯CentOS-Base.repo 文件。
vim /etc/yum.repos.d/CentOS-Base.repo
按i進(jìn)入編輯模式,修改以下內(nèi)容切換源。
請根據(jù)實例不同的網(wǎng)絡(luò)類型進(jìn)行修改,具體內(nèi)容如下:
專有網(wǎng)絡(luò)VPC類型實例
[base]
name=CentOS-6.10
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
[updates]
name=CentOS-6.10
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
[extras]
name=CentOS-6.10
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos-vault/6.10/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
經(jīng)典網(wǎng)絡(luò)類型實例
[base]
name=CentOS-6.10
enabled=1
failovermethod=priority
baseurl=http://mirrors.aliyuncs.com/centos-vault/6.10/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
[updates]
name=CentOS-6.10
enabled=1
failovermethod=priority
baseurl=http://mirrors.aliyuncs.com/centos-vault/6.10/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
[extras]
name=CentOS-6.10
enabled=1
failovermethod=priority
baseurl=http://mirrors.aliyuncs.com/centos-vault/6.10/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyuncs.com/centos-vault/RPM-GPG-KEY-CentOS-6
編輯完成后,按Esc鍵,并輸入:wq保存退出文件。
運行以下命令編輯epel.repo 文件。
vim /etc/yum.repos.d/epel.repo
按i進(jìn)入編輯模式,修改以下內(nèi)容切換源。
請根據(jù)實例不同的網(wǎng)絡(luò)類型進(jìn)行修改,具體內(nèi)容如下:
專有網(wǎng)絡(luò)VPC類型實例
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/epel-archive/6/$basearch
gpgcheck=0
gpgkey=http://mirrors.cloud.aliyuncs.com/epel-archive/RPM-GPG-KEY-EPEL-6
經(jīng)典網(wǎng)絡(luò)類型實例
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
enabled=1
failovermethod=priority
baseurl=http://mirrors.aliyuncs.com/epel-archive/6/$basearch
gpgcheck=0
gpgkey=http://mirrors.aliyuncs.com/epel-archive/RPM-GPG-KEY-EPEL-6
編輯完成后,按Esc鍵,并輸入:wq保存退出文件。
后續(xù)步驟
yum源和epel源切換完成后,即可使用yum install命令在實例上安裝您所需要的軟件包。
使用自定義鏡像創(chuàng)建新的ECS實例,在啟動實例時cloud-init會自動初始化系統(tǒng)的源配置。如果您后續(xù)需要通過已切換源的ECS實例創(chuàng)建自定義鏡像,并且需要保留已切換的源配置,需要您在創(chuàng)建自定義鏡像前,按照以下操作在已切換源的ECS實例中修改cloud-init的配置文件/etc/cloud/cloud.cfg。
運行以下命令編輯/etc/cloud/cloud.cfg文件。
vim /etc/cloud/cloud.cfg
按i進(jìn)入編輯模式,使用#注釋掉cloud_init_modules:下的- source-address模塊。
注釋后,文件內(nèi)的配置信息如下所示:cloudinit
編輯完成后,按Esc鍵,并輸入:wq保存退出文件。 |