Top > SUN > システム管理の手引き(ディスク, ファイルシステム)

作成日:2006-06-20
最終更新日:2006-06-20

Solarisにおけるシステム管理(ディスクとファイルシステム)のイロハを記載します。

ディスクとデバイス構成 Edit

ディスクスライス Edit

 ディスクは、スライスという単位で分割をします。(Windowsではパーティションと呼ばれます。)
スライスは、ディスクのシリンダをグループ化したもので、ファイルシステムやswap領域の単位となります。
※Volume管理ソフトウェア(VxVM, SDS/SVM)を使用している場合は、スライスをまとめてひとつのパーティション(RAID等も含む)として扱う場合もあります。

 Solaris(SPARC)では、1つのディスクを最大8つ(0~7)のスライスに分割する事ができます。
スライス2は、通常ディスク全体(通称overlap)を表すために使用され、ファイルシステム等のデータ領域としては使用されません。
overlapは、ディスク全体のバックアップ、コピーを作成する場合に用いられます。スライス2をコピーすることでディスク上の全てのデータをバックアップ、コピーすることができます。

デバイス名 Edit

  • 論理デバイス名と物理デバイス名
    Solarisでは、デバイスもファイルとして扱われます。
    そこで人にわかりやすく表示させるための論理デバイスと、実際の物理デバイスとして各デバイスを管理しています。
  • 論理デバイス名
    論理デバイス名は、システム管理者がデバイスを扱う際に使用します。論理デバイス名は/devディレクトリ配下に作成され、/devices配下の物理デバイス(実体)へのシンボリックリンクとなっています。
    ※ディスクデバイスについてはブロックデバイスとrawデバイスに対応していて、各々/dev/dskと/dev/rdsk 配下に置かれます。
    例)下記にディスクスライスを示す論理デバイス名の例をご紹介します。
    ・c : ディスクコントローラ
    ・t : ターゲット ID
    ・d : ディスクユニット
    ・s : スライス
  • /dev/dsk/c1t1d0s0
    このブロックデバイスは、ディスクコントローラ 1のターゲット1上にあるディスクユニット0のスライス0になります。
  • /dev/rdsk/c1t0d0s3
    このブロックデバイスは、ディスクコントローラ 1のターゲット0上にあるディスクユニット0のスライス3になります。
  • 物理デバイス名
    物理デバイス名は、一意にデバイスの物理的な位置を識別するもので、/devices ディレクトリ配下に置かれます。このデバイス名は、HW 情報を示すデバイスツリーで表わされ、バス, コントローラ, 接続されているデバイス等のノードで構成されます。デバイスツリー内の各ノード名は基本的に name@address:arguments 形式となりますが、name 以外はオプションとなっています。
    例)
    # ls -l /dev/dsk/c1t0d0s3
    lrwxrwxrwx   1 root     root          43 Sep 26 06:06 /dev/dsk/c1t0d0s3 \
      -> ../../devices/pci@1c,600000/scsi@2/sd@0,3:a
  • インスタンス名
    インスタンス名は、デバイス毎に割り当てられる物理デバイス名の省略名です。例えば、SCSI ディスクデバイスでは sd(n) という形式でインスタンス名が使用されます。すなわち、最初の SCSI ディスクデバイスは、sd0 となります。

デバイス再構成 Edit

新しいデバイスを接続した場合、デバイスの再構成が必要です。
(ディスク交換等で一度認識していた場合は、再構成をおこなう必要がない場合もあります。)
デバイスの再構成は、reconfigureで再起動を行うか, OS起動中であれば、devfsadmコマンドを実行する事でも可能です。デバイスの再構成を行うと、新しく接続したデバイスのデバイスファイルが/devと/devices ディレクトリに追加され、使用できるようになります。

例)再構成 boot

# init 0
ok boot -r

もしくは

# touch /reconfigure
# shutdown -y -g0 -i6

例)devfsadm(1M) コマンド

# devfsadm

システム構成から外したデバイスのデバイスファイルを削除したい時は、
devfsadm コマンドの -C オプションを使用します。

# devfsadm -C

関連ファイル, コマンド Edit

  • # format(1M) コマンド
    formatコマンドを実行すると、システムで認識しているディスクの一覧を表示します。表記は論理デバイスと物理デバイスの両方で示されます。
    対象のディスクを選択すると、スライス構成の作成、変更、削除、等をおこなえます。

例)

# format 
Searching for disks...done
AVAILABLE DISK SELECTIONS:
     0. c1t0d0 
        /pci@1c,600000/scsi@2/sd@0,0
     1. c1t1d0 
        /pci@1c,600000/scsi@2/sd@1,0
Specify disk (enter its number):

表示して終了する場合、Ctrl + D キーを入力すると、プロンプトに戻ります。

  • prtdiag(1M) コマンド

prtdiagコマンドは、システムのHW構成情報、HW診断情報を表示するコマンドです。

  • vオプションを使用するとより詳細な情報が得られます。
    ※Solaris8までの場合、/usr/platform/`uname -m`/sbinにパスを通す必要があります。

例)

# prtdiag
System Configuration: Sun Microsystems  sun4u Sun Blade 100 (UltraSPARC-IIe)
System clock frequency: 84 MHZ
Memory size: 512MB

==================================== CPUs ====================================
               E$          CPU                  CPU
CPU  Freq      Size        Implementation       Mask    Status      Location
---  --------  ----------  -------------------  -----   ------      --------
  0   502 MHz  256KB       SUNW,UltraSPARC-IIe   1.4    on-line     +-board/cpu0

================================= IO Devices =================================
Bus   Freq      Slot +  Name +
Type  MHz       Status  Path                          Model
----  ----  ----------  ----------------------------  --------------------
pci    33   +s/system-board  isa/isadma (dma)
                  okay  /pci@1f,0/isa@7/dma@0,0

pci    33   +s/system-board  isa/su (serial)
                  okay  /pci@1f,0/isa@7/serial@0,3f8

pci    33   +s/system-board  isa/su (serial)
                  okay  /pci@1f,0/isa@7/serial@0,2e8

pci    33   +s/system-board  pci108e,1101 (network)        SUNW,pci-eri
                  okay  /pci@1f,0/network@c,1

pci    33   +s/system-board  pciclass,0c0010 (firewire)
                  okay  /pci@1f,0/firewire@c,2

pci    33   +s/system-board  pci10b9,5451 (sound)
                  okay  /pci@1f,0/sound@8

pci    33   +s/system-board  pci10b9,5229 (ide)
                  okay  /pci@1f,0/ide@d

pci    33   +s/system-board  SUNW,m64B (display)           ATY,RageXL
                  okay  /pci@1f,0/SUNW,m64B@13


============================ Memory Configuration ============================
Segment Table:
-----------------------------------------------------------------------
Base Address       Size       Interleave Factor  Contains
-----------------------------------------------------------------------
0x0                256MB             1           chassis/system-board
0x20000000         256MB             1           chassis/system-board

=============================== usb Devices ===============================

Name          Port#
------------  -----
keyboard        1
mouse           2
  • prtconf(1M) ファイル

prtconf コマンドは、memory 搭載量, 周辺機器の構成等が出力されます。
なお、コマンド実行時にシステムに接続されているか否かに関わらず、全てのインスタンスについて表示します。

例)

# prtconf
System Configuration:  Sun Microsystems  sun4u
Memory size: 512 Megabytes
System Peripherals (Software Nodes):

SUNW,Sun-Blade-100
   scsi_vhci, instance #0
   packages (driver not attached)
       SUNW,builtin-drivers (driver not attached)
       deblocker (driver not attached)
       disk-label (driver not attached)
       terminal-emulator (driver not attached)
       dropins (driver not attached)
       obp-tftp (driver not attached)
       kbd-translator (driver not attached)
       ufs-file-system (driver not attached)
   chosen (driver not attached)
   openprom (driver not attached)
       client-services (driver not attached)
   options, instance #0

~(省略)
  • /etc/path_to_inst(4) ファイル

/etc/path_to_instには、デバイス毎の物理デバイス名とインスタンス名を保持しています。このファイルの管理は、カーネルによって行われており、boot時に読み込む事によって全てのデバイスを識別しています。尚、管理者が手動にて編集する必要はありませんので、行わないようにして下さい。

例)

# cat /etc/path_to_inst
#
#       Caution! This file contains critical kernel state
#
"/pseudo" 0 "pseudo"
"/scsi_vhci" 0 "scsi_vhci"
"/options" 0 "options"
"/pci@1f,0" 0 "pcipsy"
"/pci@1f,0/pmu@3" 0 "pmubus"
"/pci@1f,0/pmu@3/ppm@0,b3" 0 "grppm"
"/pci@1f,0/pmu@3/beep@0,b2" 0 "grbeep"
"/pci@1f,0/pmu@3/i2c@0,0" 0 "smbus"
"/pci@1f,0/pmu@3/i2c@0,0/temperature@30" 0 "max1617"
"/pci@1f,0/pmu@3/i2c@0,0/dimm-spd@a0" 0 "seeprom"
"/pci@1f,0/pmu@3/i2c@0,0/dimm-spd@a2" 1 "seeprom"
"/pci@1f,0/pmu@3/i2c@0,0/card-reader@40" 0 "scmi2c"
"/pci@1f,0/pmu@3/fan-control@0,c8" 0 "grfans"

~(省略)

UFSファイルシステムの作成 Edit

UFSファイルシステムの作成 Edit

UFSファイルシステムを作るには newfs コマンド(NEW File System) を使用します。

# newfs /dev/rdsk/c0t1d0s7
  :

ここで/dev/rdsk/c0t1d0s7はディスクスライスを示す raw デバイスです。Solaris Volume Manager 等のボリューム管理製品で作成された仮想ボリュームにUFSファイルシステム場合は仮想ボリュームを示す raw デバイスを指定する必要があります。

UFS のマウントとアンマウント Edit

ディスク上に作成されたファイルシステムはそのままでは使えません。(UNIX のカーネルが認識してくれないので。)カーネルにファイルシステムを認識させることをマウントするといいます。例えば mount コマンドを使って

# mount /dev/dsk/c0t1d0s7 /mnt

とすると、/dev/dsk/c0t1d0s7 で示されたディスクパーティションにあるファイルシステムが /mnt に結合され UNIX のカーネルに認識されます。これ以降は /mnt をアクセスすると /dev/dsk/c0t1d0s7 にあるファイルシステムをアクセスすることになります。この場合、/mnt を /dev/dsk/c0t1d0s7 のマウントポイントといいます。

逆に、ファイルシステムのマウント解除の事をアンマウントといいます。umount コマンドを使用して以下の様に実行すると、先程マウントした /dev/dsk/c0t1d0s7 がアンマウントされます。アンマウントする際は、プロセス等の I/O を停止してから実行して下さい。

# umount /mnt

/etc/vfstab Edit

UFS ファイルシステムをマウントする操作は mount コマンドを使用することもできますがシステム起動時にいちいち手作業で行うのは面倒です。そこで マウントに必要な情報wを記述したファイル /etc/vfstab を用意して、その内容に従ってマウントの操作ができるようになっています。/etc/vfstab のエントリのフォーマットは以下の通りです。

ファイルシステム fsckの対象 マウントポイント タイプ fsckの順番 自動マウント オプション

フィールド名説明
ファイルシステムマウントするファイルシステムのデバイス名を指定する。(/dev/dsk/xxxxx)
fsck の対象マウントするデバイスの raw デバイスを指定する。(/dev/rdsk/xxxxx)
マウントポイントマウントポイント(/mnt等)
タイプファイルシステムのタイプ(ufs 以外にも nfs,cachefs,tmpfs,pcfs,hsfs が指定可能)
fsck の順番fsck コマンドがファイルシステムをチェックするか決めるため使用するパス番号。
自動マウントブート時に自動的にマウントするかを"yes" または "not" で指定する
オプションrw(読み出し/書き込み可)、ro(読み出しのみ可)などのオプションを指定する。

/etc/vfstab ファイルに登録し自動マウントに "yes" を指定したファイルシステムは、起動時に自動的にマウントされます。また、下記のエントリを登録した場合

例)

#device           device             mount    FS       fsck   mount    mount
#to mount         to fsck            point    type     pass   at boot  options
#
/dev/dsk/c0t1d0s7 /dev/rdsk/c0t1d0s7 /mnt     ufs      2      yes       -

マウントポイントのみの指定で、指定されたファイルシステムの mount が可能になります。

# mount /mnt

fsckについて Edit

fsck は、整合性が失われたファイルシステムを修復します。例えば不注意によるシステム電源障害が発生した場合等、OS が異常終了するとファイルシステムの整合性が失われることがあります。Solaris ではシステムをブートすると、ファイルシステムの整合性チェックが(fsck コマンドを使用して)自動的に実行されます。殆どの場合、このファイルシステムのチェックによって自動的に修復されます。

fsck コマンドを使って手作業で修復することが可能ですが、その場合ファイルシステムがアンマウントされた状態で実施してください。

# fsck -F ufs /dev/rdsk/xxxxxx

UFS logging Edit

UFS ロギングはトランザクション(完全な UFS 操作を構成する変更)をログに保存してから、そのトランザクションを UFS ファイルシステムに適用する機能です。保存されたトランザクションは、後でファイルシステムに適用できます。

OS リブート時には、不完全なトランザクションは廃棄しますが、簡潔されているトランザクションは適用されます。この機能によりOS起動時に整合性が確保しない場合でもファイルシステムの整合性が確保されるため、fsck による検査を省略でき、システムがクラッシュした際に通常は fsck が実行されるためブートに時間がかかりますがそのブート時間を大幅に短縮できます。

UFS ロギング機能を有効にするにはファイルシステムを手動でマウントする際、もしくは /etc/vfstab ファイル内で、-o logging オプションを指定して、mount コマンドを実行する必要があります。Solaris 9 9/04 以降はデフォルトで有効になるため、オプションの指定は必要ありません。