自宅サーバーのRAID1HDDの片方が壊れたので復旧。
備忘録としてコマンドログを。環境によってデバイス名や数値が違ってくるのでこのままやるのはとても危険なので注意。
640GBだったけど、今の時代はそんなHDDが簡単に手に入らない上にコスパが悪いので1TBで代用。
[root@localhost ~]# fdisk -l Disk /dev/sda: 640.1 GB, 640135028736 bytes 255 heads, 63 sectors/track, 77825 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 fd Linux raid 自動検出 /dev/sda2 14 77695 623980665 fd Linux raid 自動検出 /dev/sda3 77696 77825 1044225 fd Linux raid 自動検出 Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes ディスク /dev/sdb は正常な領域テーブルを含んでいません Disk /dev/md2: 638.9 GB, 638956077056 bytes 2 heads, 4 sectors/track, 155995136 cylinders Units = シリンダ数 of 8 * 512 = 4096 bytes ディスク /dev/md2 は正常な領域テーブルを含んでいません Disk /dev/md1: 1069 MB, 1069219840 bytes 2 heads, 4 sectors/track, 261040 cylinders Units = シリンダ数 of 8 * 512 = 4096 bytes ディスク /dev/md1 は正常な領域テーブルを含んでいません Disk /dev/md0: 106 MB, 106823680 bytes 2 heads, 4 sectors/track, 26080 cylinders Units = シリンダ数 of 8 * 512 = 4096 bytes ディスク /dev/md0 は正常な領域テーブルを含んでいません [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda1[0] 104320 blocks [2/1] [U_] md1 : active raid1 sda3[0] 1044160 blocks [2/1] [U_] md2 : active raid1 sda2[0] 623980544 blocks [2/1] [U_] unused devices:[root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes ディスク /dev/sdb は正常な領域テーブルを含んでいません [root@localhost ~]# fdisk /dev/sdb デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも 含んでいません 新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。 このディスクのシリンダ数は 121601 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) 警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって 正常になります コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-121601, default 1): 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-121601, default 121601): 13 コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 最初 シリンダ (14-121601, default 14): 14 終点 シリンダ または +サイズ または +サイズM または +サイズK (14-121601, default 121601): 77695 コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 3 最初 シリンダ (77696-121601, default 77696): 77696 終点 シリンダ または +サイズ または +サイズM または +サイズK (77696-121601, default 121601): 77825 コマンド (m でヘルプ): t 領域番号 (1-4): 1 16進数コード (L コマンドでコードリスト表示): fd 領域のシステムタイプを 1 から fd (Linux raid 自動検出) に変更しました コマンド (m でヘルプ): 2 2: 不明なコマンド コマンドの動作 a ブート可能フラグをつける b bsd ディスクラベルを編集する c dos 互換フラグをつける d 領域を削除する l 既知の領域タイプをリスト表示する m このメニューを表示する n 新たに領域を作成する o 新たに空の DOS 領域テーブルを作成する p 領域テーブルを表示する q 変更を保存せずに終了する s 空の Sun ディスクラベルを作成する t 領域のシステム ID を変更する u 表示/項目ユニットを変更する v 領域テーブルを照合する w テーブルをディスクに書き込み、終了する x 特別な機能 (エキスパート専用) コマンド (m でヘルプ): t 領域番号 (1-4): 2 16進数コード (L コマンドでコードリスト表示): fd 領域のシステムタイプを 2 から fd (Linux raid 自動検出) に変更しました コマンド (m でヘルプ): t 領域番号 (1-4): 3 16進数コード (L コマンドでコードリスト表示): fd 領域のシステムタイプを 3 から fd (Linux raid 自動検出) に変更しました コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。 [root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/sdb1 1 13 104391 fd Linux raid 自動検出 /dev/sdb2 14 77695 623980665 fd Linux raid 自動検出 /dev/sdb3 77696 77825 1044225 fd Linux raid 自動検出 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sda1[0] 104320 blocks [2/1] [U_] md1 : active raid1 sda3[0] 1044160 blocks [2/1] [U_] md2 : active raid1 sda2[0] 623980544 blocks [2/1] [U_] unused devices: [root@localhost ~]# mdadm /dev/md0 --add /dev/sdb1 mdadm: added /dev/sdb1 [root@localhost ~]# mdadm /dev/md1 --add /dev/sdb3 mdadm: added /dev/sdb3 [root@localhost ~]# mdadm /dev/md2 --add /dev/sdb2 mdadm: added /dev/sdb2 [root@localhost ~]# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[1] sda1[0] 104320 blocks [2/2] [UU] md1 : active raid1 sdb3[1] sda3[0] 1044160 blocks [2/2] [UU] md2 : active raid1 sdb2[2] sda2[0] 623980544 blocks [2/1] [U_] [>....................] recovery = 0.2% (1844032/623980544) finish=538.8min speed=19243K/sec unused devices:
同期が完了すれば作業完了。
[追記]
同期完了後、sdbにはgrubが入っていないのでsdaがイカれるとにっちもさっちもいかなくなるので、インストールしておく。
参考記事:https://www.miraclelinux.com/technet/faq/data/00080.html