私が見つけたとても良いチュートリアル仮想ハードディスクを作成する方法については、関連する処理結果とともに、大規模なデータセットを安定してポータブルに保存するために、タスクに仮想ハードディスクを使用することを検討しています。
デフォルトでは、このチュートリアルには次のタスクが含まれています。
dd if=/dev/zero of=MyDrive.vhd bs=1M count=500
mkfs -t ext3 MyDrive.vhd
mount -t auto -o loop MyDrive.vhd /some/user/folder
ext3形式で500MBの仮想ハードディスクを作成し、どこかにマウントします。
さて、そのファイルで作業して500MB以上が必要だと仮定すると、仮想ディスクのサイズを「動的に」調整する方法はありますか? (動的とは、新しいディスクを作成してデータをコピーすることに加えて意味します。)
答え1
拡張ファイルよりもdd
優れたオプションがあります。このdd
コマンドを正しく機能させるには(データの破損を防ぐために)複数のパラメータが必要です。私は使用しますtruncate
。名前にもかかわらず、ファイルサイズを拡張することもできます。
truncate - ファイルサイズを指定されたサイズに縮小または拡張します。
-s, --size=サイズ
SIZEでファイルサイズを設定または調整する
SIZEはオプションの単位を持つ整数です(たとえば、10Mは10 * 1024 * 1024です)。 >単位は、K、M、G、T、P、E、Z、Y(1024の累乗)またはKB、MB、...(1000の累乗)です。
SIZE の前には、次の修飾子文字のいずれかが前に付くことができます。拡大するには「+」、縮小するには「-」、最大「<」、少なくとも「>」、「/」に丸め、「%」に丸め倍数に丸めます。
したがって、
truncate -s +1G MyDrive.vhd
ファイルを1GBまで安全に拡張します。そしてそうです。デフォルトのファイルシステムがサポートされている場合はまれに拡張されるため、実際のブロックは要求に応じて割り当てられます。
ファイルが拡張されたら、resize2fsを実行することを忘れないでください。
resize2fs MyDrive.vhd
さらに、オンラインサイズ変更をサポートするファイルシステムの場合、プロセス全体をオンラインで実行できます(umount
デバイスは不要)。
losetup -c loopdev
サポートファイルのカーネル情報を更新します。
そして
resize2fs loopdev
マウントされたファイルシステムのサイズをオンラインで調整する
答え2
ダブルサイズ:
umount /some/user/folder
dd if=/dev/zero bs=1M count=500 seek=500 >>MyDrive.vhd
resize2fs MyDrive.vhd
答え3
$vboxmanagemodifyhd NewVirtualDisk1.vhd --resize 40000 #新しいサイズはmb単位で、ここでは40000mbです。