移动介质上的Linux:使用 tmpfs、关闭 atime 以延长 SD 卡或优盘的使用寿命
我有一台老旧的 Asus C100P Chromebook,Google早在几年前就停止了对它的支持。它是32位ARM CPU,因此我没法替它更换BIOS,但我可以在developer mode下启用优盘启动,这样我就能够在优盘或者sd卡运行Linux。
然而,在使用 SD 卡或其他闪存设备作为操作系统存储时,合理管理写入操作至关重要。本文将介绍如何通过使用 tmpfs 文件系统、关闭 atime 来延长设备的使用寿命。
1. 使用 tmpfs
什么是 tmpfs?
tmpfs 是一种基于内存的临时文件系统,具有以下优点:
- 高速存储: 数据存储在内存中,读写速度极快。
- 动态大小: 根据实际使用情况动态分配内存,不会固定占用资源。
- 减少写入: 适合存储临时文件和日志,显著减少对闪存的写入操作。
如何配置 tmpfs
1.1 编辑 /etc/fstab 文件
打开终端并输入:
sudo nano /etc/fstab
添加以下行以创建 tmpfs 挂载点:
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
1.2 挂载 tmpfs
保存文件后,运行以下命令使更改生效:
sudo mount -a
1.3 验证挂载
使用以下命令确认 tmpfs 是否成功挂载:
df -h
您应该能看到类似于 /tmp
和 /var/log
的 tmpfs 挂载点。
1.4 设置自动复制日志到 tmpfs
为了在系统启动时自动将日志复制到 tmpfs,我们需要修改 /etc/rc.local 文件:
a. 创建一个目录来存储持久化的日志:
sudo mkdir -p /var/log.hdd
sudo cp -a /var/log/* /var/log.hdd/
b. 编辑 /etc/rc.local 文件:
sudo nano /etc/rc.local
c. 在文件中添加以下内容:
#!/bin/sh -e
# 复制日志文件到 tmpfs
cp -a /var/log.hdd/* /var/log/
exit 0
d. 确保 rc.local 文件具有执行权限:
sudo chmod +x /etc/rc.local
2. 关闭 atime
atime (访问时间) 是文件系统的一个属性,每次访问文件时都会更新。关闭 atime 可以减少不必要的写入操作,从而延长 SD 卡的寿命。
如何关闭 atime
2.1 编辑 /etc/fstab 文件
打开 /etc/fstab 文件:
sudo nano /etc/fstab
2.2 修改挂载选项
找到 SD 卡对应的挂载项(通常是根分区 /),在挂载选项中添加 noatime
:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,noatime 0 1
2.3 重新挂载文件系统
保存文件后,使用以下命令重新挂载文件系统:
sudo mount -o remount /
请记住,虽然这些方法可以有效延长 SD 卡的使用寿命,但仍然建议定期备份重要数据,以防意外发生。毕竟备份不做,十恶不赦!
又:
mode=1777
中的 1 表示设置了"粘滞位"(sticky bit)。具体含义如下:
-
777 部分:
- 7: 所有者(owner)有读、写、执行权限
- 7: 用户组(group)有读、写、执行权限
- 7: 其他用户(others)有读、写、执行权限
-
前面的 1:
- 表示设置了粘滞位(sticky bit)
粘滞位的作用:
- 对于目录,当设置了粘滞位时,只有文件的所有者、目录的所有者或 root 用户才能删除或重命名该目录中的文件。
- 这通常用于像 /tmp 这样的公共目录,允许所有用户创建文件,但防止用户删除或修改其他用户的文件。
所以 mode=1777 的含义是:
- 所有用户都可以在该目录中创建、读取和执行文件(777)
- 但只有文件所有者和目录所有者可以删除或重命名文件(1)
这种权限设置既保证了目录的共享性,又提供了一定的安全保护,防止用户互相干扰。