サブホストをクローンで作成した時のダブりを解決する(CentOS7)

注意:オリジナルのサブホストは止めていた方がいい。理由はIPアドレスがダブっているから(固定IPで運用している)

WEBサーバーのテストベンチをクローンで作成したら、下記の設定がダブっていた。
1:rootになるディスクのUUID(vda1 ファイルシステムはXFS)
2:ホスト名
3:IPアドレス

KVMでサブホストを作ると必ず領域の中に更に領域(DISK)を作る。多分イメージファイルで作成することを考えてだと思うが、私はLVMで作るのでこんな複雑さはいらないが、どうしようもない。
vda1になる領域を下記の様に作成する
# lesetup -f       (空いている番号を調べる)
/dev/loop7        (loop7 からあいているので)
# losetup /dev/loop7 /dev/VG名/LV名    (loop7 にディスクを割あて)
# kpartx -a /dev/loop7   (vda1を作る)
# ls /dev/mapper
xxxx xxxxx xxxxx loop7p1  (いろいろ出てくるが loop7p1 がvda1になるディスク)
# xfs_admin -U `uuidgen` /dev/mapper/loop7p1  (これで新しいUUIDが割り当てられる。`uuidgen` の ` は 日本語キーボードだとSHIFT +@)
new UUID = UUIDが表示されている筈だ。

マウントする。
# mount /dev/mapper/loop7p1 /test1    (/test1 は私が作成しているテスト用のマウントポイント)
# gedit /test1/etc/hostname        (現在のホスト名を新しいホスト名にして保存)

次はIPアドレスの変更。
# gedit /test1/etc/sysconfig/network-scripts/ifcfg-eth0
開いたウィンドウにIPADDR=があるので、設定したいIPアドレスに変更。
もし UUIDの設定が入っていたらコメントアウトすること。ココもDUPEしているが、コメントアウトしても問題ない。

もう一つ大事な事、UUIDを変更したのでこのままではブートしない。 fstab に古いUUIDがあるから。私はディスクの指定にUUIDを使うことに抵抗がある。何故なら今回の様にクローンした時、 dd で領域やディスクをコピーした時、必ずUUIDのダブリが発生するからだ。兎も角 fstab の変更
# gedit /test1/etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Feb 4 15:58:57 2022
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=440a803c-df06-4d12-8f6d-5f058fe2e963 / xfs defaults 0 0
これを全部消し新たに
/dev/vda1         /         xfs       defaults       0 0
と記入し、保存。これはディスクバスにVirtIOを使っていたらディスクは必ず /dev/vda1 になるからだ。これでUUIDが変更になってもfstabは変更しなくても良い

これで一度ブートすると no such disk 古いUUID と表示されるが、ENTERを押すか何もしないとブートするので、rootでログイン後、
# grub2-mkconfig -o /boot/grub2/grub.cfg        これで新しいUUIDが反映される
そして、リブートするとエラーは出ない。

追記:2022-2-7
今日同じことをやったらエラーになりUUIDが見つからないと言ってdracut の入力画面になった。
再度loop0p1を作り、
# gedit /test1/boot/grub2/grub.cfg
で全ての古いUUIDを新しいUUIDに置換し保存後、
umount,kpartx-d などを行い再起動すると起動した。

けど、UUIDを使わない方法を探ると、root=/dev/デバイス名 でいいことがわかったので、更に変更。再びloop0p1を作り、
# gedit /test1/boot/grub2/grub.cfg
そこで、何ヵ所かある (勉強不足で、ここで何してるか分からない)
if ….
  search ……
else ….
  search ….
fi
を全部コメントアウトし、
更に root=UUID=vda1になるディスクのUUID を
root=/dev/vda1
に全て変更をし、
umount,kpartx-d などを行い再起動すると起動する。
grub2-mkconfigを使うのが本来のやり方だが、これを今やるとサブホストのテンプレートでは無く、今動いているホストの物を使うのでやれない。

後、少し心配なのはカーネルのアップデートがあった時、又UUID指定のブートになるのかなー?

フジマル について

1947年生れ、東京電機大学二部電気通信工学科卒、最後はスリランカ航空で営業だったのですが2018年に㈱インパック・ジャパンに再就職。趣味:登山、スキー、車いじり、コンピューター
カテゴリー: Linux運用時のメモ パーマリンク

コメントを残す

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

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください