É um problema relativamente comum quando algo dá errado em uma SAN do ext3 para detectar erros de gravação no disco e remontar o sistema de arquivos somente leitura. Tudo bem, apenas quando a SAN é corrigida, não consigo descobrir como remontar a leitura / gravação do sistema de arquivos sem reiniciar.
Ver:
[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][active]
\_ 1:0:0:1 sdb 8:16 [active][ready]
\_ 2:0:0:1 sdc 8:32 [active][ready]
[root@localhost ~]# mount /dev/mapper/mpath0 /mnt/foo
[root@localhost ~]# touch /mnt/foo/blah
Tudo bem, agora eu arranco o LUN por baixo dele.
[root@localhost ~]# touch /mnt/foo/blah
[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system
[root@localhost ~]# tail /var/log/messages
Mar 18 13:17:33 localhost multipathd: sdb: tur checker reports path is down
Mar 18 13:17:34 localhost multipathd: sdc: tur checker reports path is down
Mar 18 13:17:35 localhost kernel: Aborting journal on device dm-2.
Mar 18 13:17:35 localhost kernel: Buffer I/O error on device dm-2, logical block 1545
Mar 18 13:17:35 localhost kernel: lost page write due to I/O error on dm-2
Mar 18 13:17:36 localhost kernel: ext3_abort called.
Mar 18 13:17:36 localhost kernel: EXT3-fs error (device dm-2): ext3_journal_start_sb: Detected aborted journal
Mar 18 13:17:36 localhost kernel: Remounting filesystem read-only
Ele só pensa que é somente leitura, na realidade nem está lá.
[root@localhost ~]# multipath -ll
sdb: checker msg is "tur checker reports path is down"
sdc: checker msg is "tur checker reports path is down"
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=0][enabled]
\_ 1:0:0:1 sdb 8:16 [failed][faulty]
\_ 2:0:0:1 sdc 8:32 [failed][faulty]
[root@localhost ~]# ll /mnt/foo/
ls: reading directory /mnt/foo/: Input/output error
total 20
-rw-r--r-- 1 root root 0 Mar 18 13:11 bar
Como ele ainda lembra que o arquivo 'bar' está lá ... mistério, mas não é importante no momento. Agora, apresento novamente o LUN:
[root@localhost ~]# tail /var/log/messages
Mar 18 13:23:58 localhost multipathd: sdb: tur checker reports path is up
Mar 18 13:23:58 localhost multipathd: 8:16: reinstated
Mar 18 13:23:58 localhost multipathd: mpath0: queue_if_no_path enabled
Mar 18 13:23:58 localhost multipathd: mpath0: Recovered to normal mode
Mar 18 13:23:58 localhost multipathd: mpath0: remaining active paths: 1
Mar 18 13:23:58 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:58 localhost multipathd: dm-2: devmap already registered
Mar 18 13:23:59 localhost multipathd: sdc: tur checker reports path is up
Mar 18 13:23:59 localhost multipathd: 8:32: reinstated
Mar 18 13:23:59 localhost multipathd: mpath0: remaining active paths: 2
Mar 18 13:23:59 localhost multipathd: dm-2: add map (uevent)
Mar 18 13:23:59 localhost multipathd: dm-2: devmap already registered
[root@localhost ~]# multipath -ll
mpath0 (36001f93000a310000299000200000000) dm-2 XIOTECH,ISE1400
[size=1.1T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=2][enabled]
\_ 1:0:0:1 sdb 8:16 [active][ready]
\_ 2:0:0:1 sdc 8:32 [active][ready]
Ótimo, certo? Diz [rw] bem ali. Não tão rápido:
[root@localhost ~]# touch /mnt/foo/blah
touch: cannot touch `/mnt/foo/blah': Read-only file system
OK, não faz isso automaticamente, vou dar um empurrãozinho:
[root@localhost ~]# mount -o remount /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only
Diabos você é:
[root@localhost ~]# mount -o remount,rw /mnt/foo
mount: block device /dev/mapper/mpath0 is write-protected, mounting read-only
Noooooooooo.
Eu tentei todos os tipos de comandos mount / tune2fs / dmsetup diferentes e não consigo descobrir como fazê-lo desmarcar o dispositivo de bloco como protegido contra gravação. A reinicialização corrigirá, mas eu prefiro fazê-lo on-line. Uma hora de pesquisar no google também não me levou a lugar algum. Salve-me ServerFault.
Respostas:
Recentemente, deparei com esse problema e o resolvi reiniciando, mas após uma investigação mais detalhada, parece que emitir o seguinte comando pode corrigi-lo.
Eu acho que você pode dar uma olhada na seção 25.14.4: Alterando o estado de leitura / gravação de uma unidade lógica online neste documento , no entanto, eu recomendo a reinicialização.
fonte
Tente usar:
fonte
mount -rw /mnt/foo
, então este parece ser o mais adequado para mim.Sou fã de evitar o problema em primeiro lugar. A maioria das caixas UNIX corporativas tentará novamente as operações do sistema de arquivos para sempre. Você, como administrador, precisa fazer alguns trabalhos de casa antes de ajustar sua configuração do MPIO. Se o seu aplicativo esperar até o dispositivo retornar a um estado utilizável, aqui está uma solução. No seu arquivo /etc/multipath.conf, verifique se o tipo de dispositivo que você gosta tem uma configuração para "no_path_retry" definida como "fila". Definir isso fará com que as E / Ss com falha fiquem na fila até que haja um caminho válido. Fizemos isso para que nossas caixas EMC Symmtrix / DMX funcionassem sobre soluços sob certas condições de falhas / recuperação do caminho da unidade / controlador / srdf.
Essa abordagem salvou nosso bacon inúmeras vezes e é nosso padrão para centenas de caixas em uma SAN multicabinete / fornecedor múltiplo com replicação para recuperação de desastres.
Apenas pensei em compartilhar com todos vocês. Cuidar.
fonte
Eu tive um problema que resolvi usando o hdparm com a
-r
opção em subdrives de dispositivos lógicos de vários caminhos.fonte
Você acha que está relacionado à seção deste documento intitulada Por que os sistemas de arquivos ext3 na minha SAN (Storage Area Network) repetidamente se tornam somente leitura ?
É um artigo bastante antigo e está falando sobre canal de fibra, mas pode estar relacionado ao seu problema.
fonte
Corrupção do sistema de arquivos? Experimentar:
Se estiver limpo com erros, será necessário digitalizar e limpar.
fonte
O Linux simplesmente não lida bem o suficiente com SANs de médio e grande porte. Você DEVE tomar alguns cuidados e ajustar os tempos limite de entrada / saída e o manuseio de tempo limite de vários caminhos, todos eles com os padrões prontos para desktop.
(Lembre-se de "rejeitar E / S para dispositivo inoperante"?)
fonte