延长树莓派上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 | Filesystem 1K-blocks Used Available Use% Mounted on |
可见,/var/log
已经挂载到内存中了。并且每次重启,会自动清空(所以建议需要保存的玩意不要放在内存中)
再加入一些经常读写的目录到/etc/fstab中去
1 | tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0 |
这样就可以减少一些对SD卡频繁写入的操作了。
swap
Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。
这个玩意十分的伤SD卡,原因是SD卡素质不比硬盘,不能承受经常性的读写,所以在不是必要的情况下(物理内存不足)尽量不要开启。
关闭swap(别关了。。。关了开不了机。。血的教训)
1 | $ sudo swapoff -a |