作成日:2006-06-20
最終更新日:2006-06-20
Solarisにおけるシステム管理(ディスクとファイルシステム)のイロハを記載します。
ディスクとデバイス構成 
ディスクスライス 
ディスクは、スライスという単位で分割をします。(Windowsではパーティションと呼ばれます。)
スライスは、ディスクのシリンダをグループ化したもので、ファイルシステムやswap領域の単位となります。
※Volume管理ソフトウェア(VxVM, SDS/SVM)を使用している場合は、スライスをまとめてひとつのパーティション(RAID等も含む)として扱う場合もあります。
Solaris(SPARC)では、1つのディスクを最大8つ(0~7)のスライスに分割する事ができます。
スライス2は、通常ディスク全体(通称overlap)を表すために使用され、ファイルシステム等のデータ領域としては使用されません。
overlapは、ディスク全体のバックアップ、コピーを作成する場合に用いられます。スライス2をコピーすることでディスク上の全てのデータをバックアップ、コピーすることができます。
デバイス名 
- 論理デバイス名と物理デバイス名
Solarisでは、デバイスもファイルとして扱われます。
そこで人にわかりやすく表示させるための論理デバイスと、実際の物理デバイスとして各デバイスを管理しています。
- /dev/rdsk/c1t0d0s3
このブロックデバイスは、ディスクコントローラ 1のターゲット0上にあるディスクユニット0のスライス3になります。
- インスタンス名
インスタンス名は、デバイス毎に割り当てられる物理デバイス名の省略名です。例えば、SCSI ディスクデバイスでは sd(n) という形式でインスタンス名が使用されます。すなわち、最初の SCSI ディスクデバイスは、sd0 となります。
デバイス再構成 
新しいデバイスを接続した場合、デバイスの再構成が必要です。
(ディスク交換等で一度認識していた場合は、再構成をおこなう必要がない場合もあります。)
デバイスの再構成は、reconfigureで再起動を行うか, OS起動中であれば、devfsadmコマンドを実行する事でも可能です。デバイスの再構成を行うと、新しく接続したデバイスのデバイスファイルが/devと/devices ディレクトリに追加され、使用できるようになります。
例)再構成 boot
# init 0
ok boot -r
もしくは
# touch /reconfigure
# shutdown -y -g0 -i6
例)devfsadm(1M) コマンド
# devfsadm
システム構成から外したデバイスのデバイスファイルを削除したい時は、
devfsadm コマンドの -C オプションを使用します。
# devfsadm -C
関連ファイル, コマンド 
- # 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コマンドは、システムの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 コマンドは、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ファイルシステムの作成 
UFSファイルシステムの作成 
UFSファイルシステムを作るには newfs コマンド(NEW File System) を使用します。
# newfs /dev/rdsk/c0t1d0s7
:
ここで/dev/rdsk/c0t1d0s7はディスクスライスを示す raw デバイスです。Solaris Volume Manager 等のボリューム管理製品で作成された仮想ボリュームにUFSファイルシステム場合は仮想ボリュームを示す raw デバイスを指定する必要があります。
UFS のマウントとアンマウント 
ディスク上に作成されたファイルシステムはそのままでは使えません。(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 
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について 
fsck は、整合性が失われたファイルシステムを修復します。例えば不注意によるシステム電源障害が発生した場合等、OS が異常終了するとファイルシステムの整合性が失われることがあります。Solaris ではシステムをブートすると、ファイルシステムの整合性チェックが(fsck コマンドを使用して)自動的に実行されます。殆どの場合、このファイルシステムのチェックによって自動的に修復されます。
fsck コマンドを使って手作業で修復することが可能ですが、その場合ファイルシステムがアンマウントされた状態で実施してください。
# fsck -F ufs /dev/rdsk/xxxxxx
UFS logging 
UFS ロギングはトランザクション(完全な UFS 操作を構成する変更)をログに保存してから、そのトランザクションを UFS ファイルシステムに適用する機能です。保存されたトランザクションは、後でファイルシステムに適用できます。
OS リブート時には、不完全なトランザクションは廃棄しますが、簡潔されているトランザクションは適用されます。この機能によりOS起動時に整合性が確保しない場合でもファイルシステムの整合性が確保されるため、fsck による検査を省略でき、システムがクラッシュした際に通常は fsck が実行されるためブートに時間がかかりますがそのブート時間を大幅に短縮できます。
UFS ロギング機能を有効にするにはファイルシステムを手動でマウントする際、もしくは /etc/vfstab ファイル内で、-o logging オプションを指定して、mount コマンドを実行する必要があります。Solaris 9 9/04 以降はデフォルトで有効になるため、オプションの指定は必要ありません。