お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-11-24 23:31:55

hbirds
メンバ
登録日: 2010-01-24

grub rescue>

Ubuntu 10.04 server で /dev/sda と /dev/sdb を LVM + RAID1(ソフトウェアRAID)で使っています。

本日、夜、
$ sudo aptitude update
$ sudo aptitude upgrade

を実行すると、依存関係の問題でgrubのインストールに失敗したようなメッセージが表示されたように見えました。

その後、サーバーをリブートすると

error : no such disk.
grub rescue>_

と表示され、そこから先に進まなくなってしまいました。

恐らく、不完全なgrubのインストールでgrubが壊れてしまったものかと想像しています。

対応策としては、LIVE CD の端末から
$ sudo grub-install /dev/sda
$ sudo grub-install /dev/sdb
をやってみて、それでもダメなら
$ sudo install-mbr /deb/sda
$ sudo install-mbr /deb/sdb
かと思いますが、いまいち自信が持てません。

なお、fdisk -l ,pvdisplay,vgdisplay,lvdisplay でデバイス等は正常に認識されています。
grub や mbr が壊れていることはどのようなコマンドでチェックすればよろしいでしょうか?
また、対応策は以上でよろしいのでしょうか?

オフライン

 

#2 2010-11-25 00:46:00

hir0
メンバ
登録日: 2008-09-28

Re: grub rescue>

LVM + RAID1 の構成で問題なく起動できていたのでしょうか?


grub rescue> search -f /boot/grub/grub.cfg
で何か結果が返ってくれるでしょうか。LVMの挙動が分からないのですがGRUBは対応しているの問題ないと(思いたい)orz


LIVE CD の端末から
$ sudo grub-install /dev/sda
$ sudo grub-install /dev/sdb

ライブCDには元からGRUBが入っていません。
$ sudo apt-get install grub2
等を事前に実行するのはシステムの構成が違うために失敗した様な気が、、、

$ sudo install-mbr /deb/sda
$ sudo install-mbr /deb/sdb

こちらはXP以前のOSを起こすブートローダーです。

LVMの辺りで間違った事を書いてしまっているかも知れませんが、通常の方法のヒントを。


ライブCDからGRUBをインストールするには「chroot」と言うコマンドを使用してライブCDを起動して稼働しているシステムはHDDの物を使用する方法です。そこでgrub-install を行います。
HDDのUbuntuのパーティションをマウントする必用が有りますが「LVM」が気がかりです。

普通はどの様な方法でもUbuntuのインストールされているパーティションを特定することが前提なのですが今回はそこがネックです。
まぁ私が知らないだけですが、冒頭のコマンドで結果が返ってくれば通常の方法が試用できると思います。

オフライン

 

#3 2010-11-25 07:00:56

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

ありがとうございます。

grub rescue> search -f /boot/grub/grub.cfg

を実行してみましたが、

Unknown Command 'search'

と出てきてしまいます。


これまで(サーバーを立ち上げたのは8月ですが)は、LVM + RAID1 の構成で問題なく起動できていました。
主にapacheサーバーとして使ってました。
LVMは、ボリュームグループVG0のなかにlv1,lv2,lv3の3っつのロジカルボリュームを作っており、
lv1をswap、lv2を/boot、lv3 を/ にセットしています。

オフライン

 

#4 2010-11-26 00:03:45

hir0
メンバ
登録日: 2008-09-28

Re: grub rescue>

申し訳ないです。
rescueに落ちると試用できるコマンドにも制限が有る様ですね。

GRUBから(現在の状態か起動ディスク)起動するにはlv2の指定方法が必要です。
他の方法を取るにしても何かのツールが自動で認識してくれない限りはlv3も必用になるかも知れません。
LVMに関しての識者の意見が必用の様です。


ライブCD等で起動して「場所」から「/」や「/boot」を開くことが出きるでしょうか。
もし開ければファイルブラウザ(ウィンドウ)がアクティブな状態で[ctrl] + [L] でファイルブラウザ上部にある階層表示のタブボタンがテキスト表示に変更されてマウントポイントから始まりデバイスのUUIDが表示される(通常の場合)ので解決に向かうかも知れません。

私としては起動しないHDDの/etc/fstabに記述されている(システムが起動時にマウントする情報)内容が分かれば解決かなと思います。
その方法が見つからなければ分かりません。

時間が許すならば、こちらで環境を構築して検証は行ってみます(興味が有るので)。
何らかの情報や指示が有った場合は進めてください。

オフライン

 

#5 2010-11-26 05:50:22

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

ありがとうございます。

今更ながらですが、私のHDD構成は
1TB×2でソフトウェアLVM+RAID1、160GB、1TBでLVM という形で4玉搭載しています。
マシンはHPのproliant ML115G5,メモリは5Gです。
OSは、Ubuntu10.04LTSのサーバー版をインストールしてます。他のOSは入れておらず、サーバー用途です。

まず、Ubuntu10.04のLiveCDから起動して場所から/や/bootを開く件ですが、いただいたメールを読む前に既にやってました。
結果はNGです。
ただし、160GBのHDDだけは、開くことができます。UUIDもしっかり確認できます。想像するに、LiveCDは、LVMやRAIDに対応してないからだと思います。
以上のことから、LiveCDではなく、SystemRescueCD、alternateInstallCD、ServerCDあたりを使うのかなと思っています。
もともとシステムをインストールしたServerCDには、GRUBのインストールやらディスクの修復なりのメニューがあって、途中までやってみましたが、途中からパーティションを切るような画面に入っていくので怖くなって中断しました。

Google で検索すると、色々対応方法が出てきますが、自分の環境や症状にとって適切なのか勉強不足のため判断できないので、わかるまではあまり不用意なことはしないようにしています。取り返しがつかなくなると困るので。

error : no such disk.
grub rescue> ls とすると
(VG1-lv03) (VG1-lv02) (VG1-lv01) (md0) (hd0) (hd0,1) (hd1) (hd1,1) (hd2) (hd2,1) (hd3) (hd3,1)
と表示されます。


SystemRescueCDから起動して以下をやってみたところ、問題なく表示はできるのでファイルシステムは壊れていないのかと思っています。
root@sysresccd /root % fdisk -l,pvscan,vgscan,lvscan,pvdisplay,vgdisplay,lvdisplay

root@sysresccd /root % grep md0 /proc/mdstat をやってみたら
md0 : active raid1 sda1[0] sdb[1]
と表示されます。
raidも死んでないように見えます。

/etc/fstabの内容は今夜にでも調べて張り付けます。

問題は、LVM+RAIDの環境でどうやったら安全・確実にGrubを再インストールできるのか ということだと思っています。

今夜はどうやったらSystemRescueCDから起動して、どうやったらHDDをマウントできるのかやってみたいと思います。

引き続き、ご教示お願いします。

オフライン

 

#6 2010-11-26 10:07:08

weyk
メンバ
登録日: 2009-04-03

Re: grub rescue>

 LVM+RAID1ということなので、これが、LVM上にRAID1を構成していると言うことであれば・・・

 grub rescueに落ちた場合、基本的に、なんとかしてnormal.modをロードをがんばるということになります。
lsの結果からすると、LVMも認識しているよう((VG1-lv03) (VG1-lv02) (VG1-lv01))ですし、なんかのRAIDも認識しているよう((md0))です。
1.とりあえず起動してgrub rescueに落ちてプロンプトで止まるのを待つ。
2.lsで認識しているデバイス及びパーティションを確認。
3.ルートかbootが、LVM上のボリュームを組み合わせてRAIDにあるとすると、(md0)にあるのかなぁ ということで、lsにて(md0)を確認(「ls (md0)」)。
4.当たりなら、insmodにて、normal.modの読み込みにチャレンジ(「insmod (md0)/boot/grub/normal.mod」)
normal.modの読み込みに成功すれば、GRUBのほかのコマンドを実行できるようになります。
# ここからがスタートとも言えますが・・・
「4」が成功している(する)なら、あとは通常のgrubから起動する場合の手順等を参考して、とりあえずの起動ができるのではないかと思います。
grub上で、各lv??の構成情報と、md0の構成情報が確認できるとよいのですが、すいません、判りません。

 もし、RAID1上にLVMを構成しているなら、確認して指定を試みるデバイスは、(md?)ではなく(VG1-lv0?)になります。文章からでは判断が付きませんでした(表記は「LVM+RAID1」と書かれているんですが、lsの結果や他の文章からはRAID1+LVMっぽい気が)。

grubのインストールについては、grubをインストールしたいデバイス(md?なのか、sd?なのか、vg-lv??なのか)を指定することになるのだと思うのですが・・・私自身はLVMもRAIDもさわり程度にしか触れたことが無いので、識者をお待ちください・・・・。私の想像の範囲では、必要なモジュール(lvm.modとかraid.modとか?)が含まれていることを確認したうえで、1台目のHDD(hd0やsd0)のMBRを指定あたりかと思います(未確認です。)
# /bootを独立させずにRAID1にする場合、どちらのディスクからでも起動できるようにしないと、いざという時の意味が薄れる(両方のHDDのMBRに、自身がhd0の場合に起動できるよう設定しておかないと困る可能性がある。)ので、ちょっと特殊と思っています。grubを1台目に設定後、ddコマンドにて2nd-HDDのMBR(+62track)にも複製しておくとか。

オフライン

 

#7 2010-11-26 19:41:07

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

This is My /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/VG0-lv03 /               ext4    errors=remount-ro 1       1
/dev/mapper/VG0-lv01 /boot           ext4    defaults        1       2
/dev/mapper/VG0-lv02 none            swap    sw              0       0
/dev/sdc1 /home/hbirds/disk_sdc      ext4    defaults          0       0

tmpfs /tmp     tmpfs defaults,size=1024M 0 2
tmpfs /var/tmp tmpfs defaults,size=1024M 0 2

/home/hbirds  /export/hbirds  none   bind   0   0

#/dev/VG1/lv03 /disk_sdd       ext4    defaults        0       1
#/dev/VG1/lv01 /disk_sdd/boot  ext4    defaults        0       2
#/dev/VG1/lv02 none            swap    sw              0       0

オフライン

 

#8 2010-11-26 20:17:59

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

すみません、/etc/fstab は、SystemRescuCDから送ったので日本語入力環境ができていないのでした。

この /etc/fstab は、
% mkdir /VG0lv03
% vgscan
% vgchange -ay
% lvscan
% mount /dev/VG0/lv03 /VG0lv03
% cd /VG0lv03
% nano ./etc/fstab
として、中身をコピペしたものです。

以上のように、LVMはSystemRescueCDから問題なくマウントでき、中身も見ることができます。
同様に /dev/VG0/lv01 もマウントし、/boot/grub/grub.cfg や /boot/grub/normal.mod ほか多数のファイルがあるのを確認しました。

また、
grub rescue> ls (md0)
error :unknown filesystem.
となりました。 (hd0),(hd0,1)も同じ結果になりました。
grub rescue> ls (VG1-lv01)
error :bad filename.
grub rescue> ls md0
error:no such disk.


なお、自分はRAID1+LVM と LVM+RAID1の違いを分かっていません。
インストールCDのインストラクションにしたがって構築したものです。
用語の使い方が間違っていたならお許しください。

いずれにしてもGrub周辺が異常なので、カーネルの選択メニューが記されている/boot/grub/grub.cfgまでたどり着かないうちにこけてるような気がします。
ご指摘のようにGrubを再インストールすれば治ると思いますが、md0,VG0-lv01,sda1,sda1+sdab1 のうちどれにどんな風にインストールすればいいのかわかりません。
VG0-lv01のバックアップ取っとけば良かったなあ。

オフライン

 

#9 2010-11-26 21:51:15

hir0
メンバ
登録日: 2008-09-28

Re: grub rescue>

SystemRescuCDを調べてみたらGRUBもしくはブートローダーについての情報を見つけられませんでした。
起動しているシステムの詳細も分からないのでライブCDを使用した方法を書きます。

ライブCDを起動して#8で書かれた方法を実行して下さい。

% mkdir /VG0lv03
% vgscan
% vgchange -ay
% lvscan
% mount /dev/VG0/lv03 /VG0lv03

% はUbuntu(フォーラム)では #  に(root)になる操作を好ましくないとする(大きなミスを防ぐために)場合もあるので
sudo を使用します。
$ sudo mkdir /VG0lv3

と言う風に、% で始まる所は全て最初に sudo を付けて実行して下さい。

(ご存知かも知れませんが遣り取りを減らすために書いておきます。)

確認をします。
$ ls /VG0lv3

これで上手くライブCDでも /VG0lv3 がマウント出来ていれば、今度はライブCDを起動したまま使用しているシステムを/VG0lv3と入れ替えます、極端に言うと現在起動できていない内蔵HDDでシステムが稼働している状態になりますので、GRUBをMBRへ再インストールすることで各種設定が再構築されるはずです。

その前に/boot を分けているのでマウントしなければいけません。
ちなみに 
$ ls /VG0lv3/boot

ととすると、通常あるはずのカーネルイメージやgrubフォルダが無いはずです。
#8の方法で行くと(すみません、前記している様にLVMについて明るくないのでマウント方法はお任せです)。

先に /VG0lv03 のマウントは済ませておいてください。

以下の3行がもう一度必用なのかどうか疑問ですが実行しておきましょう。
それと、この3行に管理者権限のsudo が必用かどうかも分からないのですが害は無いのでつけておきますね。
$ sudo vgscan
$ sudo vgchange -ay
$ sudo lvscan

次のsudo は必須です。
$ sudo mount /dev/VG0/lv01 /VG0lv03/boot

$ ls /VG0lv3/boot
で確認して見て下さい。


準備が出来たのでchrootを実行します。

$ sudo mount --bind /sys /VG0lv03/sys
$ sudo mount --bind /dev /VG0lv03/dev
$ sudo mount --bind /proc /VG0lv03/proc
$ sudo chroot /VG0lv03 /bin/bash

$ が # に変わります。

今、気付いたけどHDD自体の認識は/dev/sda で良いのかな?
# sudo fdisk -l
で確認して見て。。
で、続き。
# grub-install /dev/sda

もしかしたら、何かオプションを付けろと警告が出るかも知れませんね。
次に設定の更新をします。

# update-grub

chrootから抜けます。
# exit

アンマウント出来る物に関してはアンマウントします。
$ sudo umount -a

再起動して見て下さい。
ライブCDからのマウントで失敗しなければ良いのですが、失敗すれば上手くHDDをマウントできているSystemRescuCDで上手く行くかも知れません。
上手く生きます様に。

オフライン

 

#10 2010-11-27 21:15:06

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

ありがとうございます。
ライブCDは、LVMやRAIDに対応していないようです。
sudo apt-get install lvm2 とすれば、vgscan は動くようになりましたが、Raid のvgが表示されません。
sudo apt-get install mdadm とすれば、いいかなと思いやってみましたがダメでした。
なので、ライブCDを諦め Alternate CD のレスキューモードを使ってみたら、問題なく vgscan や lvscan が動きことを
確認できましたので、#9 は Alternate CD で指示通りやってみました。

・・が、
# grub-install /dev/sda で以下のエラーが出てしまいました。

/usr/sbingrub-probe:error:no mapping exists for 'VG0-lv01'.
Auto-detection of a filesystem module failed.
Please specify the module with the option '--module' explicity.

回避策がわかりません。
よろしくお願いします。

オフライン

 

#11 2010-11-28 12:00:20

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

色々、Google  で検索して以下を試行

vi で /boot/grub/device.map を以下のとおり作成
(hd0) /dev/sda
(hd0) /dev/sdb


# grub-install --root-directory=/boot /dev/sda
#         〃               /dev/sda1
#         ”              =/ /dev/sda
#                       ”      =/ /dev/sda1

# grub-install --rechecl --no-floppy --modules="mdraid raid" /dev/md0
#                               〃                  /dev/sda
#            〃                  /dev/sda1

いずれもダメです。

オフライン

 

#12 2010-11-29 11:59:25

weyk
メンバ
登録日: 2009-04-03

Re: grub rescue>

 こんにちは。

vi で /boot/grub/device.map を以下のとおり作成
(hd0) /dev/sda
(hd0) /dev/sdb


# grub-install --root-directory=/boot /dev/sda
#         〃               /dev/sda1
#         ”              =/ /dev/sda
#                       ”      =/ /dev/sda1

# grub-install --rechecl --no-floppy --modules="mdraid raid" /dev/md0
#                               〃                  /dev/sda
#            〃                  /dev/sda1

いずれもダメです。

それぞれ、どう駄目なのか(具体的なメッセージや現象)も記載すると、他の人からも案が出てくるのではないかと思います。経験者であれば経験を元にして判断できることなのですが・・・経験者が出てくるかどうか不明な感じなので・・・

おそらく、1TGのHDD2台でRAID1を構成し、その上に(中に?)LVMを構成しているとすると、結果とだいたい合いますね。(通常、物理デバイスに適用した順に、RAID1+LVMと書くことが多いです。RAID1+0とRAID0+1が別物なのと一緒。)

grub rescue> ls (md0)
error :unknown filesystem.
となりました。 (hd0),(hd0,1)も同じ結果になりました。
grub rescue> ls (VG1-lv01)
error :bad filename.
grub rescue> ls md0
error:no such disk.

それを踏まえてこの結果を見ると、「ls (VG1-LV01)以外は予想通りの結果となります。
(md0)と言うデバイスは、MBRやパーティションテーブルを含んだHDDのデバイスまるごとと同じですから、ファイルシステムというものは有りません。ファイルシステムがあるのは、その中にきられているパーティションの中になります(今回はlvmも利用しているのでちょっと違いますが)
(hd0)は1台目のHDDそのものなので、ファイルシステムによるアクセスはできません((md0)とほぼ一緒の理由)
(hd0,1)は、md0の構成要素もしくは、LVMのボリューム全体になるので(fatやext4と言った)ファイルシステムではない・・・と考えられます。
md0と指定すると、単なるファイル名と判断されます。まだ認識可能なファイルシステムを指してないのでエラーとなる・・・ということだと思います。()を付けることで、なんらかのデバイスの指定であることを表します。

 「ls (VG1-lv01)」は、後ろに「/」をつけてパスを明示すると結果がかわったりしますでしょうか?(「ls (VG1-lv01)/」とする。)

オフライン

 

#13 2010-11-29 17:09:26

weyk
メンバ
登録日: 2009-04-03

Re: grub rescue>

いろいろ調べてみると、

コード:

grub-install --recheck --modules="pc ext2 chain part_msdos biosdisk raid mdraid lvm" --root-directory=/ '(md0)'

なのではないかなぁと思うのですが・・・未確認です(実際に実行する際にはsudo等お忘れなく)
# '(md0)'の部分は、/dev/md0 でも可のはず。
modulesにいろいろ指定しているので、core.imgのサイズがちょっと心配。
(シェルスクリプトが読めるなら、--debugオプションを活用すると良いかも。)

オフライン

 

#14 2010-11-30 05:27:45

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

weykさん、ありがとうございます。
grub rescue> ls (VG1-lv01)/
とすると、中のディレクトリがちゃんと表示されます。
ですが、VG1-lv01は、4玉目のHDDで実験的に設置しているものなのです。
問題は、RAID1+LVMを構成しているVG0-lv01に再インストールできないということです。
grub rescue>ls とすると
(md0),(hd0),(hd0,1),(hd1,1)...は表示されるのですが、ひょっとすると本来的には(md0)の中にある、(VG0-lv01),(VG0-lv02),(VG0-lv03)
も表示されるべきなのかなあとも思っています。
GrubがRAID内のLVMを認識できていないのが問題なのかもしれません。

今の、自分のGrubのファイル構造は以下のようにおかしくなっています。
/boot内には
system.map-2.6.32-26-server
abi-2.6.32-26-server
config-2.6.32-26-server
initrd.img-2.6.32-26-server
vmcoreinfo-2.6.32-26-server
vmlinuz-2.6.32-26-server
があります。
/には、以下の4っつのリンクファイルがあります。
initrd.img→boot/initrd.img-2.6.32-26-server
initrd.img.old→boot/initrd.img-2.6.32-26-server
vmlinuz→boot/vmlinuz-2.6.32-26-server
vmlinuz.old→boot/vmlinuz-2.6.32-26-server
があります。
問題は、/boot/grub/grub.cfg 内の
### BEGIN /etc/grub.d/10_linux ### の直下が
 menuentry 'Ubuntu , with Linux 2.6.32-25-server.......
と2.6.32-26のひとつ前のカーネルになっており、Linux 2.6.32-26-server になっていません。
どうも/boot/grub/grub.cfgの生成に失敗しているようです。


Googleで検索し、Grub2のマニュアル?(https://help.ubuntu.com/community/Grub2)を発見し、昨日はこれに基づいて色々やってみました。

#update-grub とすると
Generating grub.cfg ....
/usr/sbin/grub-probe:error:no mapping exists for 'VG0-lv01'
となり、やはりgrub.cfgを生成できないようです。

#aptitude install grub-pc としてみると多数のエラーが吐かれますが、主なものをピックアップすると
Internal Error:Could not find image(/boot/vmlinuz-2.6.32-26-server)
dpkg error processing linux-image-2.6.32-26server (--configure):
subprocess install post-installatin script returned error exit satatus2
dpkg:dependency problems prevent comfigurration of linux-image-server:
linux-image-server depends on linux-image-2.6.32-26-server; however :
package linux-image-2.6.32-26-server is not configured yet.
dpkg:error processing linux-image-server (--configure):
dependency problems-leaving unconfigured

Error encounterd while processing
linux-image-2.6.32.26-server
linux-image-server
linux-server

という具合です。


実は、カーネルをアップデートしてrebootして今回の異常がおきる前日に
RAIDのLVMのうちLVM03を500Gにresizeする作業をしています。
かなり危険を伴う作業と認識していたので先に4玉目のHDDで非RAIDの単独のLVMをRAIDのLVMと同じ構成で作って
先にそちらで実験し、問題なくresizeできたことを確認してから本体に着手しました。
本体でも問題なくresizeでき、ファイルの読み書きやスクリーンショット(もともと1TBをフルにLVMで使っていたので
スクリーンショットを撮る領域がなかったのが,resizeのきっかけです)もエラーメッセージもなく問題なくできました。
ひょっとしたら、これが原因?なのかな

/usr/sbin/grub-probe:error:no mapping exists for 'VG0-lv01' がポイントになるのかと思いますが、どうGrubに'VG0-lv01'に
認識させればいいのかわかりません。
先程のマニュアル?にもdevice.mapのことは何も書かれていなかったような・・・

grub-install --recheck --modules="pc ext2 chain part_msdos biosdisk raid mdraid lvm" --root-directory=/ '(md0)'
はまだ試していません。
/etc/default/grubで
GRUB_DEFAULT="Ubuntu,Linux 2.6.32-25-generic"
としてみることも試してみたい(ダメなような気もしますが)と思います。

オフライン

 

#15 2010-11-30 12:18:18

weyk
メンバ
登録日: 2009-04-03

Re: grub rescue>

こんにちは。
 念のため、構成の確認なのですが・・・
HDDは今は4台。
HDD(1TB) /dev/sda(hd0)
HDD(1TB) /dev/sdb(hd1)
HDD(160GB) /dev/sdc(hd2)
HDD(1TB) /dev/sdd(hd3)

sdaとsdbは、それぞれ1つパーティションを切っていて(sda1,sdb1)、両方でSoftRAIDを用いてRAID1を構成していて、/dev/md0(md0)として認識されている。
md0は、それ1つでLVMを構成して、ボリューム(VG0)に、lv01を作成している?
sdcは普通にパーティションを1つ切ってそのまま利用?
sddは、1つパーティションを切っていて、それ1つでLVMを構成して、ボリューム(VG1)に、lv01,lv02,lv03を作成している。
そして、grub rescueからみると、md0に構築している(VG0)のみが見えていないっぽい。

という感じでしょうか?

RAIDの中('(md0)'として認識)も、LVMの中('(VG1-lv0?)'として認識)もみえているということは、moduleが足らないということは無さそうですね。

インストール直後は動いていたら、無理と言うことではないですよね、きっと・・・
# いろいろ検索しても、/bootをRAID1のみ(LVMにしない)にして、swapは通常パーティションにする(LVMにもRAIDにもしない)・・・という構成が多いようです。「LVM over RAID」「LVM on RAID」という言い回しが判って、やっと検索で情報がひっかかり始めました・・・

オフライン

 

#16 2010-11-30 15:51:19

weyk
メンバ
登録日: 2009-04-03

Re: grub rescue>

実は、リサイズの操作よりも、HDDが1台と(RAIDを経由しない)LVMが加わった状態で(カーネルのupdateに伴って)grub-installが動いたことが原因・・・ということはないでしょうか。
デバイスの増減は成否に影響する気がします。

grub-mkdevicemap -n -m -
にて、デバイスが正しく一覧表されるようであれば、
grub-install --recheck --modules="biosdisk part_msdos mdraid lvm" '(md0)'
ですかね。
もし、不足していたり正しくないでしたら、
grub-mkdevicemap -n
にて、devicemapを保存後、「/boot/grub/device.map」を編集したうえで、
grub-install --modules="biosdisk part_msdos mdraid lvm" '(md0)'
でしょうか。
※全てsudoが必要となると思います。
※これらを実行するには、#9のhir0のコメントに有るように、事前に準備が必要です。

オフライン

 

#17 2010-11-30 22:12:19

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

ありがとうございます。
LVMを使ったHDDがもう一つあるのが原因なんてこともあるのでしょうか。
実は、LVMの縮小はSystemRescueCDを使ってやりました。今にして思うとUbuntu Alternate CD を使うべきだったと思います。
この辺も原因かなと思ってます。
たぶん、どちらかが原因なのでしょう。


構成は
HDDは今は4台。
HDD(1TB) /dev/sda(hd0)
HDD(1TB) /dev/sdb(hd1)
HDD(160GB) /dev/sdc(hd2)
HDD(1TB) /dev/sdd(hd3)

sda と sdb でRAID1を構築(VG0-lv01:/boot , VG0-lv02:swap ,VG0-lv03:/)となっています。
sdc は 何もしてない1パーティション
sdd は VG1-lv01:/boot , VG1-lv02:swap ,VG1-lv03:/ としてしまいましたが、/boot,swap,/ などを重複して作ってしまったために、rebootしたときに
おかしくなったのかもしれないですね。
/bootや/が二つもあったりすれば、どっちなのさ??ということになりますよね。
だとすれば、sddを外してGrubのインストールをすれば修正できるかも。
・・・と書きながら思いつきました。馬鹿なことをしました。


以下は、4玉を接続したまま作業した結果です。
#9のhir0さんのコメントに加えて、
grub-mkdevicemap -n -m - を実行すると
(hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /deb/sdc
(hd3) /dev/sdd
と表示されます。
grub-install --recheck --modules="biosdisk part_msdos mdraid lvm" '(md0)' を実行すると以下のエラーが出ます。
usr/sbin/grub-probe: error :no mapping exists for 'VG0-lv01'
usr/sbin/grub-probe: error :no mapping exists for 'VG0-lv01'
usr/sbin/grub-probe: error :cannot stat 'md0'
usr/sbin/grub-probe: error :no mapping exists for 'VG0-lv01'
You attempted a cross-disk install ,but the filesystem containing /boot/grub/dos not support UUIDs.

grub-install --recheck --modules="biosdisk part_msdos mdraid lvm" /dev/md0 を実行すると以下のエラーが出ます。
usr/sbin/grub-probe: error :no mapping exists for 'VG0-lv01'
usr/sbin/grub-probe: error :no mapping exists for 'VG0-lv01'
usr/sbin/grub-probe: error :no mapping exists for 'VG0-lv01'
You attempted a cross-disk install ,but the filesystem containing /boot/grub/dos not support UUIDs.

grub-mkdevicemap -n
にて、devicemapを保存後、「/boot/grub/device.map」を編集して保存後に上記のコマンドを試しても同じエラーが出ました。

明日は、sddを取り外して同じ事をやってみます。今日は疲れました。
きっと、これが原因!!であって欲しい・・・・・

オフライン

 

#18 2010-12-01 04:22:23

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

sdd を取り外してもダメでした。
grub-mkdevicemap -n -m - を実行すると、当たり前ですが、
(hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /deb/sdc
となっただけで、他はエラーの内容も含めて同じ結果になりました。
残念。

オフライン

 

#19 2010-12-02 05:19:19

hbirds
メンバ
登録日: 2010-01-24

Re: grub rescue>

Debian Bug report logs - #574863
grub-pc: grub-probe unable to find mapping for /boot on LVM with a snapshot LV
Problem Description:

Creation of a snapshot logical volume makes grup-pc complete skip the volume
group and makes the system not bootable. (/boot is in an LVM).  The problem is
in the code in lvm.c:grub_lvm_scan_device()

Whenever there is a snapshot logical volume, there is a special LV of
"type = snapshot" that is created to handle the snapshot operation.

This LV is hidden and is part of the LVM metadata but not listed in lvdisplay.
This special LV will not have the "stripe_count = xxx" property.  The actual
stripe_count will be same as the source LV 'origin = ' property.

However in the code any LV not having a stripe_count property is treated as a
fatal error and control jumps to lvs_segment_fail: and further fail4: and
ultimately skips the entire VG.  None of the LVs are populated in the vg_list
leading to grub-probe failure and further issues that completely breaks grub-pc
installation and updation.

というのを発見しました。

今回のトラブルのきっかけは、LVM on RAID1 で LV のsnapshotを作成するためにボリュームをフルに使っていた
VG0-LV03を縮小したことが背景にあります。
今もsnapshot は残っています。

当該snapshotを削除すれば、問題なくなるかもしれませんので、やってみます。

Solved!!
snapshot を削除したら正常にシステムが立ち上がりました。
皆さん、ありがとうございました。
これはGrub2のバグです。
snapshotは使い終わったら削除しておかなければ、カーネルアップデートの時に同じワナにはまります。
今回は大変勉強になりました。

オフライン

 

Board footer

Powered by FluxBB