web-dev-qa-db-ja.com

3つの同一のディスクの「mdadm:/ dev / sdc1がアレイに参加するのに十分な大きさではない」を修正するにはどうすればよいですか?

サーバーgrubのUbuntu 12.04 LTSにアップグレードした後、raidアレイについてエラーが発生し、文句を言うようになりましたが、すべてが機能しているように見えますが、grubがエラーを出すのは少し不安です。

 grub-pc(1.99-21ubuntu3.7)のセットアップ... 
エラー:RAID md0のインデックス2の2つのディスクが見つかりました。
エラー:余分なRAIDメンバー(3が見つかりました。

Grubが更新されると、これらのエラーがたくさん発生します。

事実は次のとおりです。raid5セットアップで3つの同一のディスクがあり、2つのディスクには1つのプライマリパーティションがアレイに追加されますが、3番目のディスクはプライマリパーティションなしで追加されます。すなわち。 mdam --manage /dev/md_d0 --add /dev/sdc

これがgrubの不満の理由だと推測しています。

この問題を発見してから、プライマリパーティションが欠落しているディスクを無効にし、プライマリパーティションを作成し、cfdisk /dev/xxxPrint Partition tableで同じように見えることを確認しました。そして、RAIDアレイに新しいパーティションを追加しようとしましたが、RAIDアレイに追加するにはパーティションが小さすぎるというメッセージが表示されました。

> Sudo mdadm /dev/md_d0 --add /dev/sdc1

mdadm: /dev/sdc1 not large enough to join array

パーティションテーブルはすべて同じように見えますが、

 /dev/sdc

のパーティションテーブルFirst Last 
#タイプセクターセクターオフセット長さファイルシステムタイプ(ID)フラグ
-------- ----------- ----------- ------ ----------- ----------- --------- ---- 
 Pri/Log 0 2047 * 0#2048 * Free Spaceなし
 1プライマリ2048 * 3907029167 * 0 3907027120 * Linux raid auto(FD )なし
 
/dev/sdd 
 
のパーティションテーブルFirst Last 
#タイプセクターセクターオフセット長さファイルシステムタイプ(ID)フラグ
-------- ----------- ----------- ------ ---------- --------------------- ---- 
 Pri/Log 0 2047 * 0#2048 * Free Spaceなし
 1プライマリ2048 * 3907029167 * 0 3907027120 * Linux raid auto(FD)なし
 
/dev/sde 
 
のパーティションテーブルFirst Last 
#タイプセクターセクターオフet Length Filesystem Type(ID)Flag 
-------- ----------- ----------- ------ ----------- -------------------- ---- 
 Pri/Log 0 2047 * 0#2048 *空き領域なし
 1プライマリ2048 * 3907029167 * 0 3907027120 * Linux raid auto(FD)なし

または、実際にcfdiskの未加工データとしてパーティションテーブルを印刷する場合、いくつかの違いがありますが、それが何を意味するのか解読できません。

-> diff sde.raw sdc.raw 
 1c1 
ディスクドライブ:/dev/sde
---
ディスクドライブ:/ dev /sdc
30c30
 0x1B0:00 00 00 00 00 00 00 00 B7 E9 70 74 00 00 00 20 
 --- 
 0x1B0:00 00 00 00 00 00 00 00 4B 0C 58 1C 00 00 00 20 

Ddを使用して作業ディスクの1つからmbrをコピーしようとすることに気付きましたが、cfdiskの生出力でパーティションテーブルが同一であっても同じエラーが発生します。

 $ Sudo dd if =/dev/sdd of =/tmp/sdd-mbr.bin bs = 512 count = 1 
 $ Sudo dd if =/tmp/sdd-mbr.bin of =/dev/sdc bs = 512 count = 1 
 $ cat /proc/partitions
major minor #blocks name 
 8 48 1953514584 sdd 
 8 49 1953513560 sdd1 
 8 32 1953514584 sdc 
 8 33 1953513560 sdc1 
 8 64 1953514584 sde 
 8 65 1953513560 sde1 

パーティションテーブルの生の比較では同じ出力が得られ、パーティションは同じサイズのように見えますが、/dev/sdc1を配列に追加しようとすると同じエラーが表示されます。

私の質問は、アレイ全体を分解してゼロから再作成することなくこれを修正する方法があるかどうかだと思いますか?

mdadm -D /dev/md_d0からの出力は、/ dev/sdcを再度追加したため、アレイはまだ再構築中です。

/dev/md_d0:
バージョン:0.90 
作成時間:Sat Aug 14 21:06:13 2010 
 Raid Level:raid5 
 Arrayサイズ:3907028992(3726.03 GiB 4000.80 GB)
使用済み開発サイズ:1953514496(1863.02 GiB 2000.40 GB)
 RAIDデバイス:3 
合計デバイス数:3 
優先マイナー:0 
永続性:スーパーブロックは永続的です。
 
更新時間:金1月11日18:36:06 2013 
状態:クリーン、劣化、回復
アクティブデバイス:2 
ワーキングデバイス:3 
故障デバイス:0 
スペアデバイス:1 
 
レイアウト:左対称
チャンクサイズ:64K 
 
再構築ステータス:53%完了
 
 UUID:74998045:22316376: 01f9e43d:ac30fbff(ホストサーバーに対してローカル)
イベント:0.19988 
 
番号メジャーマイナーRaidDevice状態
 3 8 32 0スペアの再構築/ dev/sdc 
 1 8 64 1アクティブ同期/dev/sde
 2 8 48 2アクティブ同期/dev/sdd

アレイ全体がパーティションではなく実際のデバイスで構成されているように見えるので、問題はsdd1およびsde1パーティションがハードドライブに残され、追加するとすぐに/ dev/sdcに上書きされることです配列に。

2
jeeloo

さて、何が起こっているのかというと、もともとパーティションなしでディスク全体でアレイを構築したということです。後でパーティションテーブルを追加したように見えますが、これによりアレイが破損します。 mdadmはディスク全体を想定しているため、ディスクパーティションは小さすぎるため、ここでは追加できません。

Grubで表示されるエラーは、0.9メタデータ形式では、raidメタデータがディスク全体に適用されるのか、パーティションに適用されるのかがわからないためです。新しいメタデータ形式を使用してアレイを再構築し、できれば今回は最初に個々のディスクをパーティション分割する必要があります。

0
psusi

ディスクのHPAを無効にする必要があります。

hPAが有効かどうかを確認します

$ hdparm -N /dev/sdc

   /dev/sdc:

    max sectors   = 586070255/586072368, HPA is enabled

次にHPAを無効にします

$ hdparm -N p586072368 /dev/sdc

「p」は再起動後の永続性に必要です。コンピューターを再起動してRAIDにディスクを追加する必要があるより

1
aleksandr