我并不是很想购买USB硬盘,但我知道SD卡不适合许多重复的读写操作。
当Raspberry Pi使用SD卡时,我可以采取任何措施来延长其寿命吗?
我并不是很想购买USB硬盘,但我知道SD卡不适合许多重复的读写操作。
当Raspberry Pi使用SD卡时,我可以采取任何措施来延长其寿命吗?
Answers:
这些方法应通过各种方式最大程度地减少读取/写入次数,从而延长SD卡的使用寿命:
交换是将部分SD卡用作易失性存储器的过程。这将增加可用的RAM数量,但会导致大量的读/写操作。不太可能显着提高性能。
使用以下swapoff
命令禁用交换:
sudo swapoff --all
您还必须防止重新启动后重新出现:
sudo apt-get remove dphys-swapfile
地将其永久删除。最好删除,因为CONF_SWAPSIZE
如本答案中所述将设置为0 似乎无效,并且在重新启动后仍会创建100MB交换文件。/etc/fstab
使用日志文件系统(例如ext3
或ext4
不带日志)是减少读取/写入的一种选择。在禁用日志功能的情况下使用文件系统的明显缺点是由于不当卸载而导致的数据丢失(例如,开机后掉电,内核锁定等)。
您可以ext3
通过将挂载为来禁用日记功能ext2
。
您可以ext4
像这样在未安装的驱动器上禁用日记功能:
tune4fs -O ^has_journal /dev/sdaX
e4fsck –f /dev/sdaX
sudo reboot
通过将noatime挂载标志添加到SD卡上的分区中,将其分配给该分区的选项部分/etc/fstab
。
读取对文件系统的访问将不再导致与文件关联的atime信息的更新。noatime设置的重要性在于,它消除了系统对简单读取的文件进行文件系统写入的需求。如前一节所述,由于写入可能会有些昂贵,因此可以带来可观的性能提升。请注意,在启用此选项的情况下,只要写入文件,写入文件的时间信息就会继续更新。
高度使用的目录(例如,/var/tmp/
并且可能/var/log
可以通过以下方式重定位到RAM)/etc/fstab
:
tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0
这将允许/var/tmp
使用50MB的RAM作为磁盘空间。这样做的唯一问题是,RAM中安装的所有驱动器在重启后都不会持续存在。因此,如果您挂载/var/log
并且系统遇到导致其重新引导的错误,则您将无法找到原因。
您还可以在永久性USB硬盘上装载某些目录。在此问题中可以找到更多详细信息。
Raspberry Pi也可以从外部驱动器引导其根分区。这可以通过USB或以太网进行,这意味着SD卡仅在引导期间用于委派给其他设备。这需要一些内核破解才能完成,因为我不认为默认内核支持USB存储。您可以在此问题或此外部博客文章中找到更多信息。
noatime
应该是默认值。
noatime
不是默认值,至少在Arch上不是。
noatime
引起问题,您也可以使用relatime
它来显着减少读取时的磁盘写入,而不是完全删除它们。
如果您的应用程序无法使用Jivings提供的选项,那么可以延长其寿命的另一种选择是使用比您需要的容量大得多的SD卡。
大多数体面的SD卡都使用损耗均衡算法来最大程度地减少每个块的写入次数,因此,如果SD卡大于您的需要,损耗会散布在更大的可用空间区域中。
损耗均衡如此重要的部分原因是,某些文件系统(例如FAT(许多SD卡的默认格式))会反复敲击相同的扇区。
有关此问题的更多信息,请参见问题的答案。SD / MMC卡是否确实与自己的控制器磨损成水平?在电子堆栈交换上,特别是这个答案。
这个答案的一个有趣的统计数据是
拿一张2GB的卡并一次又一次地写完,在该卡失效且不再可写之前,平均大约需要10TB。
但令人担忧的是
SD卡不会在数据损坏时通知您,即不会像PC硬盘那样返回I / O错误。
如果您需要保证可靠的存储,那么这可能会使文件系统的选择很重要。
最后一点:将SD卡的容量加倍可能会使其寿命延长一倍以上。
也就是说,如果您有2 GB的SD卡具有200 MB的可用空间,那么切换到4 GB的存储卡将为您提供11倍的可用空间,磨损均衡能力和使用寿命,而切换到16 GB的存储卡将为您提供71倍的可用空间空间。
MMC_ERASE
仅出于此目的,在MMC / SD标准中的某处定义了(可选)命令。尽管我尝试过所有SD卡,但实际上仅支持其中一种(Pi随附的SD卡)。
我唯一看到的是不交换SD卡。
交换SD卡可能会杀死您的SD卡。
如果需要更多的RAM,可以尝试使用zram,http: //raspberry.pi.gw.gd/t50-Using-ZRAM.html上有一篇文章,提供了有关在树莓派上使用ZRAM的一些详细信息
有关zram的更多信息,请访问http://en.wikipedia.org/wiki/ZRam
另外,最新的SD卡比旧的SD卡更坚固,购买全新的Class 10 SD卡可能是一个不错的选择,因为您希望它能长时间使用。
您可以尝试运行完全位于ram的Puppy Linux。它非常小巧,速度极快,因为它可以通过在启动时将存储映像(在您的情况下为SD卡上)复制到RAM中,然后定期将更改刷新回存储中来完全在内存中运行。此保存的频率由用户控制,包括手动控制。
Puppy将分层的aufs或更旧的unionfs文件系统与任何标准Linux文件系统(例如ext3或ext4)一起使用。它也可以驻留在FAT或NTFS分区上。
至少有几个专门为RPi设计的Puppy版本,其中一个由“ Puppy Master” Barry Kauler创建。
有关更多信息,请访问http://puppylinux.org/wikka/Puppi
大多数人在这里谈论他们的假设,而不是个人经验。
我一直将带有RasPBX的RaspberryPi用作具有8个扩展名和传真的公司总机。通过LinkSYS SPA3000,我们有3个基于IP的中继和一条固定电话。我最初的金士顿4 GB SD卡仅用了一个月就咬了灰尘。
我仍在尝试,没有备份。顺便说一句,Pi已连接到APC UPS。然后,我从头开始重新设置了整个RasPBX,但是这次我将/ var / log和/ var / lib / mysql移到了我们的公司NAS。3个月后,此SD仍然正常。
然后我们有一个非常炎热的夏天。在第三个月中,pi开始没有突然检测到以太网。然后有一天,我发现所有的LED都暗淡了,无法启动。
我用开箱即用的Pi取代了Pi。降温后,乱序开始工作,但是它工作起来很不稳定,并且当它启动到RasPBX时,视频模式不会切换到图形,而是停留在80 * 25文本格式。真的搞砸了。从那以后,我已经订购了一套散热器。现在,新版Pi可以使用它超过2个月的7/24。
因此,如果要在7/24环境中使用pi,请不要便宜-购买散热器,并避免在SD卡上使用/ var / log和其他繁忙目录。
我已经比较了所有使用utilitze TMPFS的解决方案,最好的答案是综合了脚本prepare-dirs(请参阅http://grenzdebiel.dyndns.org/wordpress/?p=98)和适当的/ etc / defaults / tmpfs( (请参阅http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/)。
要在树莓派上执行的必要步骤是:
1.编辑/etc/default/tmpfs
并设置:
RAMLOCK=yes
RAMSHM=yes
RAMTMP=yes
我建议以下尺寸:
TMPFS_SIZE=10%VM
RUN_SIZE=10M
LOCK_SIZE=5M
SHM_SIZE=10M
TMP_SIZE=25M
2.使用/ etc / fstab启用其他目录
tmpfs /var/log tmpfs size=20M,defaults,noatime,mode=0755 0 0
tmpfs /var/cache/apt/archives tmpfs size=100M,defaults,noexec,nosuid,nodev,mode=0755 0 0
tmpfs /var/spool/cups tmpfs size=100M,defaults,noatime,mode=0755 0 0
tmpfs /var/spool/cups/tmp tmpfs defaults,noatime,mode=0755 0 0
3.使用脚本/etc/init.d/prepare-dirs
在其中创建缺少的目录,/var/log
以便所有守护程序启动
最后查看其中包含的内容。
4.使脚本可执行chmod 755 /etc/initd/prepare-dirs
。
5.确保在启动守护程序之前先在启动时启动脚本:
update-rc.d prepare-dirs defaults 01 99
的内容/etc/init.d/prepare-dir
:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: prepare-dirs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create needed directories on /var/log/ for tmpfs at startup
# Description: Create needed directories on /var/log/ for tmpfs at startup
### END INIT INFO
# needed Dirs
DIR[0]=/var/log/lighttpd
DIR[1]=/var/log/cups
DIR[2]=/var/log/apt
DIR[3]=/var/log/ConsoleKit
DIR[4]=/var/log/fsck
DIR[5]=/var/log/news
DIR[6]=/var/log/ntpstats
DIR[7]=/var/log/samba
DIR[8]=/var/log/lastlog
DIR[9]=/var/log/exim
DIR[10]=/var/log/watchdog
case "${1:-''}" in
start)
typeset -i i=0 max=${#DIR[*]}
while (( i < max ))
do
mkdir ${DIR[$i]}
chmod 755 ${DIR[$i]}
i=i+1
done
# set rights
chown www-data.www-data ${DIR[0]}
;;
stop)
;;
restart)
;;
reload|force-reload)
;;
status)
;;
*)
echo "Usage: $SELF start"
exit 1
;;
esac
而已。
闪光灯耐力:
在大卡和正常磨损情况下,这纯粹是数学上的事情。如果您要日夜不停地写入8GB MLC型闪存卡,则大约需要30天才能将其杀死。
Techsnap上的第99集谈到了SSD的磨损,艾伦(Allen)解释了如何在日常使用中不可能磨损SSD,并且我们不必担心禁用交换,克隆和其他所有功能。现在就可以使用!智能磨损平衡功能可以处理所有问题。
金士顿(Kingston)所引用的正常穿着将使您在专业数码相机中拥有27年的使用寿命。
对于普通的数码单反相机,您可能每几个月将其装满一次。.取决于您旅行的时间。考虑到Pi,如果您尝试分配内存并经常刷新,则可能要付出更大的代价。通常,一旦您对发行版感到满意...几个月或几年后都不会重新刷新。因此,要延长SD的磨损,最好遵循一些建议,以减少SD上的IO。
闪存的价格下降了,技术也更好了。
大多数SD卡的寿命将超过两代或三代设备,到那时,它将被视为体积太小,使用速度太慢且无法提供更好,更便宜的升级版本!
如前所述,主要问题是文件和目录,在重新启动之间不值得保存,但是经常写入,例如,缓存文件,下载文件夹等。
Raspbian以及Debian和Ubuntu都有一个名为unburden-home-dir的软件包,其主要目的是将此类文件符号链接到一个问题较小的位置,例如tmpfs
,不易磨损的安装或外部硬盘。
它通常在登录时在X下运行,并以GUI应用程序的缓存文件为目标,但是也可以从脚本等中调用,并针对用户主目录中的任意文件进行配置。
它们基于iotop -bktoqqq
和iostat -dzp 5
。您应该首先运行这些命令以了解问题及其解决方案。
sudo systemctl disable dphys-swapfile
sudo rm /var/swap
使用noatime,commit=1800
选项将SD卡上的所有分区挂载,并使用以下条目将以下目录安装到RAM /etc/fstab/
:
/dev/mmcblk0p1 /boot vfat defaults,noatime,commit=1800 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime,commit=1800 0 1
tmpfs /tmp tmpfs size=50M,nodev,nosuid 0 0
tmpfs /var/tmp tmpfs size=10M,nodev,nosuid 0 0
tmpfs /var/cache/samba tmpfs size=5M,nodev,nosuid 0 0
提交将延迟写入并首先收集它们。
/var/tmp/log/
请参阅我的描述如何减少对日志文件的写入。
事实证明铬严重写和不能停止(见176727,52663)。这会影响缓存和用户数据目录。该铬/提示和技巧讲解如何可以移动到RAM中。由于Raspberry没有太多的RAM,建议的Tab Suspender对于节省RAM很有用。
限制高速缓存大小和编辑它移动到内存/etc/chromium-browser/customizations/00-rpi-vars
到
CHROMIUM_FLAGS="--disable-quic --enable-fast-unload --enable-tcp-fast-open --disk-cache-size=10000000 --media-cache-size=5000000"
现在,缓存已足够小,可以通过将XDG_CACHE_HOME
条目更改/etc/security/pam_env.conf
为
XDG_CACHE_HOME DEFAULT=/tmp/@{PAM_USER}/cache
现在,我的两个用户在RAM中有一个小的浏览器缓存。如果这还不足以根据需要更改缓存或/ tmp /大小。
此外,用户数据目录(.config/chromium/
)也会进行大量写入操作。Chromium / Tips和小技巧建议使用Profile-sync-daemon。它旨在管理tmpfs中浏览器的配置文件,并定期将其同步回物理磁盘。不幸的是,该软件包尚未成为Raspbian 8.0(Jessie)发行版的一部分。因此,我尚未对此进行测试。
通过卸载不需要的软件包和文件来释放空间。这样可以使磨损更加均匀地分布在各个分区上。
现在再次运行iotop -bktoqqq
,iostat -dzp 5
发现系统空闲时写入访问量显着减少。几分钟没有任何内容写入磁盘。不用担心绿色的ACT LED闪烁。显然,这不是一个好的写访问指示器。
通过将syslog输出流式传输到另一台服务器,可以仅略微减少写入周期。当然,具有syslogd
运行中的这样的服务器是前提条件。但是,由于Pi是Linux发烧友的玩具,所以这种情况很可能经常发生。:-)
要激活此流,只需插入如下语句
*.* @myserver.mydomain
在文件顶部的顶部/etc/rsyslog.conf
,注释掉所有其他行,然后通过发出来重新启动日志记录service rsyslog restart
。此后,消息应进入所选服务器。
一个明显的好处是,您可以轻松地与同一服务器上的其他计算机一起监视Pi。缺点之一是,在系统启动和关闭期间,如果尚未建立网络连接或已经关闭网络连接,则可能会丢失一些消息。
journald
并将它们存储在systemd日志中。它们还配置journald
为将日志转发到rsyslogd
正在监听的syslog套接字。会将邮件的其他副本放置在的日志文件中/var/log
。如果您习惯于journalctl
浏览日志(它的工作原理比/var/log
您一次熟悉的要好得多),则可以完全禁用rsyslog
并保存一些写操作。
注意:100,000个周期的限制是适用于每个计算设备的一个假设,即使是键盘上的键也是如此。
同样,这可能会增强我的上述观点。
除了用户Pi [default]之外,添加一个新用户。将新用户的主目录指向外部驱动器[thumb / hard drive]。向新用户授予超级用户权限,并开始将其用作您的主帐户。
我希望这有帮助..
/var/log
和/var/tmp
。同样,从经验 中获得证据表明适当的冷却会有所不同,这比说“我相信”要好得多。
使用busybox的syslog守护程序(在Raspbian / Debian / Ubuntu上的busybox-syslogd软件包中),而不是默认的syslog守护程序(通常是rsyslog)。默认情况下,在Raspbian / Debian / Ubuntu上,busybox的syslogd仅登录到内存中的环形缓冲区,而不登录到磁盘。默认情况下,环形缓冲区的大小为128kB,即旧的日志条目很快就会转出然后消失了。但是您可以配置它以使用更多的RAM。
但是,这是一个比根本没有syslog守护程序更好的解决方案,即您仍然可以登录并读取大约的日志条目。过去几个小时或几天(取决于环形缓冲区的配置大小)logread
。您还可以使用logread -f
获得tail -f
类似的行为,例如使用过滤器脚本只能存储感兴趣的日志条目,或者使用转发记录在网络上其他地方的项目,如stunnel
或这样的。
我做了几件事:
dphys-swapfile的chmod(在/ etc中的某个位置-目前不在PI附近):
sudo chmod a-x dphys-swapfile
我在启动时遇到小错误(无法启动dphys-swapfile服务)-假设有更好的方法... rc-update?
另外,我从相机模块捕获图像,最终将其放置在Web服务器(Pi)上。我将/ dev / ram0格式化为ext2,将其安装为/ media / ramdrive(我认为使用/etc/init.rc)。它的大小为4兆,足以一击。不写入SD。
服务器(oululife.dnsdynamic.com)是实验性的,但可以在Web上使用。为了真正强调这一点,我让它还播放了“ Heartbeat *”的MP4情节。它运行lighttpd,Mysql,PHP,WordPress,甚至当我远程通过网络流式传输时,它几乎也不会冒汗,平均负载约为0.2。根本没有超频。B型转速 2,上升24/7。因此,如果我可以将日志文件放入其他15个/ dev / ramX中,我认为我的Micro-SD 16G卡将使用几年。