创建空白img镜像并格式化文件系统、挂载使用
# 创建512M的空白镜像
dd if=/dev/zero of=test.img bs=1M count=512
# 格式化文件系统
mkfs.ext4 test.img
# 挂载使用
sudo mount test.img ./tempdir
# 复制文件
cp ./dir1 ./1.txt ./tempdir对img镜像扩容
# 卸载
sudo umount tempdir
# 将镜像扩容至1G
dd if=/dev/zero of=test.img bs=1M seek=1024 count=0
# 扩容文件系统
e2fsck -f test.img
resize2fs test.img
# 挂载使用
sudo mount test.img ./tempdir命令解释
1. 创建512MB空白镜像
dd if=/dev/zero of=test.img bs=1M count=512- 作用:通过
/dev/zero设备生成全零填充的512MB文件。 - 原理:
bs=1M定义块大小为1MB,count=512表示写入512个块。 - 优化:部分系统可能要求使用大写单位(如
bs=1MB),建议统一使用bs=1M以兼容多数Linux发行版。
2. 格式化文件系统
mkfs.ext4 test.img- 作用:将镜像格式化为ext4文件系统。
- 问题:未使用
-F参数可能导致警告(因目标非块设备)。建议修正为:
mkfs.ext4 -F test.img3. 挂载镜像到目录
sudo mount test.img ./tempdir- 作用:将镜像挂载到
./tempdir目录。 - 问题:缺少
-o loop参数,无法通过回环设备挂载文件。修正命令:
sudo mount -o loop test.img ./tempdir4. 复制文件到挂载点
cp ./dir1 ./1.txt ./tempdir- 问题分析:
- 若
dir1是目录,需添加-r参数递归复制。 - 挂载目录默认属主为root,普通用户需
sudo或调整权限。
- 建议:
sudo cp -r ./dir1 ./1.txt ./tempdir/- 或通过权限调整:
sudo chown -R $USER:$USER ./tempdir
cp -r ./dir1 ./1.txt ./tempdir/5. 卸载镜像
sudo umount tempdir- 正确性:命令正确,但需确保目录路径完整(建议使用
./tempdir)。
6. 镜像扩容至1GB
dd if=/dev/zero of=test.img bs=1M seek=1024 count=0- 作用:通过追加空洞(稀疏文件)将镜像扩展至1GB。
- 原理:
seek=1024跳过前1024个块(1GB),count=0仅扩展文件不写入数据。 - 风险:需确保镜像已卸载,否则可能导致数据损坏。
7. 调整文件系统大小
e2fsck -f test.img
resize2fs test.img- 作用:
-
e2fsck -f强制检查文件系统一致性。 -
resize2fs将ext4文件系统扩展至镜像新大小。
- 前提:必须在镜像未挂载时执行。
8. 重新挂载镜像
sudo mount test.img ./tempdir- 问题:仍缺少
-o loop参数。修正为:
sudo mount -o loop test.img ./tempdir完整修正后的流程
# 创建镜像
dd if=/dev/zero of=test.img bs=1M count=512
# 格式化
mkfs.ext4 -F test.img
# 创建挂载点并挂载
sudo mkdir -p ./tempdir
sudo mount -o loop test.img ./tempdir
# 复制文件(需权限)
sudo cp -r ./dir1 ./1.txt ./tempdir/
# 卸载
sudo umount ./tempdir
# 扩容镜像
dd if=/dev/zero of=test.img bs=1M seek=1024 count=0
# 调整文件系统
e2fsck -f test.img
resize2fs test.img
# 重新挂载
sudo mount -o loop test.img ./tempdir关键注意事项
- 空洞文件风险:扩容生成的稀疏文件可能不立即占用物理空间,需通过
ls -lh与du -h对比验证实际占用。 - 性能测试:若需精确测试磁盘IO性能,建议使用
dd结合conv=fdatasync或oflag=direct参数绕过缓存。 - 备份策略:关键操作前可通过
dd备份镜像或MBR(例如dd if=test.img of=backup.img)。
















