O Linux ZFS não armazena em buffer as gravações em buffer de gravação (SLOG / ZIL)?

5

Ao experimentar a E / S de gravação, a coluna de log zpool iostat -vnunca mostra nenhuma atividade do ZIL. Isso resulta em tempos de espera maiores do que o esperado ao gravar dados no disco (algumas vezes acima de 80ms durante a contenção).

                     capacity     operations    bandwidth
    pool              alloc   free   read  write   read  write
----------------  -----  -----  -----  -----  -----  -----  
storage           1.88T  2.09T      3  3.01K   512K  39.3M
  mirror           961G  1.05T      0  1.97K   128K  20.8M
    mpathf            -      -      0    393      0  20.8M
    mpathg            -      -      0    391   128K  20.6M
  mirror           961G  1.05T      2  1.04K   384K  18.5M
    mpathi            -      -      1    379   256K  21.1M
    mpathj            -      -      0    281   128K  18.3M
logs                  -      -      -      -      -      -
  /zlog/zilcache      0  15.9G      0      0      0      0
cache                 -      -      -      -      -      -
  mpathk           232G     8M      1      0   130K      0
  mpathl           232G     8M      1      0   130K      0
----------------  -----  -----  -----  -----  -----  -----

Meu dispositivo / zlog / zilcache nunca possui E / S. É um arquivo em flash muito rápido. Posso escrever e ler quando removê-lo do armazenamento do ZFS, mas o ZFS parece ignorá-lo.

O dispositivo parece disponível:

  pool: storage
 state: ONLINE
  scan: scrub repaired 0 in 19h31m with 0 errors on Wed Nov 19 07:39:03 2014
config:

    NAME              STATE     READ WRITE CKSUM
    storage           ONLINE       0     0     0
      mirror-0        ONLINE       0     0     0
        mpathf        ONLINE       0     0     0
        mpathg        ONLINE       0     0     0
      mirror-1        ONLINE       0     0     0
        mpathi        ONLINE       0     0     0
        mpathj        ONLINE       0     0     0
    logs
      /zlog/zilcache  ONLINE       0     0     0
    cache
      mpathk          ONLINE       0     0     0
      mpathl          ONLINE       0     0     0

errors: No known data errors

Alguma maneira de configurar o ZFS para armazenar em cache gravações no dispositivo de logs para obter reconhecimentos mais rápidos?

obrigado

user1955162
fonte
Descreva seu hardware em detalhes. Tipo de servidor, discos, SSDs, etc. também distribuição e versões de SO.
ewwhite
O servidor é um IBM (Dual CPU Xeon), os discos são discos SATA de 4 TB atrás de um controlador RAID, funcionando como um JBOD. Eu instalei as versões do Linux ZFS no RHEL 6.5.
user1955162
E o que você está usando para um dispositivo ZIL?
ewwhite
11
Mais detalhes!!!!
ewwhite
11
desculpe, se afastou do trabalho por um momento. Estou vendo E / S de alta espera ao gravar dados no pool do ZFS pelo NFS. Gravações são geradas a partir de um banco de dados Mysql principalmente, E / S aleatória é esperada. O SSD é um Samsung SSD (250GB 840). Espero que o ZIL grave dados e confirme a gravação, liberando o IO. Não estou entendendo o dispositivo ZIL?
user1955162

Respostas:

4

Eu acredito que você está entendendo mal o propósito do ZIL. Você o descreve como um cache de gravação que não é. Nenhuma atividade no ZIL pode ser apenas um comportamento normal, dependendo do que está sendo executado em sua máquina.

Nada é lido no ZIL, este é um dispositivo somente para gravação. A única exceção possivelmente ocorreria durante uma importação de pool após uma falha.

Existem gravações apenas se os aplicativos estiverem executando gravações síncronas. E / S regulares, como mover arquivos, não estão usando o ZIL.

Você pode definir sync=alwaysno conjunto de dados para forçar todas as gravações a se comportarem como se fossem síncronas.

jlliagre
fonte
11
Pretendo acelerar as confirmações de gravação no cliente NFS, e meu entendimento é que as lojas ZIL gravam para acelerar as confirmações no cliente NFS. As gravações do cliente são provenientes de um banco de dados MySQL
user1955162
Ok, isso faz sentido. Gravações síncronas são esperadas de um banco de dados e devem realmente afetar o SLOG. Pode ser uma afinação pretendida. O que diz zfs get sync storage?
Jlliagre
[root@storage ~]# zfs get sync storage NAME PROPERTY VALUE SOURCE storage sync standard default [root@storage ~]# Obrigado!!! Deixe-me saber se você não pode ler isso, pois os caracteres de retorno não foram copiados.
user1955162
11
Posso ler, mas é melhor atualizar sua pergunta para adicionar esse tipo de informação. Ainda não tenho explicação, o valor do ajuste é o esperado.
Jlliagre
2
Eu encontrei o problema, por algum motivo, o compartilhamento NFS não está enviando dados de forma síncrona. Eu configurei sync = always e a atividade começou a ser gravada no SSD. Muito obrigado pela entrada e o ponteiro na sincronização
user1955162