Ubuntu 12.04 LTSにRAID1アレイがあり、私の/ sda HDDは数日前に交換されました。私はこのコマンドを使用して置き換えます:
# go to superuser
Sudo bash
# see RAID state
mdadm -Q -D /dev/md0
# State should be "clean, degraded"
# remove broken disk from RAID
mdadm /dev/md0 --fail /dev/sda1
mdadm /dev/md0 --remove /dev/sda1
# see partitions
fdisk -l
# shutdown computer
shutdown now
# physically replace old disk by new
# start system again
# see partitions
fdisk -l
# copy partitions from sdb to sda
sfdisk -d /dev/sdb | sfdisk /dev/sda
# recreate id for sda
sfdisk --change-id /dev/sda 1 fd
# add sda1 to RAID
mdadm /dev/md0 --add /dev/sda1
# see RAID state
mdadm -Q -D /dev/md0
# State should be "clean, degraded, recovering"
# to see status you can use
cat /proc/mdstat
これは、同期後のmdadmの出力です。
/dev/md0:
Version : 0.90
Creation Time : Wed Feb 17 16:18:25 2010
Raid Level : raid1
Array Size : 470455360 (448.66 GiB 481.75 GB)
Used Dev Size : 470455360 (448.66 GiB 481.75 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Thu Nov 1 15:19:31 2012
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 92e6ff4e:ed3ab4bf:fee5eb6c:d9b9cb11
Events : 0.11049560
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
ビルドの完了後、「fdisk -l」は、有効でないパーティションテーブル/ dev/md0を示しています。これは私のfdisk -l出力です:
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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 identifier: 0x00057d19
Device Boot Start End Blocks Id System
/dev/sda1 * 63 940910984 470455461 fd Linux raid autodetect
/dev/sda2 940910985 976768064 17928540 5 Extended
/dev/sda5 940911048 976768064 17928508+ 82 Linux swap / Solaris
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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 identifier: 0x000667ca
Device Boot Start End Blocks Id System
/dev/sdb1 * 63 940910984 470455461 fd Linux raid autodetect
/dev/sdb2 940910985 976768064 17928540 5 Extended
/dev/sdb5 940911048 976768064 17928508+ 82 Linux swap / Solaris
Disk /dev/md0: 481.7 GB, 481746288640 bytes
2 heads, 4 sectors/track, 117613840 cylinders, total 940910720 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 identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
これは私のgrubインストールの出力です:
root@answe:~# grub-install /dev/sda
/usr/sbin/grub-setup: warn: Attempting to install GRUB to a disk with multiple partition labels or both partition label and filesystem. This is not supported yet..
/usr/sbin/grub-setup: error: embedding is not possible, but this is required for cross-disk install.
root@answe:~# grub-install /dev/sdb
Installation finished. No error reported.
一部のバージョン情報:
grub-install (GRUB) 1.99-21ubuntu3.4
3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
そう
1) "update-grub"は/ sdaおよび/ sdb Linuxのみを検索し、/ md0は検索しません
2)「dpkg-reconfigure grub-pc」は「GRUBは次のデバイス/ dev/md0のインストールに失敗しました」と表示します
/ sdb1から(そして手動ではなく、自動的に)を除いて、DEGRADEDモードでシステムをロードできません...
誰でもこの問題を解決できますか?これで頭が痛い。
更新:ゼロで新しいディスクを一掃した後、sfdisk update-grubでパーティションをコピーします:
root@answe:~# grub-install /dev/sda
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Installation finished. No error reported.
Update-grubが同じエラーを生成するようになりました:
root@answe:~# update-grub
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Generating grub.cfg ...
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Found linux image: /boot/vmlinuz-3.2.0-32-generic
Found initrd image: /boot/initrd.img-3.2.0-32-generic
...
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Found memtest86+ image: /boot/memtest86+.bin
No volume groups found
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
Found Ubuntu 12.04.1 LTS (12.04) on /dev/sda1
Found Ubuntu 12.04.1 LTS (12.04) on /dev/sdb1
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
error: found two disks with the index 2 for RAID md0.
done
警告は根本的な原因を指摘しています。交換に使用した新しいディスクは、おそらくファイルシステムを使用していたものであり、grub-setup
はおそらくまだそこにあるメタデータによって混乱しています。
したがって、ディスクの最初から最初のパーティションまですべてを消去します。 62
出力からfdisk -l
番号を取得しました。 63
は最初のパーティションの始まりであり、クリーンアップできる前に62
セクターがあるようです。
dd if=/dev/zero of=/dev/sda bs=512 count=62
次に、パーティションテーブルを再作成します。
sfdisk -d /dev/sdb | sfdisk /dev/sda
sfdiskはおそらく「カーネルが古いパーティションテーブルを使用している可能性がある」というメッセージを表示しますが、実際にはchangeingパーティションテーブルではないため、警告は無視できます。
その後、grub-install /dev/sda
を実行できるはずです。
更新:
それでもエラーが発生する場合は、ディスクをRAIDから取り出し、最初と最後からさらにデータをゼロにしてみてください。または、ディスク全体をゼロにします(dd if=/dev/zero of=/dev/sda
)。次に、sfdisk -d /dev/sdb | sfdisk /dev/sda
から始めて、以前と同じようにRAIDに追加し直します。また、他のいくつかの場所で推奨されているように、メタデータ形式1.0への切り替えを検討してください。