Solaris のシステム管理 (基本編)

ファイルシステムをディスク間でコピーする

ファイルシステムをディスク間でコピーするには、次の 2 つのコマンドを使用します。

volcopy の詳細については、volcopy(1M) のマニュアルページを参照してください。

次の節では、dd コマンドを使用してファイルシステムをディスク間でコピーする方法について説明します。

ファイルシステムのリテラルコピーを作成する

dd コマンドでは、UFS ファイルシステムのリテラル (ブロックレベル) コピーを別のファイルシステムやテープに作成します。デフォルトでは、dd コマンドはその標準入力を標準出力にコピーします。


注 –

可変長テープドライブで dd コマンドを使用するときは、必ず適切なブロックサイズを指定してください。


標準入力、標準出力、またはその両方の代わりに、デバイス名を指定できます。次の例では、フロッピーディスクの内容が /tmp ディレクトリ内のファイルにコピーされます。


$ dd < /floppy/floppy0> /tmp/output.file
2400+0 records in
2400+0 records out

dd コマンドは、読み取りブロック数と書き込みブロック数をレポートします。+ の次の数値は、部分的にコピーされたブロックの数です。デフォルトのブロックサイズは 512 バイトです。

dd コマンドの構文は、他のほとんどのコマンドとは異なっています。オプションは keyword=value のペアで指定します。この場合、keyword は設定するオプションで、value はそのオプションの引数です。たとえば、標準入力と標準出力を次の構文に置き換えることができます。


$ dd if=input-file of=output-file

上記の例のリダイレクト記号の代わりに keyword=value の形式で指定するには、次のように入力します。


$ dd if=/floppy/floppy0 of=/tmp/output.file

ディスクをコピーする方法 (dd)

  1. コピー元とコピー先のディスクが、同じディスクジオメトリを保持していることを確認します。

  2. スーパーユーザーになるか、同等の役割を引き受けます。

  3. /reconfigure ファイルを作成し、リブート時にシステムが追加するコピー先ディスクを認識するようにします。


    # touch /reconfigure
    
  4. システムをシャットダウンします。


    # init 0
    
  5. コピー先ディスクをシステムに接続します。

  6. システムをブートします。


    ok boot
    
  7. コピー元ディスクをコピー先ディスクにコピーします。


    # dd if=/dev/rdsk/device-name of=/dev/rdsk/device-name bs=block-size
    

    if=/dev/rdsk/device-name

    マスターディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 

    of=/dev/rdsk/device-name

    コピー先ディスクデバイスのオーバーラップスライスを指定する。通常はスライス 2。 

    bs= blocksize

    ブロックサイズ (128K バイト、256K バイトなど) を指定できる。ブロックサイズの値を大きくすると、ディスクのコピーに要する時間を短縮できる。 

    詳細については、dd(1M) のマニュアルページを参照してください。

  8. 新しいファイルシステムをチェックします。


    # fsck /dev/rdsk/device-name
    
  9. コピー先ディスクのルート (/) ファイルシステムをマウントします。


    # mount /dev/dsk/device-name /mnt
    
  10. /etc/vfstab ファイルのあるディレクトリに移動します。


    # cd /mnt/etc
    
  11. テキストエディタを使用して、コピー先ディスクの /etc/vfstab ファイルを編集して、正しいデバイス名を参照するようにします。

    たとえば、c0t3d0 のインスタンスをすべて c0t1d0 に変更します。

  12. コピー先ディスクのルート (/) ディレクトリに移動します。


    # cd /
    
  13. コピー先ディスクのルート (/) ファイルシステムをマウント解除します。


    # umount /mnt
    
  14. システムをシャットダウンします。


    # init 0
    
  15. コピー先ディスクからシングルユーザーモードでブートします。


    # boot diskn -s
    

    注 –

    installboot コマンドをコピー先ディスクで実行する必要はありません。これは、ブートブロックがオーバーラップスライスの一部としてコピーされるためです。


  16. コピー先ディスクの構成を解除します。


    # sys-unconfig
    

    構成を解除すると、システムが停止します。

  17. 再びコピー先ディスクからブートし、ホスト名や時間帯などのシステム情報を与えます。


    # boot diskn
    
  18. システムがブートしたら、スーパーユーザーとしてログインしてシステム情報を確認します。


    hostname console login:

例 — ディスクをコピーする (dd)

次の例では、マスターディスク /dev/rdsk/c0t0d0s2 をコピー先ディスク /dev/rdsk/c0t2d0s2 にコピーする方法を示します。


# touch /reconfigure
# init 0
ok boot
# dd if=/dev/rdsk/c0t0d0s2 of=/dev/rdsk/c0t2d0s2 bs=128k
# fsck /dev/rdsk/c0t2d0s2
# mount /dev/dsk/c0t2d0s2 /mnt 
# cd /mnt/etc
# vi vfstab
(新しいディスクのエントリを変更)
# cd /
# umount /mnt
# init 0
# boot disk2 -s
# sys-unconfig
# boot disk2