システムはCentOS 7です。 MD RAIDを含む2つのハードドライブにインストールしましたが、いずれかのドライブに問題が発生しました。代わりに、少し大きいSSDを2つ使用することにしました。接続してシステムが起動すると、sda
2つのパーティションがある古いハードドライブのように見えます。sda1
参加するmd126
500Mは、他のすべてを含むLVM PV/boot
です。そして新しいSSDです。sda2
md127
sdb
sdc
アレイをHDDからSSDに移動し始めました。古いデバイスと同様に、新しいデバイスを分割してアレイに追加すると、アレイは3つのデバイスを含むように大きくなります。
mdadm --add /dev/md126 /dev/sd[bc]1
mdadm --add /dev/md127 /dev/sd[bc]2
mdadm --grow -n 3 /dev/md126
mdadm --grow -n 3 /dev/md127
しばらくして、すべてのRAIDが完全に同期していることを確認し、アレイからドライブを取り外し、それぞれ2つのデバイスを含むようにリセットしました。
mdadm -f /dev/md126 /dev/sda1
mdadm -r /dev/md126 /dev/sda1
mdadm -f /dev/md127 /dev/sda2
mdadm -r /dev/md127 /dev/sda2
mdadm --grow -n 2 /dev/md126
mdadm --grow -n 2 /dev/md127
どちらのアレイもきれいです。新しくインストールされたデバイスにブートローダをインストールします。
[root@master ~]# grub2-install /dev/sdc
Installing for i386-pc platform.
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub2-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
Installation finished. No error reported.
これらの警告が表示されるのは気に入らず、正しいデバイスにインストールされているかどうかはまだわかりません。確認してみると/boot/grub2/device.map
既存のドライブを参照していて修正しましたし、今は次のようになります。
# this device map was generated by anaconda
(hd0) /dev/sdb
(hd1) /dev/sdc
(hd2) /dev/sda
残りのドライブは最終的に削除され、再利用されることを願っています。そのため、データが漏洩しないようにすべてのデータを削除します。
dd if=/dev/zero of=/dev/sda bs=8k
完了してから確認するために、SSDにgrubを再インストールしてみました。
[root@master ~]# grub2-install /dev/sdb
Installing for i386-pc platform.
grub2-install: error: disk `mduuid/85faee0a366da795c6ac33a7c4a48ae8' not found.
最初の行はすぐに表示され、エラーメッセージは10秒間遅れます。 2番目のSSDも同様です。
/dev/sda1
アレイに追加して3つのデバイスに正しく増やすと、次のように表示されます。
[root@master /]# grub2-install /dev/sdb
Installing for i386-pc platform.
grub2-install: error: unknown filesystem.
有効なブートファイルシステムが含まれていると確信しています。 RAIDから取り外して確認してみると、次のようになります。
[root@master /]# blkid -p /dev/sda1
/dev/sda1: UUID="85faee0a-366d-a795-c6ac-33a7c4a48ae8" UUID_SUB="bc7af7ca-09f2-f533-3a79-53d98f5dd09a" LABEL="master.service.intrid.ru:boot" VERSION="1.0" TYPE="linux_raid_member" USAGE="raid" PART_ENTRY_SCHEME="dos" PART_ENTRY_TYPE="0xfd" PART_ENTRY_FLAGS="0x80" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="2048" PART_ENTRY_SIZE="1046528" PART_ENTRY_DISK="8:0"
[root@master /]# tune2fs -l /dev/md126 | grep feat
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
[root@master /]# mdadm -f /dev/md126 /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md126
[root@master /]# mdadm -r /dev/md126 /dev/sda1
mdadm: hot removed /dev/sda1 from /dev/md126
[root@master /]# tune2fs -l /dev/sda1 | grep feat
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
非常に奇妙な。
今私は詰まっています。システムがうまく動作しており、すべてのファイルシステムも問題なく、クライアントにサービスを提供します。たとえば、/boot
インストールして使用可能な場合は、削除して確認してから再インストールします。
インターネットには、リカバリライブメディアからシステムを再起動する方法、または再起動時にリカバリシェルにgrubを配置した後、この問題を解決する方法についてのアドバイスがあふれています。私が確認したいくつかのリソース:
- https://ahelpme.com/linux/grub2-grub-install-error-disk-mduuid-not-found-even-after-the-partition-has-bios_grub-on/
- grub2 インストールエラー - ディスクが見つかりません(ところでこれは答えがありませんでした)
- https://linoxy.com/fix-grub-filesystem-type-unknown-error-on-centosredhat/
- https://www.linuxquestions.org/questions/linux-newbie-8/centos-7-error-unknown-filesystem-grub-rescue-4175687414/
しかし、まだ再起動しておらず、リモートで、ここの周りの誰もブートローダを修正する方法がないので、起動されると確信するまで再起動したくありません。以前はこのようなデバイスを何度も交換したことがあり、そのような問題があったことを覚えていませんが、CentOSよりも最新のソフトウェアを搭載したGentooまたはDebianでこの問題が常に発生していました。
それでは、リカバリメディアを起動せずにシステムからリモートでブートローダをリカバリできますか?おそらくgrubに何も確認せず、メディアの適切な場所に必要なものを書くように指示することはできますか?
/boot
ファイルシステムをダンプし、それらを含む配列を最初から再作成し、イメージを書き換えると便利でしょうか?後でinitramfsをどのように再生成しますか?
答え1
しばらく努力して考えた後、質問に言及された最初の記事に戻りました。https://ahelpme.com/linux/grub2-grub-install-error-disk-mduuid-not-found-even-after-the-partition-has-bios_grub-on/
著者は、再起動後に再構成されるカーネルの配列に関連するいくつかの構造があると信じています。どの瞬間?おそらく、発見と組み立てプロセス中にあったようです。実は、ブートアレイの再構成役に立ちました。これが私がこの問題を解決した方法です。
まず、配列をアンロードして分解します。
[root@master ~]# umount /boot
[root@master ~]# mdadm --stop /dev/md126
mdadm: stopped /dev/md126
[root@master ~]# cat /proc/mdstat
Personalities : [raid1]
md127 : active raid1 sdc2[4] sdb2[3]
487731200 blocks super 1.2 [2/2] [UU]
bitmap: 2/4 pages [8KB], 65536KB chunk
unused devices: <none>
mdstat
開始配列は表示されません。また、dmesg
すべてが大丈夫であることを確認するためにこれを読んだ。
[243050.619210] md126: detected capacity change from 535756800 to 0
[243050.619260] md: md126 stopped.
[243050.619271] md: unbind<sdb1>
[243050.629871] md: export_rdev(sdb1)
[243050.630093] md: unbind<sdc1>
[243050.635890] md: export_rdev(sdc1)
その後、再度組み立ててください。
[root@master ~]# mdadm --assemble --run /dev/md126 /dev/sdb1 /dev/sdc1
mdadm: /dev/md126 has been started with 2 drives.
自動的にインストールされますdmesg
。
[243124.197117] md: bind<sdc1>
[243124.197468] md: bind<sdb1>
[243124.200993] md/raid1:md126: active with 2 out of 2 mirrors
[243124.201010] md126: detected capacity change from 0 to 535756800
[243124.201461] md126: unknown partition table
[243124.238232] md126: unknown partition table
[243124.246330] EXT4-fs (md126): mounted filesystem with ordered data mode. Opts: (null)
今インストールされました:
[root@master ~]# LANG=C grub2-install /dev/sdb
Installing for i386-pc platform.
Installation finished. No error reported.
[root@master ~]# LANG=C grub2-install /dev/sdc
Installing for i386-pc platform.
Installation finished. No error reported.
再起動は必要ありません!