Linux中存儲術語和概念介紹

介紹

Linux具有強大的系統和工具,用於管理硬體設備,包括儲存驅動器。在這篇文章中,我們將在高層次上介紹Linux如何表示這些設備,以及如何將原始儲存空間轉化為伺服器上可用的空間。

什麼是區塊儲存?

區塊儲存是Linux內核稱為區塊設備的東西。 區塊設備是一種可用於儲存數據的硬體設備,如傳統的旋轉硬盤驅動器(HDD),固態硬盤(SSD),閃存記憶體棒等。它之所以被稱為區塊設備,是因為內核通過引用固定大小的區塊或空間塊與硬體進行交互。

換句話說,區塊儲存就是您在電腦上想到的常規磁碟儲存。一旦設置完成,它就充當當前文件系統樹的擴展,您應該能夠對每個驅動器進行寫入或讀取信息。

什麼是磁碟分區?

磁盤分割是將存儲驅動器分割成較小可用單元的方法。分割是存儲驅動器的一個部分,可以像驅動器本身一樣處理。

分割允許您對可用空間進行分段,並將每個分割用於不同的目的。這使用戶更具靈活性,可以將單個磁盤分割為多個操作系統、交換空間或專用文件系統。

雖然可以在不分割的情況下格式化並使用磁盤,但操作系統通常希望在磁盤上找到分割表,即使只有一個分割寫入磁盤。通常建議對新磁盤進行分割,以獲得更大的靈活性。

MBR vs GPT

在分割磁盤時,重要的是要知道將使用哪種分割格式。這通常取決於MBR(主引導記錄)和GPT(GUID分割表)之間的選擇。

MBR已經超過30年了。由於其年齡,它具有一些嚴重的限制。例如,它無法用於超過2TB大小的磁盤,並且只能有最多四個主分割。

GPT是一種更現代的分割方案,解決了MBR固有的一些問題。運行GPT的系統可以在每個磁盤上擁有更多的分區。這通常只受操作系統本身施加的限制。此外,GPT不存在磁盤大小限制,並且分區表信息可在多個位置訪問,以防止損壞。GPT還可以為了與僅支持MBR的工具兼容性而寫入“保護性MBR”。

在大多數情況下,除非您的操作系統阻止您使用它,否則GPT是更好的選擇。

格式化和文件系統

儘管Linux內核可以識別原始磁盤,但必須對其進行格式化才能使用。格式化是將文件系統寫入磁盤並準備好進行文件操作的過程。文件系統是結構化數據並控制如何將信息寫入和檢索自底層磁盤的系統。如果沒有文件系統,則無法將存儲設備用於任何標準文件系統操作。

有許多不同的文件系統格式,每種格式都有優劣,包括操作系統支持。它們都向用戶提供了磁盤的類似表示,但它們支持的功能和平台可能非常不同。

一些用於Linux的較流行的文件系統包括:

  • Ext4:最受歡迎的預設文件系統是Ext4,是Ext2和Ext3的後續版本。Ext4文件系統是日誌化的,與舊系統向後兼容,穩定,並且具有成熟的支援和工具。如果您沒有特殊需求,這是一個不錯的選擇。
  • XFS:XFS專注於性能和大型數據文件。它格式化速度快,在處理大文件和處理大型磁盤時具有良好的吞吐量特性。它還具有實時快照功能。XFS使用元數據日誌記錄,而不是同時記錄元數據和數據。這導致了快速性能,但在突然斷電的情況下可能導致數據損壞。
  • Btrfs:Btrfs是一種現代的、功能豐富的寫時複製文件系統。這種架構允許在文件系統層中集成一些卷管理功能,包括快照和克隆。它被用於某些消費者和商業NAS(網絡附加存儲)硬件的默認值,並且在專用的多磁盤陣列中很受歡迎。
  • ZFS:ZFS是另一種寫時複製文件系統和卷管理器,具有強大且成熟的功能集。它與Btrfs相競爭,具有數據完整性功能,可以處理大型文件系統大小,具有典型的卷功能,如快照和克隆,並且可以將卷組織為RAID和類RAID陣列以實現冗余和性能目的。由於許可問題,ZFS的歷史具有爭議性,但在考慮商業支持時,它與Btrfs的流行程度差不多。

此外,Windows 主要使用 *NTFSExFAT,而 macOS 主要使用 HFS+APFS。通常情况下,不同平台上可以读取这些文件系统格式,有时还可以进行写入操作,但可能需要额外的兼容工具。

Linux 如何管理存储设备

/dev 中的设备文件

在 Linux 中,几乎所有的东西都以文件的形式存在于文件系统层次结构中,包括像存储驱动器这样的硬件,它们在系统中以 /dev 目录中的文件形式表示。通常,表示存储设备的文件以字母 sdhd 开头。例如,服务器上的第一个驱动器通常是像 /dev/sda 这样的名称。

这些驱动器上的分区也有在 /dev 中的文件表示,通过在驱动器名称的末尾附加分区号来表示。例如,前面示例中驱动器上的第一个分区将被表示为 /dev/sda1

/dev/sd*/dev/hd* 設備文件代表傳統的引用驅動器和分區的方式時,僅使用這些值存在顯著的缺點。Linux 內核在每次啟動時決定哪個設備獲得哪個名稱,這可能導致混亂的情況,其中您的設備節點可能會更改。

為解決此問題,/dev/disk 目錄包含與系統上的磁盤和分區對應的不同、更持久的方式的子目錄。這些包含在啟動時創建的符號鏈回到正確的 /dev/[sh]da* 文件。這些鏈接的命名方式根據目錄的識別特徵(例如,在 /dev/disk/by-partlabel 目錄中按分區標籤)命名。這些鏈接將始終指向正確的設備,因此它們可以用作存儲空間的靜態標識符。

/dev/disk 下可能存在以下一些或所有的子目錄:

  • by-label:大多數文件系統都有一種標籤機制,允許為磁盤或分區分配任意指定的名稱。此目錄包含以這些用戶指定的標籤命名的鏈接。
  • by-uuid:UUID 或通用唯一標識符是一個由字母和數字組成的長字符串,可用作存儲資源的ID。這些通常不太易讀,但幾乎總是唯一的,即使在不同系統之間也是如此。因此,在引用可能在系統之間遷移的存儲時,使用UUID可能是一個不錯的主意,因為命名衝突的可能性較小。
  • 按部件標籤按部件UUID:GPT表格提供了它們自己的一套標籤和UUID,這些標籤和UUID也可以用於識別。這個功能與前兩個目錄的方式非常相似,但是使用了GPT特定的標識符。
  • 按ID:這個目錄包含了由硬件自身序列號生成的連結,以及它們所附加到的硬件。這不是完全持久的,因為設備連接到系統的方式可能會改變其按ID名稱。
  • 按路徑:像按ID一樣,這個目錄依賴於存儲設備與系統本身的連接。這裡的連結是使用系統對訪問設備的硬件的解釋構建的。這與按ID具有相同的缺點,因為將設備連接到不同的端口可能會改變此值。

通常,按標籤按UUID是持久識別特定設備的最佳選擇。

注意: DigitalOcean區塊存儲卷控制報告給操作系統的設備序列號。這使得按ID分類在此平台上可以可靠地持久存在。這是指稱DigitalOcean卷的首選方法,因為它在首次啟動時既持久又可預測。

掛載區塊設備

在Linux和其他类Unix操作系统中,整个系统,无论涉及多少物理设备,都由一个统一的文件树表示。当要使用驱动器或分区上的文件系统时,必须将其连接到现有的树中。挂载是将格式化的分区或驱动器附加到Linux文件系统中的目录的过程。然后可以从该目录访问驱动器的内容。

驱动器几乎总是挂载在专用的空目录上 – 在非空目录上挂载意味着在卸载驱动器之前,无法访问该目录的常规内容。可以设置许多不同的挂载选项来更改已挂载设备的行为。例如,可以将驱动器以只读模式挂载,以确保其内容不会被更改。

《文件系统层次结构标准》建议在临时挂载的文件系统中使用/mnt或其子目录。对于更长期的存储,它没有提供任何挂载位置的建议,因此您可以选择任何方案。在许多情况下,/mnt/mnt子目录也用于更长期的存储。

使用/etc/fstab永久挂载

Linux 系統使用一個名為 /etc/fstab(檔案系統表)的文件來確定在開機過程中要掛載哪些檔案系統。在此文件中沒有條目的檔案系統將不會自動掛載,除非由其他軟體腳本化。

/etc/fstab 文件的每一行代表應該掛載的不同檔案系統。此行指定了塊設備、要附加到的掛載點、驅動器的格式和掛載選項,以及一些其他資訊。

更複雜的儲存管理

雖然許多用例可以通過這些核心功能滿足,但還有更複雜的管理範例可用於將多個磁碟組合在一起,特別是 RAID

RAID 是什麼?

RAID 是冗餘陣列獨立磁碟的縮寫。RAID 是一種儲存管理和虛擬化技術,允許您將驅動器分組在一起並以單個單元的方式管理它們,並具有附加功能。

RAID 數組的特性取決於其 RAID 級別,它定義了數組中的磁盤之間的關係。一些更常見的級別包括:

  • RAID 0:此級別表示磁盤條帶化。這意味著當數據寫入數組時,它被分割並在集合中的磁盤之間線性分佈。這提供了性能提升,因為可以同時向多個磁盤寫入或從中讀取。缺點是單個驅動器故障可能會丟失整個數組中的所有數據,因為沒有一個磁盤包含足夠的信息來重建。通常出於這個原因,RAID 0 在生產中通常不會使用,儘管它可以作為比較的一個參考點。
  • RAID 1:RAID 1 表示磁盤鏡像。寫入 RAID 1 數組的任何內容都會寫入多個磁盤。其主要優點是數據冗餘,這允許數據在鏡像的任一側損失硬盤時仍能保留。因為多個磁盤將包含完全相同的數據,所以您的可用容量至少會減少一半。
  • RAID 5:RAID 5 將數據條帶化到多個磁盤上,類似於 RAID 0。然而,此級別還在磁盤之間實現了分佈式奇偶校驗。這意味著如果一個磁盤失敗,剩下的磁盤可以使用它們之間共享的奇偶校驗信息重建數組。通常,這足以重建一個磁盤,這意味著數組可以在任何一個磁盤丟失的情況下生存。RAID 5 通過一個磁盤的容量減少了數組中的可用空間。
  • RAID 6:RAID 6具有與RAID 5相同的屬性,但提供雙倍奇偶校驗。這意味著RAID 6陣列可以承受任意2個磁碟驅動器的損失。陣列的容量再次受到奇偶校驗量的影響,這意味著可用容量減少了兩個磁碟的空間。
  • RAID 10:RAID 10是1和0級的組合。首先,製作兩組鏡像陣列。然後,將數據跨越它們進行分段。這創建了一個具有一些冗餘特性並提供良好性能的陣列。但是這需要相當多的驅動器,而且總容量仍然不到結合磁盤空間的一半。

下一步該怎麼做?

如果您有一個希望在Linux系統中使用的新存儲設備,本文將指導您完成對新文件系統進行分區、格式化和掛載的過程。對於大多數主要關心添加額外容量的用例來說,這應該是足夠的。要了解如何執行存儲管理任務,請查看在Linux中執行存儲設備的基本管理任務

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-storage-terminology-and-concepts-in-linux