适用于:✔️ Linux VM ✔️ 灵活规模集
本文介绍如何扩展 Linux 虚拟机(VM)的作系统(OS)磁盘和数据磁盘。 可以 添加数据磁盘 以提供更多的存储空间,还可以扩展现有数据磁盘。 OS 的默认虚拟硬盘大小通常在 Azure 中的 Linux VM 上为 30 GB。 本文介绍如何扩展 OS 磁盘或数据磁盘。 无法扩展条带卷的大小。
OS 磁盘的最大容量为 4,095 GiB。 但许多操作系统默认使用主启动记录 (MBR) 进行分区。 MBR 将可用大小限制为 2 TiB。 如果需要 2 TiB 以上,请考虑为数据存储附加数据磁盘。 如果需要将数据存储在 OS 磁盘上,并且需要额外的空间,请将其转换为 GUID 分区表(GPT)。
警告
始终确保文件系统处于正常状态,磁盘分区表类型(GPT 或 MBR)可以支持新大小。 在执行磁盘扩展作之前备份数据。 有关详细信息,请参阅 Azure 备份快速入门。
在操作系统中识别 Azure 数据磁盘对象
在虚拟机上,当你扩展一个存在多个数据磁盘的数据磁盘时,可能会难以将 Azure 逻辑单元号 (LUN) 与 Linux 设备对应起来。 如果 OS 磁盘需要扩展,则会在 Azure 门户中将其明确标记为 OS 磁盘。
首先使用 df
命令识别磁盘利用率、装载点和设备之间的关系。
df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 xfs 97G 1.8G 95G 2% /
<truncated>
/dev/sdd1 ext4 32G 30G 727M 98% /opt/db/data
/dev/sde1 ext4 32G 49M 30G 1% /opt/db/log
例如,在这里你可以看到,文件系统 /opt/db/data
几乎已满,并且位于 /dev/sdd1
分区上。 df
的输出将显示设备路径,无论磁盘是使用设备路径还是 fstab 中的 UUID(首选)装载的。 请注意“类型”列,该列指示文件系统格式。 格式会在后面会有重要影响。
现在,请通过检查 /dev/sdd
的内容找到与 /dev/disk/azure/scsi1
关联的 LUN。 以下命令 ls
的输出显示,当您在 Azure 门户中查看时,Linux 操作系统中名为 /dev/sdd
的设备位于 LUN1
。
sudo ls -alF /dev/disk/azure/scsi1/
total 0
drwxr-xr-x. 2 root root 140 Sep 9 21:54 ./
drwxr-xr-x. 4 root root 80 Sep 9 21:48 ../
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun0 -> ../../../sdc
lrwxrwxrwx. 1 root root 12 Sep 9 21:48 lun1 -> ../../../sdd
lrwxrwxrwx. 1 root root 13 Sep 9 21:48 lun1-part1 -> ../../../sdd1
lrwxrwxrwx. 1 root root 12 Sep 9 21:54 lun2 -> ../../../sde
lrwxrwxrwx. 1 root root 13 Sep 9 21:54 lun2-part1 -> ../../../sde1
扩展 Azure 托管磁盘
在不停机的情况下扩展
你可以在不解除分配虚拟机的情况下扩展托管磁盘。 磁盘的主机缓存设置不会更改你是否可以在不解除分配虚拟机的情况下扩展数据磁盘。
此功能存在以下限制。
重要
此限制不适用于高级 SSD v2 或超级磁盘。
如果标准 HDD、标准 SSD 或高级 SSD 磁盘为 4 TiB 或更少,请解除分配 VM 并分离磁盘,然后再将其扩展到 4 TiB 以上。 如果上述某个磁盘类型已经大于 4 TiB,则可以在不解除分配 VM 和拆离磁盘的情况下对其进行扩展。
- 仅支持数据磁盘。
- 不支持用于共享磁盘。
- 必须安装并使用下列选项之一:
- 在某些经典 VM 上不可用。 使用此脚本获取支持在不停机的情况下扩展的经典 VM 产品列表。
使用超级磁盘和高级 SSD v2 进行扩展
在不停机的情况下扩展 Ultra Disks 和高级 SSD v2 磁盘还存在以下其他限制:
- 当该磁盘上同时正在进行后台数据复制时,无法扩展该磁盘。 一个示例是当磁盘正在从快照回填数据时。
- 可以使用具有超级磁盘或高级 SSD v2 磁盘的 NVMe 控制器来扩展 VM,而无需在此公共预览版中停机。 由于此版本是公共预览版,因此应仅使用它来测试在不停机的情况下扩展的功能。 不要在生产环境中扩展 VM。
在以下区域中,你可以在不停机的情况下扩展使用 NVMe 控制器且搭配 Ultra Disks 或高级 SSD v2 磁盘的虚拟机。 使用 Azure 门户、Azure CLI 或 Azure PowerShell 模块:
- 东南亚
- 巴西南部
- 加拿大中部
- 德国中西部
- 印度中部(V6 VM 目前不支持)
在以下区域中,你可以在不停机的情况下扩展使用 NVMe 控制器且搭配 Ultra Disks 或高级 SSD v2 磁盘的虚拟机。 仅使用 Azure CLI 或 Azure PowerShell 模块。 目前无法使用 Azure 门户:
预计最多 10 分钟后就会在 Windows VM 和 Linux VM 中反映正确的大小。 对于 Linux VM,必须执行 Linux rescan 函数。 对于没有工作负荷的 Windows VM,必须执行 Windows 重新扫描功能。 可以立即重新扫描,但如果时间在 10 分钟内,可能需要再次重新扫描以显示正确的大小。
扩展 Azure 托管磁盘
确保已安装了最新的 Azure CLI 并已使用 az login 登录到 Azure 帐户。
本文需要 Azure 中的现有 VM 已附加至少一个数据磁盘并且该磁盘已准备就绪。 如果尚无可用的虚拟机,请参阅使用数据磁盘创建和准备虚拟机。
在以下示例中,将占位符参数名称(如 myResourceGroup 和 myVM )替换为自己的值。
重要
如果磁盘满足 Expand 中的要求 而不停机,则可以跳过步骤 1 和步骤 3。
不支持收缩现有磁盘,可能会导致数据丢失。
扩展磁盘后,在操作系统中扩展卷以利用更大的磁盘。
当 VM 正在运行时,无法在虚拟硬盘上执行操作。 使用 az vm deallocate 解除分配 VM。 以下示例在名为 myResourceGroup 的资源组中解除分配名为 myVM 的 VM:
az vm deallocate --resource-group myResourceGroup --name myVM
只有释放 VM 才能扩展虚拟硬盘。 使用 az vm stop
停止虚拟机不会释放计算资源。 若要释放计算资源,请使用 az vm deallocate
。
使用 az disk list 查看资源组中的托管磁盘列表。 以下示例显示了名为 myResourceGroup 的资源组中的托管磁盘列表:
az disk list \
--resource-group myResourceGroup \
--query '[*].{Name:name,size:diskSizeGB,Tier:sku.tier}' \
--output table
使用 az disk update 扩展所需磁盘。 以下示例将名为 myDataDisk 的托管磁盘扩展为 200 GB:
az disk update \
--resource-group myResourceGroup \
--name myDataDisk \
--size-gb 200
扩展托管磁盘时,更新的大小将向上舍入到最接近的托管磁盘大小。
使用 az vm start 启动 VM。 以下示例在名为 myResourceGroup 的资源组中启动名为 myVM 的 VM:
az vm start --resource-group myResourceGroup --name myVM
扩展磁盘分区和文件系统
可以使用许多工具来执行分区大小调整。 本文其余部分详述的工具与某些自动化流程使用的相同工具,例如 cloud-init。 如此处所述, growpart
包中的 gdisk
工具提供与 GPT 磁盘的通用兼容性,因为某些工具的较旧版本(如 fdisk
不支持 GPT)。
检测更改的磁盘大小
如果使用上述过程在不停机的情况下扩展数据磁盘,则在重新扫描设备之前,报告磁盘大小不会更改。 仅在启动过程中才会重新扫描。 若要按需调用此重新扫描,请使用以下过程。 使用本文中的方法时,请注意,在此示例中,数据磁盘当前为 /dev/sda
,已从 256 GiB 调整为 512 GiB。
确定 fdisk -l /dev/sda
输出的第一行上当前已识别的大小:
sudo fdisk -l /dev/sda
Disk /dev/sda: 256 GiB, 274877906944 bytes, 536870912 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x43d10aad
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 536870878 536868831 256G 83 Linux
将 1
字符插入到此设备的重新扫描文件中。 请注意示例中对 sda
的引用。 如果重设了不同磁盘设备的大小,则磁盘标识符会发生变化。
echo 1 | sudo tee /sys/class/block/sda/device/rescan
验证是否已识别新的磁盘大小。
sudo fdisk -l /dev/sda
Disk /dev/sda: 512 GiB, 549755813888 bytes, 1073741824 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x43d10aad
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 536870878 536868831 256G 83 Linux
本文的剩余部分以操作系统磁盘为例,讲述在操作系统级别增加卷大小的过程。 如果扩展的磁盘是数据磁盘,请使用 前面的指南来标识数据磁盘设备。 请将这些说明作为指导方针。 根据需要替换数据磁盘设备(例如 /dev/sda
),分区号、卷名称、装入点和文件系统格式。
请将所有 Linux OS 指南视为通用指南,它可能适用于任何发行版,但通常与指定的市场发布者的约定相符。 有关基于 Red Hat 的任何分发或声明 Red Hat 兼容性的包要求,请参阅 Red Hat 文档。
增加 OS 磁盘的大小
以下说明适用于认可的 Linux 发行版。
在继续之前,请创建 VM 的完整备份副本,或者至少创建 OS 磁盘的快照。
在 Ubuntu 16.x 及更新版本上,OS 磁盘和文件系统的根分区会自动展开,以便通过 cloud-init 使用根磁盘上的所有可用连续空间。 必须有少量可用空间才能进行重设大小操作。 在这种情况下,序列是:
- 如前所述增加 OS 磁盘的大小。
- 重启 VM,然后使用 根 用户帐户访问 VM。
- 验证 OS 磁盘现在是否显示增加的文件系统大小。
如以下示例所示,操作系统磁盘已在门户中调整为 100 GB。 现在装载在/
上的/dev/sda1
文件系统显示为 97 GB。
df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 314M 0 314M 0% /dev
tmpfs tmpfs 65M 2.3M 63M 4% /run
/dev/sda1 ext4 97G 1.8G 95G 2% /
tmpfs tmpfs 324M 0 324M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 324M 0 324M 0% /sys/fs/cgroup
/dev/sda15 vfat 105M 3.6M 101M 4% /boot/efi
/dev/sdb1 ext4 20G 44M 19G 1% /mnt
tmpfs tmpfs 65M 0 65M 0% /run/user/1000
user@ubuntu:~#
若要增加 SUSE 12 SP4、SUSE SLES 12 for SAP、SUSE SLES 15 和 SUSE SLES 15 for SAP 中的 OS 磁盘大小,请执行以下操作:
按照前面所述的过程在 Azure 基础结构中扩展磁盘。
以非根用户的身份登录之后,使用 sudo
命令以根用户身份访问 VM:
sudo -i
使用以下命令安装 growpart
包(用于调整分区大小(如果尚不存在):
zypper install growpart
使用lsblk
命令来查找挂载在文件系统根目录(/
)上的分区。 在这种情况下,设备 sda
的分区 4 装载在 /
:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 48G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 512M 0 part /boot/efi
├─sda3 8:3 0 1G 0 part /boot
└─sda4 8:4 0 28.5G 0 part /
sdb 8:16 0 4G 0 disk
└─sdb1 8:17 0 4G 0 part /mnt/resource
通过使用上一步中确定的分区号,使用 growpart
命令调整所需分区的大小。
growpart /dev/sda 4
CHANGED: partition=4 start=3151872 old: size=59762655 end=62914527 new: size=97511391 end=100663263
再次运行 lsblk
命令,检查分区是否已增加。
以下输出显示分区 /dev/sda4
的大小调整为 46.5 GB:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 48G 0 disk
├─sda1 8:1 0 2M 0 part
├─sda2 8:2 0 512M 0 part /boot/efi
├─sda3 8:3 0 1G 0 part /boot
└─sda4 8:4 0 46.5G 0 part /
sdb 8:16 0 4G 0 disk
└─sdb1 8:17 0 4G 0 part /mnt/resource
使用 lsblk
带有 -f
标志的命令标识 OS 磁盘上的文件系统类型:
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1
├─sda2 vfat EFI AC67-D22D /boot/efi
├─sda3 xfs BOOT 5731a128-db36-4899-b3d2-eb5ae8126188 /boot
└─sda4 xfs ROOT 70f83359-c7f2-4409-bba5-37b07534af96 /
sdb
└─sdb1 ext4 8c4ca904-cd93-4939-b240-fb45401e2ec6 /mnt/resource
根据文件系统类型,使用相应的命令调整文件系统的大小。
对于 xfs
,请使用以下命令:
xfs_growfs /
示例输出:
meta-data=/dev/sda4 isize=512 agcount=4, agsize=1867583 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0 rmapbt=0
= reflink=0
data = bsize=4096 blocks=7470331, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3647, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7470331 to 12188923
对于 ext4
,请使用以下命令:
resize2fs /dev/sda4
使用以下命令验证 df -Th
的文件系统大小增加:
df -Thl
示例输出:
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 445M 4.0K 445M 1% /dev
tmpfs tmpfs 458M 0 458M 0% /dev/shm
tmpfs tmpfs 458M 14M 445M 3% /run
tmpfs tmpfs 458M 0 458M 0% /sys/fs/cgroup
/dev/sda4 xfs 47G 2.2G 45G 5% /
/dev/sda3 xfs 1014M 86M 929M 9% /boot
/dev/sda2 vfat 512M 1.1M 511M 1% /boot/efi
/dev/sdb1 ext4 3.9G 16M 3.7G 1% /mnt/resource
tmpfs tmpfs 92M 0 92M 0% /run/user/1000
tmpfs tmpfs 92M 0 92M 0% /run/user/490
在前面的示例中,可以看到 OS 磁盘的文件系统大小已增加。
按照前面所述的过程在 Azure 基础结构中扩展磁盘。
在以其他用户身份登录后,使用 sudo
命令以 root 用户身份访问 VM:
sudo -i
使用 lsblk
命令确定在文件系统的根目录 (/
) 上装载的逻辑卷 (LV)。 在这种情况下,/
上装载 rootvg-rootlv
。 如果需要调整其他文件系统的大小,请替换本部分提到的每个 LV 和装入点。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
fd0
sda
├─sda1 vfat C13D-C339 /boot/efi
├─sda2 xfs 8cc4c23c-fa7b-4a4d-bba8-4108b7ac0135 /boot
├─sda3
└─sda4 LVM2_member zx0Lio-2YsN-ukmz-BvAY-LCKb-kRU0-ReRBzh
├─rootvg-tmplv xfs 174c3c3a-9e65-409a-af59-5204a5c00550 /tmp
├─rootvg-usrlv xfs a48dbaac-75d4-4cf6-a5e6-dcd3ffed9af1 /usr
├─rootvg-optlv xfs 85fe8660-9acb-48b8-98aa-bf16f14b9587 /opt
├─rootvg-homelv xfs b22432b1-c905-492b-a27f-199c1a6497e7 /home
├─rootvg-varlv xfs 24ad0b4e-1b6b-45e7-9605-8aca02d20d22 /var
└─rootvg-rootlv xfs 4f3e6f40-61bf-4866-a7ae-5c6a94675193 /
检查 LVM 卷组(VG)中是否存在包含根分区的可用空间。 如果有可用空间,跳到步骤 12。
vgdisplay rootvg
--- Volume group ---
VG Name rootvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 6
Open LV 6
Max PV 0
Cur PV 1
Act PV 1
VG Size <63.02 GiB
PE Size 4.00 MiB
Total PE 16132
Alloc PE / Size 6400 / 25.00 GiB
Free PE / Size 9732 / <38.02 GiB
VG UUID lPUfnV-3aYT-zDJJ-JaPX-L2d7-n8sL-A9AgJb
在此示例中,该行 Free PE / Size
显示卷组中有 38.02 GB 空闲,因为磁盘已被调整大小。
安装 cloud-utils-growpart
包以提供所需的 growpart
命令,以增加 OS 磁盘大小,并提供适用于 GPT 磁盘布局的 gdisk
处理程序。 大多数市场映像上都预安装了此包。
dnf install cloud-utils-growpart gdisk
在 Red Hat 版本 7 或更早版本中,可以使用 yum
命令而不是 dnf
。
通过使用 rootvg
命令,确定名为 pvscan
的卷组中哪个磁盘和分区包含 LVM 物理卷 (PV)。 请注意括号([
和 ]
)之间列出的大小和可用空间。
pvscan
PV /dev/sda4 VG rootvg lvm2 [<63.02 GiB / <38.02 GiB free]
使用 lsblk
验证分区大小。
lsblk /dev/sda4
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda4 8:4 0 63G 0 part
├─rootvg-tmplv 253:1 0 2G 0 lvm /tmp
├─rootvg-usrlv 253:2 0 10G 0 lvm /usr
├─rootvg-optlv 253:3 0 2G 0 lvm /opt
├─rootvg-homelv 253:4 0 1G 0 lvm /home
├─rootvg-varlv 253:5 0 8G 0 lvm /var
└─rootvg-rootlv 253:6 0 2G 0 lvm /
使用 growpart
以及设备名称和分区号扩展包含此 PV 的分区。 通过执行此操作,可以扩展指定分区以使用设备上的所有可用连续空间。
growpart /dev/sda 4
CHANGED: partition=4 start=2054144 old: size=132161536 end=134215680 new: size=199272414 end=201326558
再次使用 lsblk
命令验证分区的大小是否调整为预期大小。 请注意,在此示例中,sda4
已从63G
更改为95G
。
lsblk /dev/sda4
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda4 8:4 0 95G 0 part
├─rootvg-tmplv 253:1 0 2G 0 lvm /tmp
├─rootvg-usrlv 253:2 0 10G 0 lvm /usr
├─rootvg-optlv 253:3 0 2G 0 lvm /opt
├─rootvg-homelv 253:4 0 1G 0 lvm /home
├─rootvg-varlv 253:5 0 8G 0 lvm /var
└─rootvg-rootlv 253:6 0 2G 0 lvm /
扩展 PV 以使用新扩展的分区的其余部分。
pvresize /dev/sda4
Physical volume "/dev/sda4" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
与原始 [size / free]
值相比,验证 PV 的新大小是否为预期大小。
pvscan
PV /dev/sda4 VG rootvg lvm2 [<95.02 GiB / <70.02 GiB free]
将 LV 扩大所需的空间量,不需要用掉卷组中的所有可用空间。 在以下示例中, /dev/mapper/rootvg-rootlv
通过以下命令将大小从 2 GB 调整为 12 GB(增加 10 GB)。 此命令还会调整 LV 上的文件系统大小。
lvresize -r -L +10G /dev/mapper/rootvg-rootlv
示例输出:
Size of logical volume rootvg/rootlv changed from 2.00 GiB (512 extents) to 12.00 GiB (3072 extents).
Logical volume rootvg/rootlv successfully resized.
meta-data=/dev/mapper/rootvg-rootlv isize=512 agcount=4, agsize=131072 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
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 524288 to 3145728
lvresize
命令将为 LV 中的文件系统自动调用相应的大小调整命令。 使用df -Th
命令来验证安装在/
上的/dev/mapper/rootvg-rootlv
的文件系统大小是否增加:
df -Th /
示例输出:
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rootvg-rootlv xfs 12G 71M 12G 1% /
若要使用相同的过程调整任何其他逻辑卷的大小,请在步骤 12 中修改 lv
名称。
按照前面所述的过程在 Azure 基础结构中扩展磁盘。
以非根用户的身份登录之后,使用 sudo
命令以根用户身份访问 VM:
sudo -i
安装 cloud-utils-growpart
包以提供 growpart
命令,该命令是增大操作系统磁盘大小以及用于 GPT 磁盘布局的 gdisk
处理程序所必需的。 大多数市场映像上都预安装了此包。
dnf install cloud-utils-growpart gdisk
在 Red Hat 版本 7 或更早版本中,可以使用 yum
命令而不是 dnf
。
使用 lsblk -f
命令验证保存根分区的/
分区和文件系统类型。
lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 2a7bb59d-6a71-4841-a3c6-cba23413a5d2 /boot
├─sda2 xfs 148be922-e3ec-43b5-8705-69786b522b05 /
├─sda14
└─sda15 vfat 788D-DC65 /boot/efi
sdb
└─sdb1 ext4 923f51ff-acbd-4b91-b01b-c56140920098 /mnt/resource
为进行验证,首先使用 gdisk
列出 sda
磁盘的分区表。 在此示例中,会看到分区 2 大小为 29.0 GiB 的 48.0-GiB 磁盘。 该磁盘已在 Azure 门户中从 30 GB 扩展到 48 GB。
gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 100663296 sectors, 48.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 78CDF84D-9C8E-4B9F-8978-8C496A1BEC83
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 62914526
Partitions will be aligned on 2048-sector boundaries
Total free space is 6076 sectors (3.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 1026048 2050047 500.0 MiB 0700
2 2050048 62912511 29.0 GiB 0700
14 2048 10239 4.0 MiB EF02
15 10240 1024000 495.0 MiB EF00 EFI System Partition
使用 growpart
命令来扩展根分区,在本例中为 sda2
。 使用此命令扩展分区以使用磁盘上的所有连续空间。
growpart /dev/sda 2
CHANGED: partition=2 start=2050048 old: size=60862464 end=62912512 new: size=98613214 end=100663262
现在,再次使用 gdisk
打印新的分区表。 请注意,分区 2 现在大小为 47.0 GiB。
gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 100663296 sectors, 48.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 78CDF84D-9C8E-4B9F-8978-8C496A1BEC83
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 100663262
Partitions will be aligned on 2048-sector boundaries
Total free space is 4062 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 1026048 2050047 500.0 MiB 0700
2 2050048 100663261 47.0 GiB 0700
14 2048 10239 4.0 MiB EF02
15 10240 1024000 495.0 MiB EF00 EFI System Partition
使用 xfs_growfs
扩展分区上的文件系统,此命令适用于标准市场生成的 RedHat 系统:
xfs_growfs /
meta-data=/dev/sda2 isize=512 agcount=4, agsize=1901952 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=7607808, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3714, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7607808 to 12326651
验证新大小是否通过 df
命令得以反映:
df -hl
Filesystem Size Used Avail Use% Mounted on
devtmpfs 452M 0 452M 0% /dev
tmpfs 464M 0 464M 0% /dev/shm
tmpfs 464M 6.8M 457M 2% /run
tmpfs 464M 0 464M 0% /sys/fs/cgroup
/dev/sda2 48G 2.1G 46G 5% /
/dev/sda1 494M 65M 430M 13% /boot
/dev/sda15 495M 12M 484M 3% /boot/efi
/dev/sdb1 3.9G 16M 3.7G 1% /mnt/resource
tmpfs 93M 0 93M 0% /run/user/1000
在不中断服务的情况下扩展经典 VM SKU 的支持
如果使用经典 VM SKU,可能不支持在不停机的情况下扩展磁盘。
使用以下 PowerShell 脚本确定其可用的 VM SKU:
Connect-AzAccount
$subscriptionId="yourSubID"
$location="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$vmSizes=Get-AzComputeResourceSku -Location $location | where{$_.ResourceType -eq 'virtualMachines'}
foreach($vmSize in $vmSizes){
foreach($capability in $vmSize.Capabilities)
{
if(($capability.Name -eq "EphemeralOSDiskSupported" -and $capability.Value -eq "True") -or ($capability.Name -eq "PremiumIO" -and $capability.Value -eq "True") -or ($capability.Name -eq "HyperVGenerations" -and $capability.Value -match "V2"))
{
$vmSize.Name
}
}
}