MdadmでCentOS 6.3 64ビットサーバーのセットアップを完了したところですが、電球が点灯し、grubは最初のドライブにのみインストールされることに気付きました。
私は私の疑いを確認するために一見した:
grub> find /grub/stage1
find /grub/stage1
(hd0,0)
そこで、デバイスマップを次のように更新しました。
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
((hd1)エントリは私が追加したことに注意してください
それで私は/ dev/sdbにgrubをインストールしようとしました
そして私は得る:
grub> root (hd1,0)
root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... no
Error 15t: File not found
だから私はグーグルをやった(悲しいことにグーグルはちょうど良い仕事をして、ここでは役に立たない何百ものGRUBインストール例を拾った)
いくつかの手がかりを見つけた後、私は試しました:
# grub-install --recheck /dev/sdb
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
# grub-install /dev/sdb
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
/ dev/sdbにgrubがインストールされていることを示唆しているのはどのような種類ですが、もう一度見てみると、やはり次のようになります。
grub> find /grub/stage1
find /grub/stage1
(hd0,0)
2つのドライブの分割出力:
SDA
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 500MB 500MB ext3 1 boot
2 500MB 81.0GB 80.5GB 2 raid
3 81.0GB 85.0GB 4000MB 3 raid
4 85.0GB 3001GB 2916GB 4 raid
SDB
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 500MB 500MB ext3 1
2 500MB 81.0GB 80.5GB 2 raid
3 81.0GB 85.0GB 4000MB 3 raid
4 85.0GB 3001GB 2916GB 4 raid
そして、mdadm mdstat:
Personalities : [raid1]
md1 : active raid1 sdb3[1] sda3[0]
3905218 blocks super 1.1 [2/2] [UU]
md2 : active raid1 sdb4[1] sda4[0]
2847257598 blocks super 1.1 [2/2] [UU]
md0 : active raid1 sda2[0] sdb2[1]
78612189 blocks super 1.1 [2/2] [UU]
誰かが状況に光を当てることができる人はいますか?私は現時点で私がそこに99%いて、明らかな何かを見逃しているように感じます。
ありがとう。
更新を編集:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md0 74G 18G 53G 25% /
tmpfs 580M 0 580M 0% /dev/shm
/dev/sda1 462M 98M 341M 23% /boot
xenstore 580M 64K 580M 1% /var/lib/xenstored
/はsda2で構成されるmd0にあり、sdb2はsda3であり、sdb3であるmd1はLVMですが、/ bootは/ sda1にのみあります
私はそれが問題だと思いますが、解決策はmd4を作成してsd a 1とsd b 1を含めることです。
頭の中で少し混乱しているかもしれませんが、パーティションにgrubがインストールされていないのではなく、ドライブの最初の数ブロック、つまりsdaまたはhd0/1がインストールされていると思いました。
明確化とアドバイスをいただければ幸いです。
これはあなたの問題になるはずです
root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
次の手順を実行します。
ディスクを強制的に新しいRAIDにします。
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1
/ bootパーティションになるraidメタデータを作成するときは、バージョン0.9を使用します。 Linuxは新しいバージョンを自動検出できません(ramdiskなし)。
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1 --metadata=0.9
Ext2またはext3を使用したフォーマット
ディストリビューションの最初の起動後:
2つのディスクMBRにGRUBをインストールします
# grub /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
quit
# grub /dev/sdb
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
quit
ブートローダーを編集する(Grub1への指示)
「デフォルト」行を検索し、以下の「フォールバック」オプションを追加します
vi /boot/grub/menu.lst
default 0
fallback 1
ブートローダーに別のエントリを追加します(ここでも、私がgrub1を選んだのは、それほど複雑ではなく、自分のニーズに十分対応できるためです)、それぞれがraidのメンバーである異なるブートパーティションをポイントしています。
title Debian GNU/Linux, kernel 2.6.32-5-686 (default)
root (hd0,0)
kernel /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
initrd /initrd.img-2.6.32-5-686
title Debian GNU/Linux, kernel 2.6.32-5-686 (fallback)
root (hd1,0)
kernel /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet
initrd /initrd.img-2.6.32-5-686
私の場合、私の/ md raidにLVMレイヤーがあることに注意してください。
できました。これは、「冗長な」ブートローダーを用意するのに十分なはずです。
これら2つのドライブを別のraid1アレイにマップするかどうかは、あなた次第です。これは、grubを_md4
_に直接インストールして、両方のインストールを手動で管理する煩わしさを回避できるため、これは正当な選択です。私はそれをやった™。
私の経験では、デバイスマップファイルはほとんど無関係であり、その動作(grubによるファイルの読み取り方法)は、完全に恣意的ではないとしても、せいぜい予測不可能です。
Grubシェルからのdevice
コマンドは、はるかに信頼性が高くなっています。あなたはそれに関するヘルプ情報を読むことができますが、基本的な構文はそれ自体で分かります:
_grub> device (hd0) /dev/md4
_
その後、/ dev/md4は、現在実行中のgrubセッションで_hd0
_にマップされ、デバイスマップファイルは無視されます。ここから、通常どおりroot (hd0)
およびsetup (hd0,x)
を使用します。パーティションにインストールする理由は、Henry Sによって説明されています。
AFAIK、ドライブ(MBR)の最初の512バイトに書き込まれる「ブートコード」(stage1)以外の唯一のものは、そのステージがメニューを探すパーティションの数です。
それを台無しにすることは可能です。 POST後にメニューではなくプロンプトが表示されますが、grubは、インストール時に一度指定されたものとは異なるパーティション(ファイル)からそのメニューを「初期化」するためのコマンドを提供します。 BIOSの「最初の起動ドライブ」は「hd0」として検出されるため、通常は介入なしで機能します。