延長樹莓派上SD卡的使用壽命


引用:http://shumeipai.nxez.com/2014/02/28/extend-the-life-of-raspberries-come-in-sd-card.html

在一個SD卡上運行GNU/Linux的最佳實踐

  1. 一張容量更大的卡   假設寫操作在卡上的各個地方都有可能進行,這樣越大的卡在同一區域多次書寫的概率越小。對於大多數的樹梅派GNU/Linux發行版來說,一張4GB的卡夠用了,但8GB或者16GB從這個角度來看更合適。讓我們把4GB提高到8GB,那么在同一區域進行寫操作的概率會減少一半。
  2. 堅持選個好牌子  已經有許多文章都提到要堅持選擇頂級品牌的SD卡。我沒有整理出一份品牌列表也沒有特別支持哪個品牌,但幸運的是已經有很多文章顯示了頂級品牌和它們的報廢率。
  3. 調整GNU/Linux寫入到內存而不是SD卡上  這使用了一個叫“tmpfs”的功能,它是GNU/Linux提供的一個非常酷的玩意。Tmpfs能夠像寫入一個正常的文件系統一樣讓寫操作寫入內存中。它快捷,高效並且易於使用。下面會詳細介紹。
  4. SD卡設置為只讀模式  這實際上把GNU/Linux變成了一個只讀模式,類似於你從Live CD啟動的GNU/Linux。這樣阻止了任何的寫操作從理論上來講延長了SD卡的壽命。但這也有許多缺陷。首先,你得在配置上花點功夫,這已經超出了本文的范圍。其次,所有的改動會在系統重啟后消失因為它們沒有寫入SD卡里。對於我來說,GNU/Linux運行在只讀模式實在是要命所以我不推薦這么極端的做法。

使用Tmpfs

如我前面所說,tmpfs會寫入到內存中而不是本地磁盤(樹梅派上實際是SD卡)。使用它非常簡單。你要做的只是增加一個到/etc/fstab文件的入口(掛載你想寫入到內存的文件夾到內存里)並且重啟(這樣每次服務開始寫文件之前都會把這些文件夾先掛載到內存里)。

剩下的事情系統內核會替你搞定,把寫操作寫入到內存里的虛擬文件系統。這還有個巧妙之處,系統內核只會使用寫操作所需數量的內存而不是整個掛載的大小。讓我們舉個例子,我想要把下面這一行加入到/etc/fstab文件中:

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

系統內核將會把/var/log掛載到內存中,然而在文件真正被寫入到/var/log之前不會使用任何內存。當文件被寫入到/var/log時,系統內核將會把它保存在內存里並且只占用用於保存文件的內存空間。當文件從/var/log中刪除時,相對應的內存空間將被釋放。

這意味着它只占用用於保存文件的內存空間,這是非常高效的。

在/etc/fstab中,你也可以為每個掛載指定內存配額。在上面的例子里,我們設置的是”size=100m”所以/var/log最多使用100m的內存空間。這是為了防止一個文件系統占用了全部內存以至於系統速度變慢甚至崩潰。通過運行”mount”命令,我們可以看到在上面的例子里/var/log被掛載為一個tmpfs在內存里的卷,大小是100MB。

1
2
Filesystem Size Used Avail Use% Mounted on
tmpfs 100M 596K 100M 1% /var/log

在GNU/Linux里有許多可能會頻繁寫入到地方。下面是一個我初步整理的應該可以適用於大多數發行版的列表。

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
tmpfs /var/spool/mqueue tmpfs defaults,noatime,nosuid,mode=0700,gid=12,size=30m 0 0

你看我使用了”size=”參數來避免試圖保存大量的數據時占用大量內存的問題。出於安全和性能方面的考慮,”noatime”和”nosuid”參數也推薦設置,”mode=”和”gid=”對應的權限和用戶組要與原來存在於SD卡上的文件系統保持一致。

恩,tmpfs也可以進行權限控制。通常情況下,所有在/etc/fstab下掛載的文件和標准的Unix/Linux文件沒什么區別。所以即使因為一些原因掛載失效了,寫操作也會成功寫入到SD卡上。

需要記住的一點是所有掛載到tmpfs的文件將會在重啟時丟失。所以上面的例子里/var/log文件會在關機時或重啟時清空。所以不要把tmpfs用於那些你需要在重啟后依然存在的文件。

我正在積極的使用這些設置,到目前為止結果還不錯。時間會告訴我們這對於樹莓派和/或者SD卡的壽命延續有何作用,但是現在已經有很多文章說能夠正常運行很久,因為我們知道GNU/Linux不像其他操作系統一樣需要頻繁重啟。上面的方法希望可以延長使用壽命,特別是你打算一年365天,每周7×24小時的開着樹莓派。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM