扩充ext4镜像的几种方法
写在开头
使用 ext4 镜像作为文件系统时,如果需要向其中添加某些大型文件,则可能会遇到镜像空间不足的问题,本篇尝试对此给出几种解决方案。
无大小对齐要求的扩容
如果对最终的大小没有对齐要求,则可以直接采用如下方式:
- 创建一个空的镜像,需求扩容多大创建多大:
dd if=/dev/zero of=blank.ext4 bs=1M count=需求大小
- 将额外的空白文件追加到镜像文件中:
cat blank.ext4 >> myimage.ext4
- 修复文件系统:
e2fsck -f myimage.ext4
- 调整文件系统大小:
resize2fs myimage.ext4
有大小对齐要求的扩容
操作
如果对最终的大小有对齐要求,则推荐创建一个指定大小的空的ext4新镜像,将旧镜像内容复制到新的镜像中:
- 创建一个空的镜像,需求扩容多大创建多大:
dd if=/dev/zero of=myimage.ext4 bs=1M count=需求大小
- 在空镜像上建立ext4文件系统:
mkfs.ext4 myimage.ext4
- 将空镜像、旧镜像挂载:
1
2
3
4mkdir myimage
sudo mount myimage.ext4 myimage
mkdir oldimage
sudo mount oldimage.ext4 oldimage - 将旧镜像内容复制到新的镜像中:
cp -r ./oldimage/. myimage
- 卸载空镜像、旧镜像
1
2sudo umount myimage
sudo umount oldimage
注意事项
这种复制方式可能导致镜像中的文件权限位发生变化,如果镜像是一个文件系统,则可以会导致一些权限问题,例如使用镜像中的文件系统时,使用 sudo 命令,会提示:/usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
,这就是由于 sudo 可执行文件的权限位被改导致的,修复方法如下:1
2chmod 4755 /usr/bin/sudo
chmod 755 /usr
详细修复方法见此篇文章
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ForeverYolo的博客!
评论