美文网首页
OpenWRT 挂载 F2FS 延长SD卡寿命

OpenWRT 挂载 F2FS 延长SD卡寿命

作者: Bruce钟 | 来源:发表于2021-07-14 00:59 被阅读0次

问题描述

在家使用树莓派安装OpenWRT系统做单臂路由,同时还做了下载服务器(下载的数据放在外挂硬盘中),7x24小时运行,结果大约用了2-3个月就挂了。几轮测试下来,我认为估计是SD卡挂了。

然后决定重新搭建服务,不过这次要吸取教训,要注意保护SD卡了。

解决过程

网上查了一下,常见的解决方法是使用tmpfs的内存盘挂载到系统经常会写的地方, 如 /var/tmp、/var/log 等地方,缺点是log会丢。
后来深入了解查询之后,了解到LFS类文件系统,以及对SD卡会很友好的f2fs文件系统。 于是决定将 /var 整个挂载为f2fs文件系统。

参考:延长SD卡寿命
参考:LFS文件系统

决定挂载新的文件系统后,发现OpenWRT的挂载系统跟常规Linux相差太大,完全不是改fstab能搞定的,修改 /etc/config/fstab 也搞不定(uci 也是修改这个文件),估计原因是 /var 以及投入使用之后 再读取的 /etc/config/fstab,导致挂载失败(没有去确认log,懒得确认了)。

查看 /etc/config/fstab 能发现一个问题,就是 / /boot /tmp 等挂载的文件系统,却不在这个文件里面,完全不明白怎么挂载进去的。

后来去找了 OpenWRT Boot Sequence , 梳理了一下这个完全不同的boot流程,最后找到一个觉得最恰当方法,添加文件 /lib/preinit/77_mount_var, 内容如下:

$ cat /lib/preinit/77_mount_var
# Copyright (C) 2015 OpenWrt.org

mount_var_fs() {
    mount -t f2fs -o noatime /dev/mmcblk0p5 /var
}

boot_hook_add preinit_mount_root mount_var_fs

参考 80_mount_root 的内容可知, 这个函数会在root文件系统mount之后就执行,应该没有问题。

在重启之前,或者添加上面的preinit脚本之前,就得把对应的分区准备好,把/var的内容copy过去,copy的时候注意保持文件目录的权限不变(可以使用cp -a)。

reboot重启之后,系统顺利启动了,查看mount的情况,也符合预期。(之前测试各种修改fstab的方案都启动不起来 -_- )

结果确认

reboot 重启运行一段之间之后,查看磁盘IO:

$ iostat -p                    
Linux 5.4.128 (OpenWrt)     07/14/21    _aarch64_   (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.39    0.07    0.49    0.10    0.00   98.96

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
mmcblk0           3.15        80.08         8.71         5.39     214698      23352      14440
mmcblk0p1         0.03         0.41         0.00         0.00       1098          0          0
mmcblk0p2         1.92        71.58         0.56         0.00     191919       1496          0
mmcblk0p3         0.02         0.02         0.00         0.00         66          0          0
mmcblk0p5         1.16         7.74         8.15         5.39      20745      21856      14440

可以看到90+%的写操作都转移了, mmcblk0p5分配了16GB容量,根据f2fs文件系统特性,应该不用愁了,且看能用多久把。

相关文章

  • OpenWRT 挂载 F2FS 延长SD卡寿命

    问题描述 在家使用树莓派安装OpenWRT系统做单臂路由,同时还做了下载服务器(下载的数据放在外挂硬盘中),7x2...

  • Android文件File

    一、SD的使用SD卡文件权限 sdk卡的读写权限 二、SD的使用SD卡挂载状态判断 三、SD的使用SD卡根目录文件...

  • SD卡挂载

    使用fdisk -l查看SD卡的驱动设备文件,如 这里的/dev/mmcblk0p1就是我们要找的信息,使用命令 ...

  • SD卡工具类↙↙↙

    // 判断SD卡是否被挂载 public static boolean isSDCardMounted() { /...

  • SD存储(外部存储)

    mnt/sdcard 目录就是SD卡的挂载点(只是一个指向)storage/sdcard: 真正的SD卡操作目录 ...

  • SD驱动

    SD卡 挂载分析Framework MMC, SDIO, SD Linux-2.6.30.4在2440上的移植之M...

  • SD卡寿命测试

    使用方法 选Target的时候,不要只选盘符,在Win10下会提示无法删除Volume什么哪个文件夹,在SD上建一...

  • 树莓派变路由器总结记录2

    扩展sd卡空间 sd卡的空间是16G,但是刷完openwrt之后发现有俩个盘符,共不到300m其他的都哪里去了?图...

  • Android 获取外置存储卡,检查是否挂载

    获取所有存储点: 根据路径来判断具体sd卡是否挂载: 测试用例:

  • Android-->检测内置/外置SD卡存储卡,枚举所有挂

    直接上重点: 1:获取内置SD卡的路径, 但是判断是否有效(是否挂载), 需要用到下面检测挂载点的方法 2:枚举系...

网友评论

      本文标题:OpenWRT 挂载 F2FS 延长SD卡寿命

      本文链接:https://www.haomeiwen.com/subject/ohpepltx.html