またまた、ごぶさたでした。

By | 2018年2月10日

20日ほど前に仮復旧させたサーバーですが、いくつもの謎を

含んでおり、それらの解決に四苦八苦していた 20日間でも

ありました。

最大の謎は、論理ボリュームに対して何かをしようとすると

決まって現れる

Couldn’t find device with uuid Tmw81h-BcM1-1uZO-1kKs-oxQS-9tGk-L2RZ1D.

でした。これが現れると何にもできないのです。何にも。

この UUID の先には’/dev/vg_server90/lvol0′ [1.82 TiB] という

論理ボリュームが繋がっていました。「いました」と過去形なのは

どうにかこれを繋ごうと努力してるうちに、TestDiskの使い方を

間違えて吹っ飛ばしてしまったのです(涙)

元々、この論理ボリュームをマウントさせようとした時にも

Couldn’t find device with uuid Tmw81h-BcM1-1uZO-1kKs-oxQS-9tGk-L2RZ1D.

が、邪魔したんですっ!たぶん……

ともあれ、実体がなくなったので消すしかありません。

これがあると、LVM サイズ変更なんかもできませんから。

いろいろ、検索して試してみては、失敗してバックアップの

戻しをして、また、いろいろやって、失敗して……の繰り返し

でした。この20日間。

ところが、ついに検索し当てたのです。

Linux: LVM 論理ボリュームマネージャの情報が消えないとき

「これらのLVMに関する情報はどこに保存されているのか?
(中略)
どうやら,ディスクドライブの先頭からベタに書いてあるようです.」

このページに書いてある通りに

# dd if=/dev/random of=/dev/sda count=1024
0+1024 records in
17+1 records out
8750 bytes (8.8 kB) copied, 7800.73 seconds, 0.0 kB/s

先頭から 8750 bytes(?)を乱数で埋めました。

このあと、乱数で埋めた HDD1 に Centos6 を新規インストールして

仮復旧できてる HDD2 の sda2 を丸ごとコピーしれば、LVMに

関する情報を消去した HDD ができるはず……なのに、

間違えて HDD2 に Centos6 を新規インストールしてしまいました(涙)

泣いてても仕方がないので、元の sda2 のデータが残ってる HDD1から

HDD2 にバックアップの戻しをすることにしました。

HDD2 と HDD1のホスト名が同じだとそれぞれを

マウントさせることができないので、 HDD2 を別のホスト名で

Centos6 の新規インストールし直しました……つもりが、

あろうことか 間違って HDD1にインストールしちまっただよう(号泣)

要するに、せっかく仮復旧した HDD と、それを丸ごとコピーした

HDD の両方に Centos6 を新規インストールしてしまったということです。

泣けますよね。まあ、こういうこともあるだろうと元々の PATA の

クローンである HDD0 はとっておいたので、こうして復旧できて

いるわけですが、最初っからやり直しになりましたから堪えました。

話が横に思いっきりそれてしまいましたが、先頭を乱数で埋めた

HDD1 を仮復旧させたものと、それをコピーした HDD2 ができました。

以前なら、HDD2を繋げば、そのまま起動できていたのに read-only

なってしまいました。でも、こうなるほうが自然っていうか、

謎が少ないんですね。HDD1もHDD2も、まったく同じ fstab で

起動できるということは、

UUID=21d2512b-b978-45f3-92e6-0cc1bfe1e324 /boot ext4 defaults 1 2

の行が同じ。すなわち、HDD1の sda1 と HDD2の sda1 が

同じ UUID ってことになりますよね。それにも関わらず起動したのは

理屈はわからないんですけど HDD の先頭からベタに書き込まれた

情報が関係してたと考えるほうが……ねっ!自然でしょ?

他にも、先頭に情報が残ったままの HDD では、オンボードの NIC に

どうしてもネットワーク接続できなかったことも、おそらく

同じ理由だと思います。

# lvscan

Couldn’t find device with uuid Tmw81h-BcM1-1uZO-1kKs-oxQS-9tGk-L2RZ1D.
ACTIVE ‘/dev/vg_server90/lv_root’ [50.00 GiB] inherit
ACTIVE ‘/dev/vg_server90/lv_home’ [411.36 GiB] inherit
ACTIVE ‘/dev/vg_server90/lv_swap’ [3.91 GiB] inherit
inactive ‘/dev/vg_server90/lvol0’ [1.82 TiB] inherit

# lvremove /dev/vg_server90/lvol0

Couldn’t find device with uuid Tmw81h-BcM1-1uZO-1kKs-oxQS-9tGk-L2RZ1D.
Logical volume “lvol0” successfully removed

先頭の情報を消しても、Couldn’t find device with uuid Tmw81h-……は

出ますが、論理ボリュームを消すことはできたようです。しかし、

このエラーが出ると、どうしてもできなかったのが、物理ボリュームの

亡霊を消すことでした。しかし、

# vgreduce –removemissing vg_server90

Couldn’t find device with uuid Tmw81h-BcM1-1uZO-1kKs-oxQS-9tGk-L2RZ1D.
Wrote out consistent volume group vg_server90

と、エラーは出ても、

# pvdisplay

Couldn’t find device with uuid Tmw81h-BcM1-1uZO-1kKs-oxQS-9tGk-L2RZ1D.
— Physical volume —
PV Name /dev/sda2
VG Name vg_server90
PV Size 465.27 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 119109
Free PE 0
Allocated PE 119109
PV UUID 0wag5X-JPia-ydq6-130G-hoAU-FA8J-F79wGt

— Physical volume —
PV Name unknown device
VG Name vg_server90
PV Size 1.82 TiB / not usable 2.56 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 476931
Free PE 476931
Allocated PE 0
PV UUID Tmw81h-BcM1-1uZO-1kKs-oxQS-9tGk-L2RZ1D

↓↓↓

# pvdisplay

— Physical volume —
PV Name /dev/sda2
VG Name vg_server90
PV Size 465.27 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 119109
Free PE 0
Allocated PE 119109
PV UUID 0wag5X-JPia-ydq6-130G-hoAU-FA8J-F79wGt

あれほど悩ましかった /dev/vg_server90/lvol0 がついに消滅しました。

続いて、先頭情報があったときには、どうやってもできなかったのが

LVM サイズの変更でしたが、

# fsck.ext4 -f /dev/vg_server90/lv_home

e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg_server90/lv_home: 39/26959872 files (0.0% non-contiguous), 1742834/107836416 blocks

# resize2fs /dev/vg_server90/lv_home 27.16G

resize2fs 1.41.12 (17-May-2010)
resize2fs: Invalid new size: 27.16G

どうやら、整数指定しないとダメみたいです。

# resize2fs /dev/vg_server90/lv_home 27G

resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg_server90/lv_home to 7077888 (4k) blocks.
The filesystem on /dev/vg_server90/lv_home is now 7077888 blocks long.

# lvreduce -L 27G /dev/mapper/vg_server90-lv_home

WARNING: Reducing active logical volume to 27.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_server90/lv_home? [y/n]: y
Size of logical volume vg_server90/lv_home changed from 411.36 GiB (105309 extents) to 27.00 GiB (6912 extents).
Logical volume lv_home successfully resized.

# lvextend -l +100%FREE /dev/mapper/vg_server90-lv_root

Size of logical volume vg_server90/lv_root changed from 50.00 GiB (12800 extents) to 434.36 GiB (111197 extents).
Logical volume lv_root successfully resized.

# resize2fs /dev/mapper/vg_server90-lv_root

resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_server90-lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 28
Performing an on-line resize of /dev/mapper/vg_server90-lv_root to 113865728 (4k) blocks.
The filesystem on /dev/mapper/vg_server90-lv_root is now 113865728 blocks long.

最後の vg_server90-lv_root のファイルシステムのサイズ変更は

40分くらいの時間がかかりました。でも、おかげで

と、このブログを格納している root の使用率が 47% だったものが

LMV のサイズを 50 GB から 434.36 GB 拡大できたために、6% に

下がりました。これで、当面は容量不足に悩まされずに済むでしょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語で書いてね。外国語わかんない。