我想在Linux Mint 13的/ 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读取locking。 如果指定了dioread_nolock选项,则ext4将在缓冲区写入之前分配未初始化的扩展区,并在IO完成后将扩展区转换为初始化区。
这种方法允许ext4代码避免使用inode mutex,这可以提高高速存储器的可扩展性。 但是,这不适用于数据日志logging,dioread_nolock选项将被内核警告忽略。 请注意,dioread_nolock代码path仅用于基于扩展名的文件。 由于这个选项的限制,默认是closures的(例如dioread_lock)。
也就是说,正如其他人所提到的那样,直接I / O通常是通过在open(2)系统调用中设置O_DIRECT标志来启用的 – 也就是说,它由应用程序控制,而不是挂载选项。 除非使用data=journal挂载选项, 否则 ext4支持O_DIRECT (请参阅ext4文档和此提交 )。
对于InnoDB,我知道innodb_flush_method参数可以用来启用O_DIRECT ,但是我不知道MyISAM有类似的设置吗?