O CentOS acha que o Disco está ocupado, não pode montar ou fsck

25

Sou um usuário antigo e apresentador de perguntas pela primeira vez. Passei um dia inteiro pesquisando este e muitos outros sites em busca de uma solução, mas devo recorrer à solicitação de assistência para resolver minha situação.

Histórico: Nosso servidor HP Proliant, Centos 5.9 foi desligado ontem sem os procedimentos adequados de desligamento. A partir desse momento, a partição / home está em um estado em que não podemos executá-la, montá-la ou desmontá-la. umount afirma que não está montado, mas mount / fsck indica que está ocupado ou já está montado. Isso originalmente causou o servidor não inicializar. Acabamos removendo o disco / partição do / etc / fstab para que a inicialização não falhe.

# mount -t ext3 /dev/cciss/c0d0p1 /home
mount: /dev/cciss/c0d0p1 already mounted or /home busy

# fsck /dev/cciss/c0d0p1 
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
fsck.ext3: Device or resource busy while trying to open /dev/cciss/c0d0p1
Filesystem mounted or opened exclusively by another program?

Como você pode ver, o disco não está montado de forma alguma.

saída df:

# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/cciss/c0d1p3    198381228  24920704 163220696  14% /
/dev/cciss/c0d1p2    267818128    191652 253802544   1% /logs
/dev/cciss/c0d1p1       194442     33575    150828  19% /boot
tmpfs                 49495044         0  49495044   0% /dev/shm

montar saída:

# mount
/dev/cciss/c0d1p3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d1p2 on /logs type ext3 (rw)
/dev/cciss/c0d1p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

/ etc / fstab

# cat /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/logs             /logs                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SW-cciss/c0d1p5   swap                    swap    defaults        0 0

/ etc / mtab

# cat /etc/mtab 
/dev/cciss/c0d1p3 / ext3 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
/dev/cciss/c0d1p2 /logs ext3 rw 0 0
/dev/cciss/c0d1p1 /boot ext3 rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0

/ proc / montagens

# cat /proc/mounts 
rootfs / rootfs rw 0 0
/dev/root / ext3 rw,data=ordered 0 0
/dev /dev tmpfs rw 0 0
/proc /proc proc rw 0 0
/sys /sys sysfs rw 0 0
/proc/bus/usb /proc/bus/usb usbfs rw 0 0
devpts /dev/pts devpts rw 0 0
/dev/cciss/c0d1p2 /logs ext3 rw,data=ordered 0 0
/dev/cciss/c0d1p1 /boot ext3 rw,data=ordered 0 0
tmpfs /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
/etc/auto.misc /misc autofs rw,fd=7,pgrp=9694,timeout=300,minproto=5,maxproto=5,indirect 0 0
-hosts /net autofs rw,fd=13,pgrp=9694,timeout=300,minproto=5,maxproto=5,indirect 0 0

lsof

# lsof /dev/cciss/c0d0p1 
#

fusor

# fuser /dev/cciss/c0d0p1  
#

fdisk -l

# fdisk -l /dev/cciss/c0d0

Disk /dev/cciss/c0d0: 1800.2 GB, 1800280694784 bytes
255 heads, 63 sectors/track, 218871 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1      218871  1758081276   83  Linux

De acordo com outras recomendações na Web, usamos o Terminal Remoto ILO3 para inicializar em um Centos LiveCD. Quando fizemos isso, fomos capazes de montar / desmontar, fsck, a partição sem erros ou problemas. (ou seja: o próprio disco está bom).

Também usamos "debugfs" para executar uma limpeza do inode para o Inode do Diário <8>. O fsck então reconstruiu o diário sem erros. Novamente, conseguimos montar / desmontar o disco sem problemas quando inicializados no LiveCD.

Quando voltamos para a partição de inicialização normal, estamos de volta ao mesmo lugar, incapazes de montar ou fsck devido ao sistema operacional acreditar que a partição está ocupada.

Estou procurando entender o que mais no Linux pode indicar que este disco está em uso. Quais outros utilitários podem ser usados ​​para encontrar e limpar isso?

Qualquer ajuda é muito apreciada.


Informações adicionais, conforme solicitado :

lsof e fusor em / home, juntamente com a exibição de conteúdo / home e permissões de diretório.

# lsof /home
# fuser /home
# ls -la /home
total 16
drwxr-xr-x  2 root root 4096 Mar 15  2013 .
drwxr-xr-x 27 root root 4096 Nov 19 08:31 ..
# ls -l / | grep home
drwxr-xr-x   2 root root  4096 Mar 15  2013 home
#

O mount -o remount falha, pois essa partição não foi montada desde a inicialização mais recente. (Essa era uma partição funcional desde que o servidor foi instalado e só mostrou esse problema após a reinicialização completa ontem).

# mount -o remount -t ext3 /dev/cciss/c0d0p1 /home
mount: /home not mounted already, or bad option

Eu poderia adicionar novamente esta partição ao / etc / fstab e reiniciar, se necessário.


19/11/2013 - 11:12 CST

saída dmsetup:

# dmsetup table                
mpath0: 0 3516173232 multipath 1 queue_if_no_path 0 1 1 round-robin 0 1 1 104:0 1000 
mpath0p1: 0 3516162552 linear 253:0 63

# dmsetup info
Name:              mpath0
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      1
Major, minor:      253, 0
Number of targets: 1
UUID: mpath-3600508b1001cb6e6453d25c4052abca5

Name:              mpath0p1
State:             ACTIVE
Read Ahead:        256
Tables present:    LIVE
Open count:        0
Event number:      0
Major, minor:      253, 1
Number of targets: 1
UUID: part1-mpath-3600508b1001cb6e6453d25c4052abca5

lsof -n

# lsof -n | grep /home
#

Solução final:

# multipath -ll
mpath0 (3600508b1001cb6e6453d25c4052abca5) dm-0 HP,LOGICAL VOLUME
[size=1.6T][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ #:#:#:# cciss!c0d0 104:0  [active][ready]

# multipath -F

# multipath -ll
#

# mount -t ext3 /dev/cciss/c0d0p1 /home
# cat /proc/mounts | grep home
/dev/cciss/c0d0p1 /home ext3 rw,data=ordered 0 0
TripSixes
fonte
5
Excelente exemplo de uma boa pergunta da primeira vez.
TheCleaner
2
Boa pergunta! É realmente um tiro no escuro, mas você já pensou em tentar mount -o remount /home? Além disso, eu verificaria se / home está realmente vazio quando o sistema de arquivos não estiver montado (isso não deve ser um problema, mas quem sabe?) E procuraria por mensagens aplicáveis ​​nos logs do sistema, inclusive dmesg.
um CVn
2
Você faz um lsof do disco. Você tentou fazer um lsof / fusor de / home também, caso algo esteja em execução que afete o ponto de montagem?
Jenny D diz Restabelecer Monica
1
A propósito, você por acaso está exportando esse diretório, por exemplo, via nfs? Se o servidor nfs for iniciado antes da montagem do diretório, ele poderá bloquear sua montagem.
Jenny D diz Reinstate Monica
1
Qual é a saída de lsof -n | grep /home? O AFAIK lsof / home procura um processo com / home aberto, mas não informa o uso de subdiretórios.
Zoredache

Respostas:

16

Provavelmente está em uso pelo mapeador de dispositivos.

Verifique sua tabela de mapeador de dispositivos usando dmsetup table. Se estiver lá, limpe o mapeamento com dmsetup remove <name>.

Caso contrário, procure erros dmesgtambém.


# dmsetup table
mpath0: 0 3516173232 multipath 1 queue_if_no_path 0 1 1 round-robin 0 1 1 104:0 1000 
mpath0p1: 0 3516162552 linear 253:0 63

Ahah! o multipath reivindicou o disco. Você pode ver executando multipath -ll.

Execute: multipath -Fpara liberar todos os mapas não utilizados, não multipath -lldeverá produzir nada.

Ou, basta usar em /dev/mapper/mpath0p1vez de /dev/cciss/c0d0p1.

MikeyB
fonte
Não tenho certeza do que esta saída está me dizendo. Isso mostra a saída que você estava esperando? [ Meu retorno de carro não parece trabalho nesta caixa de comentário .. ]# dmsetup table mpath0: 0 3516173232 multipath 1 queue_if_no_path 0 1 1 round-robin 0 1 1 104:0 1000 mpath0p1: 0 3516162552 linear 253:0 63
TripSixes
1

Em relação ao processo de solução de problemas, ao tentar lsof ou fusor, não verifique apenas a partição relevante - verifique diretamente o disco. Isso rapidamente o direcionaria para a solução correta:


Ruim:

fuser /dev/cciss/c0d0p1

Boa:

fuser /dev/cciss/c0d0

Ruim:

lsof /dev/c0d0p1

Boa:

lsof /dev/ | grep c0d0
zaTricky
fonte
1

Acabei de encontrar isso depois de clonar um SAN LUN existente em um novo servidor. Minha solução foi:

  • Entre no modo de manutenção
  • mount -o remount,rw /dev/sda1 (onde sda1 é o que você está tendo problemas)
  • Excluir / mover /etc/blkid/blkid.tab

O servidor inicializou posteriormente.

theillien
fonte
-2

Falando de minhas próprias experiências. Verifique também o seu fstab, para garantir que você está tentando montar o dispositivo como seu volume lógico e não o alias que você forneceu ou está usando off / etc / multipath / bindings.

Rato
fonte