失敗した parted スクリプトの試行

失敗した parted スクリプトの試行

virt-clone / KVM を使用して他の VM を構築するために使用する VM テンプレートがあります。VM テンプレートはスペースを節約するために 4GB です。これから構築する VM のストレージは iSCSI ターゲットまたは LVM ボリューム (機能によって異なります) 上にあり、ファイルシステムのサイズはマシンの役割によって異なります。

テンプレートから新しい VM を作成した後、4GB を超えるディスクを必要とするものを構築する場合は、ルート パーティションのサイズを変更する必要があります。これは、parted を対話的に使用している場合は問題なく機能しますが、スクリプトでは機能しません。ファイル システムを削除しようとすると、'-s' を使用しているにもかかわらず、続行するかどうかを尋ねられます。

以下の出力は、失敗したスクリプトの試行と、これを達成するための機能する対話型セッションを示しています。

クローン後にルート パーティションのサイズを変更する、簡単にスクリプト化できる最善の方法は何ですか?

失敗した parted スクリプトの試行

クローン後のパーティション

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4294MB  4293MB  primary  ext4         boot

スクリプト削除の試み

# parted /dev/vda -s rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
#

削除に失敗した後のパーティション

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4294MB  4293MB  primary  ext4         boot

インタラクティブなサイズ変更が機能しています(その後再起動します)

削除前のパーティション

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4294MB  4293MB  primary  ext4         boot

ディスク全体を使用する新しいパーティションの削除と作成

# parted /dev/vda
(parted) rm 1
Warning: Partition /dev/vda1 is being used. Are you sure you want to continue?
Yes/No? y
Error: Partition(s) 1 on /dev/vda have been written, but we have been unable to
inform the kernel of the change, probably because it/they are in use.  As a
result, the old partition(s) will remain in use.  You should reboot now before
making further changes.
Ignore/Cancel? I
(parted) mkpart p ext4 1 -1
(parted)

# parted /dev/vda p
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  10.7GB  10.7GB  primary  ext4

ファイルシステムのサイズ変更

# resize2fs /dev/vda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vda1 is now 2621184 blocks long.

# df -kh  .
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       9.8G  1.6G  7.9G  17% /

答え1

これを実行する方法がわかりました。鍵となるのは、kpartx を使用して、VM の外部 (つまりハイパーバイザー ホスト上) で parted によって LVM を使用できるようにすることです。次に、パーティション サイズを変更し、ゲストを起動してファイル システムを増やします。

したがって、/dev/VMS/VIRT-TESTVM にストレージがある TESTVM という名前のゲストがある場合、ハイパーバイザー ホストで次の操作を実行します。

# kpartx -a /dev/VMS/VIRT-TESTVM
# parted /dev/VMS/VIRT-TESTVM rm 1
# parted /dev/VMS/VIRT-TESTVM mkpart -a optimal p ext4 0% 100% 
# kpartx -d /dev/VMS/VIRT-TESTVM

その後、マシンを起動してログインし、

# resize2fs /dev/vda1 

安全のためにもう一度再起動してください。

関連情報