Ber*_*EVA 4 linux filesystems ext4 io
我正在尝试在 Linux Mint 13 上的 /opt (/dev/sda6, ext4) 上启用直接 I/O。我正在尝试的是:
mount -o dio,rw /dev/sda6 /opt
Run Code Online (Sandbox Code Playgroud)
作为根。
系统响应如下:
mount: wrong fs type, bad option, bad superblock on /dev/hda2
Run Code Online (Sandbox Code Playgroud)
dmesg
正在报告:
EXT4-fs (sda6): Unrecognized mount option "dio" or missing value.
Run Code Online (Sandbox Code Playgroud)
我不知道要设置哪个参数来启用直接 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 mutex,从而提高高速存储的可扩展性。然而,这不适用于数据日志和 dioread_nolock 选项将被内核警告忽略。请注意,dioread_nolock 代码路径仅用于基于扩展的文件。由于此选项的限制,默认情况下它是关闭的(例如 dioread_lock)。
也就是说,正如其他人所提到的,直接 I/O 通常是通过O_DIRECT
在open(2)
系统调用中设置标志来启用的- 即,它由应用程序控制,而不是安装选项。O_DIRECT
ext4 支持,除非您使用data=journal
mount 选项(请参阅ext4 文档和此提交)。
对于 InnoDB,我知道该innodb_flush_method
参数可用于 enable O_DIRECT
,但我不知道 MyISAM 有类似的设置?