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


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.