Redimensiona o diretório inicial do XFS no LVM

4

Eu estou tentando desesperadamente aumentar o espaço de troca disponível para o meu servidor de 4GB para 16GB, no entanto, atualmente XFS + algo está tornando isso impossível.

Eu tenho um único SSD que hospeda o sistema operacional (CentOS 7), com uma partição de inicialização e uma partição LVM2, os padrões da instalação. Dentro da partição LVM2 existem três partições virtuais, root , home e swap , consumindo a partição LVM2 inteira. Novamente pelos padrões da instalação, eles estão no tipo de sistema de arquivos XFS.

Meu simples desejo era reduzir a partição home subutilizada, abrindo espaço para a partição swap . Tendo descoberto agora que a redução das partições XFS é impossível, estou na tentativa de fazer backup da unidade inicial excluindo a partição e reintegrando-a em tamanho menor com uma recuperação do backup.

O problema agora é que não consigo liberar o diretório home ou a partição. Tendo abandonado a GUI, desconectado e voltado como root no terminal, inicialmente não consegui desmontar o diretório home. Algo estava em uso, embora lsof e fuser não mostrassem nada em aberto.

eu emiti um

umount -f home

e isso parece ter funcionado na desmontagem de casa. Agora posso montar e desmontar livremente a casa sem o texto -f , o que parece suspeito. No entanto agora tentando

lvremove /dev/centos/home

a mensagem retornada é

Logical volume centos/home in use.

Eu observei muitas perguntas e respostas aqui e não é nenhuma das seguintes opções:

  • serviço NFS
  • Arquivos abertos
  • Abrir arquivos usando a designação maior e menor
  • o sinalizador Ativo (tentei lvchange -an -v /dev/centos/home , ele também afirmou que o volume estava em uso)

Nada que eu encontrar parece dar uma dica sobre o que está usando home . Se eu conseguisse uma solução que não dependesse da reinicialização da máquina, isso seria ideal.

    
por J Collins 09.10.2015 / 21:29

3 respostas

1

umount -f infelizmente apenas remove as coisas do VFS sem , na verdade, desmontando. Ele simplesmente não aparece mais em /proc/mounts ou em qualquer lugar, mas ainda está montado. Não há nenhuma maneira óbvia de verificar o que ainda está usando essa montagem (ou se ela ainda está lá, pois lsof e outras coisas também falharam nesse ponto, se você usar o nome de caminho que não existe mais), sem verificar o sistema de arquivos bandeira suja e esperando que isso seja apagado uma vez que esteja realmente desmontado.

Você pode verificar algumas coisas manualmente, como dispositivos ou arquivos em uso por losetup , cat /proc/mdstat , dmsetup table , ... e verificar /proc/*/{maps,cwd,exe,fd/*} para referências ao dispositivo em questão (o próprio caminho de montagem não existe mais). Mas isso provavelmente não cobre tudo também.

Se você encontrar tal referência (como um descritor de arquivo aberto de processo em execução), verá que pode acessar esse arquivo e modificá-lo da maneira que desejar, provando assim que o sistema de arquivos ainda está montado e totalmente operacional, embora invisível.

Um pouco de código que usei para encontrar uma presença de retaguarda tão lenta, observe que ela é codificada para um nome de dispositivo diferente.

isbusy() {
    grep -E '^/dev/mmcblk(0p3|1p1) ' /proc/mounts || \
    grep -E '^([^ ]+ ){3}b3:0[39] ' /proc/*/maps || \
    find /proc/[0-9]*/exe /proc/[0-9]*/cwd /proc/[0-9]*/fd -exec stat -tL {} + \
    | grep -E '^([^ ]+ ){6}b30[39]'
}

Está incompleto.

    
por 09.10.2015 / 21:46
1
  1. Se for possível, adicione mais RAM ao sistema. O swap não é uma solução, é uma correção provisória do intervalo de parada para impedir que o sistema caia devido à falta de memória. Se um sistema troca o tempo todo, então o que realmente precisa é de mais RAM.

Se o sistema não puder ter mais RAM instalada, substituí-lo por um que possa valer a pena considerar.

  1. Não é tão rápido quanto uma partição swap, porque ela precisa passar pela camada do sistema de arquivos (é improvável que você perceba a diferença), mas é possível criar um grande arquivo vazio, digamos / home, e informar ao sistema para usar isso como espaço de troca. por exemplo,

    • dd if=/dev/zero of=/home/swapfile bs=1M count=16384

    • mkswap /home/swapfile

    • edite o / etc / fstab e adicione / home / swapfile como mais swap

    • swapon -a

por 09.10.2015 / 23:42
0

Eu acho que você pode tentar lvresize para reduzir lv em vez de usar lvremove para remover lv. Desta forma, você pode evitar os problemas que o comando lvremove introduz. Depois de usar lvresize para reduzir lv, você pode usar o comando lvresize na troca para adicionar volume do centos VG .

    
por 07.12.2016 / 15:30