开篇

我们安装 OpenWrt 之后默认的存储空间都很小,如果你是通过下载其他大佬的固件,一般磁盘大小在编译固件的时候大小就固定死了,如果要跑 docker 的话会连个镜像都拉取不下来,若我们想要充分折腾软路由,则需要对 Open­Wrt 进行扩容,然后就可以愉快的玩耍了 。

说明

本教程扩容方案本人仅在 vmware 虚拟机里面做测试通过,理论适用于物理机进行安装,参考文章请自行斟酌。

步骤

  1. 先查看扩容前默认可使用的空间大小,我这里指剩下了129.40MB。

    OpenWrt 扩容磁盘方案及实操

  1. 关闭 OpenWrt,建议给虚拟机拍个快照,防止搞炸了重装浪费时间,然后新增一块磁盘,我这里直接新增一个 5G 大小的硬盘做测试,然后打开 OpenWrt 电源。
  2. 安装必要工具。

    opkg update # 更新
    opkg install fdisk # 安装工具,有的话就不用执行了
  3. 执行命令fdisk -l ,确认自己的磁盘编号

    root@OpenWrt:~# fdisk -l
    Disk /dev/loop0: 214.06 MiB, 224460800 bytes, 438400 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 (1065503 != 1065534) will be corrected by write.
    The backup GPT table is corrupt, but the primary appears OK, so that will be used.
    The backup GPT table is not on the end of the device.
    
    
    Disk /dev/sda: 520.28 MiB, 545553920 bytes, 1065535 sectors
    Disk model: VMware Virtual S
    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: 8E2DA755-0E50-0BD5-63C5-B1DC8E810D00
    
    Device      Start     End Sectors  Size Type
    /dev/sda1     512   41471   40960   20M Linux filesystem
    /dev/sda2   41472 1065471 1024000  500M Linux filesystem
    /dev/sda128    34     511     478  239K BIOS boot
    
    Partition table entries are not in disk order.
    
    
    Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 sectors
    Disk model: VMware Virtual S
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    这里可以看到编号 /dev/sdb 是我刚刚添加的5G硬盘
  4. 使用 fdisk /dev/sdb 给新磁盘分区,全部使用默认值就可以了。最后输入w保存分区表并退出 ,按照提示操作即可。

    root@OpenWrt:~# fdisk /dev/sdb
    
    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.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0xbd5366e9.
    
    Command (m for help): n
    Partition type
       p   primary (0 primary, 0 extended, 4 free)
       e   extended (container for logical partitions)
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-10485759, default 2048): 
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-10485759, default 10485759): 
    
    Created a new partition 1 of type 'Linux' and of size 5 GiB.
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
  5. 使用 mkfs.ext4 /dev/sdb 文件系统格式化分区刚才的分区。

    root@OpenWrt:~# mkfs.ext4 /dev/sdb
    mke2fs 1.46.5 (30-Dec-2021)
    Found a dos partition table in /dev/sdb
    Proceed anyway? (y,N) y
    Creating filesystem with 1310720 4k blocks and 327680 inodes
    Filesystem UUID: 752b4263-c24e-46cb-8e35-7e991898e6f6
    Superblock backups stored on blocks: 
            32768, 98304, 163840, 229376, 294912, 819200, 884736
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done
  6. 挂载分区后的磁盘,拷贝 /overlay 目录下原来的文件到此目录下。

    root@OpenWrt:~# mkdir -p /mnt/sdb  # 创建挂载目录
    root@OpenWrt:~# mount /dev/sdb /mnt/sdb  ## 挂载
    root@OpenWrt:~# ls /mnt/sdb # 查看是否挂载成功,只要有lost+found文件就对了
    lost+found
    root@OpenWrt:~# cp -r /overlay/* /mnt/sdb  ## 拷贝文件
    root@OpenWrt:/mnt/sdb# ls /mnt/sdb  ## 有如下文件就对了
    etc         lost+found  upper       work
  7. 接下来就是进到OpenWrt系统后台,找到挂载点-先点击全局设置里面的生成配置按钮,然后拉到底部挂载点,可以看到我们刚才挂载的磁盘,然后点击修改。

    OpenWrt 扩容磁盘方案及实操

  1. 点击修改之后进入到如下界面,确保启用此挂载点是勾选状态,挂载点选择 作为外部overlay使用,保存&应用,然后重启OpenWrt。

    OpenWrt 扩容磁盘方案及实操

  2. 如果操作没错的话,再次查看空闲空间就是我们设置的空间了。

    OpenWrt 扩容磁盘方案及实操

扩展

当然有人会说如果我给虚拟磁盘分配了10G,可不可以使用剩余空间扩容,当然也是OK的,只是在格式化的磁盘的时候选择你对应剩余空间的编号即可,如果你需要此方案,你可以看下文章末尾的参考链接里面的一些文章。

参考文章

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

OpenWrt扩展根目录

虚拟机下的OpenWrt磁盘Overlay扩容

软路由探索之旅 篇三:给openwrt扩容overlay 3月30日更新

OpenWrt 安装后扩容(非overlay)

文章目录