私は週末中ずっと、RAID1を備えたデュアルハードドライブを実行しているIntelICH7/ICH7-RSATA-IIコントローラーを備えた古いサーバーコンピューターでRAIDを動作させることを試みてきました。
ハードウェアRAIDをあきらめた後、私はソフトウェアに移りました。
現在、システムは両方のドライブから正常に起動し、sdbから正常に起動しますが、sdaを起動しようとすると、黒い画面にカーソルが点滅します。
これは、ドライブを物理的に取り外すことを意味します。ドライブを1つ取り外して起動すると、機能します。そのドライブを交換し、もう一方のドライブを取り外して起動すると、機能しません。
私の推測では、sdaにGRUBを正しくインストールしていません。
Sdbハードドライブを取り外し、インストールディスクをリカバリモードで起動します。次に、RAIDボリュームをマウントし、シェルに入ります。
まず、ソフトウェアRAIDについて私が従ったことを試してみます このチュートリアル 次のように指示されました。
# grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
Filesytem type is ext2fs, partition type 0xfd
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists ... no
Checking if "/grub/stage1" exists ... no
Error 2: Bad file or directory type
だから私は別のことを試みます:
入力時:
grub-install /dev/sda
私は得る
Searching for the GRUB installation directory ... found: /boot/grub
The file /boot/grub/stage1 not read correctly.
Ext4パーティションを使用しています。
次に何をしようか?
編集:
これがfdisk -l
の出力です
root@debian:~# fdisk -l
Disk /dev/sda: 153.4 GiB, 164696555520 bytes, 321672960 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x8225e6c2
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 194559 192512 94M fd Linux raid autodetect
/dev/sda2 194560 4194303 3999744 1.9G fd Linux raid autodetect
/dev/sda3 4194304 321671167 317476864 151.4G fd Linux raid autodetect
Disk /dev/sdb: 153.4 GiB, 164696555520 bytes, 321672960 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3cfa42ad
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 2048 194559 192512 94M fd Linux raid autodetect
/dev/sdb2 194560 4194303 3999744 1.9G fd Linux raid autodetect
/dev/sdb3 4194304 321671167 317476864 151.4G fd Linux raid autodetect
Disk /dev/md2: 151.3 GiB, 162413936640 bytes, 317214720 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/md0: 93.9 MiB, 98435072 bytes, 192256 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/md1: 1.9 GiB, 2046820352 bytes, 3997696 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
これがmdadm --detail --scan
の出力です
ARRAY /dev/md/2 metadata=1.2 name=repeater:2 UUID=cd8443a8:ca0b3a29:05496e49:b063704f
ARRAY /dev/md/0 metadata=1.2 name=repeater:0 UUID=c8a204e2:3e5a5e2c:50a136c7:d43777a7
ARRAY /dev/md/1 metadata=1.2 name=repeater:1 UUID=25bebb1e:c7f3245d:128bee5d:d58d9100
これがlsblk
の出力です
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 153.4G 0 disk
├─sda1 8:1 0 94M 0 part
├─sda2 8:2 0 1.9G 0 part
└─sda3 8:3 0 151.4G 0 part
└─md2 9:2 0 151.3G 0 raid1 /
sdb 8:16 0 153.4G 0 disk
├─sdb1 8:17 0 94M 0 part
│ └─md0 9:0 0 93.9M 0 raid1 /boot
├─sdb2 8:18 0 1.9G 0 part
│ └─md1 9:1 0 1.9G 0 raid1 [SWAP]
└─sdb3 8:19 0 151.4G 0 part
sr0 11:0 1 1024M 0 rom
編集2:これがcat /proc/mdstat
の出力です
root@debian:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active (auto-read-only) raid1 sdb2[1]
1998848 blocks super 1.2 [2/1] [_U]
md0 : active raid1 sdb1[1]
96128 blocks super 1.2 [2/1] [_U]
md2 : active raid1 sda3[0]
158607360 blocks super 1.2 [2/1] [U_]
bitmap: 2/2 pages [8KB], 65536KB chunk
unused devices: <none>
Lsblkの出力と/ proc/mdstatから、すべてのRAIDが劣化していることがわかります。 [_U]
または[U_]
を参照してください?各RAIDでは、1つの行のみが入力され(U
でマーク)、もう1つの行は入力されません(_
でマーク)。
したがって、私の推測は正しかったようです。通常の/ bootファイルシステムは1つのドライブにのみあり、現在はsdbと呼ばれています。あなたのsdaには同じ目的のパーティションがありますが、そのパーティションには有効で正しく設定されたブートファイルシステムが含まれていないようです。
両方のドライブに問題がないことが確実な場合は、それらをレイドに再度追加できます。未使用のパーティションからmdraidスーパーブロックをワイプする必要があります。アクティブなドライブからラベルをワイプしようとすると、mdadmツールは文句を言いますが、それでもコマンドを再確認する価値があります。/proc/mdstatとfdiskの出力から、次のことが推測されます。
Sda1、sda2、sdb3(現在すべて未使用)からラベルをワイプするには、次を使用します。
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sda2
mdadm --zero-superblock /dev/sdb3
何か文句を言うかもしれませんし、コマンドに--forceを追加する必要があるかもしれませんが、それは必要ないと思います。もう一度話しますが、すべてを再確認して、未使用のデバイスでのみレイドマークを消去してください。
次に、これらの未使用のデバイスをアレイに追加します。
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md2 /dev/sdb3
バックグラウンドで再同期を開始します。また、すべてのアレイが同じデバイスを使用していることを検出するため、たとえば、md1が完了するまでmd2の再同期を遅らせることに注意してください。/proc/mdstatに再同期の進行状況が表示されます。
再同期が完了すると、/ proc/mdstat内のすべてのデバイスの後に[UU]
が表示され、これらのアレイが最適な状態にあることを示します。
/ bootが機能するため、sdb1には正しく入力されたファイルシステムが含まれています。/boot md0が最適な状態にあるとき、sda1は同じデータを持っていると言えます(同じアレイ内の異なるバッキングデバイスは異なる行番号を持っているため、スーパーブロックのみがわずかに異なります)。手作業でgrubを再インストールできます。
device (hd0) /dev/sda
root (hd0,0)
setup (hd0)
ドライブの読み取りエラーを早期にキャッチするために、定期的に(たとえば、週に1回または月に1回)アレイチェックを実行するようにmdadmを設定することを強くお勧めします。私はかつて、両方のRAIDドライブに不良ブロックが(異なる場所に)ある場合の問題を解決しました。定期的なチェックにより、ファイルシステムのめったに使用されない部分に不良ブロックがある場合でも、障害のあるドライブを早期に排出することでこの問題を回避できます。それはトリッキーでした。チェックを開始するには、
echo "check" >> /sys/block/md127/md/sync_action
dmesgおよびmdmonログでエラーを探します。
しないでください単に他のデバイスにファイルシステムをddブートします。同じラベルと同じUUIDを持つ2つのファイルシステムは正常な状態ではありません。これは、リカバリまたはその他のフォレンジックプロセス中に一時的に発生することが許可されていますが、通常実行されている/ bootでは許可されていません。 UbuntuはUUIDによってパーティションをマウントします(/ etc/fstabを確認してください)。次にマウントされるのはどれでしょうか。言う方法はありません、これはランダムですが、これはランダムであるとは考えられていません。
RAIDバッキングデバイスへのアクセスは、カーネルのmdコードによっていくらかブロックされているため、RAID中は、システムは単一のデバイスであるmd0のみを認識し、問題は発生しません。
両方のディスクで非RAID/bootを維持するには、基本的に、ブートを更新するたびにファイルシステムのクローンを作成し、常にUUIDとラベルを変更する必要があります。これはエラーが発生しやすく、不便です。/bootをRAID1として使用するのが普通です。
/ bootにはメタデータ1.0を使用することをお勧めします。この場合、メタデータはデバイスの最後に配置されるため、RAIDサポートがない場合でも、パーティションからファイルシステムをマウントすることができます。まったく襲撃。しかし、それが今あなたのために働くならば、今のままにしておく方が良いです。
両方ディスクにブートローダー(grub stage1)をインストールする必要があります。ブートローダーはパーティションの外部にあり、MDRAIDアレイの外部にあるため、手動で行う必要があります。
次のコマンドを発行してください:grub-install /dev/sda
そして再起動を再試行しますsda