你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
扩展 Linux VM 上的虚拟硬盘
本文内容
适用于:✔️ Linux VM ✔️ 灵活规模集
本文介绍如何扩展 Linux 虚拟机的 OS 磁盘和数据磁盘。 你可以通过添加数据磁盘 来扩充存储空间,也可扩展现有的数据磁盘。 在 Azure 中的 Linux VM 上,操作系统 (OS) 的默认虚拟硬盘大小通常为 30 GB。 本文介绍如何扩展 OS 磁盘或数据磁盘。 无法扩展条带卷的大小。
OS 磁盘的最大容量为 4,095 GiB。 但许多操作系统默认使用主启动记录 (MBR) 进行分区。 MBR 将可用大小限制为 2 TiB。 如果需要 2 TiB 以上,请考虑为数据存储附加数据磁盘。 如果确实需要将数据存储在操作系统磁盘上,并且需要额外的空间,请将其转换为 GUID 分区表 (GPT)。
警告
始终确保文件系统处于正常状态,磁盘分区表类型(GPT 或 MBR)将支持新的大小,并确保在执行磁盘扩展操作之前备份数据。 有关详细信息,请参阅 Azure 备份快速入门 。
识别操作系统中的 Azure 数据磁盘对象
如果 VM 上存在多个数据磁盘,在扩展数据磁盘时可能难以将 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/disk/azure/scsi1
的内容找到与 /dev/sdd
关联的 LUN。 在 Azure 门户中查找时,以下 ls
命令的输出将显示 Linux OS 中名为 /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 托管磁盘
在不停机的情况下扩展
你可以在不解除分配虚拟机的情况下扩展托管磁盘。 磁盘的主机缓存设置不会更改你是否可以在不解除分配虚拟机的情况下扩展数据磁盘。
此功能具有以下限制:
仅支持数据磁盘。
如果标准 HDD、标准 SSD 或高级 SSD 磁盘小于或等于 4 TiB,则解除分配 VM 并拆离磁盘,然后再将其扩展到 4 TiB 以上。 如果上述某个磁盘类型已经大于 4 TiB,则可以在不解除分配 VM 和拆离磁盘的情况下对其进行扩展。 这不适用于高级 SSD v2 或超级磁盘。
不支持共享磁盘。
安装并使用以下任一项:
在某些经典 VM 上不可用。 使用此脚本 可获取支持在不停机的情况下扩展的经典 VM SKU 列表。
使用超级磁盘和高级 SSD v2 进行扩展
扩展超级磁盘和高级 SSD v2 磁盘具有以下额外限制:
如果某个磁盘还在后台复制 数据,譬如正从快照 冻结磁盘时,则无法对其进行扩展。
如果某个 VM 将 NVMe 控制器 用于超级磁盘或高级 SSD v2 磁盘,则无法对其进行不停机扩展。
重要
预计最多 10 分钟后会在 Windows VM 和 Linux VM 中反映正确的大小。 对于 Linux VM,必须执行 Linux 重新扫描函数 ;对于没有工作负载的 Windows VM,必须执行 Windows 重新扫描函数 。 可以立即重新扫描,但如果它在十分钟内,则可能需要再次重新扫描以显示正确的大小。
区域可用性
当前,所有支持高级 SSD v2 和 Ultra 的区域均可调整超级磁盘和高级 SSD v2 磁盘的大小,但以下区域除外:
扩展 Azure 托管磁盘
确保已安装了最新的 Azure CLI 并已使用 az login 登录到 Azure 帐户。
本文需要 Azure 中的现有 VM 已附加至少一个数据磁盘并且该磁盘已准备就绪。 如果尚无可用的虚拟机,请参阅使用数据磁盘创建和准备虚拟机 。
在以下示例中,请将示例参数名称(例如 myResourceGroup 和 myVM )替换成自己的值。
重要
如果磁盘满足在不停机的情况下扩展 中的要求,则可以跳过第 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)所使用的工具相同。 如此处所述,带有 gdisk
包的 growpart
工具提供了与 GUID 分区表 (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
本文的余下部分使用 OS 磁盘作为在 OS 级别增加卷大小的过程的示例。 如果扩展的磁盘是数据磁盘,请使用之前的指南来标识数据磁盘设备 ,并按照这些说明作为指导,根据需要替换数据磁盘磁盘(例如 /dev/sda
)、分区号、卷名、装入点和文件系统格式。
所有 Linux OS 指南都应被视为通用指南,并可能适用于任何分发版,但通常与命名市场发布者的约定相匹配。 请参考 Red Hat 文档,了解任何基于 Red Hat 或声称与 Red Hat 兼容的分发版的程序包要求。
增加 OS 磁盘的大小
以下说明适用于认可的 Linux 发行版。
注意
在继续操作之前,请创建 VM 的完整备份副本,至少应创建 OS 磁盘的快照。
在 Ubuntu 16.x 和更高版本上,操作系统磁盘和文件系统的根分区将通过 cloud-init 自动扩展以利用根磁盘上的所有可用连续空间,前提是有少量的可用空间用于大小调整操作。 在这种情况下,序列将只是执行以下操作:
根据前面的详述增加 OS 磁盘的大小
重启 VM,然后使用 root 用户帐户访问 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 基础结构中扩展磁盘。
在以另一用户身份登录后,以 root 用户身份使用 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
使用具有 -f
标记的 lsblk
命令确定 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
在前面的示例中,可以看到操作系统磁盘的文件系统大小已增加。
按照前面所述的过程在 Azure 基础结构中扩展磁盘。
在以另一用户身份登录后,以 root 用户身份使用 sudo
命令访问 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
在此示例中,“可用 PE/大小 ”行显示卷组中有 38.02 GB 可用空间,因为磁盘已经调整了大小。
安装 cloud-utils-growpart 包以提供 growpart 命令。若要增加 OS 磁盘大小或用于 GPT 磁盘布局的 gdisk 处理程序,必须使用该命令。此包已预装在大多数市场映像中
dnf install cloud-utils-growpart gdisk
在 Red Hat 7 及更低版本中,可以使用 yum
命令,而不是 dnf
。
使用 pvscan 命令确定名为 rootvg 的卷组中哪个磁盘和分区包含 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
验证 PV 的新大小是否为预期大小,并将其与原始 [size / free] 值进行比较。
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 基础结构中扩展磁盘。
在以另一用户身份登录后,以 root 用户身份使用 sudo
命令访问 VM:
sudo -i
当 VM 完全重启时,请执行以下步骤:
安装 cloud-utils-growpart 包以提供 growpart 命令。若要增加 OS 磁盘大小或用于 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 磁盘的分区表。 此示例显示了一个 48.0 GiB 的磁盘,其中包含分区 #2,该分区的大小为 29.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
}
}
}