5    ディスクの管理

この章では,ディスクの管理に関連する,システム管理作業について説明します。 説明する項目は,次のとおりです。

AdvFS の管理については,『AdvFS 管理ガイド』を参照してください。

5.1    Disk Configuration ユーティリティを用いたディスク・パーティションの作成

Disk Configuration グラフィカル・ユーザ・インタフェース (GUI) の diskconfig を使用して,次の作業を行うことができます。

Disk Configuration GUI (diskconfig) の起動についての詳細は, diskconfig(8) を参照してください。 GUI の使い方は,オンライン・ヘルプで見ることができます。

Disk Configuration GUI を,以下のいずれかの方法で起動します。

注意

パーティションのサイズを変更しようとすると,Disk Configuration から警告が表示されます。 しかし,必要なデータを上書きしないためには,変更があることを前もって計画にいれておかなければなりません。 パーティションのサイズを変更する前に,データ・パーティションをすべてバックアップしておいてください。

Disk Configuration on hostname」というタイトルのウィンドウが表示されます。 これが Disk Configuration アプリケーションのメイン・ウィンドウであり,システム内の各ディスクのリストと,各ディスクについて次のような情報が表示されます。

特定のディスクを構成するために,リスト内のデバイスを選択し,[設定...] を選択します。 別の方法として,リスト内のディスクをダブルクリックすることもできます。 2 つのウィンドウ,「Configure Partitions」と「Partition Table」がオープンします。

Disk Configuration: Configure Partitions: device name device type

このウィンドウで,ディスク・パーティションの開始アドレス,終端アドレス,サイズ,および使用オプションを設定できます。

Disk Configuration: Partition Table: device name device type

このウィンドウには,現在のパーティションの開始アドレス,終端アドレス,およびサイズが表示されます。

これらのウィンドウについての詳細は,オンライン・ヘルプを参照してください。

パーティションを調整した後,次のように SysMan Menu のオプションを使用して,新しく作成したファイル・システムをマウントします。

  1. 新しいファイル・システムを /etc/fstab ファイルに追加する。

  2. SysMan Menu を起動する。 詳細は,第 1 章を参照してください。

  3. [ファイル・システム] を選択する。 さらにオプションが表示されます。

  4. [一般的なファイルシステム・ユーティリティ] を選択する。 さらにオプションが表示されます。

  5. [ファイルシステムのマウント] を選択する。 「マウント操作」のメイン・ウィンドウがオープンします。

  6. [AdvFS/UFS ファイル・システムのマウント] を選択し,[次へ] を選択する。 「Steps」ダイアログ・ボックスがオープンします。

  7. [次へ] を選択する。 「Select File System」ダイアログ・ボックスがオープンします。

  8. ファイル・システムのリストからファイルを選択し,[次へ] を選択する。 「Mount」ダイアログ・ボックスがオープンします。

  9. 「Mount Directory」フィールドに /usr/newusers のようなマウント・ポイントを入力する。

    あるいは,[Browse...] を使用し,マウント・ポイントのディレクトリを見つけて選択する。

  10. アクセス・モードを選択する。

  11. [次へ] を選択する。 「Summary」ダイアログ・ボックスがオープンします。

  12. [Finish] を選択する。

  13. [Exit] を選択して,SysMan Menu を終了する。

これで新しいファイル・システムがアクセスできるようになります。

5.1.1    パーティション・ウィンドウの構成

このウィンドウには,以下の情報とオプションが表示されます。

5.1.2    パーティション・テーブル・ウィンドウ

このウィンドウには現在使用しているパーティションの棒グラフ,サイズ,および使われているファイル・システムが表示されます。 現在のパーティション・サイズを,このデバイスの省略時のテーブルにある値とセッションが開始された時点のオリジナル (開始テーブル) の値の間で切り替えることができます。 手動によるパーティション変更に失敗した場合は,このウィンドウを用いてパーティション・テーブルをリセットできます。

5.2    手動によるディスク・パーティションの作成

この項では,ディスクのパーティション・スキームの変更に必要な情報を示します。 一般に,ディスク・スペースは,初期インストレーション時またはディスクをシステム構成に追加する場合に割り当てます。 通常は,パーティションを変更する必要はありません。 しかし,環境の変化に対応したりシステムの性能を向上させたりするために,ディスクのパーティション・サイズの変更が必要な場合もあります。

5.2.1    ユーティリティ

以下のコマンドを使用すると,手動によるディスク保守ができます。

disklabel

このコマンドを使用して,ディスク・ドライブまたはディスク・パックのラベルの,インストール,検査,および変更を行います。 ディスク・ラベルには,タイプ,物理パラメータ,およびパーティションなどの,ディスクについての情報が記録されています。 /etc/disktab ファイルについての詳細は, disklabel(4) を参照してください。

newfs

このコマンドを使用して,指定したデバイスに新しい UFS ファイル・システムを作成します。 AdvFS (Advanced File System) ドメインを作成する場合は,newfs コマンドではなく,mkfdmn コマンドを使用してください。

mkfdmnmkfset

このコマンドは,AdvFS (Advanced File System) ドメインとファイルセットの作成に使用します。 詳細は, mkfdmn(8) を参照してください。

5.2.2    disklabel ユーティリティの使用

ディスク・ラベルには,ディスクおよびディスクを分割するパーティションのジオメトリに関する詳細な情報が入っています。 root ユーザは,disklabel コマンドでラベルを変更することができます。 コマンド・オプションの詳細は, disklabel(8) を参照してください。

ディスク・ラベルには 2 つのコピーがあり,1 つはディスクに,もう 1 つはシステム・メモリに置かれます。 I/O を実行するよりはシステム・メモリにアクセスする方が速いため,システムのブート時に,メモリへディスク・ラベルがコピーされます。 システムにあるラベルではなく,ディスク上のラベルに直接アクセスする場合は,disklabel -r コマンドを使用してください。

注意

ディスクにデータがある場合は,ディスク・パーティションを変更する前に,すべてのファイル・システムをバックアップしてください。 パーティションを変更すると古いファイル・システムのデータは上書きされ,壊れてしまいます。

パーティションの変更に対しては,次の規則が適用されます。

注意

パーティション a がすでにマウントされている場合は,デバイス・パーティション a を用いてディスク・ラベルを編集しようとしても,変更できません。 また,ラベルを書き込めなかったというエラー・メッセージが表示されることもありません。

ディスク・パーティションのサイズを変更する前に,ディスク・ラベルを表示して現在のパーティションの設定を調べてください。 そのために,disklabel コマンドでパーティション・サイズを表示させます。 パーティションのボトム,トップ,およびサイズは,512 バイト・セクタを 1 単位として表示されます。

現在のディスク・パーティション設定を調べるために,次の disklabel コマンドを実行してください。

/sbin/disklabel -r device

ディレクトリ名 (/dev) の後に raw デバイス名,ドライブ番号,およびパーティション a または c を続けて入力し,デバイスを指定してください。 dsk1 のように,ディスク・ユニットと番号を指定することもできます。

disklabel コマンドでディスク・ラベルを表示させる例を示します。

# disklabel -r /dev/rdisk/dsk3a 
type: SCSI
disk: rz26
label:
flags:
bytes/sector: 512
sectors/track: 57
tracks/cylinder: 14
sectors/cylinder: 798
cylinders: 2570
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions:
#       size offset   fstype [fsize bsize cpg]
 a:  131072       0   4.2BSD   1024  8192  16  # (Cyl.    0 - 164*)
 b:  262144  131072   unused   1024  8192      # (Cyl.  164*- 492*)
 c: 2050860       0   unused   1024  8192      # (Cyl.    0 - 2569)
 d:  552548  393216   unused   1024  8192      # (Cyl.  492*- 1185*)
 e:  552548  945764   unused   1024  8192      # (Cyl. 1185*- 1877*)
 f:  552548 1498312   unused   1024  8192      # (Cyl. 1877*- 2569*)
 g:  819200  393216   unused   1024  8192      # (Cyl.  492*- 1519*)
 h:  838444 1212416   4.2BSD   1024  8192 16   # (Cyl. 1519*- 2569*)

パーティションの変更は,ファイル・システムのデータを上書きしたり,システムの効率を悪くしたりする可能性があるため,慎重に行う必要があります。 パーティション・サイズの変更の際にパーティション・ラベルが壊れた場合は,次のように disklabel コマンドに -w オプションを付けて,省略時のパーティション・ラベルに復元することができます。

# disklabel -r -w /dev/rdisk/dsk1a rz26

disklabel コマンドを使えば,カーネルの再構築およびシステムのリブートを伴わずに,各ディスクのパーティション・ラベルを変更できます。 パーティション・サイズを変更する場合は次の手順に従ってください。

  1. df コマンドを使用して,ファイル・システムのディスク・スペースの情報を表示させます。

  2. /etc/fstab ファイルを表示させて,スワップ領域として指定されているファイル・システムがないか確認します。

  3. disklabel コマンドに -r オプションを指定して実行し,ディスク・ラベルを調べます (省略時のディスク・パーティションについての説明は, rz(7)ra(7),また disktab(4) を参照してください)。

  4. ファイル・システムをバックアップします。

  5. 変更したいラベルのあるディスクのファイル・システムをアンマウントします。

  6. 新しいパーティション・パラメータを計算します。 パーティション・サイズは,増減させることができます。 また,パーティションどうしを重ねることもできます。

  7. 次の構文で disklabel コマンドに -e オプションを指定して実行することにより,ディスク・ラベルを編集してパーティション・パラメータを変更します。

    # /sbin/disklabel -e disk
    

    vi エディタ,または EDITOR 環境変数で指定されたエディタが起動されて,ディスク・ラベルを編集できるようになります。 このとき,ディスク・ラベルは,disklabel -r コマンドの場合と同じ形式で表示されます。

    -r オプションを指定すると,可能であれば,ラベルはディスクに直接書き込まれ,メモリ内のコピーが更新されます。 disk パラメータには,アンマウントされているディスク (たとえば dsk0 または /dev/rdisk/dsk0a など) を指定します。

    エディタを終了して変更内容を保存すると,次のプロンプトが表示されます。

    write new label? [?]:
    

    新しいラベルを書き込む場合は,y を入力し,変更内容を廃棄する場合は,n を入力します。

  8. disklabel コマンドに -r オプションを指定して実行し,新しいディスク・ラベルを表示させます。

5.2.3    newfs コマンドによるパーティションの重なりのチェック

ファイル・システムのマウントや作成を行うコマンド,新しいスワップ・デバイスを追加するコマンド,および Logical Storage Manager へディスクを追加するコマンドは,まず,コマンドに指定されたディスク・パーティションにすでに有効なデータが含まれていないかどうか,また,そのパーティションが使用中の他のパーティションと重なっていないかどうかについて,確認します。 その際,指定されたパーティションまたは重なっているパーティションが使用中であるかどうかは,ディスク・ラベルの「fstype」フィールドで判断できます。

パーティションが使用されていないければ,コマンドは実行を継続します。 ファイル・システムのマウントや作成だけでなく,mountnewfsfsckvoldiskmkfdmnrmfdmn,および swapon のようなコマンドも,ディスク・ラベルを変更して,「fstype」フィールドにパーティションの用途を設定します。 たとえば,AdvFS ドメインにディスク・パーティションを追加すると,「fstype」フィールドは AdvFS に設定されます。

パーティションが利用できない場合,これらのコマンドは次のようなエラー・メッセージを返して,処理を継続するかどうかを問い合わせてきます。

# newfs /dev/disk/dsk8c
WARNING: disklabel reports that basename,partition currently
is being used as "4.2BSD" data. Do you want to
continue with the operation and possibly destroy
existing data? (y/n) [n]

オペレーティング・システムのコマンド同様,アプリケーションもディスク・ラベルの fstype を変更して,パーティションが使用中であることを示すことができます。 詳細については, check_usage(3) および set_usage(3) を参照してください。

5.3    ディスクのコピー

ディスクまたはディスク・パーティション全体のコピーには dd コマンドを使用します。 このコマンドを実行すると,ディスクまたはディスク・パーティションの物理的なコピーが作成されます。

注意

dd コマンドは複数のファイルをコピーするためのコマンドではありませんので,データ・ディスクとして使用しているディスクに,あるいは,ファイル・システムを含まないディスクに,単一のディスクまたはパーティションをコピーします。 UFS ファイル・システムを含むディスクまたはパーティションをコピーする場合は,第 9 章 で説明する dump および restore コマンドを使用してください。 また,AdvFS ファイルセットを含むディスクまたはパーティションをコピーする場合は,『AdvFS 管理ガイド』 で説明されている vdump および vrestore コマンドを使用してください。

ディスクの最初のブロックにはディスク・ラベルが保管されているため,オペレーティング・システムでは,有効なディスク・ラベルを持ったディスクのこのブロックを保護します。 したがってディスク・ラベルが存在するターゲット・ディスク上のパーティションをコピーする場合は,そのターゲット・ディスク上のディスク・ラベルを保存するかどうかを決めなければなりません。

ターゲット・ディスク上のディスク・ラベルをそのままにしておく場合は,dd コマンドに skip または seek オプションを付けて実行し,ターゲット・ディスク上の保護されているディスク・ラベル領域をスキップします。 ターゲット・ディスクの容量は,オリジナルのディスクと同じかそれ以上でなければなりません。

ターゲット・ディスクにラベルがあるかどうかを確認するには,次の disklabel コマンドを使用します。

# /sbin/disklabel -r target_disk

ターゲット・デバイスのディレクトリ名 (/dev) の後に raw デバイス名,ドライブ番号,およびパーティション c を続けて指定します。 ディスクにラベルがない場合は,次のメッセージが表示されます。

Bad pack magic number (label is damaged, or pack is unlabeled)
 

ディスクにすでにラベルが付いている場合の例は次のようになります。

# disklabel -r /dev/rdisk/dsk1c
type: SCSI
disk: rz26
label:
flags:
bytes/sector: 512
sectors/track: 57
tracks/cylinder: 14
sectors/cylinder: 798
cylinders: 2570
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions:
#      size  offset  fstype [fsize bsize  cpg]
 a:  131072       0  unused 1024 8192 # (Cyl.    0 - 164*)
 b:  262144  131072  unused 1024 8192 # (Cyl.  164*- 492*)
 c: 2050860       0  unused 1024 8192 # (Cyl.    0 - 2569)
 d:  552548  393216  unused 1024 8192 # (Cyl.  492*- 1185*)
 e:  552548  945764  unused 1024 8192 # (Cyl. 1185*- 1877*)
 f:  552548 1498312  unused 1024 8192 # (Cyl. 1877*- 2569*)
 g:  819200  393216  unused 1024 8192 # (Cyl.  492*- 1519*)
 h:  838444 1212416  unused 1024 8192 # (Cyl. 1519*- 2569*)

ターゲット・ディスクにすでにラベルが付いており,そのラベルがもう必要ない場合は,disklabel -z コマンドを使用してラベルをクリアしなければなりません。 たとえば,次のようにします。

# disklabel -z /dev/rdisk/dsk1c

オリジナル・ディスクをターゲット・ディスクにコピーし,ターゲット・ディスクのラベルをそのまま保存する場合は,dd コマンドを使用します。 このコマンドには,デバイス・ディレクトリ名 (/dev) の後に raw デバイス名,ドライブ番号,オリジナルおよびターゲットのディスク・パーティションを続けて指定します。 たとえば次のように指定します。

# dd if=/dev/rdisk/dsk0c of=/dev/rdisk/dsk1c \
skip=16 seek=16 bs=512k