Landscape トップページ | < 前の日 2003-10-11 2003-10-14 次の日 2003-10-15 >

Landscape - エンジニアのメモ 2003-10-14

Linux マシン pro の /dev/hda のバックアップと換装


* Linux マシン pro の /dev/hda のバックアップと換装

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux] [バックアップ]

pro の /dev/hda の調子が悪い。
3.5 GB よりも後ろの部分あたりに書き込もうとすると、IDE デバイスだかなんだかがそのまま無反応になってしまい、コンソールに延々とエラーメッセージが表示されるという状態になる。このまま使い続けるのは怖いので、ハードディスクを交換することにした。交換するドライブは /home が入っている。以下では、データの移行について調べたこと、試したことを記録する。

- やりたいこと

/home パーティションなので、新しいディスクにデータを全部引き継ぎたい。さてどうするか。

- 環境

OS: TurboLinux 6.5 Server

- /dev/hda について

$dmesg |grep hda
hda: Maxtor 84320D5, ATA DISK drive
hda: Maxtor 84320D5, 4119MB w/256kB Cache, CHS=525/255/63

$ df -h
/dev/hda1            4.0G  2.5G  1.3G  65% /home

ちょうど一台使われていないマシンがあるので、そのマシンに 84320D5 と 新しいドライブを接続し、knoppix を使ってコピーするとしよう。コピーは単純に cp -r でいいかな。この方法でファイルオーナーやパーミッションが引き継がれれればいいんだけど。

・・・と思ったけど、tar でやるのが楽なようだ。
[linux-users:58294] Re: HDD まるごと複製
http://search.luky.org/linux-users.5/msg07977.html

tar -c -l -S -f - / | (cd /newroot && tar -x -v -f -)
-c, --create 新しいアーカイブを作成する
-l, --one-file-system ローカルなファイル・システムに限定してアーカイブを作成する
-S, --sparse 疎らなファイルを効率的に処理する
-f, --file [HOSTNAME:]F Fというアーカイブ・ファイルまたはデバイスを使う(デフォルトは/dev/rmt0)

-f - がよくわからない。付けても付けなくても変わらなかった。もしかして、標準出力を意味するのだろうか?

() で括ってそこに 標準出力をパイプできるなんて初めて知った。もっとも、tar には -C, --directory DIR DIRにcdしてから動作を行なう があるから、-C を使ってもいいかも。

パーミッションとオーナーも同じにしたいが、
以下の報告があったため tar のマニュアルを確認してみた。
[linux-users:58424] Re: HDDまるごと複製
http://search.luky.org/linux-users.5/msg08107.html
> >  tar -c -l -S -f - / | (cd /newroot && tar -x -v -f -)
>
> これでやったわけですが、私は結局遠隔にあるコピー元?にログインして
> 一旦 tarball をつくって、それをダウンロードして手元で複製、という
> 工程になったので、標準入出力を使う上記方法にはならなかったのですが、
> 少なくとも一旦 tarball を作ってからの場合だと、復元の再に -p オプションも
> ないとだめのようです。パーミッションが狂ってしまって慌てました。

以前この ML で tar では symlink の owner.group が復元されないという
話がありましたが、大丈夫ですか?
正しく復元できたのでしたら、使用された tar の option, version を教えて
ください。

# cpio なら symlink の owner もちゃんと復元されるのですが、hard link
  の保存方法がわからなくて挫折。
  今は tar で full backup 取って、戻す時は tar xpf ... のあと / で
  ls -lR しておいたログを元に chown してまわっています。
  symlink の owner なんてどうでも良いと以前は思ってましたけど、apache
  で SymLinksIfOwnerMatch 使うようになってからは...

上記報告を踏まえ、
ファイルオーナーとパーミッションを同じにするため以下のオプションを付けてみることにした。
--same-owner アーカイブ内のファイルのものと同じ所有属性でファイルを抽出する
-p, --same-permissions, --preserve-permissions 許可情報を全て抽出する

- 最終的に実行するコマンド

tar -c -p -l -S -f - / | (cd /newroot && tar -x -v -p --same-owner -f -)

- Hard Disk Upgrade Mini How-To 7. 元の HD から新しい HD へのファイルのコピー

http://www.linux.or.jp/JF/JFdocs/Hard-Disk-Upgrade/copy.html
に気になる記述がある。シンボリックリンクのオーナーの件だろうか・・・?
この Mini How-To の以前のバージョンではハードディスクをコピーするのに
tar コマンドも使えると書きましたがこの方法にはバグがあります。

- いざ環境作り

結局 knoppix はブートしなかった。
Uncompressing Linux... Ok, booting the kernel.
で止まってしまう。
http://www.dnsbalance.ring.gr.jp/archives/linux/knoppix/iso/ の knoppix_20030924-20031002.iso でもダメ。

仕方がないので、手元にあった debian woody 3.0 の CD でブートさせた。シェルを起動し、woody のインストーラでパーティションを切る。ディスク丸ごと1パーティションにした。次に、
# mke2fs -m 0 -cc -T news
でフォーマット。ロッカーに転がってたディスクなので、不良セクタがあるおそれがある。不良ブロックを検査 をするために、-cc で read-write test を実行するように指定した。

また、-m 0 オプションを付けて root 用の予約領域をゼロにした。これは、以下の情報を元にやってみたことだ。

Debian GNU/Linux スレッド Ver. 19
http://pc.2ch.net/test/read.cgi/linux/1065374560/193
http://pc.2ch.net/test/read.cgi/linux/1065374560/197
http://pc.2ch.net/test/read.cgi/linux/1065374560/200
193 :login:Penguin [sage] :03/10/15 21:52 ID:bLLfhwtE
ext3 な /home の空きが少なくなってきたので悪足掻きに

tune2fs -m 0 /dev/hoge

で reserved-blocks を無くした。sid で一般ユーザでやると

% /sbin/tune2fs -m 0 /dev/hda8
tune2fs 1.35-WIP (21-Aug-2003)
/sbin/tune2fs: 許可がありません while trying to open /dev/hda8
Couldn't find valid filesystem superblock.

とエラーが出るんだけど、woody だと一般ユーザでも出来ちった…

% /sbin/tune2fs -m 0 /dev/hda11
tune2fs 1.27 (8-Mar-2002)
Setting reserved blocks percentage to 0 (0 blocks)

そ、そーゆーもんなん?(;´Д`)

197 : [sage] :03/10/15 22:33 ID:i5NBqHn0
>>193
予約領域ってゼロにしても大丈夫なのかな。

200 :login:Penguin [sage] :03/10/16 00:50 ID:kXslWQqp
>>197
rootは/home一杯になっても別に困らんから。

- mke2fs -cc って長いよ・・・

4GB のマシンで、仮想コンソールが2つあったので2台のドライブを同時並行でフォーマットしてみた。

- 実際の作業

コンソールでの作業だったため、文中のエラーメッセージは正確ではないので注意。もしかしたら入力したコマンドも実際のものと違っているかもしれない。

まず2台のディスクを移設用マシンに接続し、woody の CD-ROM でブートさせる。ALT + F2 でコンソールに切り替え、各ドライブをマウントする。/bin/cp -a でファイルを全部コピーする。今回は /home しかコピーしないので、これが一番簡単。
# /bin/cp -af /mnt/old/* /mnt/new

コピーが完了したら、新しいドライブを本番マシンに接続。本来ならばこれで作業が終わるはずだったが、ブートローダが起動しないという状況に見舞われた。完全に忘れていたが、今回の対象ドライブは /dev/hda である。ブートローダをインストールしなければならない。

woody の CD には lilo が入っているが、lilo を実行しようとすると、/target にルートファイルシステムをマウントしないと使えないよ、といったエラーメッセージが出てしまう。いくつか試行錯誤をしてみたがうまくいかない。ライブラリのバージョンが違う、といったエラーメッセージまで出てしまう。元のシステムは TurboLinux 6.5 Server であるため、整合性がとれないのだろうか? /sbin ってスタティックリンクしてるからライブラリは関係ないんじゃないか? と思っていろいろ試そうとしたが、諦めて TurboLinux 6.5 Server の CD-ROM でブートすることにした。ところが、今度はなんと lilo がない。/sbin にも /usr/sbin にもない。

CD に無くても、/dev/hdb に入ってるルートファイルシステムにあるじゃんと途中で気づき、/dev/hdb2 をマウントしようとするが、なんだかうまくマウントできない。これも当たり前で、/dev/hdb2 は swap パーティションだったのだ。 気づけば単純なことだが、無機質で乾燥したマシン室では注意力が落ちるということを、身をもって知らされた。ちなみに、/dev/hdb1 は /boot だ。

ルートファイルシステムをマウントし、lilo を実行。
/mnt/tmp/sbin/lilo -C /etc/lilo.conf
しかし、これでもうまくいかない。/boot/boot.b が無いとかいうエラーメッセージが出る。無ければコピーしてしまえ、ということで、
cp /mnt/tmp/boot/* /boot
を実行したが、今度は 0x100 なんてデバイスは知らないよ、といったメッセージが出る。

ここで一度 lilo について調べた方が良い気がしたので、JM で lilo の man を見る。すると、
-r root-directory 操作を行う前に、 chroot でルートディレクトリを変更する。
というオプションがあることに気づいた。これを指定してやればいいんじゃないか、と思い実行するとうまくいった。最終的に実行したのは、以下のコマンドだ。
/mnt/tmp/sbin/lilo -r /mnt/tmp -C /etc/lilo.conf

無事ブートローダのインストールが終わり、ドライブ換装作業は完了。pro は今快調に動作している。後で耐久テストでもやってみることにしよう。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。