Solaris のシステム管理 (第 1 巻)

第 29 章 ディスクの管理 (手順)

この章では、ディスク管理の手順について説明します。Solaris システム上でディスクを管理する方法に精通している場合は、この章で説明する多くの内容を読み飛ばすことができます。

この章で説明する手順は次のとおりです。

ディスク管理の概要については、第 28 章「ディスクの管理 (概要)」を参照してください。

ディスクの管理

表 29-1 作業マップ : ディスクの管理

作業 

説明 

手順の説明 

1. システム上のディスクの確認 

システム上のディスクの種類が分からない場合は、format ユーティリティを使用して確認する。

「システム上のディスクを確認する方法」

2. ディスクのフォーマット 

format ユーティリティを使用して、ディスクがフォーマット済みかどうかを判断する。

「ディスクがフォーマット済みかどうかを調べる方法」

 

ほとんどの場合、ディスクはフォーマット済みである。フォーマットする必要があれば、format を使用する。

「ディスクをフォーマットする方法」

3. スライス情報の表示 

format ユーティリティを使用してスライス情報を表示する。

「ディスクスライス情報を表示する方法」

4. ディスクラベルの作成 

format ユーティリティを使用してディスクラベルを作成する。

「ディスクラベルを作成する方法」

5. ディスクラベルの検査 

prtvtoc コマンドを使用してディスクラベルを検査する。

「ディスクラベルを検査する方法」

6. format.dat のエントリの作成

サードパーティのディスクをサポートするために format.dat のエントリを作成する。

format.dat のエントリを作成する方法」

7. 欠陥ディスクセクターの検出  

format ユーティリティを使用して欠陥ディスクセクターを調べる。

「表面解析を使用して欠陥セクターを調べる方法」

8. 欠陥ディスクセクターの修復 (必要な場合) 

format ユーティリティを使用して欠陥ディスクセクターを修復する。

「欠陥セクターを修復する方法」

システム上のディスクの確認

format ユーティリティを使用して、システムに接続されているディスクの種類を調べます。また、format ユーティリティを使用して、ディスクがシステムに認識されるかどうかを検査することもできます。format ユーティリティの使用方法については、第 32 章「format ユーティリティ (参照情報)」を参照してください。

システム上のディスクを確認する方法

  1. スーパーユーザーになります。

  2. format ユーティリティを使用して、システム上で認識されるディスクを確認します。


    # format
    

    format ユーティリティは、AVAILABLE DISK SELECTIONS という見出しの下に、認識されるディスクのリストを表示します。

例 -システム上のディスクを確認する

次の format 出力は、2 つのディスクを持つシステムのものです。


# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
       0. c0t1d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
          /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
       1. c0t3d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
          /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@3,0
Specify disk (enter its number): 

format の出力は、ディスクの物理デバイス名と論理デバイス名を括弧 <> 内の商品名に対応させています。このため、どの論理名がシステムに接続されたディスクを表しているかを一目で識別できます。論理デバイス名と物理デバイス名については、第 26 章「デバイスへのアクセス (概要)」を参照してください。

次の例では、ワイルドカードを使用して、追加コントローラに接続されたディスクを表示します。


# format /dev/rdsk/c2*
AVAILABLE DISK SELECTIONS:
   0. /dev/rdsk/c2t0d0s0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>
      /io-unit@f,e0200000/sbi@0,0/QLGC,isp@2,10000/sd@0,0
   1. /dev/rdsk/c2t1d0s0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>
      /io-unit@f,e0200000/sbi@0,0/QLGC,isp@2,10000/sd@1,0
   2. /dev/rdsk/c2t2d0s0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>
      /io-unit@f,e0200000/sbi@0,0/QLGC,isp@2,10000/sd@2,0
   3. /dev/rdsk/c2t3d0s0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>
      /io-unit@f,e0200000/sbi@0,0/QLGC,isp@2,10000/sd@3,0
   4. /dev/rdsk/c2t5d0s0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>
      /io-unit@f,e0200000/sbi@0,0/QLGC,isp@2,10000/sd@5,0
Specify disk (enter its number): 

次の例では、SPARC システム上のディスクを表示します。


# format
AVAILABLE DISK SELECTIONS:
      0. c0t3d0 <SUN2.1G cyl 2733 alt 2 hd 19 sec 80>
         /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@3,0
Specify disk (enter its number): 

format の出力は、ディスク 0 (ターゲット 3) が第 1 の SCSI ホストアダプタ (espdma@...) に接続されており、そのホストアダプタは第 1 の SBus デバイス (sbus@0...) に接続されていることを示しています。また、この出力は物理デバイス名と論理デバイス名をディスクの商品名 SUN2.1G に対応しています。

次の例では、IA システム上のディスクを表示します。


# format
AVAILABLE DISK SELECTIONS:
  0. c0d0 <DEFAULT cyl 615 alt 2 hd 64 sec 63>
     /pci@0,0/pci-ide@7,1/ata@0/cmdk@0,0
  1. c0d1 <DEFAULT cyl 522 alt 2 hd 32 sec 63>
     /pci@0,0/pci-ide@7,1/ata@0/cmdk@1,0
  2. c1d0 <DEFAULT cyl 817 alt 2 hd 256 sec 63>
     /pci@0,0/pci-ide@7,1/ata@1/cmdk@0,0
Specify disk (enter its number):  

format の出力は、ディスク 0 が最初の PCI ホストアダプタ (pci-ide@7..) に接続され、このアダプタが ATA デバイス (ata...) に接続されていることを示しています。IA システム上での format の出力には、ディスクは商品名では表示されません。

次に進む手順

format ユーティリティでディスクが認識されなかった場合は、次の表を参照してください。

ディスクの状態 

参照先 

新しく追加したが、再構成ブートを実行しなかった 

第 30 章「SPARC: ディスクの追加 (手順)」または 第 31 章「IA: ディスクの追加 (手順)」

サードパーティのディスク 

format.dat のエントリの作成」

電源障害など、システムの問題によってラベルが破損した 

「ディスクラベルを作成する方法」

システムに正しく接続されていない 

ディスクのハードウェアマニュアルを参照して、ディスクをシステムに接続する。 

ディスクのフォーマット

ディスクはメーカーまたは再販業者によってフォーマットされているので、通常はフォーマットしなくてもドライブをインストールできます。

次の作業の前にディスクをフォーマットしておかなければなりません。

ディスクがフォーマット済みかどうかを調べる方法

  1. スーパーユーザーになります。

  2. format ユーティリティを起動します。


    # format
    
  3. 画面に表示されるリストから、チェックしたいディスクの番号を入力します。


    Specify disk (enter its number): 0
    
  4. ディスクがフォーマット済みかどうかを調べます。選択したディスクがフォーマット済みであれば、次のメッセージが表示されます。

       [disk formatted]

例 - ディスクがフォーマット済みかどうかを調べる

次の例は、ディスク c0t3d0 がフォーマット済みであることを示しています。


# format
AVAILABLE DISK SELECTIONS:
  0. c0t1d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72> 
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
  1. c0t3d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@3,0
Specify disk (enter its number): 0
selecting c0t1d0
[disk formatted]

ディスクをフォーマットする方法

  1. スーパーユーザーになります。

  2. format ユーティリティを起動します。


    # format
    
  3. 画面に表示されるリストから、フォーマットしたいディスクの番号を入力します。


    Specify disk (enter its number): 0
    

    警告 - 警告 -

    システムディスクを選択しないでください。システムディスクをフォーマットすると、オペレーティングシステムや、システムディスクに入っているすべてのデータが削除されます。


  4. ディスクのフォーマットを開始するには、format> プロンプトで format と入力します。y と入力してコマンドを確認します。


    format> format
    Ready to format. Formatting cannot be interrupted
    and takes 26 minutes (estimated). Continue? y
    
  5. フォーマットが正常に行われたことを、次のメッセージによって確認します。


    Beginning format. The current time Tue ABC xx xx:xx:xx xxxx
    
    Formatting...
    done
    
    Verifying media...
            pass 0 - pattern = 0xc6dec6de
       2035/12/18  
    
            pass 1 - pattern = 0x6db6db6d
       2035/12/18  
    
    Total of 0 defective blocks repaired.

例 - ディスクをフォーマットする

次の例では、ディスク c0t3d0 をフォーマットします。


# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
  0. c0t1d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
  1. c0t3d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@3,0
Specify disk (enter its number):1
Selecting c0t3d0
[disk formatted]
format> format
Ready to format. Formatting cannot be interrupted
and takes 23 minutes (estimated). Continue? yes
Beginning format. The current time is Wed Jul 14 10:03:34 1999
Formatting ...
done
Verifying media...
        pass 0 - pattern = 0xc6dec6de
   2035/12/18  

        pass 1 - pattern = 0x6db6db6d
   2035/12/18  

Total of 0 defective blocks repaired.
format>

ディスクスライスの表示

format ユーティリティを使用すると、ディスクに適切なディスクスライスがあるかどうかをチェックできます。使用したいスライスがディスクに入っていないことが判明した場合は、format ユーティリティを使用してスライスを作成し直し、ディスクにラベルを付けます。ディスクスライスの作成方法については、「SPARC: ディスクスライスとディスクラベルを作成する方法」または 「IA: ディスクスライスとディスクラベルを作成する方法」を参照してください。


注 -

format ユーティリティでは、スライスではなくパーティションという用語を使用します。


ディスクスライス情報を表示する方法

  1. スーパーユーザーになります。

  2. format ユーティリティを起動します。


    # format
    
  3. AVAILABLE DISK SELECTIONS という見出しの下に表示されたディスクを選択して、スライス情報を表示したいディスクを指定します。


    Specify disk (enter its number):1
    
  4. format> プロンプトで partition と入力して、パーティションメニューに入ります。


    format> partition 
    
  5. partition> プロンプトで print と入力して、現在のディスクドライブのスライス情報を表示します。


    partition> print
    
  6. partition> プロンプトで q と入力し、format プロンプトで q と入力して、format> ユーティリティを終了します。


    partition> q
    format> q
    #
  7. 特定のスライスのタグとサイズについてスライス情報が表示されることを確認します。

    画面の出力に、スライスサイズが割り当てられていないことが示された場合は、ディスクにスライスがないものと思われます。

例 - ディスクスライス情報を表示する

次の例では、ディスク /dev/rdsk/c0t3d0 のスライス情報を表示します。


# format
Searching for disks...done
Specify disk (enter its number):1
Selecting c0t3d0
format> partition
partition> print
Current partition table (original):
Total disk cylinders available: 2036 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders        Size            Blocks
  0       root    wm       0 -  300      148.15MB    (301/0/0)   303408
  1       swap    wu     301 -  524      110.25MB    (224/0/0)   225792
  2     backup    wm       0 - 2035     1002.09MB    (2036/0/0) 2052288
  3 unassigned    wm       0               0         (0/0/0)          0
  4 unassigned    wm       0               0         (0/0/0)          0
  5 unassigned    wm       0               0         (0/0/0)          0
  6        usr    wm     525 - 2035      743.70MB    (1511/0/0) 1523088
  7 unassigned    wm       0               0         (0/0/0)          0
partition> q
format> q
#

これらの例に表示されるスライス情報についての説明は、第 28 章「ディスクの管理 (概要)」を参照してください。

次の例では、ディスク /dev/rdsk/c0t0d0 のスライス情報を表示します。


# format
Searching for disks...done
Specify disk (enter its number): 0
selecting c0t0d0
[disk formatted]
format> partition
partition> print
Current partition table (original):
Total disk cylinders available: 817 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders       Size            Blocks
  0 unassigned    wm       3 - 816        6.26GB    (814/0/0) 13128192
  1 unassigned    wm       0              0         (0/0/0)          0
  2     backup    wm       0 - 816        6.28GB    (817/0/0) 13176576
  3 unassigned    wm       0              0         (0/0/0)          0
  4 unassigned    wm       0              0         (0/0/0)          0
  5 unassigned    wm       0              0         (0/0/0)          0
  6 unassigned    wm       0              0         (0/0/0)          0
  7 unassigned    wm       0              0         (0/0/0)          0
  8       boot    wu       0 -   0        7.88MB    (1/0/0)      16128
  9 alternates    wu       1 -   2       15.75MB    (2/0/0)      32256
partition> q
format> q

ディスクラベルの作成と検査

一般に、ディスクにラベルを付ける操作は、システムのインストール時、または新しいディスクスライスを作成するときに行います。電源障害などが原因でディスクラベルが破損した場合は、ディスクラベルを作成し直さなければならないことがあります。

format ユーティリティは、ラベルが付いていない SCSI ディスクを自動構成しようとします。ラベルが付いていないディスクを自動構成できる場合は、次のようなメッセージが表示されます。

	c1t0d0: configured with capacity of 404.65MB

ディスクラベルを作成する方法

  1. スーパーユーザーになります。

  2. format ユーティリティを起動します。


    # format
    
  3. 画面に表示されるリストから、ラベルを作成したいディスクの番号を入力します。


    Specify disk (enter its number):1
    
  4. ディスクラベルの作成方法を決定します。

    ディスクにラベルが付いておらず、正常に自動構成された場合 

    ディスクにラベルが付いており、そのタイプを変更したいか、format でディスクを自動構成できなかった場合

    ディスクラベルを作成したいかどうかを尋ねるプロンプトが表示される。手順 5 に進んでラベルを作成する。 

    ディスクタイプを指定しなければならない。手順 6 と 7 に進んでディスクのタイプを設定し、ラベルを付ける。 

  5. Label it now? プロンプトで y と入力して、ディスクにラベルを付けます。


    Disk not labeled. Label it now? y
    

    これでディスクラベルが作成されました。手順 9 に進んで format ユーティリティを終了します。

  6. format> プロンプトで type と入力します。


    format> type
    

    Available Drive Types メニューが表示されます。

  7. ディスクタイプの候補のリストからディスクタイプを選択します。


    Specify disk type (enter its number)[12]: 12
    
  8. ディスクにラベルを付けます。ディスクにラベルが付いていない場合は、次のメッセージが表示されます。


    Disk not labeled. Label it now? y
    

    ディスクラベルが付いている場合は、次のメッセージが表示されます。


    Ready to label disk, continue? y
    
  9. format のメインメニューから verify コマンドを使用してディスクラベルを検査します。


    format> verify 
    
  10. format> プロンプトで q と入力して format ユーティリティを終了します。


    partition> q
    format> q
    #

例 - ディスクラベルを作成する

次の例では、1.05G バイトのディスクを自動構成してラベルを付けます。


# format
	c1t0d0: configured with capacity of 1002.09MB
 
AVAILABLE DISK SELECTIONS:
	  0. c0t3d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
	  1. c1t0d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
Specify disk (enter its number): 1
Disk not labeled.  Label it now?  yes
format> verify
#

ディスクラベルを検査する方法

prtvtoc(1M) コマンドを使用して、ディスクラベル情報を検査します。ディスクラベルの説明と prtvtoc コマンドで表示される情報については、第 28 章「ディスクの管理 (概要)」を参照してください。

  1. スーパーユーザーになります。

  2. prtvtoc コマンドを使用してディスクラベル情報を表示します。


    # prtvtoc /dev/rdsk/device-name
    

    device-name

    検査したい raw ディスクデバイス 

例 - ディスクラベルを検査する

次の例は、ディスク /dev/rdsk/c0t0d0s0 のディスクラベル情報を示しています。


# prtvtoc /dev/rdsk/c0t1d0s0
* /dev/rdsk/c0t1d0s0 partition map
*
* Dimensions:
*     512 bytes/sector
*      72 sectors/track
*      14 tracks/cylinder
*    1008 sectors/cylinder
*    2038 cylinders
*    2036 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First     Sector    Last
* Partition  Tag  Flags    Sector     Count    Sector  Mount Directory
       0      2    00          0    303408    303407   /
       1      3    01     303408    225792    529199
       2      5    00          0   2052288   2052287
       6      4    00     529200   1523088   2052287   /usr
#

破損したディスクラベルの復元

電源障害やシステム障害が原因で、ディスクが認識されなくなることがあります。このような場合に、かならずしもスライス情報やディスクのデータを作成し直したり、復元しなければならないとは限りません。

破損したディスクラベルを復元する作業の最初の手順は、正しいジオメトリとディスクタイプ情報を使用してディスクにラベルを付けることです。この操作は、通常のディスクラベル作成方法を使用して実行できます。つまり、自動構成するか、またはディスクタイプを手作業で指定します。

format でディスクタイプが認識されたら、次の手順はバックアップラベルを検索してディスクにラベルを付けることです。バックアップラベルを使用してディスクにラベルを付けると、ディスクタイプとジオメトリだけでなく、正しいパーティション情報を使用してディスクラベルが作成されます。

破損したディスクラベルを復元する方法

  1. システムをシングルユーザーモードにします。必要であれば、シングルユーザーモードでローカル CD-ROM またはネットワークからシステムをブートして、ディスクにアクセスします。

    システムをブートする方法については、第 10 章「SPARC: システムのブート (手順)」または第 11 章「IA: システムのブート (手順)」を参照してください。

  2. format ユーティリティを使用してディスクのラベルを作成し直します。


    # format
    

    この時点で、format はラベルが付いていない SCSI ディスクを自動構成しようとします。ラベルが付いておらず破損したディスクを自動構成できない場合は、次のメッセージが表示されます。

    cwtxdy: configured with capacity of xyzMB

    次に、システム上のディスクのリストが表示されます。

  3. 画面に表示されたリストから、復元したいディスクの番号を入力します。


    Specify disk (enter its number): 1
    
  4. ディスクラベルの作成方法を決定します。

    ディスクが正常に自動構成された場合 

    ディスクが正常に自動構成されなかった場合 

    手順 5 と 6 を実行してから、手順 12 に進む。 

    手順 7 から 11 までを実行してから手順 12 に進む。 

  5. verify コマンドを使用してバックアップラベルを検索します。


    format> verify
    Warning: Could not read primary label.
    Warning: Check the current partitioning and 'label' the disk or 
    use the 'backup' command.
    Backup label contents:
    Volume name = <        >
    ascii name  = <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
    pcyl        = 2038
    ncyl        = 2036
    acyl        =    2
    nhead       =   14
    nsect       =   72
    Part      Tag    Flag     Cylinders        Size            Blocks
      0       root    wm       0 -  300      148.15MB    (301/0/0)   303408
      1       swap    wu     301 -  524      110.25MB    (224/0/0)   225792
      2     backup    wm       0 - 2035     1002.09MB    (2036/0/0) 2052288
      3 unassigned    wm       0               0         (0/0/0)          0
      4 unassigned    wm       0               0         (0/0/0)          0
      5 unassigned    wm       0               0         (0/0/0)          0
      6        usr    wm     525 - 2035      743.70MB    (1511/0/0) 1523088
      7 unassigned    wm       0               0         (0/0/0)          0
  6. format でバックアップラベルが見つかり、バックアップラベルの内容が適切に表示された場合は、backup コマンドを実行し、バックアップラベルを使用してディスクにラベルをつけます。


    format> backup
    Disk has a primary label, still continue? y
    
    Searching for backup labels...found.
    Restoring primary label

    ディスクラベルが復元されました。手順 12 へ進みます。

  7. format でディスクを自動構成できなかった場合は、type コマンドを使用してディスクタイプを指定します。


    format> type
    

    Available Devices Type メニューが表示されます。

  8. 0 を選択してディスクを自動構成するか、またはディスクタイプの候補のリストからディスクタイプを選択します。


    Specify disk type (enter its number)[12]: 12
    
  9. ディスクが正常に自動構成された場合は、ディスクラベルを作成するかどうか尋ねるプロンプトが表示されたときに no と応答します。


    Disk not labeled.  Label it now?  no
    
  10. verify コマンドを使用してバックアップラベルを検索します。


    format> verify
    Warning: Could not read primary label.
    Warning: Check the current partitioning and 'label' the disk
    or use the 'backup' command.
    .
    .
    .
  11. format でバックアップラベルが見つかり、その内容が適切な場合は、backup コマンドを実行し、バックアップラベルを使用してディスクにラベルを付けます。


    format> backup
    Disk has a primary label, still continue? y
    
    Searching for backup labels...found.
    Restoring primary label

    ディスクラベルが復元されました。

  12. q と入力して format ユーティリティを終了します。


    format> q
    
  13. fsck コマンドを使用して、復元されたディスク上のファイルシステムを確認します。

    fsck コマンドの使用方法については、第 39 章「ファイルシステムの整合性チェック」を参照してください。

サードパーティのディスクの追加

Solaris 環境では、サードパーティの多数のディスクがサポートされます。ただし、デバイスドライバ、format.dat、またはその両方を用意しなければならない場合があります。

サードパーティのディスクが標準の SunOS オペレーティングシステム互換デバイスドライバで機能するように設計されている場合は、適切な format.dat エントリを作成するだけで、ディスクは format ユーティリティに認識されるはずです。それ以外の場合は、そのディスクをサポートするためにサードパーティのデバイスドライバをロードする必要があります。


注 -

Sun の format ユーティリティがサードパーティのどのディスクドライバでも正常に機能するとは限りません。ディスクドライバに Solaris の format ユーティリティとの互換性がない場合は、ディスクドライブのベンダーが独自のフォーマットプログラムを提供しているはずです。


ここでは、ソフトウェアサポートのいずれかが不足している場合に必要な作業について説明します。一般に、format ユーティリティを起動し、ディスクタイプが認識されないなどという場合に、不足しているソフトウェアサポートがあることがわかります。

この節の説明にしたがって不足しているソフトウェアを用意してから、第 30 章「SPARC: ディスクの追加 (手順)」または 第 31 章「IA: ディスクの追加 (手順)」で説明されている、システムディスクまたは二次ディスクを構成する手順を参照してください。

format.dat のエントリの作成

認識されないディスクは、そのディスクのジオメトリと運用パラメータに関する正確な情報がなければフォーマットできません。この情報は、/etc/format.dat ファイル内で指定します。


注 -

SCSI-2 ドライブには format.dat のエントリは不要です。Solaris 2.3 からは、再構成ブート時にドライブの電源が入っていれば、format ユーティリティは SCSI-2 ドライブを自動的に構成します。SCSI ドライブを自動的に構成する手順については、「SCSI ドライブを自動構成する方法」を参照してください。


ディスクが認識されない場合は、テキストエディタを使用して format.dat にディスクのエントリを作成します。作業を始める前に、ディスクとそのコントローラに関連するすべての技術仕様を収集する必要があります。この情報はディスクといっしょに提供されているはずです。提供されない場合は、ディスクメーカーまたは購入先に問い合わせてください。/etc/format.dat ファイルにエントリを追加する方法については、第 32 章「format ユーティリティ (参照情報)」を参照してください。

format.dat のエントリを作成する方法

  1. スーパーユーザーになります。

  2. /etc/format.dat ファイルのコピーを作成します。


    # cp /etc/format.dat /etc/format.dat.gen
    
  3. 第 32 章「format ユーティリティ (参照情報)」で説明する format.dat 情報を使用して、/etc/format.dat ファイルに、サードパーティのディスクのエントリを入力します。

    ディスクのハードウェア製品マニュアルを参照して、必要な情報を収集してください。

SCSI ディスクドライブの自動構成

Solaris 2.3 およびその互換バージョンでは、/etc/format.dat ファイルに特定のドライブタイプが含まれていない場合でも、format ユーティリティは SCSI ディスクドライブを自動的に構成します。この機能によって、ディスクデバイスモード検知に関する SCSI-2 仕様に準拠しているディスクドライブで、フォーマット、スライスへの分割、ラベルの作成を行うことができます。

次の手順にしたがって、自動構成によって SCSI ドライブを構成します。

再構成ブートを実行した後に、format ユーティリティを呼び出すと、format はディスクを構成しようとします。成功すると、ディスクが構成されたことを示すメッセージを表示します。SCSI ディスクドライブを自動構成する手順については、「SCSI ドライブを自動構成する方法」を参照してください。

次の表に、format がパーティションテーブルの作成に使用する規則を示します。

表 29-2 SCSI ディスクスライスの規則

ディスクサイズ 

ルートファイルシステム 

スワップスライス 

0 〜 180M バイト 

16M バイト 

16M バイト 

180 〜 280M バイト 

16M バイト 

32M バイト 

280 〜 380M バイト 

24M バイト 

32M バイト 

380 〜 600M バイト 

32M バイト 

32M バイト 

600M 〜 1.0G バイト 

32M バイト 

64M バイト 

1.0 〜 2.0G バイト 

64M バイト 

128M バイト 

2.0G バイト 〜 

128M バイト 

128M バイト 

いずれの場合も、スライス 6 (/usr ファイルシステム) にディスク上の残りの領域が割り当てられます。

1.3G バイトの SCSI ディスクドライブに関して format で生成されるパーティションテーブルを示しています。


Part    Tag    Flag     Cylinders     Size        Blocks
   0     root    wm       0 -   96    64.41MB      (97/0/0)
   1     swap    wu      97 -  289   128.16MB     (193/0/0)
   2   backup    wu       0 - 1964     1.27GB    (1965/0/0)
   6      usr    wm     290 - 1964     1.09GB    (1675/0/0)

SCSI 自動構成機能の使用方法についての詳細は、第 32 章「format ユーティリティ (参照情報)」を参照してください。

SCSI ドライブを自動構成する方法

  1. スーパーユーザーになります。

  2. システムのブート時に読み込まれる /reconfigure ファイルを作成します。


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


    # shutdown -i0 -g30 -y
    

    -i0

    システムを init 状態 0 (電源切断) にする。 

    -g30

    ログインしているユーザーに、30 秒後にシステムのシャットダウンを開始することを通知する。 

    -y

    ユーザーの介入なしでコマンドを実行するように指定する。 

    オペレーティング環境がシャットダウンされると、ok または > プロンプトが表示されます。

  4. システムとすべての外部周辺デバイスの電源を切ります。

  5. 追加しようとするディスクに、システム上の他のデバイスとは異なるターゲット番号が設定されているかどうかを確認します。

    通常は、ディスクの裏側にそのための小型のスイッチが付いています。

  6. ディスクがシステムに正しく接続されているかどうかを確認します。

    インストールについての詳細は、ディスクのハードウェアインストールガイドを参照してください。

  7. すべての外部周辺デバイスの電源を入れます。

  8. システムの電源を入れます。

    システムがブートされ、ログインプロンプトが表示されます。

  9. スーパーユーザーとしてログインし、format ユーティリティを起動して、自動構成するディスクを選択します。


    # format
    Searching for disks...done
    c1t0d0: configured with capacity of 1002.09MB
    AVAILABLE DISK SELECTIONS:
      0. c0t1d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
         /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
      1. c0t3d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
         /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@3,0
    Specify disk (enter its number): 1
    
  10. プロンプトで y と入力してディスクにラベルを付けます。

    y と入力すると、自動構成機能によってディスクラベルが生成され、ディスクに書き込まれます。


    Disk not labeled. Label it now? y
    
  11. verify コマンドを使用してディスクラベルを確認します。


    format> verify
    
  12. format ユーティリティを終了します。


    format> q
    

欠陥セクターの修復

システム上のディスクに欠陥セクターが存在する場合は、次の手順にしたがって修復できます。欠陥セクターを発見するのは次のような場合です。

上記のコンソールメッセージは、ブロック 179 が不良であり、format ユーティリティの repair コマンドを使用して配置し直すか、または修復機能を使用可能にして表面解析を実行する必要があることを示しています。

表面解析を使用して欠陥セクターを調べる方法

  1. スーパーユーザーになります。

  2. 欠陥セクターの存在するスライス内のファイルシステムをマウント解除します。

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


    # umount /dev/dsk/device-name
    
  3. format と入力して format ユーティリティを起動します。


    # format
    
  4. 調べるディスクを選択します。


    Specify disk (enter its number):1
    selecting c0t2d0:
    [disk formatted]
    Warning: Current Disk has mounted partitions.
  5. format> プロンプトで analyze と入力して、analyze メニューに入ります。


    format> analyze
    
  6. analyze> プロンプトで setup と入力して、検索手順に使用する解析パラメータを設定します。次のパラメータを使用してください。


    analyze> setup
    Analyze entire disk [yes]? n
    Enter starting block number [0, 0/0/0]: 12330
    Enter ending block number [2052287, 2035/13/71]: 12360
    Loop continuously [no]? y
    Repair defective blocks [yes]? n
    Stop after first error [no]? n
    Use random bit patterns [no]? n
    Enter number of blocks per transfer [126, 0/1/54]: 1
    Verify media after formatting [yes]? y
    Enable extended messages [no]? n
    Restore defect list [yes]? y
    Create defect label [yes]? y
    
  7. read コマンドを使用して欠陥を見つけます。


    analyze> read
    Ready to analyze (won't harm SunOS). This takes a long time,
    but is interruptible with Control-C. Continue? y
            pass 0
       2035/12/1825/7/24
            pass 1
    Block 12354  (18/4/18), Corrected media error (hard data ecc)
       25/7/24
    ^C
    Total of 1 defective blocks repaired.

欠陥セクターを修復する方法

  1. スーパーユーザーになります。

  2. format ユーティリティに入り、欠陥セクターの存在するディスクを選択します。


    # format
    Searching for disks...done
    AVAILABLE DISK SELECTIONS:
      0. c0t2d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
         /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@2,0
      1. c0t3d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
         /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@3,0
    Specify disk (enter its number): 1
    selecting c0t3d0
    [disk formatted]
    format> 
  3. format> プロンプトで repair コマンドを入力します。


    format> repair
    
  4. 欠陥ブロック番号を入力します。


    Enter absolute block number of defect: 12354
       Ready to repair defect, continue? y
       Repairing block 12354 (18/4/18)...ok.
    format>

    format を使って欠陥セクターを調べる方法については、「表面解析を使用して欠陥セクターを調べる方法」を参照してください。

ディスク管理のヒント

次のヒントに従って、ディスクの管理効率を高めることができます。

format セッションのデバッグ

format -M と入力して、SCSI デバイスに対してのみ有効な拡張メッセージと診断メッセージを出力するようにします。

次の例では、Inquiry: の下の一連の数字は、その右側に表示されている inquiry データの 16 進値を表わします。


# format -M
Searching for disks...done
AVAILABLE DISK SELECTIONS:
  0. c0t1d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
  1. c0t3d0 <SUN1.05 cyl 2036 alt 2 hd 14 sec 72>
     /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@3,0
 
Specify disk (enter its number): 0
selecting c0t3d0
[disk formatted]
format> inquiry
Inquiry:
00 00 02 02 8f 00 00 12 53 45 41 47 41 54 45 20     ........NAME....
53 54 31 31 32 30 30 4e 20 53 55 4e 31 2e 30 35     ST11200N SUN1.05
38 33 35 38 30 30 30 33 30 32 30 39 00 00 00 00     835800030209....
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
00 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31     .Copyright (c) 1
39 39 32 20 53 65 61 67 61 74 65 20 41 6c 6c 20     992 NAME    All 
72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 20     rights reserved 
30 30 30                                            000
Vendor:   name 
Product:  ST11200N SUN1.05
Revision: 8358
format> 

prtvtocfmthard コマンドを使用して複数のディスクにラベルを付ける

prtvtoc コマンドと fmthard コマンドを使用して、同じディスクジオメトリを持つ複数のディスクにラベルを付けます。

この for ループをスクリプト内で使用して、1 台のディスクからディスクラベルをコピーし、複数のディスク上で複製します。


# for i in x y z
> do
> prtvtoc /dev/rdsk/cwtxdysz | fmthard -s - /dev/rdsk/cwt${i}d0s2
> done

例 - 複数のディスクにラベルを付ける

この例では、ディスクラベルがディスク c2t0d0s0 から他の 4 台のディスクにコピーされます。


# for i in 1 2 3 5
> do
> prtvtoc /dev/rdsk/c2t0d0s0 | fmthard -s - /dev/rdsk/c2t${i}d0s2
> done
fmthard:  New volume table of contents now in place.
fmthard:  New volume table of contents now in place.
fmthard:  New volume table of contents now in place.
fmthard:  New volume table of contents now in place.
#