给树莓派的SD卡续命

延长树莓派上SD卡的使用寿命

树莓派读写SD卡非常的频繁,所以比较担心会不会容易死掉。
在昨天我就尝试了从U盘启动树莓派,无奈我的U盘好像有点问题,况且是16G的,没有我的SD卡内存大,遂放弃了。
今天我要把SD卡swap关闭(建议别关),挂载一些常用的目录到tmpfs中。

Tmpfs

这个东西是GNU/Linux很酷的玩意,它会把文件写入到内存中,而不是本地磁盘(树莓派中的SD卡),使用起来也很简单,在/etc/fstab增加一个入口就可以了。然后重启之后每次都会把这些文件夹挂载到内存中,一定程度上减少了对SD卡的读写次数。

开始

1
$ sudo nano /etc/fstab

增加一行

1
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0

系统内核将会把/var/log挂载到内存中,然而在文件真正被写入到/var/log之前不会使用任何内存。当文件被写入到/var/log时,系统内核将会把它保存在内存里并且只占用用于保存文件的内存空间。当文件从/var/log中删除时,相对应的内存空间将被释放。

这意味着它只占用用于保存文件的内存空间,这是非常高效的。

重启之后我们看看挂载情况

1
df
1
2
3
4
5
6
7
8
9
10
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root 29773564 4196544 24308908 15% /
devtmpfs 469672 0 469672 0% /dev
tmpfs 474280 0 474280 0% /dev/shm
tmpfs 474280 6472 467808 2% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474280 0 474280 0% /sys/fs/cgroup
tmpfs 102400 196 102204 1% /var/log
/dev/mmcblk0p1 63503 21243 42260 34% /boot
tmpfs 94856 0 94856 0% /run/user/1000

可见,/var/log已经挂载到内存中了。并且每次重启,会自动清空(所以建议需要保存的玩意不要放在内存中)

再加入一些经常读写的目录到/etc/fstab中去

1
2
3
4
5
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=30m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0
tmpfs /var/run tmpfs defaults,noatime,nosuid,mode=0755,size=2m 0 0(这个不要挂载了,在新版中已经link到/run中了,默认挂载于tmpfs)
tmpfs /var/spool/mqueue tmpfs defaults,noatime,nosuid,mode=0700,gid=12,size=30m 0 0

这样就可以减少一些对SD卡频繁写入的操作了。

swap

Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。

交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。

这个玩意十分的伤SD卡,原因是SD卡素质不比硬盘,不能承受经常性的读写,所以在不是必要的情况下(物理内存不足)尽量不要开启。

关闭swap(别关了。。。关了开不了机。。血的教训)

1
2
$ sudo swapoff -a
$ sudo rm /var/swap

参考&鸣谢

树莓派实验室 element

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×