我並不是很想購買USB硬盤,但是我知道SD卡不適合許多重複的讀寫操作。
我可以採取任何措施可以延長Raspberry Pi使用SD卡的壽命嗎?
我並不是很想購買USB硬盤,但是我知道SD卡不適合許多重複的讀寫操作。
我可以採取任何措施可以延長Raspberry Pi使用SD卡的壽命嗎?
這些方法應通過以各種方式最大程度地減少讀寫次數來延長SD卡的使用壽命:
交換是使用部分SD卡的過程。 SD卡作為易失性存儲器。這將增加可用的RAM數量,但會導致大量的讀/寫操作。不可能顯著提高性能。
使用 swapoff
命令禁用交換:
sudo swapoff --all
還必須防止重新啟動後重新出現:
sudo apt-get remove dphys-swapfile
即可將其永久刪除。最好刪除,因為將 CONF_SWAPSIZE
設置為0(如此答案所述)似乎無效,並且在重新啟動後仍會創建100MB的交換文件。 / etc / fstab
不使用日誌而使用諸如 ext3
或 ext4
之類的日誌文件系統是減少讀寫的一種選擇。使用禁用日記功能的文件系統的明顯缺點是由於不當卸除而導致數據丟失(即,斷電後,內核鎖定等)。
您可以通過將其安裝為 ext2
來禁用 ext3
上的日記。
您可以禁用 ext4
在這樣的未安裝驅動器上:
tune4fs -O ^ has_journal / dev / sdaXe4fsck –f / dev / sdaXsudo重新啟動
通過將noatime掛載標誌添加到 / etc / fstab
中分區的選項部分,將其分配給SD卡上的分區。
讀取對文件系統的訪問將不再導致與文件關聯的atime信息的更新。 noatime設置的重要性在於,它消除了系統對簡單讀取的文件進行文件系統寫入的需求。如前一節所述,由於寫入可能會有些昂貴,因此可以帶來可觀的性能提升。請注意,只要啟用此選項,只要寫入文件,寫入文件的時間信息就會繼續更新。
因為 / var / tmp /
以及可能的 / var / log
可以這樣重定位到 / etc / fstab
中的RAM:
tmpfs / var / tmp tmpfs nodev,nosuid,size = 50M 0 0
這將允許 / var / tmp
使用50MB的RAM作為磁盤空間。這樣做的唯一問題是,RAM中安裝的所有驅動器在重啟後都不會持續存在。因此,如果您掛載 / var / log
並且系統遇到導致其重新啟動的錯誤,則您將無法找到原因。
您還可以在永久性USB硬盤上裝載某些目錄。有關更多詳細信息,請參見此問題。
Raspberry Pi也可以從外部驅動器引導其根分區。這可以通過USB或以太網進行,這意味著SD卡僅在引導過程中用於委派給其他設備。這需要一些內核破解才能完成,因為我認為默認內核不支持USB存儲。您可以在此問題或此外部博客文章中找到更多信息。
如果您的應用程序無法使用 Jivings提供的選項,那麼大大延長其壽命的另一種選擇是使用 。
大多數體面的SD卡都使用耗損均衡算法來最大程度地減少每次使用的次數塊被寫入,因此,如果SD卡的大小超出了您的需要,則損耗可能會散佈在更大的可用空間區域。
損耗均衡如此重要的部分原因是某些文件系統(例如 FAT(許多SD卡的默認格式))反复敲擊相同的扇區。
有關此問題的更多信息,請參見問題的答案 SD / MMC卡是否確實通過其自己的控制器磨損了水準?在電子堆棧上交換,尤其是此答案。
此答案的一個有趣的統計數據是
一張2GB的卡,一次又一次地寫完,一次平均要重複10 TB,然後該卡才失效,不再可寫。
但是令人擔憂的是,
SD卡不會在數據損壞時通知您,即不會像PC硬盤一樣返回I / O錯誤。
這可能會使您選擇文件系統很重要如果需要保證可靠的存儲。
最後一點:將SD卡的容量加倍可能會使其壽命延長兩倍以上。
即如果您有2 GB的SD卡具有200 MB的可用空間,那麼切換到4 GB的存儲卡將為您提供11倍的可用空間,磨損均衡能力和使用壽命,而切換到16 GB的存儲卡將為您提供71倍的可用空間
我唯一看到的是不交換SD卡。
交換SD卡可能會殺死SD卡。
如果需要更多RAM ,您可以嘗試使用zram, http://raspberry.pi.gw.gd/t50-Using-ZRAM.html上有一篇文章,提供了在樹莓派上使用ZRAM的一些詳細信息
有關zram的更多信息,請參見 http://en.wikipedia.org/wiki/ZRam
此外,最新的SD卡也更加可靠與舊的相比,購買全新的Class 10 SD卡可能是一個不錯的選擇,因為您想長時間使用它。
這裡的大多數人都在談論他們的假設,而不是個人經驗。
我一直將帶有RasPBX的RaspberryPi用作帶有8個分機和傳真的公司總機。通過LinkSYS SPA3000,我們有3個基於IP的中繼和一條固定電話。我最初的金士頓4 GB SD卡僅用了一個月就咬了灰塵。
我仍在進行實驗,沒有備份。順便說一句,Pi已連接到APC UPS。然後,我從頭開始重新設置了整個RasPBX,但是這次我將/ var / log和/ var / lib / mysql移到了我們的公司NAS。這個SD在3個月後還是可以的。
那我們夏天很熱。在第三個月中,pi開始沒有突然檢測到以太網。然後有一天,我發現所有的LED都暗淡了,無法啟動。
我用現成的全新Pi替換了Pi。降溫後,混亂的機器開始工作,但是工作起來很不穩定,當它啟動到RasPBX時,視頻模式將不會切換到圖形,而是停留在80 * 25的文本格式。真的搞砸了。從那以後,我訂購了一套散熱器。新的Pi可以在7/24上使用超過2個月。
因此,如果您要在7/24的環境中使用pi,請不要便宜-購買散熱器並避免使用/ var / log和SD卡上的其他繁忙目錄。
您可以嘗試運行完全位於ram的Puppy Linux。它非常小巧,速度極快,因為它可以通過在啟動時將存儲映像(在您的情況下為SD卡上)複製到RAM中,然後定期將更改刷新回存儲中來完全在內存中運行。保存的頻率由用戶控制,包括手動控制。
Puppy使用分層的aufs或更舊的unionfs文件系統以及任何標準Linux文件系統(例如ext3或ext4)。它也可以駐留在FAT或NTFS分區上。
至少有幾個專門為RPi設計的Puppy版本,其中一個由“ Puppy Master” Barry Kauler創建。
p>
有關更多信息,請訪問 http://wikka.puppylinux.com/Puppi
我已經比較了所有使用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/)。
要在raspbian上執行的必要步驟是:
1。編輯 / etc / default / tmpfs
並設置:
RAMLOCK = yesRAMSHM = yesRAMTMP = yes
我建議以下大小:
TMPFS_SIZE = 10%VMRUN_SIZE = 10MLOCK_SIZE = 5MSHM_SIZE = 10MTMP_SIZE = 25M
2。使用/ etc / fstab tmpfs / var啟用其他目錄/ log tmpfs大小= 20M,默認值,noatime,模式= 0755 0 0 tmpfs / var / cache / apt / archives tmpfs大小= 100M,默認值,noexec,nosuid,nodev,mode = 0755 0 0 tmpfs / var / spool / cups tmpfs大小= 100M,默認值,noatime,模式= 0755 0 0tmpfs / var / spool / cups / tmp tmpfs默認值,noatime,模式= 07 55 0 0
3。使用腳本 /etc/init.d/prepare-dirs
在 / var / log
中創建缺少的目錄,以便所有守護程序啟動
最後查看我的情況。
4。使腳本可執行 chmod 755/etc/initd/prepare-dirs
。
5.。確保腳本在啟動守護程序之前先在啟動時啟動: update-rc.d prepare-dirs默認值為01 99
的內容/etc/init.d/prepare-dir
:
#!/bin/bash#### BEGIN INIT INFO#提供:prepare-dirs#默認開始:2 3 4 5#默認-停止:0 1 6#必需-開始:#必需-停止:#簡短描述:在啟動時為tmpfs在/ var / log /上創建所需的目錄#描述:在/ var / log上創建所需的目錄/用於啟動時的tmpfs ### END INIT INFO#需要DirsDIR [0] = / var / log / lighttpdDIR [1] = / var / log / cupsDIR [2] = / var / log / aptDIR [3] = / var / log / ConsoleKit
DIR [4] = / var / log / fsckDIR [5] = / var / log / newsDIR [6] = / var / log / ntpstatsDIR [7] = / var / log / sambaDIR [8] = / var / log / lastlogDIR [9] = / var / log / eximDIR [10] = / var / log / watchdogcase“ $ {1:-”}“ in start)排版-ii = 0 max = $ {#DIR [*]}而(((i < max))do mkdir $ {DIR [$ i]} chmod 755 $ {DIR [$ i]} i = i + 1完成#設置權限chown www-data.www-data $ {DIR [0] } ;;停) ;;重新開始) ;; reload | force-reload);;狀態) ;; *)echo“用法:$ SELF start”退出1 ;; esac
就是這樣。
禁用交換文件:
sudo dphys-swapfile swapoff
沒有必要卸載,但是如果您不使用它,並且確實想要空間,您可以安全地將其刪除。刪除的替代命令:
sudo dphys-swapfile卸載
用法:/ sbin / dphys-swapfile {setup | swapon | swapoff | uninstall} >
它們基於 iotop -bktoqqq
和 iostat -dzp 5
。您應該先運行以下命令來了解問題及其解決方案。
sudo systemctl禁用dphys-swapfilesudo rm / var / swap
通過 noatime,commit = 1800
選項掛載SD卡上的所有分區,並使用 / etc / fstab /
:
/ dev / mmcblk0p1 / boot vfat默認值,noatime,commit = 1800 0 2 / dev / mmcblk0p2 / ext4默認值,noatime,commit = 1800 0 1tmpfs / tmp tmpfs大小= 50M,nodev,nosuid 0 0tmpfs / var / tmp tmpfs大小= 10M,nodev,nosuid 0 0tmpfs / var / cache / samba tmpfs大小= 5M,nodev,nosuid 0 0
提交會延遲寫入並首先收集它們。
/ var / tmp / log /
請參閱我的說明如何減少對日誌文件的寫入。 p>
事實證明,Chromium寫入過多,無法停止(請參閱 176727, 52663)。這會影響緩存和用戶數據目錄。 Chromium / Tips和小技巧解釋瞭如何將其移動到RAM。由於Raspberry沒有太多的RAM,建議使用 Tab Suspender來節省RAM。
限制緩存大小並移動它通過將 / etc / chromium-browser / customizations / 00-rpi-vars
編輯為
CHROMIUM_FLAGS =“-disable-quic --enable-fast-卸載--enable-tcp-fast-open --disk-cache-size = 10000000 --media-cache-size = 5000000“
現在,通過將 /etc/security/pam_env.conf
中的 XDG_CACHE_HOME
條目更改為
XDG_CACHE_HOME DEFAULT = / tmp / @ {PAM_USER} / cache
現在,我的兩個用戶在RAM中的瀏覽器緩存很小。如果這不足以根據需要更改高速緩存或/ tmp /大小。
還包括用戶數據目錄( .config / chromium /
)會寫很多東西。 Chromium /提示和技巧建議使用 Profile-sync-daemon。它旨在管理tmpfs中瀏覽器的配置文件,並定期將其同步回物理磁盤。不幸的是,該軟件包尚未成為Raspbian 8.0(Jessie)發行版的一部分。因此,我尚未對此進行測試。
通過卸載不需要的軟件包和文件來釋放空間。
現在運行 iotop -bktoqqq
和 iostat -dzp 5
再次看到系統空閒時,寫訪問權限顯著減少。幾分鐘沒有任何內容寫入磁盤。不用擔心綠色ACT LED閃爍。顯然,這不是一個好的寫訪問指示器。
閃存單元耐久性:
Techsnap上的第99集談論了用完SSD的問題,艾倫解釋在日常使用中如何不可能耗盡SSD,並且我們不必擔心禁用交換,克隆和其他所有功能。現在就可以使用!智能穿戴均衡器可以處理所有問題。
每金士頓報價的正常穿戴應為您提供長達27年的專業數碼相機壽命。
對於普通的數碼單反相機,您可能每隔幾個月就將其裝滿一次。這取決於您旅行的次數。考慮到Pi,如果您嘗試分配內存並經常刷新,則可能要付出更大的代價。通常,一旦您對發行版感到滿意...幾個月或幾年後都不會重新刷新。因此,要延長SD的磨損,最好遵循一些建議,以減少SD上的IO。
閃存的價格下降了,技術也要好得多。
大多數SD卡的壽命將超過兩代或三代設備,到那時,它將被視為體積小,速度慢,無法使用更好,更便宜的升級版!
如前所述,主要問題是在重新啟動之間不值得保存的文件和目錄,但是經常寫入,例如緩存文件,下載文件夾等。
Raspbian和Debian和Ubuntu都有一個名為 unburden-home-dir的軟件包,其主要目的是將此類文件符號鏈接到一個問題較小的位置,例如 tmpfs
掛載或不易磨損的外部硬盤。
通常在登錄時在X下運行,並以GUI應用程序的緩存文件為目標,但也可以從以下位置調用腳本等,並針對用戶主目錄中的任意文件進行了配置。
注意:100,000個週期的限制是適用於每個計算設備的一個假設,即使是鍵盤上的按鍵也是如此。
這也可能會增加我的看法。
除了用戶Pi [default]之外,添加一個新用戶。將新用戶的主目錄指向外部驅動器[thumb /硬盤驅動器]。授予新用戶超級用戶權限,並開始將其用作您的主帳戶。
我希望這會有所幫助。.
只需將syslog輸出流式傳輸到另一台服務器,就可以減少寫週期。當然,擁有運行 syslogd
的服務器是前提條件。但是,由於Pi是Linux愛好者的玩具,所以這種情況很可能經常發生。 :-)
要激活此流,只需插入一個類似
*。* @ myserver.mydomain
的語句在 /etc/rsyslog.conf
文件的頂部,註釋掉所有其他行,並通過發出 service rsyslog restart
重新啟動日誌記錄。此後,消息應進入所選服務器。
一個明顯的好處是,您可以輕鬆地與同一服務器上的其他計算機一起監視Pi。缺點之一是,在系統啟動和關閉過程中,如果尚未建立網絡連接或已經關閉網絡連接,則可能會丟失一些消息。
使用busybox的syslog守護程序(在Raspbian / Debian / Ubuntu上的軟件包 busybox-syslogd中)代替默認的syslog守護程序(通常為rsyslog)。默認情況下,在Raspbian / Debian / Ubuntu上,busybox的syslogd僅登錄到內存中的環形緩衝區,而不登錄到磁盤。默認情況下,環形緩衝區的大小為128kB,即舊日誌條目很快就會輪換出來,然後消失。但是,您可以配置它使用更多的RAM。
這是比根本沒有syslog守護程序更好的解決方案,即您仍然可以登錄並讀取大約syslog的日誌條目。過去幾個小時或幾天(取決於環形緩衝區的配置大小),使用命令 logread
。您還可以使用 logread -f
獲得類似行為的 tail -f
,例如僅使用過濾器腳本存儲有趣的日誌條目,或僅通過其他位置通過網絡轉發日誌條目,例如使用 stunnel
或類似的方法。
我所做的事情:
dphys-swapfile的chmod(在/ etc中的某個位置-目前不在PI附近):
sudo chmod斧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卡將使用幾年....