揭秘 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 系统

相关推荐
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(67):MemPO——用记忆级信用分配训练 Agent 主动管理长程上下文
论文阅读·人工智能·学习·开源·github
hoaxxcj4 小时前
DeepSeek Harness 本地部署与第三方插件排障实录:从 fetch failed 到 preset not found
人工智能·windows·开源·ai agent·deepseek
parksben5 小时前
OpenSider:让浏览器驱动 Agent
开源·github·agent
程序员老赵5 小时前
Docker 部署填鸭表单完整教程:搭建私有化问卷与表单收集平台
前端·docker·开源
Rudon滨海渔村5 小时前
免费开源的Web版windows画图软件 - 简单画画 - js Paint
开源·画图·ms·画画
mmsx5 小时前
MapLibre 实战 11|用户说"我的地块丢了":一个 sealed class 图层模型,和四个让我重构三版的坑
android·前端·开源
追涨杀跌老能手6 小时前
GD32H759 + RT-Thread 工控实战--第4篇 SDRAM,SDIO,以及触摸屏
开源·嵌入式
DolphinScheduler社区6 小时前
Apache DolphinScheduler 3.4.3 发布!权限安全与稳定性全面增强,调度补火即将上线
开源·agent·海豚调度·大数据工作流调度
FIT2CLOUD飞致云8 小时前
GPU监控支持华为昇腾设备,防火墙管理焕新,虚拟机管理下放至专业版,1Panel v2.3.0版本发布
运维·ai·开源·1panel·运维面板