Direct I / O no Linux

3

Estou tentando ativar o Direct I / O em / opt (/ dev / sda6, ext4) no Linux Mint 13. O que estou tentando é:

mount -o dio,rw /dev/sda6 /opt

como root.

O sistema responde com:

mount: wrong fs type, bad option, bad superblock on /dev/hda2

dmesg está relatando:

EXT4-fs (sda6): Unrecognized mount option "dio" or missing value.

Não consigo descobrir qual parâmetro definir para ativar a E / S direta (e mesmo se a montagem com E / S direta for possível para o ext4). Além disso, se o ext4 não deve suportar E / S direta, alguém poderia indicar um sistema de arquivos para usar no Linux?

    
por BerserkEVA 13.10.2013 / 21:02

1 resposta

5

O ext4 não possui a opção dio mount (acredito que o AIX e o Solaris o façam), mas possui dioread_lock e dioread_nolock mount options. Na página de manual mount(8) :

dioread_lock/dioread_nolock

Controls whether or not ext4 should use the DIO read locking. If the dioread_nolock option is specified ext4 will allocate uninitialized extent before buffer write and convert the extent to initialized after IO completes.

This approach allows ext4 code to avoid using inode mutex, which improves scalability on high speed storages. However this does not work with data journaling and dioread_nolock option will be ignored with kernel warning. Note that dioread_nolock code path is only used for extent-based files. Because of the restrictions this options comprises it is off by default (e.g. dioread_lock).

Dito isso, como outros já mencionaram, a E / S direta é normalmente ativada configurando o sinalizador O_DIRECT na chamada do sistema open(2) - isto é, é controlado pelo aplicativo, não por uma opção de montagem. O_DIRECT é suportado pelo ext4, a menos que você esteja usando a opção data=journal mount (veja documentação do ext4 e este commit ).

Para InnoDB eu sei que o parâmetro innodb_flush_method pode ser usado para habilitar O_DIRECT , mas não estou ciente de uma configuração similar para MyISAM?

    
por 10.07.2015 / 10:06