
我創建了一個 ZFS RAIDZ2 / Raid 6 檔案系統,我相信它將在 2 個磁碟上儲存奇偶校驗。
root@zfs-demo:/data# zpool status
pool: data
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors
我有一個 1GB 的文件
root@zfs-demo:/data# ls -alh
total 1023M
drwxr-xr-x 2 root root 3 Dec 17 18:22 .
drwxr-xr-x 19 root root 4.0K Dec 17 18:10 ..
-rw-r--r-- 1 root root 1.0G Dec 17 18:22 1GB.bin
我認為兩個奇偶校驗磁碟意味著我正在儲存檔案本身 + 兩批奇偶校驗 = 1 GB 檔案總共 3 GB 的儲存空間,但只分配了 2GB。
root@zfs-demo:/data# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
data 39.5G 2.01G 37.5G - - 0% 5% 1.00x ONLINE -
答案1
使用四分之二的磁碟進行冗餘,您可以簡單地將用戶資料加倍:兩個磁碟儲存原始數據,而另外兩個磁碟上的相同空間用於冗餘資料。奇偶校驗實際上使用條帶化分佈在所有磁碟上,但這不會改變已佔用的空間。
對於磁碟數量,您可以使用 RAID 1/鏡像,具有相同的空間效率,但吞吐量效率更高(且彈性較低,正如 Romeo Ninov 所評論的那樣)。 RAID-Z2 或 RAID 6 透過更多磁碟變得更有效率:總共有 10 個磁碟,其中 8 個可以有效用於數據,但仍只有 2 個用於冗餘。
答案2
情況是這樣的(解釋一下就明白了,非常簡單):
假設 ZFS 使用 512MB 區塊。因此,您在磁碟1 512MB 上儲存(檔案的第一部分),在磁碟2 上儲存下一個512MB,在奇偶校驗1 上儲存下一個512MB 區塊(例如,您只能使用磁碟1 和奇偶校驗1復原檔案),在奇偶校驗上2 您儲存另外 512MB,以便可以使用磁碟 1 和奇偶校驗 2 復原檔案。
以下是獲取整個文件所需的啟動和運行:
- d1+d2
- d1+p1
- d1+p2
- d2+p1
- d2+p2
- p1+p2
例如,如果您有 5 個磁碟 (RAIDZ2) 並且區塊大小為 333MB,那麼您將在磁碟 1、2、3、奇偶校驗 1 和 2 上擁有此類區塊。