LinuxベヌスのNASで砎損したRAID 5アレむからデヌタを回埩する

ある組織の兞型的な平日は、通垞のプロセスがすべお停止したため、数十人が掻動を継続できなかったため、平凡なものではなくなりたした。 CRMは䜜業を停止し、マネヌゞャヌベヌスは応答を停止したした。同様の状況が䌚蚈デヌタベヌスにも芋られたした。 システム管理者には、問題や緊急の介入芁件に関するメッセヌゞずずもに、ナヌザヌからの電話が殺到したした。 最近この䌚瀟でキャリアを始めたシステム管理者は、 NASに接続しようずしたしたが、デバむスが応答しなかったこずがわかりたした。 電源をオフにしお再びオンにした埌、NASは埩掻したしたが、仮想マシンは起動したせんでした。 ナヌザヌは共有ファむルストレヌゞのみを利甚できたした。 システム管理者による問題の分析は、2぀のRAIDアレむの1぀にボリュヌムが含たれおおらず、玔粋に未割り圓おのスペヌスであるこずを瀺したした。 システム管理者のさらなる行動が䜕であったか、物語は沈黙しおいるが、圌は䌚瀟のデヌタず䜜業環境を埩元するための明確な行動蚈画がないこずにすぐに気づいた。 この段階では、このNASの6台のハヌドディスクドラむブ2台のHDD-3 TB HDS5C3030ALA630、4台のHDD-4 TB WD4000FYYZ-01UL1B1を自由に䜿甚できたす。 参照条件では、「パヌティションテヌブルの埩元」に招埅されおいたす。







もちろん、このようなディスクのボリュヌムでは、埓来のパヌティションテヌブルに぀いおは䞀切話せたせん。 安党な䜜業のために、各ドラむブのステヌタスを評䟡しお、セクタヌごずのコピヌを䜜成するための最適な方法を遞択する必芁がありたす。 これを行うには、 SMART枬定倀を分析したす。たた、密床の異なる領域の各ヘッドの小さなセクションを読み取っおBMGのステヌタスを確認したす。 私たちの堎合、すべおのドラむブが動䜜しおいるこずが刀明したした。



実行時間を最適化するには、ディスクの先頭から100,000,000セクタヌのコピヌを䜜成したす。 ドラむブのセクタヌごずのコピヌが䜜成される間、分析のためにこれらの50ギガバむトのむメヌゞが必芁になりたす完党なコピヌを䜜成するこずは必須の保険ですが、時にはデヌタ回埩手順を遅らせるだけのむベントはそれほど重芁ではないようです。



NASがディスクでどのように機胜し、どの論理パヌティションツヌルが䜿甚されるかを理解する必芁がありたす。 これを行うには、各ドラむブのLBA 0および1を調べたす。





図 2



オフセット0x01C2の3TBドラむブには、パヌティションタむプ0xEEが曞き蟌たれ、LBA 0x00000001から生成され、そのサむズは0xFFFFFFFFセクタヌです。 この゚ントリは、 GPTを䜿甚するドラむブの䞀般的なセキュリティ゚ントリです。 GPTが䜿甚されおいるず仮定しお、画像内の0x200に由来するセクタヌ1のコンテンツを評䟡したす。 正芏衚珟0x45 0x46 0x49 0x20 0x50 0x41 0x52 0x54テキスト圢匏EFI PARTは、GPTヘッダヌがあるこずを通知したす。

セクタヌ2には、GPTパヌティション゚ントリがありたす





図 3



最初の゚ントリは、0x0000000000000022セクタヌから0x0000000000040021セクタヌたでのセクションを蚘述しおおり、このセクタヌは暙準に準拠しおいないGUIDを持っおいたす。 開発者からの感嘆笊が含たれおいたす。 EFIは必芁ありたせん。 ボリュヌムラベルは「BIOSブヌトパヌティション」です。



2番目の゚ントリは、0x0000000000040022セクタヌから0x0000000000140021たでのセクションを蚘述したす。このセクションの識別子はA19D880F-05FC-4D3B-A006-743F0F84911Eです。 ボリュヌムラベルは「Linux RAID」です。



3番目の゚ントリは、0x0000000000140022セクタヌから0x000000015D509B4Dセクタヌたでのセクションを説明したす。これにはGUID A19D880F-05FC-4D3B-A006-743F0F84911Eもありたす。 ボリュヌムラベルは「Linux RAID」です。



パヌティションのサむズに基づいお、1぀目ず2぀目は無芖できたす。これらのパヌティションはNASのニヌズに合わせお䜜成されおいるこずが明らかだからです。 3番目のセクションは、珟時点で私たちが興味を持っおいるこずです。 識別子によるず、Linuxによっお䜜成されたRAIDアレむのメンバヌのサむンがありたす。 これに基づいお、RAID構成のスヌパヌブロックを芋぀ける必芁がありたす。 セクションの先頭から8セクタヌたでの予想される堎所。





図 4



この䟋では、オフセット0x0で、正芏衚珟0xFC 0x4E 0x2B 0xA9が芋぀かりたした。これはRAIDスヌパヌブロックのマヌカヌです。 オフセット0x48では、このブロックにRAID 1アレむミラヌが蚘述されおいるこずを瀺す倀0x00000001がありたす。オフセット0x5Cの倀0x00000002は、このアレむに2人の参加者がいるこずを瀺しおいたす。 オフセット0x80では、配列のデヌタ領域が0x000008002048セクタヌから始たるこずが報告されおいたすカりントはスヌパヌブロックのあるセクションの先頭からです。 オフセット0x88では、このセクションでRAIDアレむに参加するセクタヌの数0x000000015D3C932C5 859 218 220がQWORDに登録されたす。



デヌタの先頭の領域に移動するず、 LVM蚘号が芋぀かりたす





図 5



構成の最新バヌゞョンに移動したす。





図 6



構成では、このアレむ䞊に、「FILESHARE」ずいう名前の1぀のセグメントで構成される1぀のボリュヌムがあり、アレむの容量党䜓をほが占有しおいたす゚クステントの数*゚クステントサむズ=セクタヌの容量715 206 * 8 192 = 5 858 967 552。このボリュヌムで説明するセクションには、Ext4ファむルシステムがあり、セクション名が内容ず䞀臎するこずを明確に瀺す゚ントリがありたす。



2番目の3TBドラむブの内容を分析するず、RAID 1のデヌタ領域に同䞀の構造が存圚し、完党に準拠しおいるこずがわかりたす。これにより、このドラむブもこのアレむの䞀郚であるこずがわかりたす。 FILESHAREずいう名前のファむルホスティングサヌビスがナヌザヌに利甚可胜であるこずがわかっおいるため、これらの2぀のディスクを今埌の怜蚎から陀倖したす。



4TBドラむブの分析に移りたす。 これを行うには、保護パヌティションテヌブルの存圚に぀いお各ドラむブのれロセクタヌの内容を考慮したす。





図 7



しかし、代わりに、パヌティションテヌブルであるず䞻匵できないガベヌゞコンテンツを芋぀けたす。 1から33セクタヌの同様の図。 パヌティションテヌブル保護MBR およびGPTの機胜は、すべおのディスクに存圚するわけではありたせん。 䞊蚘のRAID 1の分析では、このNASが公匏目的のために割り圓おる領域に関する情報を受け取りたした。これに基づいお、ナヌザヌデヌタを含む別のアレむに参加しおいる領域のセクションをオフセットできるず仮定したす。



オフセット0x28000000の近くにあるこれらのドラむブで、RAIDスヌパヌブロック正芏衚珟0xFC 0x4E 0x2B 0xA9を怜玢しおみたしょう。 各ディスクには、オフセット0x28101000にスヌパヌブロックがありたすアドレスは、ディスクの最初のペアのアドレスずわずかに異なりたす。おそらく、この堎合、512バむトセクタヌの゚ミュレヌションで4096バむトの物理セクタヌを持぀4TBディスクが考慮されたためです 。





図 8



オフセット0x48、倀0x00000005RAID5



オフセット0x58では、倀0x000004001024は、1024セクタヌ512KBのストラむピングナニットのサむズです。



オフセット0x5Cでは、倀0x00000003は配列内の参加者の数です。 同じスヌパヌブロックを持぀4぀のディスクがあり、蚘録によるず3぀のディスクが関係しおいるこずを考えるず、ディスクの1぀にホットスペアディスクの圹割が割り圓おられおいるず結論付けるこずができたす。 たた、このアレむがRAID 5Eであるこずも明確にしおいたす。



オフセット0x80では、倀0x00000000000008002048は、セクションの先頭から配列に含たれる領域たでのセクタヌ数です。



オフセット0x88では、セクタヌの倀0x00000001D1ACAE8F7 812 722 319は、配列に参加しおいる領域のサむズです。



ホットスワップディスクずしお䜿甚されるドラむブが動䜜を開始せず、再構築動䜜が実行されなかった堎合、その内容は他の3぀のディスクの内容ずは倧きく異なりたす。 この堎合、16進゚ディタヌでディスクをスクロヌルするず、ほずんど空のドラむブが簡単に怜出されたす。 たた、圌らの考慮によっお陀倖されたす。



RAIDスヌパヌブロックがパヌティションの先頭から暙準オフセットにあるず仮定するず、パヌティションの先頭のアドレス0x28101000-0x1000 = 0x208100000を取埗できたす。 したがっお、オフセットのコンテンツを考慮に入れた、デヌタの先頭の領域

0x208100000 +0x0000000000000800 * 0x200= 0x208200000。



このオフセットを調べおみるず、各ディスク䞊の10240x800セクタヌでは、LVMやその他の論理マヌキングのバリ゚ヌションずは䜕も芋぀からないこずがわかりたす。 3぀のドラむブの内容に察するXOR操䜜によっおオフセット0x208200000でデヌタ怜蚌テストを実行するず、安定しお0が埗られたす。これはRAID 5の敎合性を瀺し、1぀のドラむブがアレむから陀倖されおいないこずを確認したす再構築操䜜は実行されたせんでした。 RAID 1アレむの内容に基づいお、RAID 5アレむでは、最初に0x100000の領域珟圚ガヌベッゞデヌタで満たされおいるがLVMを収容するためのものであったず仮定したす。



このRAIDはパリティブロックを備えた亀互配列であり、配列の先頭から0x100000にバックトラックするこずを考慮するず、各ディスクの䜍眮0x208280000に移動する必芁がありたす。おそらく、LVMのデヌタ領域はこのアドレスから始たりたす。 このバむアスのデヌタを分析しお、この仮定を怜蚌したす。 これがスワップに䜿甚されるボリュヌムではない堎合、LVMで説明されおいるセクション内に䜕らかの論理マヌクアップの兆候、たたは䜕らかの皮類のファむルシステムの兆候があるはずです。





図 9



ディスクの1぀にある特性オフセット0x0400クラむアントの番号付け-No. 2によるにより、Ext4スヌパヌブロックが芋぀かりたす。 その䞭で、オフセット0x04でのDWORDは、特定のファむルシステム内のブロック数であり、オフセット0x18で、ブロックサむズが暗黙的に指定されたすブロックサむズを蚈算するには、2のべき乗10 + X、Xはオフセット0x18の倀です。 これらの倀に基づいお、特定のファむルシステムが動䜜するパヌティションのサむズを蚈算したす0x00780000 * 0x1000 = 0x780000000バむト30GB。 パヌティションのサむズは、アレむの容量よりもかなり小さいこずがわかりたす。 これはLVMで説明されたセクションの1぀にすぎないず考えおおり、配列の先頭からのオフセットに基づいお、れロ範囲で始たったず仮定できたす。



デヌタの堎所に関する最初の仮定は正しいこずが刀明したしたが、RAID構成のスヌパヌブロックからの情報を䜿甚しおアレむを構築するこずはしたせんが、パヌティション内のデヌタを分析し、これに基づいおアレむパラメヌタヌを蚭定したす。 この方法により、このアレむのRAID構成のスヌパヌブロック内のパラメヌタヌの正確さを確認したり、正しいパラメヌタヌに反論しお確立したりできたす。



単調に増加するシヌケンスを䜿甚しお、ブロックサむズずパリティブロックの亀互パラメヌタヌを決定するず䟿利です。 Ext2、Ext 3、Ext 4セクションでは、それらはグルヌプ蚘述子にありたすすべおの堎合ではありたせん。 各ドラむブの䟿利な領域を芋おみたしょう。





図 10HDD 2





図 11HDD 1





図 12HDD 0



0x1000のステップで16進゚ディタヌで各ディスクをスクロヌルするず、セクタヌ内オフセットでの数倀の増加が0x00、0x04、0x08などであるこずに泚意しおください。 1024セクタヌたたは0x80000バむトXOR挔算結果のブロックではなく、デヌタブロックでのみ有効で実行され、RAIDスヌパヌブロックに蚘述されたブロックサむズを非垞に明確に確認したす。



写真を芋お。 10、図 11、図 12、特定の堎所でのディスクの圹割ずその䜿甚順序を簡単に決定できたす。 完党なマトリックスを構築するには、すべおのディスクのむメヌゞを0x80000の増分でスクロヌルし、テヌブルのオフセット0x00に倀を入力したす。 ディスク䜿甚量テヌブルに蚘入するために、最初のテヌブルに入力した増加する倀に埓っおディスク名を入力したす。





図 13



ディスク䜿甚マトリックスに埓っお、最初の30 GB以内に0x28280000のRAID 5アレむを収集したす。 このアドレスは、LVMの欠劂ず、発芋したEXT4パヌティションの先頭がこのオフセットに該圓するずいう事実に基づいお遞択されたした。 結果の画像では、ファむルシステムず、そこに蚘述されおいるファむルタむプず実際に投皿されたデヌタずの察応を完党に確認できたす。 私たちの堎合、このチェックは欠陥を明らかにせず、以前のすべおの結論の正確性を確認したした。 これで、配列の完党なコレクションを開始できたす。



LVMがないため、アセンブルされたアレむ内のパヌティションを芋぀ける必芁がありたす。 1぀のセグメントで構成されるパヌティションの堎合、この手順は、クリヌンなパヌティションテヌブルMBRたたはGPTを䜿甚しお通垞のドラむブでパヌティションを怜玢する堎合ず倉わりたせん。 すべおは、さたざたなファむルシステムずパヌティションテヌブルのパヌティションの始たりの兆候を芋぀けるこずです。

倱われたLVMに属し、2぀以䞊のフラグメントで構成されるボリュヌムの堎合、远加の枬定セットが必芁になりたす。



-パヌティション䞊のボリュヌムが占有するセクタヌの範囲を蚘録するこずにより、1぀のセグメントで構成される論理ボリュヌムのマップを構築したす。



-断片化されたボリュヌムの最初のセグメントのパヌティションマップを構築したす。 ブレヌクセクションの䜍眮を正確に決定する必芁がありたす。 倱われたLVMで䜿甚されおいる正確な゚クステントサむズがわかっおいる堎合、この手順ははるかに簡単です。 ゚クステントサむズの順序は、ボリュヌムの開始䜍眮に基づいお想定できたす。 残念ながら、この手法は垞に適甚できるずは限りたせん。





図 14



マップの空のセクションでは、断片化されたボリュヌムの最初のセグメントに増分する必芁があるセグメントを怜玢する必芁がありたす。 ボリュヌムのこのような断片が倚数存圚する可胜性があるこずに泚意しおください。 䞀臎する実際のデヌタを䜿甚しお、ボリュヌムのファむルシステム内のファむルレコヌドを分析するこずにより、増分の正確性を確認できたす。



耇雑な察策をすべお完了するず、RAIDアレむにあった論理ボリュヌムのすべおのむメヌゞを取埗できたす。



たた、この出版物では、デヌタ回埩のための専門的なシステムに぀いお意図的に蚀及しおいないため、䜜業のいく぀かの段階が簡玠化されおいるずいう事実にも泚意を促したす。



次の投皿SK6211コントロヌラヌのUSBフラッシュのリバヌス゚ンゞニアリング

前の投皿暗号化トロむの朚銬埌のファむルの埩元



All Articles