Jon*_*n H 5 filesystems dd mkfs
我找到了一个关于如何创建虚拟硬盘的非常好的教程,我正在考虑在我的工作中使用这些教程,以便可靠地和可移植地存储具有相关处理结果的大型数据集。
基本上,本教程包括这样做:
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
Run Code Online (Sandbox Code Playgroud)
它创建了一个 500MB 的 ext3 格式的虚拟硬盘驱动器并将其安装在某处。
现在说我使用该文件并意识到我需要超过 500MB,有没有办法“动态”调整虚拟磁盘的大小?(动态我的意思是除了创建一个新的更大的磁盘并复制数据。)
Ser*_*rge 12
有比dd扩展文件更好的选择。该dd命令需要几个参数才能正常运行(以免损坏您的数据)。我用truncate代替。尽管它的名字,它也可以扩展文件的大小:
truncate - 将文件的大小缩小或扩展到指定的大小
-s, --size=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
Run Code Online (Sandbox Code Playgroud)
安全地将您的文件扩展 1 GB。而且,是的,当底层文件系统支持时,它会进行稀疏扩展,因此实际块将按需分配。
展开文件时,不要忘记运行 resize2fs:
resize2fs MyDrive.vhd
Run Code Online (Sandbox Code Playgroud)
此外,umount对于支持在线调整大小的文件系统,整个过程都可以在线完成(不使用设备):
losetup -c loopdev
Run Code Online (Sandbox Code Playgroud)
更新后备文件的内核信息,
和
resize2fs loopdev
Run Code Online (Sandbox Code Playgroud)
在线调整挂载的文件系统的大小
尺寸翻倍:
umount /some/user/folder
dd if=/dev/zero bs=1M count=500 seek=500 >>MyDrive.vhd
resize2fs MyDrive.vhd
Run Code Online (Sandbox Code Playgroud)