type
status
date
slug
summary
tags
category
icon
password
今天一位使用了 ikuai & openwrt 网络架构的朋友,遇到了 istore 上面软件存储空间不够的情况(即
/overlay
空间不足),现将扩容的过程进行一个简单的记录,方便大家参考。1. 思路
Openwrt 的扩容教程很多,这里推荐大家看看这些教程:
- eSir(Youtube):OpenWrt扩容Overlay,为你的固件增加可用空间,从此安装程序随心所欲~
- 悟空的日常(Bilibili):软路由 iStoreOS 如何扩容软件包?如何分区?如何备份整个系统?如何做SMB共享?如何挂载其他NAS?一个视频告诉你
由于 iStore 是 ikuai 上面的虚拟机,因此我采用了下面的步骤:
- 为 iStore 虚拟机再添加一个虚拟硬盘;
- 在 iStore 中使用
dd
命令将原先的固件.img
镜像直接整个拷贝到新的虚拟硬盘上面;
- 使用
parted
命令对新添加的虚拟硬盘上面的分区进行扩容;
- 使用
resize2fs
扩容文件系统;
- 在 ikuai 中将原先的 iStore 固件去掉,只保留新添加的虚拟硬盘作为启动盘。
2. 实施过程
2.1 为 iStore 虚拟机再添加一个虚拟硬盘
关闭 iStore 虚拟机,添加一个虚拟硬盘:

这里我添加了一个 5G 大小的虚拟硬盘:

磁盘名称:指的是虚拟硬盘存储在 ikuai 上面的哪一个路径。
2.2 使用 dd
命令将整个固件拷贝到新虚拟硬盘
进入 iStore 的命令行界面,查看当前的硬盘情况:

根据上图可知,我们需要将
/dev/vda
这个硬盘(也就是原 iStore 固件的镜像硬盘)整个克隆到 /dev/vdb
这个新添加的虚拟硬盘上面。接下来使用下面的命令对原固件的镜像进行拷贝:

完成拷贝
2.3 使用 parted
命令对新添加的虚拟硬盘上面的分区进行扩容
当我们完成了拷贝之后,原固件硬盘上面的所有分区都镜像地复制到了我们新添加的虚拟硬盘上面。但是此时还没完,因为我们还没开始进行扩容,此时我们需要使用
parted
命令将分区进行扩容。- 使用
parted /dev/vdb
进入扩容步骤

- 输入
print free
查看虚拟硬盘的分区情况以及可用空间情况:

输入之后会提示你以下信息:
上述信息代表当前 GPT 分区表没有使用磁盘上的所有可用空间,也就是说,磁盘的末尾有一部分空间未被分配给任何分区,因为我们迁移到了硬盘空间更大的虚拟硬盘上。parted 检测到这一点,并询问你是否要修复 GPT 分区表以使用所有可用空间。修复后,parted 会调整分区表的元数据,使其覆盖整个磁盘空间。
此时输入
Fix
回车下一步:
此时可以看到编号为
3
的分区就是我们需要扩容的分区(也就是挂载在 /overlay
的分区),并且我们还有 2818MB
的可用空间可以用于扩容。
- 输入
resizepart 3 100%
命令将所有可用的空闲空间扩容到编号为3
的分区中(没有报错就表示已经成功完成分区的扩容):

- 最后输入
quit
命令退出:

输入
fdisk -l /dev/vdb
可以看到分区已经成功扩容:
2.4 使用 resize2fs
命令扩容文件分区
虽然硬盘的分区已经得到了扩容,但是在文件系统层面来说是不知道当前分区已经扩容,所以我们还需要使用以下命令进行文件系统上面的扩容:
但输入之后系统会提示你先使用
e2fsck -f /dev/vdb3
进行文件系统的检查(否则如果文件系统存在错误,那么直接扩容会进一步扩大错误的范围,造成数据丢失):运行之后:

最后再进行扩容:

2.5 使用新的虚拟硬盘作为启动盘
在命令行终端输入
poweroff
关闭 iStore(或者在 ikuai 的虚拟机管理界面点击关机),然后将原有的固件盘去掉:
删除原固件盘

删除后
启动之后,可以在软件包管理界面看到空间已经得到了扩容:

- 作者:JackieWu
- 链接:https://www.jackiewu.top/article/openwrt-istore-expansion
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。