10
2022
12
10:59:24

OpenWrt 存储空间扩容的两种方案

说明:当我们通过群晖 VMM 虚拟机安装 Open­Wrt 时,默认会分配一个 10GB 的存储空间,而实际情况中 Open­Wrt 存在大量的剩余空间是未被使用的,典型的铺张浪费有木有?Open­Wrt 实际使用容量完全取决于 Open­Wrt 编译时所设置的固件大小。若我们想要充分折腾软路由,则需要对 Open­Wrt 进行扩容。


对于存储空间扩容的思路主要有两种:利用剩余的存储空间或是添加一块新的磁盘进行扩容。本文将以两个小示例分别介绍这两种扩容方案具体的实现步骤,以供大家举一反三。如果你也有扩容的需求,可部分参考本文,其实逻辑上相通。

OpenWrt 扩容方案

注意⚠️:本文教程基于运行的群晖VMM虚拟机,x86_64 平台 + EXT4 文件系统的 Open­Wrt;对于squashfs 文件系统及硬路由的扩容方案可能并不适用。

1. 前期准备

1.1 如果你怕操作出错,可进入 虚拟机 找到正在运行的 Open­Wrt 虚拟机,点击 操作 - 拍快照 方便出错时可以快速恢复。


OpenWrt 存储空间扩容的两种方案


1.2 通过 Xshell、Putty 等 SSH 终端工具登录 Open­Wrt ,安装磁盘分区工具:

opkg update
opkg install cfdisk fdisk e2fsprogs

命令行中 cfdisk 、fdisk 均为磁盘分区工具,e2fsprogs 包含了 mkfs 命令,用于格式化分区。

2. 方案一:利用剩余空间扩容

2.1 创建新分区

SSH 终端运行 cfdisk 命令进入磁盘分区界面,通过键盘上下键切换到 Free space (剩余空间),左右键切换至 NEW (新增分区),然后按下回车键。


OpenWrt 存储空间扩容的两种方案


分区类型设置为 Primary (主分区),按下回车键。


OpenWrt 存储空间扩容的两种方案


左右键切换 Write 按下回车键,写入新分区。


OpenWrt 存储空间扩容的两种方案


输入 yes 按下回车键,确认写入新分区。


OpenWrt 存储空间扩容的两种方案


切换 Quit ,按下回车键退出。运行 fdisk -l 命令,查看是否成功创建新分区。


OpenWrt 存储空间扩容的两种方案


2.2 格式化新分区

SSH 终端运行下面的命令,将新分区的文件系统格式化为 ext4

mkfs.ext4 /dev/sda3

2.3 挂载新分区

进入 Open­Wrt 管理后台,依次点击 系统 - 挂载点 找到并点击全局设置中的 生成配置 。


OpenWrt 存储空间扩容的两种方案


在 挂载点 找到创建的新分区,点击 修改 重新调整挂载项目的设置。


OpenWrt 存储空间扩容的两种方案


勾选 启用此挂载点挂载点 选择为 作为根文件系统使用 ,完整复制根目录准备中的所有命令行后,点击 保存并应用


OpenWrt 存储空间扩容的两种方案


⚠️ 上面复制得到的命令行不要直接运行!!!不要直接运行!!!否则报错。

需要手动修改命令行中 mount /dev/sda1 /tmp/extroot 为 cfdisk 创建的新分区盘符,例如这里应修改为 mount /dev/sda3 /tmp/extroot,然后进入 SSH 终端,运行修改后的完整命令行,如下:

mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sdb1 /tmp/extroot # 修改后
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot

回车键到底,直到跑完所有命令行。然后运行 reboot 重启 Open­Wrt ~


OpenWrt 存储空间扩容的两种方案


重新进入 SSH 终端运行 df -h ,如上图表示扩容成功~


OpenWrt 存储空间扩容的两种方案


3. 方案二:通过新增磁盘扩容

3.1 添加新磁盘

打开群晖 VMM 找到正在运行的 Open­Wrt 虚拟机,选择 关机 - 强制停止


OpenWrt 存储空间扩容的两种方案


在 虚拟机 中找到已经停止运行的 Open­Wrt 虚拟机,依次选择 操作 - 编辑,找到 存储 设置项,自定义磁盘空间大小(例如 10GB),点击 + 号,新增一块磁盘,例如 虚拟盘 2 (建议勾选空间回收),点击 确定 保存设置。


OpenWrt 存储空间扩容的两种方案


回到 虚拟机 ,点击已停止运行的 Open­Wrt 虚拟机,执行 开机 操作。


OpenWrt 存储空间扩容的两种方案


3.2 磁盘分区

SSH 终端连接 Open­Wrt,运行下面命令查看磁盘信息

fdisk -l

此时,会显示一个未被使用的磁盘 sdb 即新磁盘,,屏幕打印信息如下:

root@OpenWrt:~# fdisk -l
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: QEMU HARDDISK
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: dos
Disk identifier: 0x711b2af7

Device     Boot Start     End Sectors  Size Id Type
/dev/sda1  *      512   66047   65536   32M 83 Linux
/dev/sda2       66560 1704959 1638400  800M 83 Linux


Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

若要使用这块新磁盘,就需要对新磁盘进行分区,运行以下命令:

fdisk /dev/sdb

创建一个主分区,分区操作步骤如下:

root@OpenWrt:~# fdisk /dev/sdb

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

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x1d291a31.

Command (m for help): n (输入 n 创建分区)
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p (输入 p 创建主分区)
Partition number (1-4, default 1): (回车键,默认创建一个分区)
First sector (2048-20971519, default 2048): (回车键)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971519, default 20971519):

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): w (输入 w 写入分区表)
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

查看磁盘信息:

fdisk -l

屏幕打印信息如下:

root@OpenWrt:~# fdisk -l
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: QEMU HARDDISK
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: dos
Disk identifier: 0x711b2af7

Device     Boot Start     End Sectors  Size Id Type
/dev/sda1  *      512   66047   65536   32M 83 Linux
/dev/sda2       66560 1704959 1638400  800M 83 Linux


Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: QEMU HARDDISK
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: dos
Disk identifier: 0x1d291a31

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 20971519 20969472  10G 83 Linux

其中 /dev/sdb1 即新创建的新分区分配的盘符

3.3 格式化

将分区格式化 ext4 文件系统:

mkfs.ext4 /dev/sdb1

3.4 挂载分区

进入 Open­Wrt 管理后台,依次点击 系统 - 挂载点 找到并点击全局设置中的 生成配置 。


OpenWrt 存储空间扩容的两种方案


在 挂载点 找到创建的新分区,点击 修改 重新调整挂载项目的设置。


OpenWrt 存储空间扩容的两种方案


勾选 启用此挂载点挂载点 选择为 作为根文件系统使用 ,完整复制根目录准备中的所有命令行后,点击 保存并应用


OpenWrt 存储空间扩容的两种方案


⚠️ 上面复制得到的命令行不要直接运行!!!不要直接运行!!!否则报错。

需要手动修改命令行中 mount /dev/sda1 /tmp/extroot 为 fdisk 创建的新分区盘符,例如这里应修改为 mount /dev/sdb1 /tmp/extroot,然后进入 SSH 终端,运行修改后的完整命令行,如下:

mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sdb1 /tmp/extroot # 修改后
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot

回车键到底,直到跑完所有命令行。然后运行 reboot 重启 Open­Wrt ~


OpenWrt 存储空间扩容的两种方案


4. 写在最后

以上就是喵斯基部落提供的关于 Open­Wrt 存储空间扩容的两个简单的示例,如果你使用的 Open­Wrt 是 EXT4 文件系统可参考本文示例,但需要留意盘符可能有所不同,切勿完全照搬。如果使用的是 squashfs 文件系统那么挂载点需要设置为 /overlay 作为 over­lay 分区使用。




推荐本站淘宝优惠价购买喜欢的宝贝:

OpenWrt 存储空间扩容的两种方案

本文链接:https://hqyman.cn/post/3248.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: