Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

关于校验盘的疑惑,请大家指点下

Featured Replies

我看官方文档说的大概意思是加入校验盘后奇偶校验可以保障数据安全,序列中损坏一块硬盘时,可以通过校验盘恢复已损坏硬盘上的数据,对校验盘要求就是校验盘的容量要是所有硬盘当中容量最大的。

我比较疑惑的是,不管用哪种策略,校验数据都没拆分到各个序列盘,而是全在校验盘,当序列盘中数据量大于校验盘容量后(比如2块1T校验盘,6块1T序列盘,当序列中文件超过2T后),坏掉一块序列盘怎么保障数据安全呢?

我的理解,不一定正确

假如第一块盘的第一个比特是1,第二块盘的第一个比特个是0,第三个是1,第四个是1

那么,你会发现这第一个比特一共有奇数个1。于是校验盘因为第一个比特有奇数个1,也将自己盘的第一个比特设置成1 (偶数则为0)

于是你会发现,只要校验盘第总共拥有的比特数比任何一块盘都大 (也就是所谓的校验盘应该是所有盘中最大的一块),一块校验盘就可以推测出坏掉盘的数据。

至于第二块校验盘,官方给的消息是"通过复杂的算法实现",这就在本人的知识范围之外了。

至于你说的"序列中文件超过2t",你会发现没有任何一个单盘文件会超过2t(单盘本身最大1t),所以你的问题本身就不存在。

  • Author
8 hours ago, Wizard_ said:

我的理解,不一定正确

假如第一块盘的第一个比特是1,第二块盘的第一个比特个是0,第三个是1,第四个是1

那么,你会发现这第一个比特一共有奇数个1。于是校验盘因为第一个比特有奇数个1,也将自己盘的第一个比特设置成1 (偶数则为0)

于是你会发现,只要校验盘第总共拥有的比特数比任何一块盘都大 (也就是所谓的校验盘应该是所有盘中最大的一块),一块校验盘就可以推测出坏掉盘的数据。

至于第二块校验盘,官方给的消息是"通过复杂的算法实现",这就在本人的知识范围之外了。

至于你说的"序列中文件超过2t",你会发现没有任何一个单盘文件会超过2t(单盘本身最大1t),所以你的问题本身就不存在。

你理解错了

我意思是序列中有6块1T的盘,共享文件夹的容量是可以跨盘存文件的,当然可以给共享文件夹中存入超过2T的数据

14 hours ago, realxumai said:

你理解错了

我意思是序列中有6块1T的盘,共享文件夹的容量是可以跨盘存文件的,当然可以给共享文件夹中存入超过2T的数据

没错,共享文件夹确实可以跨盘存文件,但这又有什么用呢?

你应该把视角从数据方面拿开,数据如何根本不重要。盘上数据全部在逻辑上聚合成一个共享文件夹也好,单个文件横跨6个盘也罢。

校验盘只在乎盘本身,而盘上是什么东西它不在乎。校验盘的作用并不是像raid一样通过算法计算数据而保护数据,而是保护盘本身。

基本上就是用邏輯計算的方式實現硬盤冗餘, @Wizard_說的是對的,就是利用奇偶校驗將校驗數據計算出來並儲存在校驗盤上,所以說如果是不同容量大小的硬盤假設是1T+500G陣列(可用容量1T)與2T的校驗盤,對於奇偶運算來說,假設1T第一個Bit是1,500G第一個Bit是0,則有奇數個1,則對2T校驗盤第一個Bit寫入1(奇數)。

 

到500G硬盤上空間用完後(共存入1T數據,採High-Water策略),可想像500G數據盤以外有個假想的500G,但實際是無法儲存數據的,而這假想的500G都是填0的比特位元,如此一來還是可以依據1T數據盤上的資料進行奇偶運算,並儲存在校驗盤上。

 

顧名思義,在儲存1T+1bit的時候(High-water策略),若這1bit是1,那校驗值為1 (奇數,500G數據盤已用完,假想500G都是填0,[1,0]=[1T,500G]數據組中只有奇數個1);同理,如果這1bit是0,那校驗值為0 (偶數,[1T,500G]=[0,0]數據組中有偶數個1,0是偶數)

 

如此一來就可以在保證校驗盤比其他任一數據盤大的情況下保障數據安全,上面的舉例只是一個算法的例子,實際上Unraid的校驗應該比所提及的算法更為複雜,這裡只是說明一個極為簡單的例子,也有許多其他算法,比如利用加法得到奇偶校驗1+0+1+1等於3為奇數,校驗數據填1;1+0+0+1等於2為偶數,校驗數據填0,當四塊硬盤任一壞掉時就可以反推得到損壞硬盤的數據。

 

在加法算法中也可以做舉例:1+0+1+1四塊硬盤(校驗數據為1)壞掉第三塊硬盤,數組變成1+0+X+1,但因為校驗數據是1,為奇數,所以可以知道X必為1。當新硬盤被放回陣列後就可以將計算獲得的數據回填。

 

但在數據回填時該怎麼定義甚麼時候該有假想盤(如第一個例子中假想的500G,定義上全填0)存在呢?這時候Unraid中的Array Configuration就變得極為重要,若是Array Configuration在需要數據重建時被意外/人為的損壞/清除,那數據就只會回復完好的硬盤,損壞的硬盤資料將會救不回來,但往好處想,你還有好硬盤上的資料,因為Unraid是以檔案為單位寫入,非以比特為單位。

Edited by Yu-Ting Lin

  • 2 weeks later...
  • Author

最近又测试了一次,还是1个1T校验盘,3T空间(3个1T盘)写入2.5T后换掉其中一块,重启后直接选择“重建” 这次不勾选格式化新盘

这时重建进度才10%不到,已经可以在共享中看到完整的文件(目录中显示全部文件了),由于文件较大,无法快速验证是否完整

 

请教下这种情况下,那些在被换掉硬盘中的数据是被unraid的“奇偶校验”在几乎瞬间生成的吗? 还是说要等到重建完毕后那些数据才可用?

On 11/21/2022 at 11:33 PM, realxumai said:

这时重建进度才10%不到,已经可以在共享中看到完整的文件(目录中显示全部文件了

不會是這樣, 由 emulate 嗰一刻, 有就有, 冇就冇

 

On 11/21/2022 at 11:33 PM, realxumai said:

那些在被换掉硬盘中的数据是被unraid的“奇偶校验”在几乎瞬间生成的吗?

對, 只要一日重建未完成, 讀數據永遠都是由運算生成出來, 直至重建完成, 寫數據就是即時更新 parity 同 重建中的硬盤.

Edited by Vr2Io

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.