RAID 等級 1 的區塊、ext4 步幅和條帶寬度大小?

RAID 等級 1 的區塊、ext4 步幅和條帶寬度大小?

手冊頁上mdadm寫著:“[chunk] 僅對 RAID0、RAID4、RAID5、RAID6 和 RAID10 有意義。”即它不適用於raid1。即使你傳遞了這個值,它也會說ignoring chunk size,在創建 raid 1 後,你會得到:

md1 : active raid1 ...
      4883639488 blocks super 1.2 ...
      bitmap: 0/37 pages [0KB], 65536KB chunk

由於某種原因,它使用 65Mb 來儲存 5.6Tb 的磁碟大小。為什麼?

然後,手冊頁mkfs.ext4

stride=stride-size = 使用步長大小的檔案系統區塊為 RAID 陣列設定檔系統。這是移動到下一個磁碟之前讀取或寫入磁碟的區塊數,有時稱為區塊大小。這主要影響 mke2fs 時檔案系統元資料(如點陣圖)的放置,以避免將它們放置在單一磁碟上,這可能會損害效能。它也可以被區塊分配器使用。

stripe_width=stripe-width = 為 RAID 陣列設定檔系統,每個條帶具有條帶寬度檔案系統區塊。這通常是步幅大小 * N,其中 N 是 RAID 中承載資料的磁碟數量(例如,對於 RAID 5,有一個奇偶校驗磁碟,因此 N 將是陣列中的磁碟數量減 1)。這允許區塊分配器在寫入資料時盡可能防止對 RAID 條帶中的奇偶校驗進行讀取-修改-寫入。

這對 RAID1 意味著什麼?我應該重複與上面的區塊相同的值嗎?並忽略 stripe_width 因為 RAID1 不屬於「如果可能」註解?或者不是嗎?

不太清楚我應該為 RAID1 做什麼。使用我在其他 RAID0 和 RAID5 教程中找到的公式,我得到了 RAID1 陣列的這些數字,我認為這些數字不正確。mkfs.ext4 -b 4096 -E stride=16384,stripe-width=16384

答案1

我認為這應該沒問題,因為你沒有剝離任何東西。您只需要該數字即可知道下一個磁碟應使用多少資料。但是,您實際上只有一個資料磁碟(及其一個鏡像),因此控制器不需要更改磁碟,因此應該沒問題。在我看來,高數字也是有意義的,因為控制器只會在大塊之後詢問自己要使用哪個磁碟。所以這應該要限制開銷。

答案2

RAID1 實際上與單一磁碟相同,因此無需進行 RAID 最佳化,但仍然有一些方法可以根據應用程式的 I/O 設定檔以及可能的底層磁碟功能(例如 SSD 擦除區塊)來最佳化檔案系統元資料位置尺寸)。我不久前寫了一篇關於這個主題的文章,解釋了原因檔案系統對齊很重要,您可能會發現這很有用。

相關內容