某法院HP-P4500存儲數據恢復案例

好久沒出來寫博客了,過年來了一直很忙,尤其是最近,忙著做了好幾個大單子。先是一個醫院50TBHP-EVA4400,接著是一個法院12TBHP-P4500,前幾天還有做了一個某游樂城12TBVMware VMFS虛擬機恢復。雖然忙點,但是學會了好多新的知識,一直想抽點時間把最近的工作整理成文章發表一下,可是家里沒有聯網,在公司又得忙工作。還好最近工作不是很忙,可以在公司抽點時間寫寫。好了,言歸正傳,進入主題吧!

【故障描述】

? ?某法院的一臺HP-P4500的存儲系統,底層是121TB的硬盤組的RAID。其中每61TB的盤一組,第一組的前面一部分組了一個RAID0+1,是存放HP-P4500嵌入式系統,接著組了一個RAID5存放數據,第二組組了一個RAID5。在存儲系統上層一共分了兩個卷,卷大小一個為3TB,一個為5TB。后來因磁盤故障導致存儲不可用,客戶先請HP的工程做更換磁盤,強制上線,但存儲還是不可用。最后才聯系我們做數據恢復。

【硬件檢測】

? ?我們的硬件工程師先對客戶的12塊硬盤做了硬件檢測,發現客戶的硬盤都正常。既排除硬盤硬件故障。既然都正常,我們就對12塊硬盤做了全盤鏡像。

【故障分析】

? ?我們使用專業的工具對備份出來的鏡像做了詳細的分析,發現底層的RAID是一個HP雙循環RAID5。并且第一組RAID是好的,也就是第二組RAID的損壞導致存儲上層的卷不可用,第二RAID也是一個RAID5,如果是其中一個硬盤掉線那么以RAID5的存儲原理應該不會導致存儲不可用。因此可以判斷第二組RAID中至少是掉了兩塊磁盤,其中一塊是早就掉線的,里面的數據都是舊的,我們需找出早就掉線的那塊磁盤。可是我們通過硬件檢測發現所有的硬盤都沒有硬件故障,那么我們該如何判斷掉線的盤是那一個呢?

【解決方案】

? ?由于并不知道RAID中那一塊硬盤是早掉線的,所以沒辦法重組RAID。經過認真思考后確定有兩種可行方案。

方案一:窮舉法,即假設其中某一塊磁盤是早就掉線的,踢掉此盤,重組RAID然后生成全部數據,最后將數據掛載到HP-P4500上,看數據是否正確。如果數據不正確,那么再假設另一塊盤是掉線的,以此循環。雖然這種方案可行,但是由于每次重組RAID生成數據的數據時間太長,并且準確性很低。

方案二:窮舉加校驗,還是和窮舉法一樣,假設某個磁盤是掉線的,踢掉磁盤后重組RAID,但不是生成全部的數據,而是只生成前面5G的數據,因為HP-P4500內部存儲的數據的索引表位圖位于RAID的前幾個G之內(因為在這之前我們已經研究過HP-P4500的內部存儲原理)。我們只需要查看這個索引表的位圖的信息是否正確就可以判斷此RAID是否正確。如果正確那么生成此RAID的數據即可完成RAID的重組。

【實施方案】

? ?采用第二種解決方案,經過幾次測試很快就判斷出正確的RAID。連夜生成此RAID的數據。生成完數據后,將生成的數據和第一組完好的RAID一同掛載到HP-P4500上。然后啟動存儲,上層的卷由不可用變的可用了。查看了最新的文件發現一切都正常。

【數據恢復成功】

? ?由于上層的卷直接可以用了,所以數據也都可見了,但是考慮到安全問題,我們還是將卷里的文件都拷貝出來,然后移交給客戶。經過漫長的底層分析,加上不斷的測試。終于在用戶要求的時間內將數據恢復完成。整個恢復過程一共歷時兩天。之所以能這么快恢復,還是在于我們之前研究過HP-P4500的存儲原理。知道了HP-P4500的存儲原理以后,關于它的所有數據災難都可以進行恢復。




本文轉自yun5277 51CTO博客,原文鏈接:http://blog.51cto.com/dengqi/1408841,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257092.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數組指針與指針數組的區別

1、數組指針 定義:數組指針式一個指向一維數組的指針變量,定義數組指針的格式為: int (*p) [5] 數據類型 (*指針名) [常量表達式] 數組元素為整形,*p的兩側圓括號不能省略 2、指針數組 定義&#xff1a…

[thinkphp] 是如何輸出一個頁面的

表面上看,TP輸出一個頁面很簡單:$this->display(); 實際上是怎么回事呢?$this->display(); 這個display()方法是定義在ThinkPHP/Library/Think/Controller.class.php這個文件中的 protected function display($templateFile,$charset,$…

關于反射blog

非常好的Java反射例子 瘋狂java 在學習編程的過程中,我覺得不止要獲得課本的知識,更多的是通過學習技術知識提高解決問題的能力,這樣我們才能走在最前方,更多Java學習,請瀏覽瘋狂java官網。Java反射在我們Java學習的…

學習筆記(11):Python網絡編程并發編程-粘包底層原理分析

立即學習:https://edu.csdn.net/course/play/24458/296241?utm_sourceblogtoedu1.send和recv底層分析 1)不管是recv還是send都不是直接接收對方數據或者發送給對方數據,而是對自己的操作系統內存進行操作; 2)客戶端與服務端并不是…

切面編程(4)

這篇介紹的是最為常見的切面編程首先介紹的是通過注解Aspect來配置AOP類Component Aspect public class Acsep {//定義切入點Pointcut("execution(* com.test.*.*(..))")//切面公式public void aspect(){ }//執行方法之前Before("aspect()")public void be…

c++存儲類型

1、c中的存儲類型一般有靜態存儲、棧、和自動類型三種,一般默認值是為自動類型auto

多線程編程 (1) -NSThread

多線程編程 (1) -NSThread 每個iOS應用程序都有個專門用來更新顯示UI界面、處理用戶觸摸事件的主線程,因此不能將其他太耗時的操作放在主線程中執行,不然會造成主線程堵塞(出現卡機現象),帶來極壞的用戶體驗。一般的解決方案就是將那些耗時的…

交叉工具鏈的搭建方法(測試成功)

之前安裝了一個rehat6的linux系統,把交叉編譯搭建給忽視了,結果在編譯uboot的時候出現問題,顯示找不到arm-linux-gcc。于是自己來搭建交 叉編譯環境。出現好多錯。先是解壓時沒在后邊加 -C/,后是直接自己創建了個目錄&#xff0c…

VMware內存回收與分配機質

VMware內存回收與分配機質 整理了下學習過的東西,為了防止以后忘記。^_^VMware內存回收按照內存回收先后順充,依次為:1.TPS 透明頁共享2.Ballooning 氣球回收3.Compressiong 內存壓縮4.Swapping 內存交換網上對這個的解釋也挺多&#xff…

學習筆記(12):Python網絡編程并發編程-解決粘包問題-簡單版本

立即學習:https://edu.csdn.net/course/play/24458/296243?utm_sourceblogtoedu 粘包現象的解決:簡單版 1.思路: 在服務器端計算出執行命令后結果的字節長度,然后再將字節數長度send即通知給客戶端,客戶端根據這個字節數的長度一…

關于for循環中的變量int i 如果跳出了這個for循環后,i的值是繼續保留還是被釋放掉了

#include<iostream> using namespace std;int main() {char a[10]; //定義一個一維數組用來存放字符串int i,j; //定義變量cout<<"請輸入字符&#xff1a;“;for(i0;i<10;i) //接收用戶的輸入{ ci…

keil優化等級設置

優化級別說明&#xff08;僅供參考&#xff09;&#xff1a;則其中的 Code Optimization 欄就是用來設置C51的優化級別。共有9個優化級別&#xff08;書上這么寫的&#xff09;&#xff0c;高優化級別中包含了前面所有的優化級別。現將各個級別說明如下&#xff1a;0級優化&…

SVN命令使用詳解

1、檢出svn co http://路徑(目錄或文件的全路徑) [本地目錄全路徑] --username 用戶名 --password 密碼svn co svn://路徑(目錄或文件的全路徑) [本地目錄全路徑] --username 用戶名 --password 密碼svn checkout http://路徑(目錄或文件的全路徑) [本地目錄全路徑]…

服務器排障 之 nginx 499 錯誤的解決

問題描述&#xff1a; Nginx 服務器大量499報錯 220.181.165.136 - - [18/May/2015:10:31:02 0800] "POST /v1/jobsHTTP/1.1" 499 0 "" "bdHttpRequest/1.0.0"115.239.212.7 - - [18/May/2015:10:31:03 0800] "GET /v1/job/643309e3-dc73-4…

二叉查找樹的先序遍歷,中序遍歷,后序遍歷

1、有一個二叉查找樹&#xff0c;存儲者字符A,B,C,D,E,F,G,H,下面哪個結果是后序樹遍歷結果 A. ADBCEGFH B. BCAGEHFD C. BCAEFDHG D. BDACEFHG 我的結題思路是將每個答案按照后序的遍歷方法把二叉樹存儲數據的結構還原&#xff0c;看是否滿足二叉樹的性質。 二叉樹的性…

學習筆記(13):Python網絡編程并發編程-解決粘包問題-終極版本

立即學習:https://edu.csdn.net/course/play/24458/296244?utm_sourceblogtoedu 粘包現象解決&#xff08;終極版&#xff09; 1.簡單版的問題所在 1&#xff09;報頭信息不一定只是包含著命令執行結果的字節數長度&#xff0c;在文件傳輸的時候也可能包含文件名等&#xff0c…

C#多態

C#多態 多態性&#xff08;C# 編程指南&#xff09;轉自MSDN通過繼承&#xff0c;一個類可以用作多種類型&#xff1a;可以用作它自己的類型、任何基類型&#xff0c;或者在實現接口時用作任何接口類型。這稱為多態性。C# 中的每種類型都是多態的。類型可用作它們自己的類型或用…

Ubuntu 14.04.02 安裝openvswitch-2.3.1

Open vSwitch安裝 安裝好操作系統 # lsb_release -a LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:security…

struts-上傳

一、創建項目項目名稱&#xff1a;demoupload二、添加jar包commons-fileupload-1.2.2.jarcommons-io-2.0.1.jarcommons-lang3-3.1.jarfreemarker-2.3.19.jarjavassist-3.11.0.GA.jarognl-3.0.5.jarstruts2-core-2.3.4.1.jarxwork-core-2.3.4.1.jar三、在web.xml文件中配置過濾器…

將數組作為參數,調用該函數時候給的是數組地址還是整個數組

1、在實際的應用中&#xff0c;數組經常作為函數參數&#xff0c;將數組中的數據傳遞到另外一個函數中&#xff0c;一般來說&#xff0c;傳遞可以采用兩種方法&#xff1a; 1>、數組元素作為函數的實參時&#xff0c;用法跟普通變量作參數相同&#xff0c;將數組元素的值傳遞…