Linux Mint13の/ opt(/ dev/sda6、ext4)でダイレクトI/Oを有効にしようとしています。試しているのは次のとおりです。
mount -o dio,rw /dev/sda6 /opt
ルートとして。
システムは次のように応答します。
mount: wrong fs type, bad option, bad superblock on /dev/hda2
dmesg
が報告しています:
EXT4-fs (sda6): Unrecognized mount option "dio" or missing value.
直接I/Oを有効にするためにどのパラメーターを設定するかがわかりません(ext4で直接I/Oを使用してマウントできる場合でも)。これに加えて、ext4が直接I/Oをサポートしない場合、誰かがLinuxで使用するファイルシステムを指定できますか?
ext4にはdio
マウントオプションはありませんが(AIXとSolarisにはあると思います)、_dioread_lock
_と_dioread_nolock
_マウントオプションがあります。 mount(8)
マニュアルページから:
dioread_lock/dioread_nolock
Ext4がDIO読み取りロックを使用するかどうかを制御します。 dioread_nolockオプションが指定されている場合、ext4はバッファーの書き込み前に初期化されていないエクステントを割り当て、IOの完了後にエクステントを初期化されたものに変換します。
このアプローチにより、ext4コードはinodeミューテックスの使用を回避でき、高速ストレージでのスケーラビリティが向上します。ただし、これはデータジャーナリングでは機能せず、dioread_nolockオプションはカーネル警告で無視されます。 dioread_nolockコードパスは、エクステントベースのファイルにのみ使用されることに注意してください。制限があるため、このオプションはデフォルトでオフになっています(例:dioread_lock)。
つまり、他の人が述べたように、ダイレクトI/Oは通常、open(2)
システムコールで_O_DIRECT
_フラグを設定することで有効になります。つまり、マウントオプションではなく、アプリケーションによって制御されます。 _O_DIRECT
_はext4でサポートされていますunless_data=journal
_マウントオプションを使用している場合( ext4のドキュメントを参照 および このコミット )。
InnoDBの場合、_innodb_flush_method
_パラメータを使用して_O_DIRECT
_を有効にできることを知っていますが、MyISAMの同様の設定を知りませんか?