いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.124 / 読者数:1190名

こんばんは、うすだです。

先日、ひさびさに、玄人のかたから、メールをいただきました。
(ありがとうございます!)

先週の宿題の答えに関しまして、以下のご指摘をいただいた次第です。

  • dump/restore するときは、Live-CD などで立ち上げ、 別のボリュームにマウントして行うのではないか?
  • restore コマンドは、スタティックリンクとは限らない。

restore コマンド自身を restore する、という主旨から、 同OS上で復元することを前提として書きましたが、実際には、 KNOPPIX などの Live-CD で立ち上げ直してから行うほうが、 安全(というか普通)ですよね。

また、restore コマンドは、 たとえば Ubuntu ではダイナミックリンクになっていました。 実行時にライブラリを必要としますので、 ライブラリが書き換わるとまずそうな気がします。 (すみません…試していません。)
ま、これは、Live-CD などで行うことで、回避できます。

他にも、いろいろ有用な情報をいただきましたが、紙面?の都合上、 割愛させていただきます。

速攻で懺悔したところで、今週も、はりきってまいりましょう!

今週のお題 - 正統派なバックアップを行う / 王の帰還

前回、前々回と、dump コマンドと restore コマンドの使いかたを、 簡単にご紹介してまいりました。

Vol.122 - 正統派なバックアップを行う
http://www.usupi.org/sysad/122.html
Vol.123 - 正統派なバックアップを行う / 二つの塔
http://www.usupi.org/sysad/123.html

…はい、いいかげん、今週で終わりにしなければ、と思っております。

最後はやっぱり、フルバックアップを使って、ゼロの状態からの復元に、 挑戦してみたいと思います。

環境によって、その方法はいろいろ異なると思いますが、 以下の環境ではこうやったらうまくいった、という一事例として、 読んでいただけますと幸いです。


まず、今回試す環境ですが、だれでも試せるように、 VMware Player 上で行いました。 (というのは建前で、それしかなかっただけです…。)
使用したディストリビューションは、この間リリースされました、 Ubuntu の最新である、7.10ja のデスクトップ版です。
また、復元する際に、HDD を使用せずに Linux を立ち上げますが、 今回は KNOPPIX 5.1.1 を使いました。

VMware Player, virtual machine, virtual PC
http://www.vmware.com/jp/products/player/

Ubuntu 7.10 日本語ローカライズド Desktop CD リリース
http://www.ubuntulinux.jp/news/ubuntu710-ja-desktop-cd

KNOPPIX Japanese edition
http://unit.aist.go.jp/itri/knoppix/

フルバックアップを取って、復元するまでの手順は、以下の通りです。

  1. Ubuntu をインストールする。
  2. フルバックアップを取る。
  3. シャットダウンして、空の HDD に差し替える。
  4. KNOPPIX で立ち上げ、バックアップなどを用いて復元する。

それでは、順番に、ご説明していきます。


Ubuntu のインストールは、インストール CD を使って VMware Player を立ち上げ、 いくつかの簡単な質問に答えるだけです。
(DHCP な環境でないと、インストール後に、 ネットワークの設定を手動で行う必要があります。 できれば DHCP 可能な状態にしておきましょう。)

インストール後、再起動して、Ubuntu が動作したら、 早速バックアップを…と言いたいところですが、おそろしいことに、 dump がありません。
ですので、まずは dump パッケージのインストールから行います。

  $ sudo apt-get install dump

また、諸般の事情により、今回は NFS を使用しました。
通常の PC の環境では不要だと思いますが、同じように試したい貴兄は、 nfs-common パッケージをインストールしてください。

  $ sudo apt-get install nfs-common

インストールできましたら、シングルユーザモードに移行します。

  $ sudo telinit 1

そして、いつものように、フルバックアップを行います。

通常、バックアップは、テープデバイスなどに行いますが、 今回そういうわけにもいきませんでしたので、NFS サーバ上に記録しました。
たとえば、NFSサーバのホスト名が nfsserver で、 マウントしたいパスが /export/backup なら、以下のように実行してください。

  # mount -o nolock nfsserver:/export/backup /mnt

/mnt にマウントしました。ここに、フルバックアップを行います。

  # dump -0u -f /export/backup/ubuntu.dump /

ちなみに、わたしの非力な PC 上では、20分ほどかかりました。
フルバックアップが取得できましたら、シャットダウンする前に、 fdisk コマンドを使って、パーティション情報を確認しておきます。

  # fdisk /dev/hda
  
  Command (m for help): p    <== パーティション情報の表示
  ...
     Device Boot  Start    End    Blocks   Id System
  /dev/hda1   *       1    496   3984088+  83 Linux
  /dev/hda2         497    522    208845    5 Extended
  /dev/hda5         497    522    208813+  82 Linux swap / Solaris

  Command (m for help): q    <== fdisk を終了

メモったら、シャットダウンします。

  # shutdown -h now

電源がオフされて、VMware Player が終了すると思います。


次に、空の HDD に差し替えます。
リアルな PC なら、HDD を接続し直すことになりますが、VMware Player の場合は、 vmdk ファイルを、空の状態のものに変更するだけです。
(以下では、Ubuntu.vmdk.org が空の vmdk ファイルです。)

  % mv Ubuntu.vmdk Ubuntu.vmdk.bak
  % mv Ubuntu.vmdk.org Ubuntu.vmdk

差し替えたら、KNOPPIX を使って、VMware Player を立ち上げます。
立ち上がったら、まず fdisk コマンドで、パーティションを切ります。
(…長くてすみません。すっとばしていただいて構いません。)

  $ su -
  # fdisk /dev/hda

  Command (m for help): n    <== 新しいパーティションの作成
  Command action
     e   extended
     p   primary partition (1-4)
  p                          <== プライマリパーティションを指定
  Partition number (1-4): 1  <== 1番を指定 (/dev/hda1)
  First cylinder (1-522, default 1):  1  <== 1 を指定
  Last cylinder or +size or +sizeM or +sizeK (1-522, default 522)\
  : 496                      <== hda1 の End(496)を指定

  Command (m for help): a    <== ブート可能な状態の指定
  Partition number (1-5): 1  <== 1番を指定 (/dev/hda1)

  Command (m for help): n    <== 新しいパーティションの作成
  Command action
     e   extended
     p   primary partition (1-4)
  e                          <== 拡張パーティションを指定
  Partition number (1-4): 2  <== 2番を指定 (/dev/hda2)
  First cylinder (497-522, default 497):
  Using default value 497
  Last cylinder or +size or +sizeM or +sizeK (497-522, default 522): 
  Using default value 522

  Command (m for help): n    <== 新しいパーティションの作成
  Command action
     l   logical (5 or over)
     p   primary partition (1-4)
  l                          <== 論理パーティションを指定
  First cylinder (497-522, default 497): 
  Using default value 497
  Last cylinder or +size or +sizeM or +sizeK (497-522, default 522): 
  Using default value 522

  Command (m for help): t    <== システムID の変更
  Partition number (1-5): 5  <== 5番を指定 (/dev/hda5)
  Hex code (type L to list codes): 82  <== swap を指定
  Changed system type of partition 5 to 82 (Linux swap / Solaris)

  Command (m for help): w    <== 書き込んで終了

そして、ext3 ファイルシステムと、swap を作成します。

  # mkfs.ext3 /dev/hda1
  # mkswap /dev/hda5

では、いよいよ、復元を行います。

  # mount /dev/hda1 /media/hda1
  # mkdir /media/nfs
  # mount nfsserver:/export/backup /media/nfs
  # cd /media/hda1
  # restore -r -f /media/nfs/ubuntu.dump

これで、復元できました。


…と言いたいところですが、このままでは立ち上がりません。
まず、そのままでは GRUB が起動してくれませんので、MBR などへの記録が必要です。 grub コマンドを、以下のように実行してください。

  # grub
  grub> root (hd0,0)
  grub> setup (hd0)
  grub> quit

また、/boot/grub/menu.lst に書かれている root デバイスの UUID を、 変更する必要があります。
HDD の UUID を知るには、tune2fs コマンドを実行します。

  # tune2fs -l /dev/hda1
  tune2fs 1.40-WIP (14-Nov-2006)
  Filesystem volume name:   <none>
  Last mounted on:          <not available>
  Filesystem UUID:          877bd722-160f-456d-bc87-00610701c7bd
  Filesystem magic number:  0xEF53
  ...

Filesystem UUID: がまさにソレです。
で、/boot/grub/menu.lst にある、root=UUID=c3688c74-... などとある箇所を、 上記 UUID に書き換えます。

  # vi /boot/grub/menu.lst

書き換えたら、今度こそ、再起動してください。
(ぶちっとやらずに、KDE のメニューから再起動を選んでください。)

普通に Ubuntu が立ち上がれば、無事完了です。
もし、以下のように、途中で止まってしまいましたら、それは、 UUID の書き換えがちゃんと行われていない、ということです。
もう一度、menu.lst の内容などを確認してみてください。

  Busybox v1.1.3 (Debian 1:1.1.3-5ubuntu7) Built-in shell (ash)
  Enter 'help' for a list of built-in commands.

  (initramfs)

以上、フルバックアップの復元方法を、ご紹介しました。

フルバックアップを復元する、とある一例に過ぎませんが、 なにかの参考になりましたら、幸いです。

また、もし VMware Player で試したい貴兄は、以下をお使いください。

http://www.usupi.org/sysad/124-ubuntu-vm.tgz

わたしが使っている VMware Player のバージョンは 1.0.3 で、 ちょっと古いですので、最新版でうまく動かなかったらすみません。
(Ubuntu 以外のディストリビューションでも、使えると思います。)

宿題の答え

先週の宿題は、

  インクリメンタルバックアップを行う際に、途中のレベルを下げると、
  どうなるでしょうか。

でした。

レベルを、0 -> 2 -> 3 と上げながらバックアップを取り、 その後 1 に下げてみたいと思います。
(例によって例のごとく、/boot を対象とします。)

  # cd /boot
  # dump -0u -f /export/backup/boot0.dump /boot
  # touch /boot/__level2.tmp
  # dump -2u -f /export/backup/boot2.dump /boot
  # touch /boot/__level3.tmp
  # dump -3u -f /export/backup/boot3.dump /boot

わかりやすいように、レベルごとに、ダミーのファイルを作っておきました。
次に、レベル 1 でバックアップを取ります。

  # touch /boot/__level1.tmp
  # dump -1u -f /export/backup/boot1.dump /boot

すると、dump が最初に、以下のようにおっしゃいます。

    DUMP: Date of this level 1 dump: Sat Nov  3 21:14:42 2007
    DUMP: Date of last level 0 dump: Sat Nov  3 21:09:15 2007

前のレベルは 0 だとおっしゃっていますので、レベル 0 からの差分を、 記録してくれるようです。実際、復元をしてみますと、

  # mkdir /tmp/boot; cd /tmp/boot
  # restore -r -f /export/backup/boot0.dump
  # restore -r -f /export/backup/boot1.dump
  # ls __level*
  __level1.tmp  __level2.tmp  __level3.tmp

ちゃんと、判別用のダミーファイルが、すべて復元されています。
これを、0 -> 2 -> 3 -> 1 の順に、律義に復元しようとしますと、 以下のように叱られてしまいます。

  # mkdir /tmp/boot2; cd /tmp/boot2
  # restore -r -f /export/backup/boot0.dump
  # restore -r -f /export/backup/boot2.dump
  # restore -r -f /export/backup/boot3.dump
  # restore -r -f /export/backup/boot1.dump
  restore: Incremental tape too high

また、レベルを 0 -> 2 -> 4 -> 3 の順に変化させてバックアップを行いますと、 最後のレベル 3 は、レベル 2 からの差分を記録します。

  # dump -3u -f /export/backup/boot3.dump /boot
  DUMP: Date of this level 3 dump: Sat Nov  3 21:23:01 2007
  DUMP: Date of last level 2 dump: Sat Nov  3 21:21:47 2007
  ...

というわけで、インクリメンタルバックアップは、直前の、 自分より低いレベルからの差分を記録してくれる、が正解でした。

今週の宿題

今週の宿題は、

  dump/restore の代わりに、tar を使って、フルバックアップと復元を
  試みてください。

です。

今週行ったことを、tar でやってみるとどうなるか、という、それだけの宿題です。 …が、結構手間がかかりますので、時間と根気のある貴兄だけでかまいません。 (こんなこと、だれもやらないと思いますが…。)

あとがき

わたしは、学生のころから、GNU Emacsというエディタを使っています。

社会人になってからは、プログラムを書くときには vi を使うようになりましたが、 それでも、メールや NetNews の閲覧、はたまた文書を書く際などに、 Emacs は必須なエディタとして、その頂点に君臨しています。

さて、先日、わけあって、Emacs の設定をいじくっていたところ、 大切なテキストファイルが、日本語が化けた状態で保存されてしまいました。

コードが違うというレベルではなく、 日本語部分がすべて ~ に変わってしまっていました。 これでは、もう元には戻せません。

しかも、バックアップマシン上のファイルと同期をとってしまいましたので、 頼みの綱のバックアップも失ってしまいました。

常に、バックアップと同期をとっていれば、壊れたときも安心だと思っていました。 しかし、壊れたことに気がつかないと、 バックアップまで破壊してしまうことになるのだということを、身をもって知りました。

不幸中の幸いとでも言いましょうか、ありがたいことに、 1週間くらい前のバックアップが、どこかから出てきました。
ですので、文字化けファイルと照合しながら、なんとか復元できました。

バックアップをとっているから安心、なんて言っていてはいけません。
バックアップは、常日頃から、複数の手段を用いるべきだということが、 よくわかりました。

みなさんも、バックアップを過信しないよう、お気をつけください。

 

さて、いちおう毎週発行を目標として、それなりにやってきたつもりですが、 ここのところの本業の多忙さなどを考慮して、今後は、思い切って、 月2回発行に変更したいと思います。

具体的には、第1および第3日曜日に、発行したいと思っています。
基本的には、発行頻度以外はなにも変わらないはず…ですので、今後も、 読んで、実践していただけますと、とっても幸いです。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、11月18日ごろに、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−おとなのアートというサイトで、栗の絵が紹介されます
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本