创作立场声明:本文所测商品为自费购入。坚持独立的评价观点是笔者创作的基本底线,绝不会因商品来源不同而有所偏颇,请各位放心。
写在前面:
软路由渐渐开始普及,大部分使用者还是下载安装别人编译好的Openwrt固件,使用别人编译固件的时候,经常发现软件包容量所剩无几,导致无法安装ipk文件以及更新已有软件组件,还有导致软件组件更新不全,软件功能缺失的情况(如下面两图),实际上我自己编译的时候也没注意这个问题,正好群友在扩容的时候遇到一些问题,我自己也实际操作了一下,发现软件包扩容的坑还是挺多的,于是在物理安装、EXSI和PVE安装情况下都尝试了一遍,把一些经验教训做法总结分享下。物理安装情况下遇到的问题比较少,重点说下基于EXSI和PVE的Openwrt软路由软件包扩容。
软件包空间不足
无法更新
准备工作:
- 操作之前尽量将在用虚拟机备份或者再新建虚拟机上操作,确定尝试无问题后再切回生产环境
- 确保openwrt能连接互联网,且openwrt虚机关闭情况下能连接到宿主机
- 准备SSH客户端,putty/Xshell/FinalShell/MobaXterm/SecureCRT/Terminus都可以,我自己习惯用FinalShell,本文以Finalshell作演示,SSH客户端的作用就是可以直接复制代码,不用再VNC里手动再敲一遍,物理机安装也不用连接键盘鼠标、显示器
1、查看磁盘情况
SSH连接至Openwrt(物理机可以连键盘鼠标、显示器原始操作),PVE和EXSI也可以登录宿主机在VNC里操作,以下均在SSH客户端里操作不再赘述。
输入fdisk -l查看目前磁盘及分区情况
fdisk -l
fdisk -l
其实这一步极其重要,这也是我反复失败后才注意到,在网上教程或者视频里这一步直接略过,导致后面分区和目录创建失败,openwrt也频繁报错
来看下,这个报错究竟是啥,简单来说就是openwrt记录的扇区和实际硬盘不符合,需要更新分区表
2、更新分区表、安装分区工具cfdisk
分别输入以下代码,并回车安装
opkg update
opkg install cfdisk
opkg install e2fsprogs
输入cfdisk回车进入分区工具
cfdisk的操作逻辑是这样,左右光标是操作底部 delete resize quit等功能,上下光标是选中磁盘或者分区
更新分区表
输入yes回车更新
这里直接选中Write标签,回车确认更新分区表,输入完整yes更新分区表,下面开始扩容磁盘同步分区后,再次输入fdisk -l确认是否报错,无报错后开始扩容硬盘
分区表正确
3、虚机环境下Openwrt硬盘扩容
EXSI
关闭虚机后,选中虚机右击-编辑设置-修改硬盘容量,注意后面的数量单位,保存后重启虚机
编辑虚机设置
选中硬盘
修改容量
PVE
选中虚机-硬件-选中硬盘-调整磁盘大小,调整至想要的数值重启生效
pve调整硬盘容量
4、新增磁盘空间分区、挂载
回到SSH客户端,先别急着进入cfdisk分区,先查看分区表,再次输入fdisk -l查看,新增的空间并未写进分区表,意味着即使用分区工具划空间,openwrt也无法使用和指向新空间,简单来说,就是openwrt系统能看到这块新分区,但是没有进行登记。
扩容后更新分区表
再次进入cfdisk,新空间已经识别5.8G(绿色部分),先更新分区表。不要进行任何操作,继续write更新,退出后再输入fdisk -l查看分区表,确定无报错后,再进入cfdisk分区
新空间识别
cfdisk分区
选择高亮的绿色free space一栏,选中new新建分区
新建分区
最大创建值5.8G
这里设置为2G为示例,手动输入2G,回车创建
创建新分区
输入yes确认
保存分区表
创建完毕,保存分区表后退出cfdisk,在fdisk里查看分区表是否正确
新分区出现,且无报错
格式化、挂载、使用新分区
回到SSH终端root用户下,再次分别输入3行命令回车
mkfs.ext4 /dev/sda3
mount /dev/sda3 /mnt/sda3
cp -r /overlay/* /mnt/sda3
操作新分区
出现如上界面,无报错的话,说明无问题,进入openwrt开始挂载
5、挂载新分区sda3
进入openwrt主界面-系统-挂载点,更新下配置
挂载点
更新配置
页面刷新后,出现新加入的sda3分区
出现sda3分区
点击修改,设置这个挂载点
设置为外部overlay使用
启用并设置为overlay使用,保存后重启软路由,进入软件包查看,容量符合,说明成功
软件包空间扩大
再次更新组建,全部成功,说明软件包扩容彻底完成
再次更新
更新成功
总结:
- 操作看似繁琐,一遍一遍进入fdisk、cfdisk,但是实际操作就秉承一个思路,动硬盘分区前先看分区表是否报错,扩容前查看、扩容后查看、分区前查看,如果分区表无报错才进入下一步操作
- 如果扩容前未查看分区表,直接扩容,再更新分区表或者直接从不更新分区表,后续还会报错么?经过我反复尝试:1. EXSI下基本会报错,显示mount /dev/sda3 /mnt/sda3和cp -r /overlay/* /mnt/sda3无法找到sda3目录2. 如果PVE安装IMG镜像时候使用PE安装或者import命令转换固件,在系统启动前调整磁盘大小则不会,如果是当时图省事import镜像未调整磁盘空间直接启动,二次调整有概率报错3. 物理机因为写入IMG镜像时候已经完整遍历整个硬盘,所以基本不会报错,基本可以省略fdisk命令