5    デバイス・コマンドとデバイス・ユーティリティ

これまでの章では,すべてのデバイスを対象にさまざまな管理を行うための汎用ハードウェア管理ツール (第 3 章 で説明した hwmgr コマンドなど) について説明しました。以降の節では,特定の種類のデバイスを対象に特定の作業を行うためのハードウェア管理ツールについて説明します。

5.1    デバイス・ユーティリティに関する情報

デバイス・ユーティリティの多くについては,このマニュアルだけでなく,他のドキュメントでも説明しています。たとえば,ネットワーク・デバイスを構成するユーティリティについては,『ネットワーク管理ガイド:サービス編』 で詳細に説明しています。表 5-1 に,この章で説明するものも含めて,本書で説明しているユーティリティを示します。その他のユーティリティについては,リファレンス・ページを参照してください。表 5-2 に,リファレンス・ページで説明されているユーティリティのほかに,インタフェースを説明するリファレンス・ページの第 7 節など,リファレンス・データの参照先も示します。

表 5-1:  本書で説明されているデバイス・ユーティリティ

デバイス タスク 場所
プロセッサ 起動または停止 システム管理ガイド
  リソースの共用 システムの構成とチューニング
  モニタリング システム管理ガイド
  電力管理 システム管理ガイド』,dxpower
  メモリのテスト システム管理ガイド
  エラーおよびイベント処理 システム管理ガイド
SCSI バス 高度な構成と管理 5.2.1 項scu
ディスク パーティションの作成 diskconfigdisklabel
  コピー 5.5 節dd
  利用状況のモニタリング 5.6 節dfdu
  電力管理 システム管理ガイド
  ファイル・システムの状態 システム管理ガイド
  テストと動作確認 システム管理ガイド
テープ (およびディスク) アーカイブ システム管理ガイド
  テストと動作確認 システム管理ガイド
クロック 設定 システム管理ガイド
モデム 構成 システム管理ガイド

表 5-2:  リファレンス・ページで説明されているデバイス・ユーティリティ

デバイス タスク 場所
デバイス (汎用) 構成 hwmgr(8)devswmgr(8)dsfmgr(8)
  デバイス特殊ファイル kmknod(8)mknod(8)MAKEDEV(8)dsfmgr(8)
  インタフェース atapi_ide(7)devio(7)emx(7)
プロセッサ 起動と停止 halt(8)psradm(8)reboot(2)
  CPU リソースの割り当て class_scheduling(4)processor_sets(4)runon(1)
  モニタリング dxsysinfo(8)psrinfo(1)
SCSI バス 管理 sys_attrs_cam(5)ddr.dbase(4)ddr_config(8)
ディスク パーティションの作成 diskconfig(8)disklabel(4)disklabel(8)disktab(4)
  モニタリング dxsysinfo(8)diskusg(8)acctdisk(8)df(1)du(1)quota(1)
  テストと保守 diskx(8)zeero(8)
  インタフェース ra(7)radisk(8)ri(7)rz(7)
  スワップ領域 swapon(8)
テープ (およびディスク) アーカイブ bttape(8)dxarchiver(8)rmt(8)
  テストと保守 tapex(8)
  インタフェース tz(7)mtio(7)tms(7)
フロッピィ ツール dxmtools(1)mtools(1)
  テストと保守 fddisk(8)
  インタフェース fd(7)
端末,ポート インタフェース ports(7)
モデム 構成 chat(8)
  インタフェース modem(7)
キーボード,マウス インタフェース dc(7)scc(7)

SysMan グラフィカル・ユーザ・インタフェースが提供するユーティリティのリストについては,『システム管理ガイド』を参照してください。

5.2    SCSI デバイスおよびデバイス・ドライバのユーティリティ

この項では,SCSI デバイスとデバイス・ドライバの管理に使用するユーティリティについて説明します。

5.2.1    SCSI 構成ユーティリティ scu の使用

SCSI/CAM ユーティリティ・プログラム scu には,SCSI 周辺機器と CAM I/O サブシステムに対して行う,高度な保守と診断に必要なコマンドがあります。日常的操作のほとんどには,hwmgr コマンドを使用します。また,scu プログラムには,利用できるオプションとその規則を詳細に説明するヘルプ機能もあります。このコマンドの使い方についての詳細は, scu(8) を参照してください。

scu は,次の作業に使用できます。

注意

DSA (Digital Storage Architecture) ディスクには,radisk プログラムを使用してください。詳細は, radisk(8) を参照してください。

scu の使用例を次に示します。

# scu 
scu> set nexus bus 0 target 0 LUN 0
Device:RZ1CB-CA, Bus:0, Target:0, LUN:0, Type:Direct Access
scu> show capacity
 
Disk Capacity Information:
 
                  Maximum Capacity: 8380080 (4091.836 megabytes)
                      Block Length: 512
scu> show scsi status 0
SCSI Status = 0 = SCSI_STAT_GOOD = Command successfully completed

5.2.2    デバイス・スイッチ・マネージャ devswmgr の使用

devswmgr コマンドを使って,デバイス・スイッチ・テーブル内のデバイス・ドライバについての情報を表示し,このテーブルを管理することができます。また,このコマンドでデバイス・スイッチ・テーブルからエントリを解放することもできます。一般に,ドライバのエントリを解放するのは,ドライバをアンロードした後,再ロードする予定がない場合です。エントリを解放すると,そのエントリは他のデバイス・ドライバに使用できるようになります。

devswmgr を使ってデバイス・データを取得する例を次に示します。

# devswmgr -display
device switch database read from primary file
  device switch table has 200 entries
# devswmgr -getnum 

Device switch reservation list
                          (*=entry in use)
  driver name             instance   major
-----------------------   --------   -----
                    pfm          1      71*
                    fdi          2      58*
                    xcr          2      57 
                   kevm          1      56*
               cam_disk          2      55*
                    emx          1      54 
                  TMSCP          2      53 
                   MSCP          2      52 
                    xcr          1      44 
                    LSM          4      43 
                    LSM          3      42 
                    LSM          2      41*
                    LSM          1      40*
                    ace          1      35*
          parallel_port          1      34*
               cam_uagt          1      30 
                   MSCP          1      28 
                  TMSCP          1      27 
                    scc          1      24 
                 presto          1      22 
                cluster          2      21*
                cluster          1      19*
                    fdi          1      14*
               cam_tape          1       9 
               cam_disk          1       8*
                    pty          2       7 
                    pty          1       6 
                    tty          1       1 
                console          1       0

5.3    diskconfig を使ったディスクのパーティショニング

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

Disk Configuration GUI (diskconfig) の起動についての詳細は, diskconfig(8) を参照してください。グラフィカル・インタフェースの使い方は,オンライン・ヘルプで見ることができます。コマンド・オプションについての詳細は, disklabel(8) を参照してください。

Disk Configuration GUI のグラフィカル・インタフェースを使って行うディスク保守作業のいくつかは,次のコマンドを用いて手作業で行うこともできます。

Disk Configuration インタフェースは,次のどちらかの手順で起動します。

注意

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

[Disk Configuration : hostname] というタイトルのウィンドウが表示されます。DiskConfig ユーティリティ用のメイン・ウィンドウに,各ディスクについて次の情報がリストされます。

リスト項目をダブルクリック (またはディスクが強調表示されている時に [設定] ボタンをクリック) すると,2 つのウィンドウが同時に表示されます。ウィンドウは重なって表示されます。適切なウィンドウにカーソルを移動して,次のようにしてパーティションを構成するか,ディスクのパーティション・テーブルを編集します。

Disk Configuration:Configure Partitions:デバイス名 デバイス・タイプ

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

Disk Configuration:Partition Table:デバイス名 デバイス・タイプ

このウィンドウには現在使用しているパーティションの棒グラフ,サイズ,および使われているファイル・システムが表示されます。次から選択できます。

手作業によるパーティション変更で間違えたときは,このウィンドウを用いてパーティション・テーブルを元に戻せます。

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

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

  1. SysMan Menu を起動します。

  2. [ストレージ] オプションを展開して,[ファイルシステム管理ユーティリティ] - [一般的なファイルシステム・ユーティリティ] - [ファイルシステムのマウント] を選択します。

  3. 「マウント操作」ウィンドウで,特定のファイル・システムをマウントするオプションを選択し,[次へ] ボタンをクリックします。

  4. 「ファイル・システム名とマウント・ポイント」ウィンドウで,以下を行います。

    1. /usr/newusers などのマウント・ポイントを入力します。

    2. /dev/disk/dsk0g のようなパーティション名,または newusr_domain#usr のようなドメイン名を入力します。

  5. [了解] ボタンをクリックしてパーティンションの調整を適用します。

これで新しいファイル・システムへのアクセスが可能になります。

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

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

ディスク・ラベルには,ディスクのジオメトリおよびディスクを分割するパーティションに関する詳細な情報が入っています。ラベルは disklabel コマンドで変更することができます。disklabel コマンドを使用する場合は,root ユーザにならなければなりません。

ディスク・ラベルには 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.4.1    パーティションの重なりの検索

ファイル・システムのマウントや作成を行うコマンド,新しいスワップ・デバイスを追加するコマンド,および 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.5    ディスクのコピー

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

注意

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

UNIX では,有効なディスク・ラベルを持つディスクの先頭のブロックが保護されます。そこにディスク・ラベルが保管されているからです。したがって,有効なディスク・ラベルが存在するターゲット・ディスクにパーティションをコピーするときは,そのターゲット・ディスク上のディスク・ラベルを維持するかどうかを決めなければなりません。

ターゲット・ディスク上のディスク・ラベルをそのままに維持する場合には,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

5.6    ディスク使用量の監視

適切な量のディスクの空き領域を確保するには,次のいずれかの方法で,構成済みのファイル・システムのディスク使用量を定期的に監視します。

quota コマンドは,root ユーザのみが使用できます。

5.6.1    利用可能な空き領域の確認

ファイル・システムに十分な領域を確保するには,df コマンドを定期的に使用して,マウントしたファイル・システム全体のディスクの空き領域の容量を確認します。df コマンドは,指定されたファイル・システムの空き領域,または指定されたファイルを含むファイル・システムの空き領域についての統計値を表示します。

df コマンドの引数やオプションを省略すると,次が表示されます。

ファイル・システムがまったくマウントされていないデバイスを指定した場合,df はルート・ファイル・システムの情報を表示します。ファイル・パス名を指定すれば,そのファイルを含んでいるファイル・システムで利用可能なディスク容量を表示させることができます。詳細については, df(1) を参照してください。

注意

df コマンドにブロック型特殊デバイス名または文字型特殊デバイス名を指定して,アンマウントされているファイル・システムの空き容量を知ることはできません。この場合には,dumpfs コマンドを使用してください。

次の例では,マウントされているすべてのファイル・システムのディスク領域に関する情報を表示しています。

# /sbin/df 
Filesystem         512-blks   used  avail capacity Mounted on
/dev/disk/dsk2a      30686  21438   6178    77%  /
/dev/disk/dsk0g     549328 378778 115616    76%  /usr
/dev/disk/dsk2g     101372   5376  85858     5%  /var
/dev/disk/dsk3c     394796     12 355304     0%  /usr/users
/usr/share/mn@tsts  557614 449234  52620    89%  /usr/share/mn
domain#usr          838432 680320  158112   81%  /usr

注意

newfs コマンドは,割り当ておよびブロック・レイアウトのために一定の割合のファイル・システム・ディスク領域を確保します。これにより,ファイル・システムがその容量の 100 パーセントを超えて使用していることを df コマンドが報告するという現象が発生します。tunefs コマンドに -minfree フラグを指定することにより,この割合を変更することができます。

5.6.2    ディスク使用量の確認

ファイル・システムの容量が不足していると判断した場合は,du コマンドまたは quot コマンドを使用して,誰が領域を使用しているかを知ることができます。

du コマンドは,ディレクトリごとに,ディスク領域の割り当てを表示します。この情報によって,ディスク領域を最も多く使用しているユーザやディスク領域を解放すべきユーザを判断することができます。

du コマンドは,指定されたディレクトリやファイル名,または (それらが指定されていない場合は) 現在の作業ディレクトリ内の全ディレクトリに含まれるブロックの数を (再帰的に) 表示します。システムが使用するクラスタ・サイズにかかわらず,ブロック・カウントには,各ファイルの間接ブロックが,1K バイト単位で含まれます。

オプションを省略すると,各ディレクトリに対するエントリが生成されます。コマンド・オプションについての詳細は, du(1) を参照してください。

次の例では,/usr/users ディレクトリの各サブディレクトリが使用するブロック数を表示しています。

# /usr/bin/du -s /usr/users/*  
440     /usr/users/barnam
43      /usr/users/broland
747     /usr/users/frome
6804    /usr/users/morse
11183   /usr/users/rubin
2274    /usr/users/somer

この情報から,ユーザ Rubin が最も多くのディスク領域を使用していることがわかります。

次の例では,/usr/users/rubin/online ディレクトリ内の各ファイルおよびサブディレクトリが使用する容量を表示しています。

# /usr/bin/du -a /usr/users/rubin/online
1	/usr/users/rubin/online/inof/license
2	/usr/users/rubin/online/inof
7	/usr/users/rubin/online/TOC_ft1
16	/usr/users/rubin/online/build
  .
  .
  .
251	/usr/users/rubin/online

注意

du コマンドの代わりに,ls -s コマンドを使用してファイルのサイズと使用量を取得することもできます。使用量を取得するために ls -l コマンドは使用しないでください。ls -l コマンドでは,ファイル・サイズだけが表示されます。

5.6.3    ディスク・クォータの確認

quot コマンドを使用して,指定したファイル・システム内で現在各ユーザが所有しているブロック数をリストすることができます。 quot コマンドの実行には,root ユーザ特権が必要です。

次のコマンドは,/dev/disk/dsk0h ファイル・システムの中で各ユーザが所有しているブロックの数とファイルの数を表示します。

# /usr/sbin/quot -f /dev/disk/dsk0h 

注意

デバイスがマウントされているとブロック型特殊ファイルはビジーになるため,情報を表示するためには文字型特殊ファイルを指定しなければなりません。

詳細については, quot(8) を参照してください。