ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Sun QFS File System 5.3 構成および管理ガイド Sun QFS and Sun Storage Archive Manager 5.3 Information Library (日本語) |
Sun QFS ファイルシステムは、混在したファイルサイズを操作できるように調整されています。ファイルシステム設定を有効にして、大容量ファイルのディスクファイル転送のパフォーマンスを向上させることができます。
Oracle Solaris の /etc/system ファイル内の maxphys パラメータは、デバイスドライバが任意の時点で読み取りまたは書き込みを行う最大バイト数を制御します。maxphys パラメータのデフォルト値は、Oracle Solaris OS のレベルによって異なる場合がありますが、通常は 128K バイト前後です。
次の行を /etc/system に追加し、maxphys を 1M バイトに設定します。
set maxphys = 0x100000
注 - maxphys 値は、2 の累乗に設定されている必要があります。
sd ドライバは、/kernel/drv/sd.conf ファイル内の sd_max_xfer_size 定義を探すことによって、特定のファイルの大容量転送を可能にします。この定義がない場合は、sd デバイスドライバ定義 sd_max_xfer_size に定義されている値 (1024 × 1024 バイト) が使用されます。
大容量転送を有効にして促進するには、/kernel/drv/sd.conf ファイルの最後に次の行を追加します:
sd_max_xfer_size=0x800000;
ssd ドライバは、/kernel/drv/ssd.conf ファイル内の ssd_max_xfer_size 定義を探すことによって、特定のファイルの大容量転送を有効にします。この定義がない場合は、ssd デバイスドライバ定義 ssd_max_xfer_size に定義されている値 (1024 × 1024 バイト) が使用されます。
/kernel/drv/ssd.conf ファイルの最後に次の行を追加します:
ssd_max_xfer_size=0x800000;
注 - Oracle Solaris 10 x86 プラットフォーム上では、この変更は /kernel/drv/sd.conf ファイル内で行われます。8M バイトの最大転送サイズの場合は、次の行が追加されます:
sd_max_xfer_size=0x800000
この操作はページ入出力だけに影響します。
writebehind パラメータは、Sun QFS ファイルシステム上でページ入出力が実行されているときにファイルシステムによって後書きされるバイト数を指定します。writebehind 値を RAID の読み取り/変更/書き込み値の倍数に一致させると、パフォーマンスを向上させることができます。
このパラメータはキロバイト単位で指定し、8K バイトの倍数に切り捨てられます。このパラメータを設定しても、直接入出力の実行時には無視されます。デフォルトの writebehind 値は 512K バイトです。この値は、大容量ブロックの逐次入出力に適しています。
writebehind のサイズを、ハードウェアとソフトウェアの両方の RAID 5 に関して RAID 5 のストライプサイズの倍数に設定します。RAID 5 のストライプサイズは、データディスクの数に構成済みのストライプ幅を掛けた値です
たとえば、3 つのデータディスクと 1 つのパリティーディスク (3 + 1) から構成される、ストライプ幅 16K バイトの RAID -5 装置を構成していると仮定します。writebehind 値には 48K バイトや 96K バイト などの 48 の倍数を指定し、読み取り/変更/書き込み RAID -5 パリティー生成のオーバーヘッドを回避する必要があります。Sun QFS ファイルシステムの場合は、DAU (sammkfs -a コマンド) も RAID 5 のストライプサイズの倍数にするようにしてください。このように割り当てることで、ブロックが連続して確保されます。
writebehind のサイズをリセットしたあと、システムのパフォーマンスをテストしてください。次の例は、ディスク書き込みのタイミングのテストです。
# timex dd if=/dev/zero of=/sam/myfile bs=256k count=2048
writebehind パラメータは、マウントオプションから、samfs.cmd ファイル内から、/etc/vfstab ファイル内から、または samu ユーティリティー内のコマンドから設定できます。マウントオプションからの有効化については、mount_samfs(1M) のマニュアルページにある -o writebehind=n オプションを参照してください。samfs.cmd ファイルからの有効化については、『Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual』の「samfs.cmd(4)」を参照してください。samu(1M) 内からの有効化については、『Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual』の「samu(1M)」を参照してください。
readahead パラメータは、Sun QFS ファイルシステム上でページ入出力が実行されているときにファイルシステムによって先読みされるバイト数を指定します。このパラメータはキロバイト単位で指定し、8K バイトの倍数に切り捨てられます。このパラメータを設定しても、直接入出力の実行時には無視されます。
readahead パラメータのサイズを増やすと、ある時点までは大容量ファイル転送のパフォーマンスが向上します。転送速度のそれ以上の向上が見られなくなるまで、readahead のサイズをリセットしたあと、システムのパフォーマンスをテストしてください。次の例は、ディスク読み取りのタイミングをテストするための方法を示しています。
# timex dd if=/sam/myfile of=/dev/null bs=256k
環境でさまざまな readahead サイズをテストする必要があります。readahead パラメータは、ページ入出力の入出力パフォーマンスを向上させるサイズに設定するべきですが、大きすぎてパフォーマンスを低下させるようなサイズにはしないようにしてください。また、メモリーの量や、並行ストリームの数も考慮するようにしてください。readahead に設定した値にストリームの数を掛けた値がメモリーより大きくなると、ページスラッシュが発生する場合があります。
デフォルトの readahead の値は 1024K バイトです。この値は、大容量ブロックの逐次入出力に適しています。ブロック長の短い、ランダムな入出力アプリケーションの場合は、readahead を標準的なリクエストのサイズに設定します。データベースアプリケーションでは独自の先読みが行われるため、このようなアプリケーションについては readahead を 0 に設定します。
readahead の設定は、マウントオプションから、samfs.cmd ファイル内から、/etc/vfstab ファイル内から、または samu ユーティリティー内のコマンドから有効にすることができます。マウントオプションからのこの設定の有効化については、mount_samfs(1M) のマニュアルページにある -o readahead=n オプションの説明を参照してください。samfs.cmd ファイルからのこの設定の有効化については、『Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual』の「samfs.cmd(4)」を参照してください。samu(1M) 内からのこの設定の有効化については、『Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual』の「samu(1M)」を参照してください。
mount コマンドの -o stripe=n オプションは、ファイルシステムのストライプ幅をを指定します。ストライプ幅は、ディスク割り当て単位 (DAU) のサイズに基づきます。n 引数は、あるデバイスに n × DAU バイトが書き込まれてから、書き込みが次のデバイスに切り替わることを指定します。DAU サイズは、ファイルシステムが sammkfs -a コマンドによって初期化されるときに設定されます。
-o stripe=0 が設定されている場合、ファイルは、ラウンドロビン式割り当て方式を使用してファイルシステムのデバイスに割り当てられます。この方法では、ある装置がいっぱいになるまで、各ファイルが完全にその装置に割り当てられます。ラウンドロビン式は、マルチストリーム環境に適した設定です。-o stripe=n が 0 を超える整数に設定されている場合、ファイルは、ストライプ化の方式を使用してファイルシステムのデバイスに割り当てられます。-o stripe=n の適切な設定を決定するには、この設定をさまざまな値に変化させてパフォーマンスを測定してみてください。ストライプ化は、必要な帯域幅を備えた既製アプリケーションに適した設定です。
ストライプ幅は、/etc/vfstab ファイルまたは samfs.cmd ファイルからも設定できます。
mount コマンドの詳細は、『Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual』の「mount_samfs(1M)」を参照してください。samfs.cmd ファイルの詳細は、『Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual』の「samfs.cmd(4)」を参照してください。