Como descobrir se a gravação em espelho lvm é assíncrona ou síncrona?

2

Estou usando o redhat 5.8 com um espelho lvm, criado com o seguinte comando:

 lvcreate -m1 --mirrorlog mirrored -n mirrorvol -L 10G myvg /dev/vdb /dev/vdc

Eu gostaria de saber, quando escrevo, preciso esperar que a gravação seja dada a ambos os dispositivos, ou apenas um?

Pelo que entendi, o espelho lvm é síncrono:

[root@02srv004x9 ~]# dmsetup ls
mpath2  (253, 2)
foo (253, 3)
vgmirror-oracle_BD2_mirrorlogAvol   (253, 4)
VolGroup00-LogVol01 (253, 1)
VolGroup00-LogVol00 (253, 0)
vgmirror-oracle_BD2_mirrorlogAvol_mimage_1  (253, 6)
vgmirror-oracle_BD2_mirrorlogAvol_mimage_0  (253, 5)
dmsetup suspend /dev/mapper/vgmirror-oracle_BD2_mirrorlogAvol_mimage_1
Name:              vgmirror-oracle_BD2_mirrorlogAvol_mimage_1
State:             SUSPENDED
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      0
Major, minor:      253, 6
Number of targets: 1
UUID: LVM-c8xfdstj4tTpfV3LSIYat0wbKXpfb7kDefFId05lIJR2QV1ws7CBfkbC0Oc813d9

Agora tenho uma imagem secundária no estado de suspensão e tentarei montar o sistema de arquivos:

 mount /dev/mapper/vgmirror-oracle_BD2_mirrorlogAvol /mnt

Aqui o comando mount é bloqueado e permanece no estado D.

    
por c4f4t0r 14.10.2014 / 12:22

1 resposta

2

Se você escrever, a gravação ocorrerá no cache de blocos do seu RAM. A partir daí, será sincronizado, quando for ideal.

Se você executar um comando sync ou uma chamada de sistema fsync() , ele gravará todo o cache de gravação. Além disso, os sistemas de arquivos ext2-3-4 tentam escrever o cache de gravação quase tão frequentemente quanto possível, outros sistemas de arquivos têm melhores heurísticas.

Sistema de arquivos de registro no diário também executa sincronizações parciais regularmente.

Se ocorrer uma gravação no mirrorvol, ele passará por duas operações de gravação para os sub-volumes lógicos em vdb e vdc. Não há garantia de que eles serão realmente executados ao mesmo tempo, exceto se alguém os disser (o que pode ser a sincronização periódica do cache de gravação, o registro no diário ou o maravilhoso recurso de sincronização dos sistemas de arquivos ext2-3-4).

A suspensão não é para emular erros em um volume físico LVM. A suspensão é fazer alterações não atômicas que parecem atômicas para os usuários reais. Durante a suspensão, cada comando usando o volume lógico fornecido estará no status D, mas não precisa fazer nada com o cache de gravação, é um recurso do LVM.

Se você deseja emular um erro de hardware em um volume LVM espelhado, é necessário encontrar soluções alternativas. O primeiro que eu acho que funciona se você desligar o disco rígido físico com o SMART.

    
por 14.10.2014 / 13:02