症状
クラウドディスクが GPT パーティションでフォーマットされています。クラウドディスクの拡張後、growpart ユーティリティを使用して /dev/vdb1 などのパーティションを拡張すると、以下のようなエラーメッセージが返されます。その結果、クラウドディスクの容量は増加しますが、パーティションとそのファイルシステムの利用可能な領域は増加しません。このトピックでは、/dev/vdb1 パーティションを例として説明します。
[root@ixxx ~]# growpart /dev/vdb 1
failed [pt_update:1] pt_update /dev/vdb 1
partx: /dev/vdb: error updating partition 1
FAILED: disk=/dev/vdb partition=1: failed to repartition
***** WARNING: Resize failed, attempting to revert ******
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
***** Appears to have gone OK ****
原因
この問題は、/dev/vdb などのデータディスクに推奨されるパーティションアライメントが設定されていないために発生します。具体的には、mkpart primary 1 100% コマンドが実行されておらず、パーティションの開始位置と終了位置が設定されていません。
次のコマンドを実行して、パーティションがアライメントされているかどうかを確認できます。
-
fdisk -l:Startの値を確認します。値が2048でない場合、パーティションはアライメントされていません。 -
parted -l:Startの値を確認します。次の出力例に示すように、値が1049 kBでない場合、パーティションはアライメントされていません。[root@izxxx ~]# parted -l Model: Virtio Block Device (virtblk) Disk /dev/vda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 101MB 99.6MB fat16 EFI System Partition boot 2 101MB 20.1GB 20.0GB ext4 Model: Virtio Block Device (virtblk) Disk /dev/vdb: 3221GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 17.4kB 1074GB 1074GB ext4 primary
ソリューション
この問題を解決するには、ディスクを再パーティション化してからパーティションを拡張する必要があります。次の手順に従ってください。
-
ECS インスタンスにリモートで接続します。
詳細については、「接続方法の概要」をご参照ください。
-
次のコマンドを実行して、/etc/fstab ファイル内の /dev/vdb1 のパーティション情報を表示します。
cat /etc/fstab例えば、/dev/vdb1 パーティションの情報は次のようになります。
[root@iZxxx ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Mar 18 11:23:53 2022 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=1ecad39c-b7f6-4d5f-bfe1-2ffec1877a1d / ext4 defaults 1 1 UUID=B483-4E9C /boot/efi vfat umask=0077,shortname=winnt 0 0 UUID=f315122e-2d1d-4705-aaaa-1ad62ae66096 /mnt ext4 defaults 0 0 -
次のコマンドを実行して etc/fstab ファイルを編集し、/dev/vdb1 のパーティション情報を手動で削除します。
vim /etc/fstab -
次のコマンドを実行して、/dev/vdb1 パーティションをアンマウントします。
umount /dev/vdb1[root@xxx ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 31G 0 31G 0% /dev tmpfs 31G 0 31G 0% /dev/shm tmpfs 31G 33M 31G 1% /run tmpfs 31G 0 31G 0% /sys/fs/cgroup /dev/vda2 19G 3.5G 14G 21% / /dev/vda1 95M 12M 84M 12% /boot/efi tmpfs 6.2G 0 6.2G 0% /run/user/0 /dev/vdb1 985G 77M 935G 1% /mnt [root@xxx ~]# umount /dev/vdb1 [root@xxx ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 31G 0 31G 0% /dev tmpfs 31G 0 31G 0% /dev/shm tmpfs 31G 33M 31G 1% /run tmpfs 31G 0 31G 0% /sys/fs/cgroup /dev/vda2 19G 3.5G 14G 21% / /dev/vda1 95M 12M 84M 12% /boot/efi tmpfs 6.2G 0 6.2G 0% /run/user/0 -
ディスクを再パーティション化し、ファイルシステムをマウントします。
重要ディスクを再パーティション化すると、元のパーティション上のすべてのデータが削除されます。続行する前に、スナップショットを作成してクラウドディスク上のすべてのデータをバックアップしてください。ディスクを再パーティション化して新しいファイルシステムをマウントした後、バックアップデータを使用して元のデータを復元できます。スナップショットの作成方法の詳細については、「ディスクのスナップショットの作成」をご参照ください。
詳細については、「Linux インスタンスでのデータディスクの初期化」をご参照ください。
-
パーティションとファイルシステムを再度拡張します。手順については、「パーティションとファイルシステムの拡張 (Linux)」をご参照ください。