2008年3月5日水曜日

Solarisでのリムーバブルメディアの管理方法

バージョン2.2以降のSolarisでは、フロッピーディスクやCD-ROMなどの着脱可 能な、いわゆるリムーバブルメディアの管理方法が大きく変わりました。vold と呼ばれる特別なデーモンが存在して、これらのメディアをドライブにセット すると必要に応じてシステムで決められたディレクトリにマウントしてくれる というものです。この機能により、スーパーユーザ特権を持たない一般のユー ザでも自由にファイルシステムのマウント、アンマウントが行なえるのです。 この部分はSolarisにおいてもっとも頻繁な変更の行なわれている部分であり、 デバイス名などの扱いもSolaris 2.2と2.3の間でも変わっているのですが、と りあえずここでは、Solaris 2.2におけるvoldの概略について述べることにし ます。


フロッピーディスクの使用

Solarisでは、フロッピーディスクを何通りかの方法で使用することが可能になっ ています。

ファイルシステムの一部として使用 ufs、pcfs
バックアップメディアとして使用 tar、cpio
ufsやpcfsのようにフロッピーディスクをUNIXファイルシステムの一部として扱 う場合は、当然マウント、アンマウントの必要があります。しかし、フロッピー ディスクは本来頻繁に抜き差しするものです。これを毎回マウント、アンマウン トしていては大変面倒です。しかも、マウント、アンマウントの操作はスーパー ユーザ以外は行なうことができません。

そこで、Solarisではボリュームマネージャvoldがこのようなリムーバブルメディ アの管理を引き受けるようになっています。すでにフォーマット済みでファイル システムが構築されたメディアについては、ドライブに挿入すれば所定のマウン トポイントに自動的にマウントされ、エジェクトすれば自動的にマウントが解除 されるようになっています。

ここで、フロッピーディスクドライブの使用法について注意をしておきます。ま ず、ディスケットを挿入する方向ですが、基本的にはPCと同じく、ディスケット のラベルを上にして、スリットに差し込みます。ただし本体が縦置きになってい る場合は、よく本体の向きを確かめて下さい。また、PCのドライブと違って、 挿入口にエジェクト用ボタンがついていません。ディスケットの取り出しには、 ejectコマンドを使います。


eject
とすれば、ドライブからディスケットが出てきます。


メディアのチェック

常にフロッピーディスクドライブが動作している状態では、ディスケットはす ぐに摩耗してしまいます。そのため、ただドライブにディスケットを入れただけ ではまだドライブは回転しないようになっています。

ディスケットを挿入したら、 volcheckというコマンドを実行して下さい。 ディスケットのシャッタが開いて、ドライブが動作し始めます。これで、ボリュー ムマネージャがディスケットを認識したことになります。

もし、このディスケットがこの後述べるフォーマットとファイルシステム作成の 済んだものであれば、 volcheckを実行するだけで一気にマウントまででき てしまいます。そして、取り出したいときは ejectコマンドを実行するだ けでボリュームマネージャがアンマウントまで行なってくれます。

しかし、いまはまだフォーマットされていないディスケットを使いますから、利 用者が自分でフォーマット、ファイルシステムの作成を行なわなければなりませ ん。


ufs形式でのフォーマット

Solarisでは、 fdformatというコマンドで、フロッピーディスクのufsフォー マットを行います。


fdformat
このとき、 fdformat: can't read verify data, I/O error とか No such volume (or no media in specified device): floppy といった エラーメッセージが表示される場合がありますが、その場合は volcheck fdformatを2、3回繰り返せばうまくいきます。

ipca6:[209]fdformat
Press return to start formatting floppy in /vol/dev/rfd0/unformatted.
................................................................................
このとき表示されるデバイス名 /vol/dev/rfd0/unformattedに注意して下 さい。これは、ボリュームマネージャがドライブに挿入されたディスケットをチェッ クして自動的に作成したデバイスファイルです。なお、Solaris 2.3以降では /vol/dev/rfd0が /vol/dev/rdiskette0になります。
フォーマットが完了したら、 newfsコマンドでフロッピーディスク上にファ イルシステムを構成します。 ls -l /vol/dev/rfd0を実行し、newfsの対象と なるデバイスファイル名を確認しておきましょう。


ipca6:[210]:newfs /vol/dev/rfd0/unnamed_floppy
newfs: construct a new file system /vol/dev/rfd0/unnamed_floppy: (y/n)? y
/vol/dev/rfd0/unnamed_floppy: 2880 sectors in 80 cylinders of 2 tracks, 18 sectors
1.5MB in 5 cyl groups (16 c/g, 0.29MB/g, 128 i/g)
(fsck -F ufs -o b=# のための) スーパーブロックバックアップ:
32, 640, 1184, 1792, 2336,

ufsマウント

ボリュームマネージャが動作していれば、実は今フォーマットしたディスクをマ ウントするのにスーパーユーザになる必要はありません。一度 ejectして から、もう一度ドライブに挿入し、 volcheckを行なうだけです。これだけ でディレクトリ /floppyの下にフロッピーディスクがマウントされます。


DOSフォーマットでの利用

Solarisでは、PCとのデータの互換性を考慮して、DOSフォーマット、すなわち pcfsでフロッピーディスクを利用することができます。

DOSフォーマットは、さらにIBM-PC互換機で使われている1.44Mbフォーマット、 720Kbフォーマット、NECのPCで使われている1.2Mbフォーマットに分かれます。 Solarisのファイルシステムはこの3種類とも使用可能なのですが、残念ながら 皆さんの実習で使用するマシンのドライブでは1.2Mbフォーマットに対応してい ません。NECのパソコンでデータを読みたければ、2DDのディスクで720Kbフォー マットにしておけば読むことは可能になるはずです。

いずれのフォーマットでも、 volcheckをかけるところまではufsの場合と 変わりません。その後は、


高密度:1.44Mb
fdformat -d
中密度:1.2Mb
fdformat -m -t nec
低密度:720Kb
fdformat -l

とします。pcfsの場合、newfsコマンドを実行する必要はありません。 そして eject挿入 volcheckとすれば、 自動的に /floppyディレクトリの下にマウントされます。
あとは通常のコマンドを用いてファイルを操作できますが、ファイル名などに DOSフォーマット特有の制限があるのを忘れないで下さい。


tar、cpio

これらの伝統的なUNIXコマンドは、デバイスファイルを指定して使用します。 voldが動作している場合、これらのコマンドで使用するデバイス名は /vol/dev/fd0/ media-name(ブロックデバイス)、 /vol/dev/ rfd0/ media-name(キャラクタデバイス)となります。 media-nameは volcheckをかけたときのディスケットの状態により unformatted、 unnamedなどになります。volcheckの後に ls -l /vol/dev/fd0を実行し て調べてみると良いでしょう。また、Solaris 2.3以降では、''fd0''、''rfd0'' がそれぞれ ''diskette''、''rdiskette''に

Solarisで、TCP 関連のチューニングを行なう

TCP 関連のチューニングを行なう
Solaris を、Web アプリケーションサーバーとして使用する場合、幾つかチューニングを行なうことでパフォーマンスを向上させることが出来ます。

ストリームドライバのキューサイズと TCP に対するハッシュサイズを制御します。0 に設定すると無限になるので、パフォーマンスはバッファの容量不足による影響を受けなくなります。(安全値の目安は、64MのRAMなら25、128Mなら50ぐらい)/etc/system ファイルに記述します。

set sq_max_size = 0 (デフォルトは 2)
set tcp:tcp_conn_hash_size = 262144 (デフォルトは 256)
TCPスタックに関するパラメータを ndd コマンドで設定します。/etc/init.d/inetinit に記述しておくことでシステム起動時に設定されます。(Solaris のバージョンによってはパッチが必要です)

ndd -set /dev/tcp tcp_close_wait_interval 60000 (240000)
ndd -set /dev/tcp tcp_time_wait_interval 60000 (240000)
ndd -set /dev/tcp tcp_mss_max 6000
ndd -set /dev/tcp tcp_fin_wait_2_flush_interval 16000
ndd -set /dev/ip ip_path_mtu_discovery 0
ndd -set /dev/tcp tcp_conn_req_max_q 1024 (128)
ndd -set /dev/tcp tcp_conn_req_max_q0 4096 (1024)
ndd -set /dev/tcp tcp_conn_req_min 1
ndd -set /dev/tcp tcp_xmit_hiwat 65535 (送信バッファ:8129)
ndd -set /dev/tcp tcp_recv_hiwat 65535 (受信バッファ:8129)
ndd -set /dev/tcp tcp_cwnd_max 65534
ndd -set /dev/tcp tcp_keepalive_interval 90000 (負荷が大きい場合小さく:720000)
ndd -set /dev/tcp tcp_ip_abort_interval 60000 (480000)
ndd -set /dev/tcp tcp_ip_abort_cinterval 60000 (480000)
ndd -set /dev/tcp tcp_rexmit_interval_initial 3000 (再転送率が 30-40% を超える場合大きく:3000)
ndd -set /dev/tcp tcp_rexmit_interval_min 3000 (200)
ndd -set /dev/tcp tcp_rexmit_interval_max 10000 (240000)
ndd -set /dev/tcp tcp_smallest_anon_port 1024 (32768)
ndd -set /dev/tcp tcp_conn_grace_period 500
ndd -set /dev/ip ip_ignore_redirect 1
ndd -set /dev/tcp tcp_slow_start_initial 2 (Solaris 2.5, 2.6の場合)

 

Solarisで、フロッピーディスクをフォーマットする方法

Solarisで、フロッピーディスクをフォーマットする方法

1.フロッピーディスクをフロッピードライブに挿入する。
まず、フロッピーディスクをフロッピードライブに挿入してください。

2.ボリュームマネージャにフロッピーの挿入を通知する。
ボリュームマネージャの管理するボリューム情報を更新するには、volcheckコマンドを使います。

$ volcheck -v

volcheckコマンドを実行した際、下記のどちらかのメッセージが表示されます。

◆media was found
ボリュームマネージャがフロッピーディスクを検出して、それを/floppyディレクトリにマウントしようとします。フロッピーディスクがくフォーマットされていると、エラーメッセージは表示されません。フロッピーディスクがフォーマットされていない場合、以下のメッセージが出力されます。

fd0: unformatted diskette or no diskette in the drive
fd0: read failed (40 1 0)
fd0: bad format

◆no media was found
ボリュームマネージャがフロッピーディスクを検出できない場合に表示されます。フロッピーディスクがフロッピーディスクに正しく挿入されているか確認し、volcheckコマンドを再度試みます。それでも、うまくいかない場合は、フロッピーディスクもしくはドライブに損傷の可能性があります。

3.フロッピーディスクがマウントされていることを確認する。

$ ls /floppy
floppy0 noname

これ以降、ファイルシステムの一部として通常のコマンドでフロッピディスクにアクセスすることが可能になります。フロッピーディスクをフロッピードライブから取り出すには、ejectコマンドを使います。

$ eject floppy

フロッピードライブが自動排出の場合、ejectコマンドを実行してから手動で取り出してください。デバイスが使用中かどうかを調べるには、fuserコマンドを使用することもできます。

また、ボリュームマネージャが動作していない場合、mountコマンドを実行すればフロッピーディスクを手動でマウントすることができます。

4.フロッピーディスクのフォーマット
まず、DOSフォーマットでフロッピーディスクをフォーマットします。フォーマットには、fdformatコマンドを使います。

$ fdformat -v -U -b floppy
Formatting 1.44 MB in /vol/dev/rdiskette0/noname
Press return to start formatting floppy. ← Returnキーを押してください。

次に、UFSでフロッピーディスクをフォーマットします。UFSでディスクをフォーマットするときには、DOSフォーマットのフロッピーディスクにUFSファイルシステムを作成します。フォーマットには、newfsコマンドを使います。

$ /usr/sbin/newfs -v /vol/dev/aliases/floppy0
newfs: construct a new file system /vol/dev/aliases/floppy0:(y/n)? y ← yを入力
mkfs -F ufs /vol/dev/aliases/floppy0 2880 18 2 8192 1024 16 10 5 2048 t 0 -1 8 16
/vol/dev/aliases/floppy0:     2880 sectors in 80 cylinders of 2 tracks, 18 sectors
     1.4MB in 5 cyl groups (16 c/g, 0.28MB/g, 128 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 640, 1184, 1792, 2336,

フロッピーディスクのフォーマットが完了したら、volrmmountコマンドでディスクの挿入をボリュームマネージャに通知し直します。-iオプションは、ディスクの挿入を通知するオプションです。

$ volrmmount -i floppy0

volrmmountコマンドを実行すると、rmmountコマンドを起動してリムーバブルデバイスのマウントやアンマウントをすることができます。アンマウントする場合は、-eオプションを指定してください。

dtlogin を有効/無効にする方法

dtlogin を有効/無効にする方法
/usr/dt/bin/dtconfig コマンドを使用して設定できます。
/usr/dt/bin/dtconfig -d (オートスタートを無効にする)
/usr/dt/bin/dtconfig -e (オートスタートを有効にする)
/usr/dt/bin/dtconfig -kill (dtlogin を終了させる)
/usr/dt/bin/dtconfig -reset (dtlogin をリスタートさせる)
/usr/dt/bin/dtconfig -p (printer action update)
/usr/dt/bin/dtconfig -inetd (inetd.conf /usr/dt daemons)
/usr/dt/bin/dtconfig -inetd.ow (inetd.conf /usr/openwin daemons)