Raspberry Pi树莓派系统盘TF卡可靠性优化方案.docx
《Raspberry Pi树莓派系统盘TF卡可靠性优化方案.docx》由会员分享,可在线阅读,更多相关《Raspberry Pi树莓派系统盘TF卡可靠性优化方案.docx(15页珍藏版)》请在冰点文库上搜索。
RaspberryPi树莓派系统盘TF卡可靠性优化方案
1树莓派系统盘(TF卡)可靠性优化方案
1.1优化方案
树莓派操作系统镜像一般采用TF卡来进行安装,一张未经过优化的TF卡搭载操作系统经实践应用证明,出现故障的概率是比较高的,出现的故障的类型主要包括:
1、系统无法启动或启动过程中断,原因是系统镜像文件损坏,特别是Boot区文件损坏,遇到这种情况只要把系统镜像重新烧写即可恢复,说明TF卡硬件本身没有问题,这种故障类型占绝大部分。
2、TF卡无法识别,原因是TF出现了物理损坏,即使使用电脑接入也无法正常识别,说明TF卡硬件本身出现了故障,难以修复,所幸的是这种故障类型出现的概率比较低。
3、系统部分功能命令失效,比如无法正常调用sudo命令、无法正常重启等,原因是系统部分程序文件或配置文件出现损坏,所幸这种故障不是系统级的,出现概率也比较低,可以修复。
TF卡承载着操作系统以及数据文件的存储的重要使命,因此TF卡的稳定可靠是树莓派系统质量的重要指标之一,为了有效提高TF卡的稳定可靠性,本文档提出了一套完善的系统分区和文件存储优化方案,详细说明如下:
分区的基本思路是把TF卡按功能划分多个分区,将Boot分区以及Root分区设置为只读设置成只读,只保留应用分区以及数据分区的写权限,尽可能地减少对TF卡的写操作,以此来提高TF卡的使用寿命,达到提高可靠性的目的。
本方案把TF卡分成4个功能分区,分别为:
Boot分区:
系统启动分区,设置为只读分区
Root分区:
系统分区,设置为只读分区;
sysdata分区:
可写系统文件分区,存储需要写操作的系统文件分区,设置为可读写;
usrdata分区:
应用服务分区,存储所有应用程序、用户文件分区,设置为可读写。
1.2分区优化
1.2.1分区制作过程
1、执行命令:
sudocfdisk/dev/mmcblk0
2、移动光标到最下面的标志为FreeSpace的分区,按回车键选中,此时选中的分区高亮(白底黒字)。
3、移动光标,选定底下的New命令然后按回车键,开始创建sysdata分区
4、接下去会提示你输入要创建的新分区大小。
默认会将所有剩余空间用于创建新分区,这里将sysdata分区设为1G
5、接下去将提示你选择创建主分区还是逻辑分区。
默认选择主分区,按回车键接受默认选择。
5、同样的方法将剩下的所有空闲磁盘空间划分为usrdata分区,如下图所示
6、然后,移动光标到Write菜单按回车键选择从而写入分区表。
7、此时将提示你是否确定要改变分区,输入yes并按回车键。
8、移动光标到Quit菜单按回车键退出cfdisk程序。
9、执行命令:
sudofdisk-l查看分区情况:
10、执行命令:
sudoreboot重启系统
11、重启后执行命令:
sudomkfs.ext4/dev/mmcblk0p3格式化分区
sudomkfs.ext4/dev/mmcblk0p4格式化分区
1.2.2挂载新建分区
完成TF卡分区后,需要将分区进行挂载才能正常使用,本文档定制的系统镜像把sysdata分区挂载在/home/sysdata目录下,usrdata分区挂载在/home/usrdata目录下,挂载方法如下。
1、在/home目录下分别创建挂载目录/home/sysdata、/home/usrdata
2、执行命令:
sudovi/etc/fstab
3、在/etc/fstab文件中增加分区挂载
/dev/mmcblk0p3/home/sysdataext4defaults02
/dev/mmcblk0p4/home/usrdataext4defaults02
4、重启系统,执行df命令查看分区挂载情况
1.2.3交换分区优化
Swap交换分区是磁盘上的一个特殊用途的分区,当系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
分配太多的Swap空间,会浪费磁盘空间,而Swap空间太少,则系统会发生错误。
一般在内存小于2G的情况下,交换分区应为内存的2倍。
对于树莓派来说,可以设置为2GB。
当然也需要考虑microSD卡容量和使用情况。
树莓派系统默认的Swap交换分区大小为100MB,如下图所示。
一般在内存小于2G的情况下,交换分区应为内存的2倍。
修改/etc/dphys-swapfile配置文件中的以下内容:
CONF_SWAPSIZE=1000的值修改成你想要的大小,为了不过多占用TF卡的空间,这里设置成1000M。
CONF_SWAPFILE=/home/usrdata/sysdata/var/swapswap文件保存路径修改成/home/usrdata/sysdata/var/swap
注意:
更改swap文件路径时,请先把/var/swap文件复制到/home/sysdata/var/swap,再更改/etc/dphys-swapfile配置文件中的CONF_SWAPFILE=/home/sysdata/var/swap,否则有可能出现更改失败的现象。
然后,重新启动dphys-swapfile文件服务或重启系统:
sudo/etc/init.d/dphys-swapfilerestart
最后查看大小:
$ free-h
1.3存储优化
1.3.1系统日志文件存储优化
1.3.1.1更改日志存储路径
由于Root分区在使用过程中需要设置为只读,但系统日志文件是保存在Root分区的/var/log目录下并且会动态更新,因此需要将/var/log转移到usrdata分区下,具体操作如下:
1、执行以下命令创建log存储目录
sudomkdir/home/usrdata/sysdata
sudomkdir/home/usrdata/sysdata/var
2、复制原/var/log目录到/home/usrdata/sysdata/var目录下
sudocp/var/log-R/home/usrdata/sysdata/var
3、删除原/var/log目录,并创建新的日志目录链接
sudorm/var/log-R
sudoln-s/home/usrdata/sysdata/var/var/log
1.3.1.2更改日志存储方式
由于系统在运行过程中会产出在大量的系统日志,这些操作需要对TF卡进行大量的写操作,而这些文件是非核心的信息,因此可以根据需要将系统日志统一设置为写到内存中,以此减少对TF卡的写操作,增加TF卡的寿命,具体优化过程如下:
1、编辑/etc/fstab配置文件
sudovi/etc/fstab
增加以下行所示的配置:
tmpfs/var/logtmpfsdefaults,noatime,nosuid,mode=0755,size=100m00
2、完成修改后,保存配置,重启系统即可。
3、重启后,运行df命令查看状态,如下图所示。
补充说明:
/var/log目录为系统的默认日志目录,使用以上设置为tmpfs模式带来的缺陷是系统在重启后该目录下的所有文件将丢失。
1.3.1.3更改系统日志的保存时间
系统在运行过程中会产出在大量的系统以及应用程序日志,可以通过修改系统日志保存时间长度相关参数,以达到减少数据存储量的目标。
1、执行vim/etc/logrotate.conf,修改如下图所示的参数,指定回溯时间。
2、执行vim/etc/logrotate.d/rsyslog,修改如下图所示的参数,指定回溯时间。
1.3.2系统临时文件存储优化
同样,系统在使用过程中可能会产出大量的临时文件,而这些临时文件是非核心的信息,因此可以根据需要将系统临时文件统一设置为写到内存中,以此减少对TF卡的写操作,增加TF卡的寿命,具体优化过程如下:
1、编辑/etc/fstab配置文件
sudovi/etc/fstab
增加以下行所示的配置:
tmpfs/tmptmpfsdefaults,noatime,nosuid,size=100m00
tmpfs/var/tmptmpfsdefaults,noatime,nosuid,size=30m00
2、完成修改后,保存配置,重启系统即可。
3、重启后,运行df命令查看状态,如下图所示。
补充说明:
使用以上设置为tmpfs模式带来的缺陷是系统在重启后该目录下的所有文件将丢失。
1.3.3pi用户目录存储优化调整
pi用户的用户根目录默认为/home/pi目录,它存放在Root分区,由于Root分区在使用过程中需要设置成只读,因此本文档定制的镜像把pi用户目录迁移到usrdata分区,并增加原目录链接,这样就可以确保Root分区在只读的情况下也能对pi用户目录进行写操作。
1、迁移home/pi目录到/home/usrdata目录下
sudomv/home/pi/home/usrdata
2、增加原目录链接
sudoln-s/home/usrdata/pi/home/pi
1.3.4var目录存储优化调整
pi用户的用户根目录默认为/home/pi目录,它存放在Root分区,由于Root分区在使用过程中需要设置成只读,因此本文档定制的镜像把pi用户目录迁移到usrdata分区,并增加原目录链接,这样就可以确保Root分区在只读的情况下也能对pi用户目录进行写操作。
1.3.5网络配置文件dhcpcd.conf优化调整
1.4只读设置
1.4.1Boot分区只读配置
Boot启动分区用于引导系统的启动运行,这个分区除了几个主要的配置文件(如config.txt、cmdline.txt)可能需要编辑以后,其它文件基本都只需要读操作,所以Boot启动分区应该也可以设置为只读模式,以此来保护Boot启动分区的文件不被损坏。
特别提醒:
实践证明,把Boot启动分区设置为只读模式对于TF卡的保护起到关臽性的作用,一定要进行优化。
设置方法如下:
一、编辑/etc/fstab配置文件
sudovi/etc/fstab
找到以下行,按以下配置修改:
二、完成修改后,保存配置,重启系统即可。
补充说明:
Boot启动分区设置为只读模式后,此分区里的文件将不能进行编辑,如果需要编辑,需要把只读设置取消。
1.4.2Root分区只读配置
本方案的优化目标是将Boot分区以及Root分区设置成只读,尽最大的可能减少对TF卡的读操作,以此来提高TF卡的使用寿命以及稳定可靠性。
本方案在经过上面的分区优化以及存储优化后,基本已经具体对Root分区设置为只读的条件了,Root分区设置成只读的方法类同Boot分区设置方法,设置方法如下:
一、编辑/etc/fstab配置文件
sudovi/etc/fstab
找到以下行,按以下配置修改:
二、完成修改后,保存配置,重启系统即可。
补充说明:
Root启动分区设置为只读模式后,此分区里的文件将不能进行编辑,如果需要编辑,需要把只读设置取消。