OpenWrt 扩容( Ext4固件)
Openwrt官方的固件只给了100M,本来是为了兼容很多性能孱弱的硬路由的超小emmc,但是这点地方很难容得下x86或者资深玩家,插件装几个就没空间了,太拉胯,今天就来讲讲如何在ext4固件的基础上扩容,网上有很多例子,自己在这里总结一下,主要是给自己看的,记性不好,忘了就来翻翻。
本教程只适用于ext4固件!!,squashfs请参考其他教程
1:安装工具包
ssh进入openwrt后台,然后执行下面指令
opkg update
opkg install fdisk
opkg install resize2fs
opkg install losetup
2. 查看分区情况
工具包安装完成之后用下面的命令看一下分区情况
fdisk -l
下面是我的执行结果:
root@OpenWrt:~# fdisk -l
Disk /dev/sda: 14.75 GiB, 15837691904 bytes, 30932992 sectors
Disk model: YANYU
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: 0x178a779a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 512 33279 32768 16M 83 Linux
/dev/sda2 33792 246783 212992 104M 83 Linux
可以清楚的看到 一个 sda : 14.75G 的硬盘被分成了 两个区 sda1 和 sda2
大小分别是 sda1 : 16M ;sda2 : 104M;
3. 开始分区
简单确认硬盘信息之后下面开始使用 fdisk 进行分区
fdisk /dev/sda
p #进入fdisk之后,使用p命令查看分区情况
下面是我执行的结果
Command (m for help): p
Disk /dev/sda: 14.75 GiB, 15837691904 bytes, 30932992 sectors
Disk model: YANYU
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: 0x178a779a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 512 33279 32768 16M 83 Linux
/dev/sda2 33792 246783 212992 104M 83 Linux
记录下第二个分区的开始数值
第一个分区是boot分区,第二个分区挂在的根目录
/dev/sda2 33792 246783 212992 104M 83 Linux
可以看到这里我的第二个分区的起始值是 33792 这个因盘而异,大家一定要拿一个小本本记好了
4. 删除分区
记下第二个分区的起始地址后,我们需要大胆的删除第二个分区
d #进入fdisk之后使用d命令删除分区
#下面是我的执行结果
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
#很多人这时候就慌了,没必要慌,没有w命令是不会写入分区的
5. 创建新分区, 并写入分区
在原来的遗址上建立一个新的分区
n #进入fdisk之后使用n命令创建分区
#下面是我的执行结果
Command (m for help): n #新建分区
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p #主分区
Partition number (2-4, default 2): 2 #分区编号 2
First sector (33280-30932991, default 34816): 33792 #起始地址(这里不要填错了,填错了ctrl+u或者直接退出)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (33792-30932991, default 30932991): +3g #一般来说3个g够用了
Created a new partition 2 of type 'Linux' and of size 3 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: n #这里不要移除标识!!
#创建完成之后,需要写入分区
Command (m for help): w
The partition table has been altered.
Syncing disks.
6. 检查扩大后的分区
w命令执行完之后会自动退出fdisk,这时磁盘的分区已经扩大了,可以用fdisk命令查看
fdisk -l
下面是我的执行结果
root@OpenWrt:~# fdisk -l
Disk /dev/sda: 14.75 GiB, 15837691904 bytes, 30932992 sectors
Disk model: YANYU
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: 0x178a779a
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 512 33279 32768 16M 83 Linux
/dev/sda2 33792 6326271 6292480 3G 83 Linux
root@OpenWrt:~#
可以看到/dev/sda2 33792 6326271 6292480 3G 83 Linux 这里的 sda2 从刚刚的104M 变成了现在的3G
但是现在还没完事,openwrt系统并不会识别这个空间,还需要进一步操作
7. 查看循环设备,创建循环设备
因为我们等下需要创建一个循环设备,所以要先看看系统里面有没有以经有的循环设备,使用以下命令查看。
losetup
因为笔者这里是新的openwrt系统,所以并没有设备出现,如果有东西的话,等下就不要用那个设备名,然后我们需要创建一个循环设备,把他和你新建的分区联系起来
losetup /dev/loop0 /dev/sda2
8. resize设备,重启
上面的命令的目的是将 /dev/sda2
分区的内容映射到 /dev/loop0
循环设备上,然后我们需要使用 resize2fs
命令来对 /dev/loop0
上的文件系统进行扩容。
这样的操作通常用于以下情况:
在线扩容文件系统:在Linux系统中,如果需要对一个文件系统进行扩容,通常需要先将文件系统所在的分区大小扩大,然后再对文件系统本身进行扩容。使用循环设备的方式,可以将原始分区的内容映射到一个更大的虚拟设备上,然后对这个虚拟设备上的文件系统进行扩容,而无需直接对原始分区进行扩容。
安全性:通过在循环设备上操作,可以避免直接对原始磁盘进行操作,减少操作失误造成的风险。
灵活性:使用循环设备可以在不影响原始磁盘数据的情况下进行扩容操作,对系统运行的影响较小。
总的来说,这样的操作可以帮助用户在不影响原始数据的情况下对文件系统进行扩容,提高了操作的安全性和灵活性
resize2fs -f /dev/loop0
reboot
9. 大功告成
进入web界面
OK啦!!!开心心。。