HOME 回資訊服務處首頁 Login
2012年第12期
簡訊
【教育訓練】本(6)月教育訓練課程,歡迎同仁報名參加
【資安通報】本(6)月資安通報
【中心業務】101年5月23日中心網頁寄存服務障礙說明
【中心業務】101年5月30日及31日本院高效能計算服務障礙說明
【中心業務】完成遙測影像處理軟體ERDAS IMAGINE & LPS年度維護更新採購案
【中心業務】完成FTTx光世代骨幹頻寬擴充採購案議價
【中心業務】中央研究院101年院區網路交換器更新
『院外活動』TAIS 2012年台灣學術資訊安全國際研討會
『院外服務』臺灣地區通用版電子地圖成果自即日起提供查詢瀏覽
資訊應用
深入淺出談硬碟資料的保養
 
資訊應用 >
上一篇 | 返回電子報
 
深入淺出談硬碟資料的保養
 
自由作者:鄭原真

 俗話說得好,不經一事,不長一智。會那麼在意電腦資料的保存,自然是因為有切身之痛。想起多年前的某個下午,我愉快地用著我的筆記型電腦,忽然,電腦螢幕停止了,不動了。無論鍵盤怎麼按,滑鼠怎麼動,螢幕都沒有任何反應。好吧,重新開機。開不了。把硬碟拔出來,裝到另一電腦,哇,硬碟完全抓不到。於是,電腦的資料就全部毀了。大概這樣的經驗,任何人遇到都會痛不欲生吧!

 本文想要介紹一些當代電腦資料保養的相關技術與應用。簡單敘述 RAID 是什麼?資料備份是什麼?差異備份是什麼?被備份的檔案系統為何要做SNAPSHOT?如何加速備份的速度?檔案系統的 SNAPSHOT 是否能夠對備份進行加速?Apple 公司 MAC OS 的 Time Machine 備份為何備份速度會那麼快?最後,將簡單介紹儲存裝置故障後的修復,以及儲存裝置丟棄的流程。

 首先,讓我們先來建立硬碟實況的模型。讀者應該都有去圖書館借書的經驗吧!你可以想像一顆硬碟,就像是一個多樓層的圖書館。例如是六樓的圖書館大樓,每層樓裡面有很多排的書架,每一排書架,又有很多格的書架格。每一書架格上面又有很多書。

 建立了這樣的模型,首先,書,是會損壞的。例如,如果圖書館的空調不理想,書可能會發霉。如果衛生環境不好,可能會長書蟲,把書本的某些部位吃掉,因而無法在閱讀裡面的文字。如果發生類似 2001年9月納莉颱風,若干圖書館淹大水,可能整個圖書館的資料便要報銷,就如同筆者之前遇到的,一整棵硬碟損毀的狀況一樣。很不幸的,硬碟上面的資料,也跟圖書館裡面的書一樣,會發生類似的損毀事件。就資訊專業來說,對於這些種種的可能損壞,也有著許多不同的對應方案。

 對應第一個方案,在專業的術語稱之為 RAID(Redundant Array of Independent Disks)。以圖書館的模型來說,就像是我們蓋了兩座緊鄰的圖書館大樓,每次購買圖書,我們一次都買兩本。然後分別存入這兩座圖書館大樓。這樣的話,萬一某一本書因為發霉,長書蟲而損毀,我們就把另一個圖書大樓裡面的另一本書,影印一本,然後存入另一個大樓。(當然現實生活有著作權的問題,是不能這樣做的。幸好我們只是以圖書館作為參考模型。)這樣的做法,在專業的術語上,就是 RAID 裡面常用的 Mirror 模式。

 當然,這樣做有一個很大的缺點,就是實際上有兩個圖書館,但是我們可以存放書籍的數量,只是一個圖書館大樓的數量。就資訊專業來說,有一些其他的節省空間的方法,但限於討論範圍,在此不深入討論,有興趣的人可用 RAID 為關鍵字去查詢,有許多其他的對應方案,以及對應的操作細節,例如硬碟損毀之後的回復方案等等。

 然而,使用 RAID 以後,我們還許要對 RAID 進行“擦洗”(Data Scrubbing)。以圖書館的模型來說,就是我們要定期請管員去檢查圖書,看看圖書有沒有發霉。圖書館裡面,總是有些書,屬於比較熱門的,比較常有人會去借來看的。而也有一些比較冷門的,比較少有人參考借閱的書本。然而這些書都是同等重要的。常被借閱的書,如果有損壞發霉蟲蛀,大概很快就會被發現,並且回報。接受到這樣的回報,管員就可以對於損壞的書籍進行處理。但是那些冷門的書籍,就需要管理員定期去進行書本的檢查。這樣的動作,在資訊專業裡面,稱之為 Data Scrubbing。那麼硬碟裡面的資料,要多久做一次擦洗呢?就筆者參考的建議文件(ZFS Best Practices Guide),如果是一般消費等級(consumer-quality)的硬碟(市面上買的硬碟),建議每週做一次。如果是資料中心等級(datacenter-quality)的硬碟,建議每個月做一次。當然,這個前提是你的硬碟裡面的資料都俱有相當的重要性。

 硬碟建立 RAID,並定期進行擦洗,對於重要資料的伺服器來說,具有相當的重要性。但是,這樣並沒有解決全部的問題。就圖書館的模型來說,如果發生類似納莉颱風那樣大的災害,大概緊鄰的兩座圖書館,都要完蛋。因此,我們需要另一種魔法。那就是資料備份。以圖書館的例子來說,我們每天晚上使用一種魔法,把圖書館的資料,原封不動的“傳輸”到遠地的某個地方去。這個動作,便叫做備份。

 備份的時候,如果硬碟裡面的資料真的非常重要,那我們會使用一種叫做SNAPSHOT 的技術。就是把硬碟的資料建立一個快照,相當於把某一瞬間的資料先凍結起來,然後對於那個快照的內容進行備份。這個目的,是因為使用魔法把圖書館的資料傳輸到遠方的過程,是需要時間的。例如我們是由一樓開始傳輸資料,然後傳輸二樓的資料,然後三樓的資料。如果正在傳輸三樓的資料的時候,有人剛好把六樓的某一本書移動到一樓。那麼,當我們傳輸到六樓的時候,自然就沒有傳輸(備份)到那一本書。而稍早備份一樓圖書時,因為書也還沒有由六樓移動到一樓,所以那本書就沒有備份到。在這樣的情形下,硬碟快照的技術,就可以幫助我門解決這個問題,確保我們可以備份到當時的完整資料。

 一般來說,我們會認為備份對付的只是硬碟損毀。其實不然,因為電腦可能會有病毒,或是使用者操作不當,“手誤”刪除了某些重要的檔案。這時候,如果我們有備份,我們就可以再由遠方的備份,把資料複製回來。

 由於資料備份的過程中,我們通常會把資料完整地讀出,然後傳輸到遠方。讀出的過程,如果資料有損毀,通常也就順便會被察覺。因此,有時資料的備份,就同時會有資料擦洗的效果。但是也並非必然,因為有時備份軟體可能只會檢查檔案最後修改時間,是否與上次備份時相同。如果相同,就假設資料沒有被修改。這樣的設計可以大幅減低資料備份過程中所要進行處理的工作量,但是也就失去了資料擦洗的效果。因此,對於真正重要的資料,適時的對於硬碟進行擦洗,是有其重要性的。

 每次備份時,就把所有資料進行備份,稱之為完全備份(full-backup)。然而你可以想像,如果每個晚上都把全部的資料傳輸一遍,要花去的計算機以及網路傳輸,都相當的驚人。而且有時我們可能需要查詢一週前硬碟裡面某個檔案的內容,那我不就需要在遠端儲存七份硬碟的資料嗎?(每天一份,一周七天就要存七份)幸運的是,有些備份工具,具有完整的差異備份的功能。意思是說,備份的時候,我們只去備份那些在上次備份之後被修改過的檔案。如果差異備份的功能完整,假設備份的資料在全部有 600G 的資料,週二時資料變成 610G。這個時候,週二只要傳輸 10G 的資料。遠端備份的硬碟,也只需要 600G + 10 G + 若干記錄標示記錄。這樣一來,資料備份過程中,資料傳輸的數量,以及備份硬碟的空間,就大幅的減低。

 因此,如果備份是使用差異備份,資料的傳輸量與備份硬碟的空間,可以大幅的節省。然而,備份的過程中,仍然需要一個檔案一個檔案的進行檢查。檢查檔案是否在上次備份過後有被修改過。如果使用前述的檔案最後修改時間檢查的機制,一定程度上的確可以省下相當的時間。然而,如果檔案系統裡面的檔案方常多,要一個一個檔案進行檢查,仍然要花去相當的時間。

 對此,筆者認為 MAC OS X 裡的 Time Machine 就是相當好的設計。MAC OS X 的做法是,當我們平時在對於硬碟資料進行讀寫時,系統就會偷偷記錄我們修改了哪些檔案,改變了哪些目錄。當我們進行備份的時候,系統就檢查上次備份到現在的過程中,我們到底修改了哪些檔案,並只針對那些檔案進行備份。因此,如果整個硬碟裡面有 600G 的資料,60 萬個檔案,當我們修改了其中 10G 的檔案,因為我們先前已記錄那些檔案在什麼時間有進行修改,因此可直接備份這 10G 的檔案。整個備份時間可能就只要數分鐘。反之,如果對於整個 600G 的資料進行備份,或許要花上把個小時的時間。因此,實務上,使用 Time Machine 對系統“每個小時”備份一次,是絕對可行的。

 Solaris 系統內的 ZFS 檔案系統也有對於備份來說相當方便的工具。由於ZFS 內有相當強大的 SNAPSHOT 功能,ZFS 可以讓我們把檔案系統內,兩個SNAPSHOT 的差異資料傳送出來。並且備份到遠端的系統。換言之,假設我們的備份週期,是每週做一次完整備份,每天做一次差異備份。那我們就可以每天對系統做一次 SNAPSHOT,差異備份時,直接使用檔案系統的工具,將當天與前一天的 SNAPSHOT 差異傾倒出來,然後將那些資料備份起來即可。由於這樣的備份,也相當於是 MAC OS X 記錄哪些檔案被修改的方式,因此這樣的備份速度也是相當的快速。當然設計上仍有所不同,例如是 file base backup 或是 block base backup 等。

 最後,萬一以上手法都失效,儲存裝置仍然故障了,資料是否還能救回呢?這個問題其實跟儲存裝置的拋棄息息相關,尤其是當儲存裝置裡面儲存的資料真的是無比重要的時候,這件事情就變的重要。

 簡單來說,回想如果一大疊紙鈔因為火災而完全燒毀,那當然是完全沒救了。但若只是半毀,就可以把剩下的“屍體”送往調查局鑑識科學處,他們會想辦法“盡量”由紙鈔碎片拼湊出紙鈔,而拼湊出一定比例的紙鈔就可以喚回全新的鈔票。硬碟毀損也是一樣。硬碟的原理是在裡面的磁盤上面以磁性記錄資料。只要磁片上的物理磁性沒有完全地被抹去,就有機會救回。當然實體硬碟故障的越多,救回資料所需的成本也越高。以筆者硬碟數年前故障的硬碟為例,假如只是硬碟控制電路板故障,那麼可能只要數千元即可請專業廠商救回資料。但是如果是內部讀寫頭出問題,那說不定要超過十萬元以上台幣才稍有機會救回資料。然而,如果硬碟裡面儲存的是敵軍的機密資料,花上數千萬,可能還可以讀出敵軍以為已經刪除的資料。我們把硬碟裡面的資料刪除,並非真正的把資料刪除,只是把資料所使用的空間標是為可再利用。所以如果遇到高竿的對手,便有可能把資料取出。當然有一魔就有一法,有些軟體宣稱使用“國防等級”的方式刪除資料,刪除過程要花去相當長的時間,相信多少有辦法幫助儲存媒體丟棄前的處置。然而是否需要,就看資料本身具備多少價值,畢竟“偷取”廢棄硬碟內的資料的成本,就是等於送廠商挽救資料的成本。當硬碟內的資料值一百萬元,使用千萬元等級的手法去偷取資料就變得沒有意義。實務上,筆者會在硬碟丟棄之前,將硬碟電路板破壞,並破壞硬碟盒,稍微破壞其讀寫頭。就筆著電腦資料相對微薄的價值,這樣的手法已經相當充分地保護其內的資料了。

 經由以上說明,我們可瞭解到重要系統地維護,除了使用 RAID 保護資料以外,適當地使用資料擦洗(Data Scrubbing)工具來確認硬碟上面的資料是否損毀。搭配系統一定週期的備份,可確保主機資料在系統因故損毀或是因為入侵而資料被刪除時,可以由備份回存資料。備份時,選用具有差異備份的工具,可以讓我們在不耗去過多備份儲存空間的情況下,可以存放比較多的檔案歷史。如果我們選用的系統及搭配的備份工具,具有若干記錄檔案修改紀錄的機制,那麼備份過程的速度以及網路資料傳輸量,就可以大幅降低。進而提升資料備份的效率,達到強化資料安全性的效果。以上手法如果還是失效,若資料具有很高的價值,去找資料救援廠商的確有機會,但是所花費救援成本也就會很高。相同的儲存媒體棄置之前,也應該有標準的程序,確認媒體內的資料不被竊取,以保護資料的機密性。




上一篇 | 返回電子報
 
 本電子報所有文字、圖片版權為中央研究院所有 。 電子報出版系統由中央研究院資訊服務處開發。