shibatch's journey

日々考えていることをつらつら書くだけです

物理サーバをOpenStackに移す(リストア編その1)

物理サーバをOpenStackに移す(リストア編その1)

OpenStackへのリストアは少々複雑で、

  1. isoイメージからインスタンスを作成し、新規作成したボリュームを/dev/vda として接続して、ボリュームへリストアする
  2. ボリュームをイメージに変換し、そのイメージからインスタンスを作成する

の2段階が必要。

まずは 1. isoイメージからインスタンスを作成し、新規作成したボリュームを/dev/vda として接続して、ボリュームへリストアする をやっていく。

なお、この項目は以下のQiita記事をかなり踏襲している部分があるため、示しておく。 qiita.com

ボリュームへのリストア手順は以下の通り。

1-1. ISOファイルをイメージとしてアップロードする 1-2. フレーバーを用意する 1-3. ISOファイルとフレーバーからインスタンスを起動する 1-4. ボリュームを作成し、起動したインスタンスに/var/vdaとして接続する 1-5. コンソールからボリュームのパーティションを切って、各パーティションをフォーマットする 1-6. mondorestoreコマンドでリストアを実施する

1-1. isoファイルをイメージとしてアップロードする 自社環境ではGUIでアップロードしようとするとタイムアウトになるようなのでCLIで実施した。

$ openstack image create "servername_iso" --disk-format iso --file ./servername-20180919-1.iso  --private --container-format bare

1-2. 必要ならば、物理サーバに近いスペックのフレーバーを用意する。 ※容量はまったく同じものを用意する必要はなく、実使用量以上のパーティションを切れればOK

$ openstack flavor create --vcpus 4 --ram 16384 --disk 160 --private make_flavor

1-3. ISOファイルとフレーバーからインスタンスを起動する

nyah上から インスタンスインスタンスの起動 で新規インスタンスを作成する。一時的に作成し、後で削除するものなので、あまり神経質に設定する必要はない。

タブ 設定値 設定値
詳細 Instance Name (わかりやすい名前)
- アベイラビリティゾーン ボリュームが接続できるゾーン
- count 1
ソース ブートソース イメージ
- Allocated mail003_iso
フレーバー Allocated 1-2で作成したフレーバー(isoイメージ分の容量があれば良いかも)
そのほか 設定値 たぶんデフォルトでよい

設定後、 インスタンスの起動 を実行したら、インスタンスが立ち上がる。コンソール画面を開いて、expertを入力し、実行する。

1-4. ボリュームを作成し、起動したインスタンスに/var/vdaとして接続する

CLIでコマンドを入力してボリュームを作成する。(GUIでもよい) ※ボリュームはGiBで、フレーバーはGBだから、ボリュームの容量を小さくしないとリストアした際にエラーになる 目安 フレーバ100GB ≒ ボリューム96GB

$ openstack volume create --size 96 --bootable tmp_volume

ボリュームを起動したインスタンスに接続する。

$ openstack server add volume mail003_tmp tmp_volume --device /dev/vda

1-5. コンソールからボリュームのパーティションを切って、各パーティションをフォーマットする またコンソール画面から操作する。以下のコマンドを実行してfdiskを起動する。

$ fdisk /dev/vda

するとfdiskの対話画面になるので、バックアップサーバと似たサイズになるよう、パーティションを切っていく。

パーティション作成コマンド詳細

n(新しくパーティションを作る)
p(primary partition)
1(Partition 1)
<enter>(First cylinder:1)
2048(Last cylinder)

n(新しくパーティションを作る)
p(primary partition)
2(Partition 2)
<enter>(First cylinder:2049)
43006(Last cylinder)

n(新しくパーティションを作る)
p(primary partition)
3(Partition 3)
<enter>(First cylinder:43007)
45088(Last cylinder)

n(新しくパーティションを作る)
e(extended)
<enter>(First cylinder:45089)
278412(Last cylinder)

n(新しくパーティションを作る)
<enter>(First cylinder:45089)
<enter>(Last cylinder:278412)

t(パーティションシステムIDを変更する)
3(Partition 3)
82(Linux swap / Solaris)

p(現在のパーティション状態を確認)

w(書き込んで終了)

2018-09-19 16 18 41

パーティション切ったあとはフォーマットしましょう

# mkfs.ext4 /dev/vda1
# mkfs.ext4 /dev/vda2
# mkfs.ext4 /dev/vda5
# mkswap /dev/vda3

1-6. mondorestoreコマンドでリストアを実施する

  • モードはInteractively
  • 読み込みデバイスDVD disks
  • Editing mountlistはsdavda に修正
  • Are you sure you want to save your mountlist and continue?Yes
  • Do you want to erase and partition your hard drives? → No
  • Do you want to format your hard drives? → No
  • Do you want me to restore all of your data? → Yes
  • Initialize the boot loader? → Yes
  • You will now be able to regenerate your initrd. → No
  • Did you change the mountlist or cloned the system? → Yes
  • Please confirm/enter the boot device. → /dev/vda
  • fstabは UUID=/dev/vdaX に修正
  • mtabは/dev/sdaX/dev/vdaX に修正
  • grub.confはroot=UUID=〜root=/dev/vda2 に修正
  • device.mapはそのまま
  • Label/Identify your ext2/ext3/ext4 partitions if necessary? → Yes

終わったら reboot させた後にGUI上から インスタンスの停止 をさせる