増設HDDへのバックアップ

増設HDDへのバックアップ①

Q. 既存の FreeBSD システムにハードディスクを増設する手順を教えて下さい。

A. 以下の手順になります。

1) ドライブを接続します。
注) SCSI ドライブから FreeBSD をブートしていて、IDE ドライブを増設した
り、FreeBSD を IDE のプライマリ・マスタ以外のドライブに入れている場合
には注意が必要です。[管理番号 85] を確認してください。

2) 再起動後、dmesg で新しいドライブが認識されていることを確認します。

SCSI ボードと、SCSI ドライブを増設した場合の例を下に示します。
aic0 at ...
aic0 waiting for scsi devices to settle
(aic0:0:0): "SEAGETE ST32155N 0594" type 0 fixed SCSI 2
sd0(aic0:0:0): Direct-Access 2049MB ( 4197405 512 byte sectors)

この例では、以下の作業の対象は "sd0" ドライブであることが確認できまし
た。自分が増設したドライブが確認できない場合は *絶対* この先に進んでは
いけません。

3) root権限で /stand/sysinstall を起動します。

4) スライス情報を書き込みます。
「設定」/「パーティション」(Configure/Partition) を選びます。ディスク
の選択画面が表示されます。増設したドライブを選択します。(ここで間違う
と既存のドライブのデータを失うことになります)

「A」でディスク全体を FreeBSD で使うようにするのが最も簡単です。いくつ
かのスライスに分けたい時や既存のスライスを保存/解放したいときなどは
必要な操作を行なってください。

「W」で書き込みます。ブート・マネージャに関しては、このドライブからブー
トしない場合は気にする必要はありません。適当に設定して下さい。
注) 下記 5) 参照

「Q」でこの画面を終了します。

5) ディスクラベルを書き込み、ファイルシステムを作ります。
「ディスクラベル」(Label) を選択します。

「C」で新たな FreeBSD のパーティションを作成します。最初にパーティショ
ンのサイズを聞かれますが、デフォルトで使用可能な全ブロックサイズが指定
されますから、ディスク全体を一つのパーティションで使用する場合はこのま
まで良いでしょう。次にパーティションのタイプを聞かれますから、ファイル
システムを選択します。さらにそのパーティションをマウントする位置を聞か
れます。/mntや/bkup などのパスを指定します。このとき、指定したディレクトリが
なければ、自動的に作成されます。

「W」で書き込みます。このとき、
「マウントエラー /dev/sd0s1e デバイス, /mnt(or/bkup) マウントポイント:
Invalid argument」
などと出た場合、一旦 /stand/sysinstall を終了し、4) で「W」の書き込みを
せずに、もう一度 3) から作業をしてください。

「Q」でこの画面を終了し、/stand/sysinstall を終了します。
確認は
#df -h ・・・sd0s1eが見えるハズ!

6) ここまでで、ファイルシステムができあがっているはずです。5 で作成
したパーティションをマウントしてみましょう。

# fsck /dev/rsd0s1e 念のために確認
# mount -t ufs /dev/sd0s1e /mnt(or/bkup) マウント

7) 起動時に自動的にマウントさせるには、以下の行を /etc/fstab に追加
します。

/dev/sd0s1e /mnt ufs rw 1 1

8) 中・上級者向けへの注意事項ですが、デバイス・スペシャル・ファイルの
作成についても、自動的に /stand/sysinstall が作成してくれます。手動で
# cd /dev;./MAKEDEV sd0s1a
とする必要はありません。
**************************************************************************
7.37. システムを新しい巨大ディスクへ移すにはどうするのですか?

一番良いのは新しいディスクに OS を再インストールして、それからユーザデータを移す
ことです。
特にあなたが -stable を複数のリリースを跨いで追い掛けている場合にはこの方法を
おすすめします。
あなたは boot0cfg(8) を使うことで booteasy を両方の ディスクにインストールでき、
新しい配置で満足している間デュアルブートができます。
これを行ったあとデータを移す方法を探すなら次の段落は読み飛ばしてください。

何もないディスクへインストールしないことに決めたならば /stand/sysinstall、なり fdisk(8) と
disklabel(8) なりを使って新しいディスクにパーティションとディスクラベルを作らなければなり
ません。
また boot0cfg(8) で booteasy を両方のディスクに インストールして、コピーの作業が終わった
あとに古いシステムからでも新しいディスクからでも起動できるようにしておく必要があります。
この作業の詳細は formatting-media tutorial を見てください。

新しいディスクの立ち上げが終わってデータの移動を待つばかりになりました。
しかし悲しいかな、無闇やたらとコピーすればいいというものではありません。
デバイスファイル (/dev) やシンボリックリンクなどは失敗の元になります。
これらを理解するツール、すなわち dump(8) や tar(1) 等を使う必要があります。
データの移転はシングルユーザで行うことをお勧めしますが、絶対と言うわけではありません。

あなたは dump(8) と restore(8) 以外のもので root ファイルシステムを移行してはなりません。
tar(1) コマンドでもたぶんうまく行くでしょうが、 やらないほうがいいでしょう。
パーティション一つをもう一つのからのパーティションに移すときは dump(8) と restore(8) 使う
べきです。
パーティションのデータを新しいパーティションに移すのに dump を使うやり方は以下の通りです。

1.新しいパーティションに newfs をかける。
2.それを暫定的なマウントポイントにマウントする。
3.そのディレクトリに cd。
4.古いパーティションを dump し、 その出力をパイプで新しい方へ。

たとえば root を /dev/ad1s1a へ、暫定的なマウントポイントを /mnt として移そうとすると
以下のようになります。
# newfs /dev/ad1s1a
# mount /dev/ad1s1a
# cd /mnt
# dump 0uaf - / | restore xf -

もしパーティションの構成を変えようと思っているなら - つまり一つだったものを二つにしたり
二つだったものをくっつけたりしようとしているなら、自前であるディレクトリ以下のすべてを
新しい場所へ移す必要が出てくるかも知れません。
dump(8) はファイルシステムに働くのでこの目的には使えません。
この場合は tar(1) を使います。
一般に /old から /new への移動は tar(1) で以下のようにします。
# (cd /old; tar cf - .) | (cd /new; tar xpf -)

/old に他のファイルシステムがマウントされていて、そのデータの移動までは考えてないならば
最初の tar(1) に 'l' フラグを追加します。
# (cd /old; tar clf - .) | (cd /new; tar xpf -).

tar(1) のかわりに cpio(1) や pax(1), cpdup (ports/sysutils/cpdup) 等を 使っても構いません。