2008年3月5日

[工作] 寫給蒲公英的高等計概

昨天和蒲公英有聊到一些些的RAID

講一些些原理吧



大家都知道電腦是二進位的東西

也就是一和零

那所有的資料把它弄到最後就也是只有一和零



假設有一個byte的資料為"01011100"也就是5C

並且有一個byte的資料為"00110000"也就是30



假設我們手上有三顆碟碟

第一個byte(5C)放在A碟

第二個byte(30)放在B碟



我們的目的是在第三顆碟碟放一個byte的值,使得我們這三份資料可以互相救援

舉例來說

就是ABC三顆硬碟

掛了其中A硬碟的時候

我們拿了D硬碟來取代A的位置

接著B和C中的資料可以讓D硬碟裡頭的資料變跟A一樣



再更簡單的來說

D裡的資料會變成A原本存放的5C

====================================

接著先說一下二進位的邏輯運算

它們分別是AND, OR, NOT, XOR

我們定義 1 為真 0 為非

AND的話就是兩個皆成立的時候才會成立

OR的話是只要有一個為真就成立

NOT就是真變為非,非變為真

XOR比較有趣,它是兩個都真或是非的時候為"非"



真值表:



AND OR XOR

0 0 0 0 0

0 1 0 1 1

1 0 0 1 1

1 1 1 1 0



=====================================



回到最原始的問題

我們要在第三顆硬碟C放上什麼值才可以讓我們的資料可以"自動回復"?



我們只需在C放入 5C "XOR" 30 的結果即可

01011100 xor 00110000 = 01101100(6C)



我們稱6C這個值為parity



接下來就是XOR很神奇的地方了

我們可以發現

6C xor 5C = 30

6C xor 30 = 5C



以上的結果可以使用Windows系統內建的小算盤來計算

把小算盤調成工程用再選十六進位的運算即可



我們做了XOR的運算後

目前A放入5C,B放入30,C放入60

一旦A掛掉抽換成D

那麼B和C就可以利用XOR的運算得到5C

再把5C這個值回存到D

就可以達成資料安全的一個目的



其它的可以參考RAID的觀念

上GOOGLE找就一堆了

以上



希望我的講義大家會看的懂

可以拿去虎一些不懂的人喔~ :)

沒有留言: