Linux 仮想化サーバを通常のサーバに移行する(3)

Linux 仮想化サーバを通常のサーバに移行する方法について説明します。この記事では主に仮想化サーバ側のバックアップについて説明しています。

仮想化サーバでのバックアップ

今回は仮想化サーバに対してのみの作業となります。事前に Teraterm、Putty、あるいは直接 Linux 上で作業を行います。また、接続する対象は仮想化サーバを管理しているサーバではなく、仮想化サーバ自体となります。間違えやすいので注意して下さい。

まず仮想化サーバ上のバックアップです。主にデバイス情報の収集とパーティションイメージを取得します。

ログインと作業ディレクトリの準備

まずは root 権限でログインして下さい。

$ su -

次に不要なファイル等バックアップ対象には必要のないファイルがある場合、chattr コマンドで dump の対象外フラグを立てておきます。

# chattr -R +d [対象ディレクトリ]

chattr コマンドの +d フラグは dump 対象外フラグを意味します。 -R オプションはサブディレクトリ全てを含んでいることを意味します。

ここで情報を保存しておくディレクトリ(作業ディレクトリ)を作成し、移動します。場所はどこでも構いません。ただ、このディレクトリは dump 対象外とします。バックアップ対象外とするには前述した chattr コマンド等を利用します。

# mkdir -p [作業ディレクトリ]
# cd [作業ディレクトリ]

デバイス情報の取得

デバイス情報を取得します。デバイス情報は今回のように「仮想サーバ」と同じサーバに移行する場合のみ必要となります(NFS や FTP サーバ等に保存しておけばいつでもデバイス情報を参照できる為)。

  <th class="xl24" style="border-left: medium none; width: 81pt;" width="108">
    コマンド
  </th>

  <th class="xl25" style="border-left: medium none; width: 248pt;" width="331">
    説明
  </th>
</tr>

<tr>
  <td class="xl26" style="border-top: medium none; height: 54pt;" rowspan="3" height="72">
    パーティション情報
  </td>

  <td class="xl22" style="border-top: medium none; border-left: medium none;">
    e2label
  </td>

  <td class="xl27" style="border-top: medium none; border-left: medium none; width: 248pt;" width="331">
    パーティションのラベルを確認する
  </td>
</tr>

<tr>
  <td class="xl22" style="border-top: medium none; border-left: medium none; height: 13.5pt;" height="18">
    fdisk -l
  </td>

  <td class="xl27" style="border-top: medium none; border-left: medium none; width: 248pt;" width="331">
    パーティションのサイズ、デバイス名を確認する
  </td>
</tr>

<tr style="height: 27pt;">
  <td class="xl22" style="border-top: medium none; border-left: medium none; height: 27pt;" height="36">
    cat /etc/fstab
  </td>

  <td class="xl27" style="border-top: medium none; border-left: medium none; width: 248pt;" width="331">
    パーティションがどのようにマウントされているかを確認する
  </td>
</tr>

<tr style="height: 27pt;">
  <td class="xl28" style="border-top: medium none; height: 27pt;" height="36">
    ドライブの使用量
  </td>

  <td class="xl22" style="border-top: medium none; border-left: medium none;">
    df -h
  </td>

  <td class="xl27" style="border-top: medium none; border-left: medium none; width: 248pt;" width="331">
    パーティションイメージが移行後のディスクに収まるかを確認する
  </td>
</tr>

<tr style="height: 13.5pt;">
  <td class="xl28" style="border-top: medium none; height: 13.5pt;" height="18">
    メモリ使用量
  </td>

  <td class="xl22" style="border-top: medium none; border-left: medium none;">
    free -l
  </td>

  <td class="xl27" style="border-top: medium none; border-left: medium none; width: 248pt;" width="331">
    現在使用しているメモリ量を確認する
  </td>
</tr>

<tr style="height: 27.75pt;">
  <td class="xl29" style="border-top: medium none; height: 27.75pt;" height="37">
    プログラム稼動状態
  </td>

  <td class="xl30" style="border-top: medium none; border-left: medium none;">
    ps -aux
  </td>

  <td class="xl31" style="border-top: medium none; border-left: medium none; width: 248pt;" width="331">
    移行後に同じ状態でサーバが起動されたことを確認するために取得する
  </td>
</tr>

デバイス情報取得には fdisk、e2label、sfdisk、df、free、mount、ps 等を利用します。この他にももちろん追加で各種の情報を事前に取得しておくことが好ましいと考えられます。

# e2label /dev/sda1 &> e2label_sda1.txt
# cat e2label_sda1.txt
/boot
# e2label /dev/sdb1 &> e2label_sdb1.txt
# cat e2label_sdb1.txt
(表示なし)

実際の表示はハードウェア構成により異なります。また上述したようにドライブにラベルの付いていないものは表示されません。ラベルは /etc/fstab を確認することでも参照可能です

その他各種コマンドや出力内容について詳細な説明も本来は必要ですが目的と逸脱する為、コマンド例のみを記載してゆきます。

# fdisk -l &> fdisk_l.txt
# cat fdisk_l.txt
Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sda1 * 1 65 522081 83 Linux
/dev/sda2 66 9729 77626080 8e Linux LVM
※全ハードドライブに対して行います
# cat /etc/fstab &> fstab.txt && fstab.txt
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
# df -h &> df_h.txt && cat df_h.txt
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
70G 13G 55G 19% /
/dev/sda1 494M 36M 433M 8% /boot
tmpfs 944M 0 944M 0% /dev/shm
192.168.101.60:/ 63G 24G 36G 41% /mnt/nfs
# free -l &> free_l.txt && cat free_l.txt
total used free shared buffers cached
Mem: 1932288 506528 1425760 0 29404 305056
-/+ buffers/cache: 172068 1760220
Swap: 2031608 0 2031608
# ps aux -ww &> ps_aux.txt && cat ps_aux.txt
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2060 636 ? Ss 22:24 0:00 init 
root 2 0.0 0.0 0 0 ? S 22:24 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 22:24 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 22:24 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S 22:24 0:00 [migration/1]
root 6 0.0 0.0 0 0 ? SN 22:24 0:00 [ksoftirqd/1]
・
・
・
(中略)
・
・
・
papa 3589 0.0 0.0 5460 1404 pts/1 Ss 22:26 0:00 -bash
root 3628 0.0 0.0 5804 1292 pts/1 S 22:26 0:00 su –
root 3629 0.0 0.0 5816 1560 pts/1 S 22:26 0:00 -bash
root 3688 0.0 0.0 0 0 ? S 22:26 0:00 [nfsv4-svc]
root 3813 0.0 0.0 5188 932 pts/1 R+ 22:43 0:00 ps aux -ww

この他、LVM を利用しているのであれば、pvdisplay、vgdisplay、lvdisplay の結果も取得しておくことをお勧めします。

パーティションイメージのダンプ

次にパーティションイメージを取得します。イメージ取得の前にキャッシュとディスクを同期しておきます。

# sync

次にダンプを行うのですが、このコマンドは利用している全てのパーティションに対して実行する必要があります。どのパーティションを利用しているかについては既に取得した fdisk -l コマンドの結果から確認することが可能です。

以下の例の場合 fdisk -l コマンドの結果のうち、「デバイス」列に表示された /dev/sda1 と /dev/sda2 がダンプ対象となるパーティションを意味します。

# fdisk -l &> fdisk_l.txt && cat fdisk_l.txtDisk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot Start End Blocks Id System
/dev/sda1 * 1 65 522081 83 Linux
/dev/sda2 66 9729 77626080 8e Linux LVM

そしてダンプします。以下の例では保存先に「/img_bkup/dump_z7_0uf_sda1.dump」を取得するデバイスに「/dev/sda1」を指定しています。

# dump -z7 -0uf /img_bkup/dump_z7_0uf_sda1.dump /dev/sda1
※ “-0uf” の “0” は「ゼロ」。
# restore -tf /img_bkup/dump_z7_0uf_sda1.dump
※ dump が問題ないか一度解凍して確認。このディレクトリに解凍されるので注意が必要
DUMP: Date of this level 0 dump: Tue Apr 1 00:14:47 2008
DUMP: Dumping /dev/mapper/VolGroup00-LogVol00 (/) to /img_bkup/dump_z7_0uf_LogVol00.dump
DUMP: Label: none
DUMP: Writing 10 Kilobyte records
DUMP: Compressing output at compression level 7 (zlib)
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 4468651 blocks.
DUMP: Volume 1 started with block 1 at: Tue Apr 1 00:16:02 2008
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: 18.99% done at 2828 kB/s, finished in 0:21
DUMP: 37.35% done at 2781 kB/s, finished in 0:16
DUMP: 59.86% done at 2972 kB/s, finished in 0:10
DUMP: 84.84% done at 3159 kB/s, finished in 0:03
DUMP: 100.00% done at 3186 kB/s, finished in 0:00
DUMP: Closing /img_bkup/dump_z7_0uf_LogVol00.dump
DUMP: Volume 1 completed at: Tue Apr 1 00:43:47 2008
DUMP: Volume 1 took 0:27:45
DUMP: Volume 1 transfer rate: 1146 kB/s
DUMP: Volume 1 5249410kB uncompressed, 1909430kB compressed, 2.750:1
DUMP: 5249410 blocks (5126.38MB) on 1 volume(s)
DUMP: finished in 1659 seconds, throughput 3164 kBytes/sec
DUMP: Date of this level 0 dump: Tue Apr 1 00:14:47 2008
DUMP: Date this dump completed: Tue Apr 1 00:43:47 2008
DUMP: Average transfer rate: 1146 kB/s
DUMP: Wrote 5249410kB uncompressed, 1909430kB compressed, 2.750:1
DUMP: DUMP IS DONE

Published by in Uncategorized and tagged Linux, VMWare, Xen and 仮想化 using 917 words.