揭秘 eMMC 存储扩容:找回 "消失" 空间的简便之道
概要
在使用编译好的固件烧写系统启动后,你是否遇到过这样的困惑:明明硬件 eMMC 存储为 32G,可系统显示的用户分区却仅有 812M。常规修改固件分区表来调整的方法较为繁琐,本文将带你验证一种更为简便的方式,轻松找回那些 "消失" 的 eMMC 存储空间。
问题分析
系统启动后,通过执行相关命令查看分区信息,能清晰了解当前系统的存储分配状况:
bash
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 812M 664M 91M 88% /
tmpfs 512K 0 512K 0% /dev
tmpfs 987M 19M 968M 2% /tmp
cgroup 987M 0 987M 0% /sys/fs/cgroup
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 28.9G 0 disk
├─mmcblk0p1 179:1 0 4M 0 part
├─mmcblk0p2 179:2 0 4M 0 part
├─mmcblk0p3 179:3 0 64M 0 part
├─mmcblk0p4 179:4 0 64M 0 part
├─mmcblk0p5 179:5 0 32M 0 part
├─mmcblk0p6 179:6 0 6G 0 part /
├─mmcblk0p7 179:7 0 128M 0 part
└─mmcblk0p8 179:8 0 22.6G 0 part
mmcblk0boot0 179:32 0 4M 1 disk
mmcblk0boot1 179:64 0 4M 1 disk
zram0 254:0 0 0B 0 disk
从上述信息可知,分区mmcblk0p6被挂载为根分区,而拥有 22.6G 空间的mmcblk0p8却处于闲置状态,这便是存储空间未被充分利用的症结所在。
解决过程
- 初次挂载尝试 :尝试挂载
mmcblk0p8分区到/mnt/目录,然而,执行df -h命令查看时,却发现并未显示其实际大小:
bash
mount /dev/mmcblk0p8 /mnt/
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 812M 664M 91M 88% /
tmpfs 512K 0 512K 0% /dev
tmpfs 987M 20M 967M 2% /tmp
cgroup 987M 0 987M 0% /sys/fs/cgroup
/dev/mmcblk0p8 23G 24K 21G 1% /mnt
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 812M 664M 91M 88% /
tmpfs 512K 0 512K 0% /dev
tmpfs 987M 19M 968M 2% /tmp
cgroup 987M 0 987M 0% /sys/fs/cgroup
/dev/mmcblk0p8 4.0M 283K 3.5M 8% /mnt
- 格式化与重新挂载 :为解决这一问题,需先对
/dev/mmcblk0p8进行格式化操作。格式化使用mkfs.ext4命令,此命令将在该分区创建一个 ext4 文件系统:
bash
# mkfs.ext4 /dev/mmcblk0p8
mke2fs 1.46.5 (30 - Dec - 2021)
/dev/mmcblk0p8 contains a ext2 file system labelled 'userdata'
last mounted on Wed Dec 20 16:54:25 2023
Proceed anyway? (y,N) y
Discarding device blocks: done
Creating filesystem with 5926904 4k blocks and 1482752 inodes
Filesystem UUID: af5f8523 - e705 - 4b11 - 8615 - 7c28df16aecb
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
格式化完成后,卸载之前的挂载点,重新挂载/dev/mmcblk0p8到/mnt/。此时再次执行df -h和lsblk命令查看,分区大小已显示正常:
bash
# umount /mnt/
# mount /dev/mmcblk0p8 /mnt/
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 812M 664M 91M 88% /
tmpfs 512K 0 512K 0% /dev
tmpfs 987M 20M 967M 2% /tmp
cgroup 987M 0 987M 0% /sys/fs/cgroup
/dev/mmcblk0p8 23G 24K 21G 1% /mnt
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 28.9G 0 disk
├─mmcblk0p1 179:1 0 4M 0 part
├─mmcblk0p2 179:2 0 4M 0 part
├─mmcblk0p3 179:3 0 64M 0 part
├─mmcblk0p4 179:4 0 64M 0 part
├─mmcblk0p5 179:5 0 32M 0 part
├─mmcblk0p6 179:6 0 6G 0 part /
├─mmcblk0p7 179:7 0 128M 0 part
└─mmcblk0p8 179:8 0 22.6G 0 part /root
mmcblk0boot0 179:32 0 4M 1 disk
mmcblk0boot1 179:64 0 4M 1 disk
zram0 254:0 0 0B 0 disk
配置永久生效
为使上述挂载配置在系统重启后依然生效,需对fstab文件进行相应设置。
- 导出 fstab 配置 :通过执行
block detect > /etc/config/fstab命令,导出当前系统的fstab配置信息。查看该文件内容如下:
bash
# cat /etc/config/fstab
config 'global'
option anon_swap '0'
option anon_mount '0'
option auto_swap '1'
option auto_mount '1'
option delay_root '5'
option check_fs '0'
config'mount'
option target '/mnt'
option uuid 'af5f8523 - e705 - 4b11 - 8615 - 7c28df16aecb'
option enabled '0'
- 修改 fstab 配置 :对
/etc/config/fstab文件内容进行修改,将挂载目标设为/root,并将enabled选项设为1,使能系统自动挂载mmcblk0p8到/root:
bash
config'mount'
option target '/root'
option uuid 'af5f8523 - e705 - 4b11 - 8615 - 7c28df16aecb'
option enabled '1'
- 验证配置生效 :重启系统后,再次执行
df -h命令查看,确认挂载配置已生效,/dev/mmcblk0p8分区已正确挂载到/root目录,且空间大小显示正常:
bash
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 812M 608M 147M 81% /
tmpfs 512K 0 512K 0% /dev
tmpfs 987M 18M 969M 2% /tmp
cgroup 987M 0 987M 0% /sys/fs/cgroup
/dev/mmcblk0p8 23G 57M 21G 1% /root
通过以上步骤,我们成功地以一种简便的方式找回了 eMMC 存储中 "消失" 的空间,并使其配置在系统重启后持续生效,为系统存储资源的充分利用提供了有效解决方案。希望本文能为遇到类似问题的开发者和技术爱好者带来帮助。
相关标签:#eMMC 存储 #系统分区 #挂载配置 #Openwrt 系统