揭秘 eMMC 存储扩容:找回 “消失” 空间的简便之道

揭秘 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却处于闲置状态,这便是存储空间未被充分利用的症结所在。

解决过程

  1. 初次挂载尝试 :尝试挂载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
  1. 格式化与重新挂载 :为解决这一问题,需先对/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 -hlsblk命令查看,分区大小已显示正常:

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文件进行相应设置。

  1. 导出 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'
  1. 修改 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'
  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 系统

相关推荐
星依网络4 小时前
yolov5实现游戏图像识别与后续辅助功能
python·开源·游戏程序·骨骼绑定
小程故事多_809 小时前
开源界核弹级输出!蚂蚁 Agentar-Scale-SQL 凭 “编排式扩展” 技术,成为 Text-to-SQL 天花板
数据库·人工智能·sql·开源·aigc·embedding
庄雨山13 小时前
Flutter+Riverpod+开源鸿蒙:新一代跨端状态管理实战
flutter·开源·openharmonyos
云空14 小时前
《开源机器人选型全指南》
机器人·开源
碎碎思15 小时前
BerkeleyLab Bedrock:为 FPGA 与加速计算打造的开源基石
fpga开发·开源
说私域15 小时前
技术驱动下的营销运营革命:开源AI大模型AI智能名片商城系统的实践与启示
人工智能·开源
hahjee15 小时前
命令行参数解析利器:gnuflag在OpenHarmony PC上的完整适配实战
开源·鸿蒙
法欧特斯卡雷特15 小时前
Kotlin 2.3.0 现已发布!又有什么好东西?
后端·架构·开源
云空16 小时前
《M-Robots OS:中国首个开源鸿蒙机器人操作系统》
机器人·开源·harmonyos
孤鸿玉16 小时前
Flutter官方正在搞热更新(动态化)?硬核,干货,有证据,有代码
flutter·开源