[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:51645] Re: EVMSの削除(体験談)



質問をした渡辺です。

etch installer と Knoppix を準備していましたが、
幸い、これらは、使わずに済みました。

問題が発生しましたが、不幸中の幸いで、
問題の起きた場所が、システムのブートとは無関係だったため、
ブート不能には陥りませんでした。

/usr/share/doc/evms/README.Debian
/usr/share/doc/evms-bootdebug/README.Debian
を読み、
* Compatibility Volumes になっていることをチェックする
* EVMS の関連パッケージを purge する
* grub の menu.lst と /etc/fstab を書き換える
* /usr/sbin/update-grub
* update-initramfs -u
* 再起動
という手順で、(概ね)解決しました。

ところが、2007/05/21の私が残していた記録を、
EVMS のアンインストール「後」に、読んでいたところ、
/etc/mdadm/mdadm.conf 内にて、md[012] の内、
md2(raid1,sdc1+sdd1)の設定をコメントアウトした状態で
EVMS にて md + LVM2 の設定を施して、
それを現在まで利用していたようだということが分かりました。
(md[01] は、etch installer での md + LVM2 の設定のまま)

慌てていろいろ確認してみると、
/proc/mdstat にも、md[01] しか表示されておらず、
EVMS を利用していたときにはあった md2 が表示されてませんでした。

ブート時、LVM2 が
  Found duplicate PV XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: using /dev/sdd1 not /dev/sdc1
のようなメッセージを出していました。
つまり、
LVs
 VG: myGroup2
  PV: MD Array(raid1)
   /dev/sdc1
   /dev/sdd1
のうち、MD Array が抜け落ちてしまっていたようでした。

気づかずに、しばらくの間、/dev/sdd1 の方にのみ
「書き込みをしてしまっていた」のですが、
強引に:
# (VG:myGroup2 の LV を umount する)
# vgchange -a n myGroup2
# mdadm --assemble /dev/md2 --auto=yes --update=resync /dev/sdc1 /dev/sdd1
# mdadm --examine --brief /dev/sdd1 >>/etc/mdadm/mdadm.conf
# vgscan
# vgchange -a y myGroup2
# update-initramfs -u
# reboot
等と実行して、強引に使ってみました。

結果、(複数ある LV のうち)2 つの LV を壊してしまいました。
dmesg において、
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735717
Aborting journal on device dm-12.
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735718
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735719
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735720
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735721
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735722
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735723
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735724
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735725
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735726
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735727
EXT3-fs error (device dm-12): ext3_free_blocks_sb: bit already cleared for block 7735728
EXT3-fs error (device dm-12) in ext3_reserve_inode_write: Journal has aborted
EXT3-fs error (device dm-12) in ext3_truncate: Journal has aborted
EXT3-fs error (device dm-12) in ext3_reserve_inode_write: Journal has aborted
EXT3-fs error (device dm-12) in ext3_orphan_del: Journal has aborted
EXT3-fs error (device dm-12) in ext3_reserve_inode_write: Journal has aborted
EXT3-fs error (device dm-12) in ext3_delete_inode: Journal has aborted
__journal_remove_journal_head: freeing b_committed_data
__journal_remove_journal_head: freeing b_committed_data
__journal_remove_journal_head: freeing b_committed_data
ext3_abort called.
EXT3-fs error (device dm-12): ext3_journal_start_sb: Detected aborted journal
Remounting filesystem read-only
等という恐しげなメッセージが出ていました。

「これはヤバイ」ということを、ようやく悟り、
新規に /dev/sdc1+missing の md3 に VG:myGroup3 を作成して、
/dev/sdc1+/dev/sdd1 の md2 上にあった
(この時点では /dev/sdd1 上にダイレクトにあった)
VG:myGroup2 を、
そのままコピーして救出してしまうことにしました。
missing はデータのコピー後に /dev/sdd1 で置換します。
* /usr/share/doc/mdadm/rootraiddoc.97.html (すばらしい内容!Thanks!)
* LVM HOWTO
* Linux Software RAID HOWTO
等を参考にして、
( /etc/mdadm/mdadm.conf 内の md[01] 以外(md2)をコメントアウト )
# update-initramfs -u
# cfdisk /dev/sdc # Type -> fd
# reboot
# mdadm --zero-superblock /dev/sdc1
# mdadm --create /dev/md3 --level=1 --raid-disks=2 /dev/sdc1 missing
# pvcreate /dev/md3
# vgcreate myGroup3 /dev/md3
# lvcreate --size 42G --name store1 myGroup3
# lvcreate --size 42G --name store2 myGroup3
# lvcreate --size 42G --name store3 myGroup3
# ...
# mkfs.ext3 /dev/myGroup3/store1
# mkfs.ext3 /dev/myGroup3/store2
# mkfs.ext3 /dev/myGroup3/store3
# ...
# mkdir /mnt/new/place/store1
# mkdir /mnt/new/place/store2
# mkdir /mnt/new/place/store3
# ...
# mount /dev/myGroup3/store1  /mnt/new/place/store1
# mount /dev/myGroup3/store2  /mnt/new/place/store2
# mount /dev/myGroup3/store3  /mnt/new/place/store3
# ...
# cd /myGroup2/old/place/store1/ ; cp -axu * /mnt/new/place/store1/
# cd /myGroup2/old/place/store2/ ; cp -axu * /mnt/new/place/store2/
# cd /myGroup2/old/place/store3/ ; cp -axu * /mnt/new/place/store3/
# ...
( mdadm --examine --brief --scan の結果のうちの md[013] を /etc/mdadm/mdadm.conf に反映する )
( /etc/fstab の myGroup2 を myGroup3 に置換する )
# update-initramfs -u
# reboot
$ ls /dev/md*
/dev/md0
/dev/md1
/dev/md3

/dev/md:
$ cat /proc/mdstat # md[013] の状態を確認
Personalities : [raid1]
md3 : active raid1 sdc1[0]
      312568576 blocks [2/1] [U_]
(md[01] の出力は割愛)
# vgchange -a n myGroup2
# lvremove myGroup2
# vgremove myGroup2
# cfdisk /dev/sdd # Type -> fd
# reboot
# mdadm --zero-superblock /dev/sdd1
# mdadm --add /dev/md3 /dev/sdd1
$ cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdd1[2] sdc1[0]
      312568576 blocks [2/1] [U_]
      [>....................]  recovery =  0.1% (374144/312568576) finish=55.6min speed=93536K/sec
(しばらくすると)
$ cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdd1[1] sdc1[0]
      312568576 blocks [2/2] [UU]

以上。なにか間違いがあれば、ツッコミをお願いします。
今回、他に解決方法が無かったのかどうか、等。

Debian ではモジュールとして存在していることが多いためでしょうか、
initrd がいろんな役割を担っていますね。
/etc/mdadm/mdadm.conf を更新したときなんかも、update-initramfs -u
を実行しないといけないみたいですよね。
(initrd イメージに入っているところをみると)