覆盆子標誌

Raspberry Pi 打造更具彈性的 File 系統

讓樹莓派更具彈性File-系統產品

文件範圍

本文檔適用於以下樹莓派產品:

圓周率0 圓周率1 圓周率2 圓周率3 圓周率4 圓周率400 CM1 CM3 CM4 CM 5 微微
0 W H A B A B B 全部 全部 全部 全部 全部 全部 全部
* * * * * * * * * * * * * *  

 

介紹

Raspberry Pi Ltd 設備經常用作資料儲存和監控設備,通常是在可能發生突然斷電的地方。與任何計算設備一樣,電源中斷可能會導致儲存損壞。本白皮書提供了一些關於如何在這些和其他情況下透過選擇適當的方法來防止資料損壞的選項 file 系統和設定以確保資料完整性。本白皮書假設 Raspberry Pi 運行 Raspberry Pi (Linux) 作業系統 (OS),並且完全更新了最新的韌體和核心。

什麼是資料損壞以及為什麼它會發生?
資料損壞是指在寫入、讀取、儲存、傳輸或處理過程中發生的電腦資料意外變更。在本文檔中,我們僅指存儲,而不是傳輸或處理。當寫入過程在完成之前中斷時,可能會發生損壞,從而阻止寫入完成,例如amp如果斷電。此時值得快速介紹一下 Linux 作業系統(以及 Raspberry Pi 作業系統)如何將資料寫入儲存體。 Linux 通常使用寫入快取來儲存要寫入儲存的資料。這些快取(暫存)資料在隨機存取記憶體(RAM)中,直到達到某個預先定義的限制,此時對儲存媒體的所有未完成的寫入都在一次交易中完成。這些預定義的限制可以與時間和/或大小相關。例如amp例如,資料可能會被緩存,並且每五秒鐘才寫入記憶體,或者只有在累積了一定量的資料時才寫出。這些方案用於提高效能:一次寫入大量資料比寫入大量小塊資料更快。

然而,如果在將資料儲存到快取中和寫出快取之間發生斷電,資料就會遺失。在將資料物理寫入儲存媒體的過程中,寫入過程的後續階段還可能出現其他問題。一旦一個硬體(例如amp例如,安全數位 (SD) 卡介面)被告知寫入數據,但該數據的實體儲存仍需要有限的時間。同樣,如果在極短的時間內發生電源故障,則寫入的資料可能會損壞。關閉電腦系統(包括 Raspberry Pi)時,最佳做法是使用關機選項。這將確保所有快取的資料都被寫出,並且硬體有時間將資料實際寫入儲存媒體。大多數 Raspberry Pi 系列裝置使用的 SD 卡非常適合作為廉價的硬碟替代品,但隨著時間的推移容易出現故障,具體取決於它們的使用方式。 SD 卡中使用的快閃記憶體具有有限的寫入週期壽命,並且當卡片接近該極限時,它們會變得不可靠。大多數 SD 卡都使用一種稱為磨損均衡的程序來確保它們盡可能長時間地使用,但最終它們可能會失效。這可能需要幾個月甚至幾年的時間,具體取決於寫入卡中的資料量,或(更重要的是)從卡片中刪除的資料量。不同卡的使用壽命可能有很大差異。 SD 卡故障通常由隨機 file 由於 SD 卡的部分功能無法使用,導致損壞。

資料損壞還有其他原因,包括但不限於儲存媒體缺陷、儲存寫入軟體(驅動程式)的錯誤或應用程式本身的錯誤。就本白皮書的目的而言,任何可能發生資料遺失的過程都被定義為損壞事件。

什麼可以引發寫入操作?
大多數應用程式都會對儲存進行某種寫入操作,例如ample配置資訊、資料庫更新等等。其中一些 files 甚至可能是暫時的,即僅在程式運行時使用,並且不需要在電源循環期間進行維護;然而,它們仍然會導致寫入儲存媒體。即使您的應用程式實際上沒有寫入任何數據,Linux 也會在後台不斷地向儲存中寫入數據,主要是寫入日誌資訊。

硬體解決方案

雖然並不完全屬於本白皮書的討論範圍,但值得一提的是,防止意外斷電是一種常用且易於理解的防止資料遺失的措施。不間斷電源 (UPS) 等裝置可確保電源保持穩定,並且如果 UPS 斷電,則在電池供電時它可以通知電腦系統即將斷電,以便在備用電源耗盡之前正常關機。由於 SD 卡的使用壽命有限,因此制定更換制度以確保在 SD 卡達到使用壽命之前進行更換可能會很有用。

強壯的 file 系統

有幾種方法可以增強 Raspberry Pi 裝置抵禦損壞事件的能力。這些措施在防止腐敗方面的能力各不相同,但每項措施都會降低腐敗發生的可能性。

  • 減少寫入
    只需減少應用程式和 Linux 作業系統的寫入量就可以產生有益的效果。如果您進行了大量日誌記錄,那麼在損壞事件期間發生寫入的可能性就會增加。減少應用程式中的登入取決於最終用戶,但 Linux 中的登入也可以減少。如果您使用基於快閃記憶體的儲存空間(例如 eMMC、SD 卡),這一點尤其重要,因為它們的寫入生命週期有限。
  • 更改提交時間
    提交時間 file 系統是在將所有資料複製到記憶體之前快取資料的時間量。增加此時間可以透過大量寫入來提高效能,但如果在寫入資料之前發生損壞事件,則可能導致資料遺失。減少提交時間意味著導致資料遺失的損壞事件的可能性更小,儘管並不能完全防止這種情況發生。
    更改主 EXT4 的提交時間 file Raspberry Pi OS 系統,你需要編輯 \etc\fstab file 這定義瞭如何 file 系統在啟動時安裝。
  • $sudo nano /etc/fstab

將以下內容新增至根目錄的 EXT4 條目中 file 系統:

  • 提交=

因此,fstab 看起來像這樣,其中提交時間已設定為三秒。如果沒有特別設置,提交時間將預設為五秒。

讓樹莓派更具彈性File-系統-

 

暫時的 file 系統

如果申請需要臨時 file 存儲,即僅在應用程式運行時使用的數據,不需要在關機時保存,那麼防止對存儲進行物理寫入的一個好選擇是使用臨時 file 系統,tmpfs。因為這些 file 系統是基於 RAM 的(實際上是在虛擬記憶體中),寫入 tmpfs 的任何資料都不會寫入實體存儲,因此不會影響快閃記憶體壽命,並且不會因損壞事件而受損。
建立一個或多個 tmpfs 位置需要編輯 /etc/fstab file,控制所有 file Raspberry Pi OS 下的系統。以下範例ample 將基於儲存的位置 /tmp 和 /var/log 替換為臨時 file 系統位置。第二個前任ample 取代了標準日誌資料夾,限制了 file 系統容量為 16MB。

  • tmpfs /tmp tmpfs 預設值,noatime 0 0
  • tmpfs /var/log tmpfs 預設值,noatime,size=16m 0 0

還有一個第三方腳本可以幫助設定記錄到 RAM,可以在 GitHub 上找到。它具有按照預定時間間隔將基於 RAM 的日誌轉儲到磁碟的附加功能。

只讀根 file 系統

根 file 系統(rootfs)是 file 系統在根目錄所在的磁碟分割區上,它是 file 所有其他 file 系統在啟動時安裝。在 Raspberry Pi 上它是 /,預設情況下它位於 SD 卡上,作為完全讀取/寫入的 EXT4 分區。還有一個啟動資料夾,它被掛載為 /boot,是一個可讀/寫的 FAT 分割區。使 rootfs 只讀可防止對其進行任何類型的寫入訪問,從而使其對損壞事件具有更強的抵抗力。然而,除非採取其他行動,否則這意味著什麼都不能寫入 file 系統,因此禁止將任何類型的資料從應用程式儲存到 rootfs。如果您需要儲存來自應用程式的資料但想要一個唯讀的 rootfs,一種常見的技術是添加一個 USB 記憶棒或類似物,僅用於儲存使用者資料。

筆記
如果您正在使用交換 file 使用唯讀 file 系統,你需要移動交換 file 到讀/寫分區。

覆蓋 file 系統

覆蓋 file 系統(overlayfs)結合了兩個 file 系統,上部 file 系統和較低的 file 系統。當名稱同時存在於 file 系統,上層的對象 file 系統可見,而物體在下方 file 系統要么被隱藏,要么在目錄的情況下與上層物件合併。 Raspberry Pi 在 raspi-config 中提供了一個選項來啟用 overlayfs。這使得 rootfs(下層)只讀,並創建基於 RAM 的上層 file 系統。這給出了與唯讀非常相似的結果 file 系統重新啟動後所有使用者變更將會遺失。您可以使用命令列 raspi-config 或使用「首選項」功能表上的桌面 Raspberry Pi 設定應用程式啟用 overlayfs。

還有其他 overlayfs 實現,可以將所需的變更從上層同步到下層 file 系統按照預定的時間表運作。例如amp例如,您可以每十二小時將使用者主資料夾的內容從上層複製到下層。這將寫入過程限制在很短的時間內,這意味著損壞的可能性要小得多,但也意味著如果在同步之前斷電,自上次同步以來產生的任何資料都會遺失。計算模組上的 pSLC Raspberry Pi 計算模組裝置上使用的 eMMC 記憶體是 MLC(多層單元),其中每個記憶體單元代表 2 位元。 pSLC,即偽單級單元,是一種 NAND 快閃記憶體技術,可在相容 MLC 儲存裝置中啟用,其中每個單元僅代表 1 位元。它旨在在 SLC 快閃記憶體的性能和耐用性與 MLC 快閃記憶體的成本效益和更高容量之間取得平衡。 pSLC 具有比 MLC 更高的寫入耐久性,因為向單元中寫入資料的頻率較低可以減少磨損。雖然 MLC 可以提供大約 3,000 到 10,000 次寫入週期,但 pSLC 可以實現更高的次數,接近 SLC 的耐用性等級。與使用標準 MLC 的設備相比,這種增強的耐用性意味著使用 pSLC 技術的設備具有更長的使用壽命。

MLC 比 SLC 記憶體更具成本效益,但雖然 pSLC 比純 MLC 提供更好的性能和耐用性,但卻是以犧牲容量為代價的。為 pSLC 配置的 MLC 設備的容量將是標準 MLC 設備的一半(或更少),因為每個單元僅儲存一位而不是兩個或更多位元。

實作細節

pSLC 在 eMMC 上作為增強用戶區域(也稱為增強儲存)實現。增強用戶區的實際實作未在MMC標準中定義,但通常是pSLC。

  • 增強用戶區是一個概念,而 pSLC 是一種實作。
  • pSLC 是實現增強用戶區 (Enhanced User Area) 的一種方法。
  • 在撰寫本文時,Raspberry Pi 計算模組上使用的 eMMC 使用 pSLC 實現增強用戶區域。
  • 無需將整個 eMMC 使用者區域配置為增強使用者區域。
  • 將記憶體區域編程為增強用戶區域是一次性操作。這意味著它無法被撤消。

打開它
Linux 在 mmc-utils 套件中提供了一組用於操作 eMMC 分區的命令。在CM設備上安裝標準Linux作業系統,並安裝以下工具:

  • sudo apt安裝mmc-utils

取得有關 eMMC 的資訊(由於需要顯示的資訊很多,因此該指令會透過管道傳輸到 less 中):

  • sudo mmc extcsd 讀取 /dev/mmcblk0 |較少的

 警告
以下操作是一次性的 - 您可以運行一次並且無法撤消。您還應該在使用計算模組之前運行它們,因為它們將清除所有資料。 eMMC的容量將會減少到之前的一半。

用於開啟 pSLC 的命令是 mmc enh_area_set,它需要幾個參數來告訴它要在多少記憶體區域上啟用 pSLC。以下範例ample 使用整個區域。有關如何使用 eMMC 子集的詳細信息,請參閱 mmc 命令幫助 (man mmc)。

讓樹莓派更具彈性File-系統-

裝置重新啟動後,您將需要重新安裝作業系統,因為啟用 pSLC 將清除 eMMC 的內容。

Raspberry Pi CM Provisioner 軟體有一個在設定過程中設定 pSLC 的選項。可以在 GitHub 上找到 https://github.com/raspberrypi/cmprovision.

  • 設備外 file 系統/網路啟動
    Raspberry Pi 可以透過網路連線啟動,例如amp使用網路 File 系統(NFS)。這意味著一旦設備完成其第一次tage boot,而不是載入其核心和根目錄 file 系統不是從SD卡加載,而是從網頁伺服器加載。一旦運行,所有 file 操作在伺服器上進行,而不是在本機 SD 卡上進行,而本地 SD 卡在程式中不再發揮任何作用。
  • 雲解決方案
    如今,許多辦公任務都是在瀏覽器中進行的,所有資料都儲存在雲端的線上。將資料儲存在 SD 卡之外顯然可以提高可靠性,但代價是需要始終連接到互聯網,並且可能需要支付雲端供應商的費用。使用者可以使用功能齊全的 Raspberry Pi OS 安裝和針對 Raspberry Pi 最佳化的瀏覽器來存取來自 Google、Microsoft、Amazon 等供應商的任何雲端服務。另一個選擇是使用瘦客戶端供應商,他們用從儲存在中央伺服器而不是 SD 卡上的資源運行的作業系統/應用程式取代 Raspberry Pi OS。瘦客戶端透過遠端連接到基於伺服器的運算環境來運作,大多數應用程式、敏感資料和記憶體都儲存在該環境中。

結論

當遵循正確的關機程序時,Raspberry Pi 的 SD 卡儲存非常可靠。這在可以控制關機的家庭或辦公室環境中效果很好,但是在工業用例中使用 Raspberry Pi 設備時,或在電源不可靠的區域,採取額外的預防措施可以提高可靠性。

簡而言之,提高可靠性的選項可以列舉如下:

  • 使用知名的、可靠的 SD 卡。
  • 使用更長的提交時間、使用臨時 file 系統,使用 overlayfs 或類似的東西。
  • 使用網路啟動或雲端儲存等設備外儲存。
  • 實施在 SD 卡達到使用壽命之前更換它的系統。
  • 使用 UPS。

Raspberry Pi 是 Raspberry Pi Ltd 的商標
樹莓派有限公司

版畫
© 2020-2023 Raspberry Pi Ltd(原 Raspberry Pi(貿易)有限公司)
本文檔依據知識共享署名-禁止演繹 4.0 國際 (CC BY-ND) 授權。

  • 建造日期:2024-06-25
  • 建置版本:githash:3e4dad9-clean

法律免責聲明
不時修改的 RASPBERRY PI 產品(包括數據表)的技術和可靠性數據(“資源”)由 RASPBERRY PI LTD(“RPL”)“按原樣”提供,並提供任何明示或暗示的保證,包括但不限於至,對適銷性和特定用途適用性的默示保證不予承擔。 在適用法律允許的最大範圍內,在任何情況下,RPL 均不對任何直接、間接、附帶、特殊、懲戒性或後果性損害(包括但不限於採購替代商品或服務;使用、數據丟失)承擔責任。或利潤;或業務中斷),無論是何種原因,基於任何責任理論,無論是合同責任、嚴格責任還是侵權行為(包括疏忽或其他),均因使用資源而產生,即使已被告知這種可能性此類損害。

RPL 保留隨時對資源或其中所述的任何產品進行任何增強、改進、更正或任何其他修改的權利,恕不另行通知。這些資源適用於具有適當設計知識水準的熟練使用者。使用者對其選擇和使用資源以及其中所述的任何產品的應用負全部責任。使用者同意賠償並使 RPL 免受因其使用資源而產生的所有責任、費用、損害或其他損失。 RPL 授予使用者僅與 Raspberry Pi 產品結合使用資源的權限。禁止對資源進行任何其他使用。未授予任何其他 RPL 或其他第三方智慧財產權許可。

高風險活動。 Raspberry Pi 產品並非設計、製造或預期用於需要故障安全性能的危險環境,例如核設施、飛機導航或通訊系統、空中交通管制、武器系統或安全關鍵型應用(包括生命維持系統和其他醫療設備)的運行,在這些環境中,產品故障可能直接導致死亡、人身傷害或嚴重的物理或環境損害(「高風險活動」)。 RPL 明確否認對高風險活動的適用性提供任何明示或暗示的保證,並且對在高風險活動中使用或包含 Raspberry Pi 產品不承擔任何責任。 Raspberry Pi 產品是依照 RPL 的標準條款提供。 RPL 提供的資源不會擴大或以其他方式修改 RPL 的標準條款,包括但不限於其中表達的免責聲明和保證。

常見問題解答

  • Q:本文檔支援哪些 Raspberry Pi 產品?
    答:本文檔適用於各種 Raspberry Pi 產品,包括 Pi 0 W、Pi 1 A/B、Pi 2 A/B、Pi 3、Pi 4、Pi 400、CM1、CM3、CM4、CM5 和 Pico。
  • Q:如何減少 Raspberry Pi 裝置上資料損壞的可能性?
    答:您可以透過最小化寫入操作(尤其是日誌記錄活動)並調整提交時間來減少資料損壞 file 本文檔中所述的系統。

文件/資源

Raspberry Pi 打造更具彈性的 File 系統 [pdf] 使用者指南
Pi 0,Pi 1,打造更具彈性 File 系統更具彈性 File 系統,彈性 File 系統, File 系統

參考

發表評論

您的電子郵件地址不會被公開。 必填欄位已標記 *