Como obter espaço livre na unidade montada Redhat 7

14

Em nossa infraestrutura de VM, temos hosts em cluster que vão para uma SAN.

O que estou tentando descobrir é o quanto resta de "espaço em branco" ao excluir arquivos em nossos servidores Redhat. No nosso servidor Windows, usamos o sdelete e isso resolve o problema. No entanto, no Linux, estou com dificuldades para encontrar uma solução.

Estou definindo "espaço em branco" como os setores? sobras que não são zeradas, as unidades SSD precisam primeiro zerar antes que possam gravar nela.

Uma coisa que destacarei é que, quando se trata de Linux, eu sei o suficiente para ser perigoso, mas não sou um super usuário.

Examinando as unidades e partições:

[root@rhserver1-DATA10 /]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0005d52e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   104857599    51915776   8e  Linux LVM

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/rhel_rhserver1--data10-root: 51.0 GB, 50964987904 bytes, 99540992 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/rhel_rhserver1--data10-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Agora, olhando para o uso do disco:

[root@rhserver1-DATA10 /]# df -h
Filesystem                              Size  Used Avail Use% Mounted on
/dev/mapper/rhel_rhserver1--data10-root   48G  6.1G   42G  13% /
devtmpfs                                906M     0  906M   0% /dev
tmpfs                                   921M  340K  920M   1% /dev/shm
tmpfs                                   921M   90M  831M  10% /run
tmpfs                                   921M     0  921M   0% /sys/fs/cgroup
/dev/sdb                                 50G  3.5G   44G   8% /ACMS01Backup
/dev/sda1                               497M  210M  288M  43% /boot
tmpfs                                   185M   20K  185M   1% /run/user/1000
tmpfs                                   185M     0  185M   0% /run/user/1002

Depois de muitas horas pesquisando no Google, achei que estava me mostrando quanto "espaço em branco" está disponível para ser resolvido.

[root@rhserver1-DATA10 /]#  parted /dev/sda unit MB print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
1.02MB
[root@rhserver1-DATA10 /]#  parted /dev/sda unit '%' print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
0.00%

Eu acho que uma saída razoável para uma partição 497M.

Então agora eu quero fazer a mesma coisa apenas na minha unidade montada (acho que está montada).

 parted /dev/mapper/rhel_rhserver1--data10-root unit MB print free | grep 'Free Space' | tail -n1 | awk '{print $3}'
 parted /dev/mapper/rhel_rhserver1--data10-root unit '%' print free | grep 'Free Space' | tail -n1 | awk '{print $3}'

O que não me dá nada.

Meu / etc / fstab /:

[root@rhserver1-DATA10 /]# cat /etc/fstab
/dev/mapper/rhel_rhserver1--data10-root /                       xfs     defaults        0 0
UUID=2f97a17c-a6d5-4904-ad5c-7c16b4510201 /boot                   xfs     defaults        0 0
/dev/mapper/rhel_rhserver1--data10-swap swap                    swap    defaults        0 0
/dev/disk/by-uuid/be4c45cf-5d72-4b97-b647-2e585947041f /ACMS01Backup auto nosuid,nodev,nofail,x-gvfs-show 0 0

Então, minha pergunta é: estou no caminho certo?

Expliquei bem o que estou procurando?

Existe um termo para "espaço em branco" que possa ajudar meu Google?

Eu descobri que posso executar "fstrim -v /" na raiz, mas eu realmente gostaria de saber quanto espaço existe.

Também estou tentando descobrir que o sistema de produção é intensivo em E / S, deve ser executado fora do horário de pico?

Alguma chance de perda de dados executando "fstrim -v /"?

Anthony Fornito
fonte
Você também pode definir a discardopção de montagem nos sistemas de arquivos.
Michael Hampton
Talvez usando o UUID da unidade montada em vez de / dev / mapper? Tente executar blkide veja se você pode obter o UUID e execute novamente o partedcomando.
Wilbo 18/10/16

Respostas:

12

Ser capaz de executar o fstrim nas partições / seria a melhor solução; no entanto, com a maneira como o ESXi está configurado, não seria possível.

Você precisa habilitar as devoluções na VM e no dispositivo de armazenamento.

Tentando reduzir para o tamanho de uma partição ou volume lógico com o sistema de arquivos xfs não pode ser feito, este é um bug conhecido no fedora. Se você estiver interessado nessa funcionalidade, entre em contato com o suporte e referência Red Hat bugzilla 1062667 da Red Hat e forneça seu caso de uso para a necessidade de redução / redução de XFS.

Como uma solução possível em alguns ambientes, os volumes LVM provisionados thin podem ser considerados como uma camada adicional abaixo do sistema de arquivos XFS.

Se as VMs tiverem VMDK provisionado com muita espessura, o que significa que não há nada a recuperar quando você estiver tentando aparar (tecnicamente falando; SCSI UNMAP) seus volumes.

Se o armazenamento de back-end estiver executando o provisionamento dinâmico, você também precisará usar arquivos VMDK preguiçosos e zerados para reduzir o armazenamento e possibilitar ao back-end armazenar em cache / deduplicar os dados quentes.

Duas opções possíveis:

  1. Quando o armazenamento é fornecido por um servidor remoto através de uma SAN, você só pode descartar blocos se o armazenamento for thin provisioning.

    1. VMotion todas as VMs para um armazenamento de dados diferente e use as ferramentas VMWare embutidas
    2. Conecte-se ao host ESXi com SSH
    3. Navegue para a pasta da máquina virtual
    4. Verifique o uso do disco com du
    5. Execute vmkfstools -K [disco]
    6. Verifique o uso do disco com du
  2. dd se = / dev / zero de = BIGFILE bs = 1024000 rm -f BIGFILE

Pelo que sei, isso faz o mesmo que sdelete, no entanto, pode causar um pico na E / S do disco e demorar um pouco para ser executado.

Algo para tentar da noite para o dia

Qualquer opção não é a melhor, mas reformatar todas as VMs para obter o ext3 ou ext4 não parece viável.

O que você pode fazer é configurar uma regra de afinidade para todas as VMs do Linux e usar a opção 1 acima.

Brian Curless
fonte
12

Tento fazer a mesma coisa duas semanas atrás e não sei como. Compartilho a declaração oficial no portal de suporte da Redhat.

Atualmente, não é possível reduzir o tamanho de uma partição ou volume lógico com o sistema de arquivos xfs. Se você estiver interessado nessa funcionalidade, entre em contato com o suporte e referência Red Hat bugzilla 1062667 da Red Hat e forneça seu caso de uso para a necessidade de redução / redução de XFS. Como uma possível solução alternativa em alguns ambientes, os volumes LVM thin provisioned podem ser considerados como uma camada adicional abaixo do sistema de arquivos XFS.

Boa sorte!!

BennyBoy
fonte
Obrigado pelo comentário, no entanto, não estou tentando reduzir o tamanho do espaço disponível para a VM. As unidades SSD têm uma (falha): quando os dados são excluídos, o setor deve ser zerado primeiro e depois pode ser gravado em vs se o setor nunca tiver sido gravado nele já está zerado. Eu estou tentando descobrir muito parecido com o Windows com sdelete eu posso usar "fstrim -v /". Antes de executar isso, estou tentando descobrir se consigo ver quantos setores serão afetados e qual o impacto que isso teria no sistema.
Anthony Fornito 18/10/16