banner
miaoer

miaoer

喵二の小博客 xLog 分站
tg_channel
telegram

软路由空间不够?扩容 overlay 的根

之前我分享的扩容 overlay 是复制原本 OpenWrt 的 /overlay 分区并且挂载作为外部 overlay 使用,但在最新的 OpenWrt/LEDE 以及基于 LEDE 编译的 CatWrt 也是扩容不了的,虽然说有的扩容成功了但成功率不高,这次分享的总结于 B 站 UP 主 韩风 Talk 视频中的第一种方法,成功率也比较高因为第二种我在固件里没有刷新成功容量所以就放弃了。

首先非常感谢韩风提供的方法,有需要可以查看他的视频我这里就做一个总结。

在 v22.11 固件中就有 100M 可用空间强烈不推荐小白作为安装 OpenWrt 的必选项!是有门槛的而且数据无价有需要可以先做备份再进行操作,甚至你可以给虚拟机创建一个快照。




以前的靠作为外部 overlay 的可以参考我这期博客 OpenWrt 扩容 overlay 分区教程


准备#

首先打开终端 SSH 连接到软路由,这里我使用 CatWrt EFI 启动固件自带的 ttyd

先看看软路由的分区情况 fdisk -l

root@CatWrt:~# fdisk -l
Disk /dev/loop0: 184.88 MiB, 193855488 bytes, 378624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
GPT PMBR size mismatch (852511 != 7129087) will be corrected by write.


Disk /dev/sda: 3.4 GiB, 3650093056 bytes, 7129088 sectors
Disk model: VMware Virtual I
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0EAC8D5A-F014-DB49-E8EB-FA846A473B00

Device      Start    End Sectors  Size Type
/dev/sda1     512  33279   32768   16M Linux filesystem
/dev/sda2   33280 852479  819200  400M Linux filesystem
/dev/sda128    34    511     478  239K BIOS boot

Partition table entries are not in disk order.

可以看到 EFI 版固件要比传统模式下多出一个 239k 的 /dev/sda128,但中止扇区还是在 819200,记住这个中止扇区,后续很多细节都是围绕这个中止点!

下面进行分区工作,首先需要了解你的固件是否需要升级,在 CatWrt 里我们强烈建议预留 200M 空闲空间这个空间在现在看需要在 /dev/sda2 后面预留了

首先进入分区管理工具,输入 fdisk /dev/sda

这里需要注意一下,扇区不能一定重复!

随后输入 n 新建一个分区

root@CatWrt:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.38).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

GPT PMBR size mismatch (852511 != 7129087) will be corrected by write.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.


Command (m for help): _

这里让我们选择主要分区还是扩展分区,我们选择主要输入 p(这里我没遇到,不是所有人都有)

Select (default p): _

这里让我们选择一个分区,因为这个 OpenWrt 没有进行过任何分区操作,这里就选择为 3

Partition number (3-127, default 3): _

这里让我们给 /dev/sda3 分区一个开始的扇区,这里按照未来升级的需要,我们将 /dev/sda2 分区的中止扇区加上 409600;

也就是 2048 x 200 即 200M 分区,从中止点 (≈852479) 860000 到 1269600 预留给升级,也就是我们要从 1270000 扇区开始分区。

这里把 1270000 填上

First sector (852480-7129054, default 854016): _

新分区的中止分区我们这里可以直接用我们最熟悉的 g 单位开始了,这里创建建议填 +2g 起

Last sector, +/-sectors or +/-size{K,M,G,T,P} (1270000-7129054, default 7127039): +2g

这里输入 w 回车就算是保存成功了

Created a new partition 3 of type 'Linux filesystem' and of size 2 GiB.

Command (m for help): w
The partition table has been altered.
Syncing disks.

root@CatWrt:~# 

这样就创建成功了可以看看分区是否成功 fdisk -l

root@CatWrt:~# fdisk -l
Disk /dev/loop0: 184.88 MiB, 193855488 bytes, 378624 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 3.4 GiB, 3650093056 bytes, 7129088 sectors
Disk model: VMware Virtual I
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0EAC8D5A-F014-DB49-E8EB-FA846A473B00

Device        Start     End Sectors  Size Type
/dev/sda1       512   33279   32768   16M Linux filesystem
/dev/sda2     33280  852479  819200  400M Linux filesystem
/dev/sda3   1270000 5464063 4194064    2G Linux filesystem
/dev/sda128      34     511     478  239K BIOS boot

Partition table entries are not in disk order.

格式化#

到这里分区工作就完成了,不过还需要格式化为 ext4,输入 mkfs.ext4 /dev/sda3 并回车

root@CatWrt:~# mkfs.ext4 /dev/sda3
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 524258 4k blocks and 131072 inodes
Filesystem UUID: ff7a2c4a-fd56-42ad-a9ac-45ade1c5819a
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

挂载#

这样就算完成了,接下来到 LuCi 网页后台上操作,以此进入 系统 - 挂载点 找到 挂载点 处点击 添加

UUID 处选择刚刚创建好的分区我这里是 ff7a2c4a-fd56-42ad-a9ac-45ade1c5819a (/dev/sda3, 2047 MB)

挂载点选择 作为根文件系统使用(/)

打上启用此挂载点的勾

image

刚刚我们点击了挂载点选择根文件系统使用,在 根目录准备 中弹出一串代码,这可不是出问题了我们需要把这些指令稍做修改让根文件复制到挂载点里

这里我已经修改好了,其实对比一下就知道只是样例中的 sda1 改成了 sda3,这里直接把这些命令打开终端给输上去就可以了

mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sda3 /tmp/extroot
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot
reboot

最后一个命令是重启需要手动按一下回车。如果在接近结尾出现了和我不同的如出现了(find 啥的字样)不同以下字样请确保你没有跳过步骤导致错误或者固件问题导致。

按照本篇是一定可以扩容成功的。

……
./www/uuandriod.png
./www/uuios.png
./boot/
./home/
./home/ftp/
./run/
./run/docker/
./run/docker/plugins/
./run/mount/
./run/blkid/
./run/blkid/blkid.tab
./run/blkid/blkid.tab.old
root@CatWrt:~# umount /tmp/introot
root@CatWrt:~# umount /tmp/extroot
root@CatWrt:~# reboot

重启过后这里最简单的方式肯定是查看软件包里是否还有多余的空间,打开 系统 - 软件包 中如图扩容成功,如果你没扩容成功还是建议删掉 sda3 后重置配置 OpenWrt

image


Docker#

关于 Docker 分区,这里就说就不太细了可以结合上述内容,也参考之前扩容 overlay 的那期博文,这里也可以按照 fdisk 进行操作而不是 cfdisk

输入 fdisk /dev/sda

新建一个分区 n

选择主要分区还是扩展分区,我们选择主要输入 p(这里我没遇到,不是所有人都有)

Select (default p): _

选择一个分区,这里选 4

因为扩容 (/dev/sda3) 后中止扇区在 5464063 我们这里设置开始扇区为 5466000 回车

下一步则是填写需要多少空间给 Docker 分区用,这里选择 +10g

这里输入 w 回车就算是保存成功了

输入 mkfs.ext4 /dev/sda4 格式化 Docker 分区 (/dev/sda4)

前往系统 - 挂载点,添加刚刚创建好的分区 /dev/sda4

挂载点为 作为 Docker 数据分区使用 (/opt)

勾选 启用挂载点 √

保存并应用,建议重启一下即可看到 Docker 分区已经被扩容成功了。

此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.miaoer.xyz/posts/network/expansion-overlay


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。