Problema de blocos reservados: tamanho da partição modificada com sucesso mas não reconhecida pelo sistema operacional

0

Eu corro um sistema dual-boot, e a distro Linux é o Ubuntu 14.04.

Eu usei o GParted para ampliar uma partição lógica, chamada /dev/sda6 , na qual o diretório /home é normalmente montado. De acordo com o relatório do GParted, a operação foi concluída com sucesso. A partição é 85 GiB grande, dos quais 83GiB usado e 2 GiB livre (d), como pretendido.

No entanto, isso acontece com duas esquisitices:

  1. Esse ganho não é reconhecido após o login. Ao verificar o uso do disco com df -h , o relatório informa que a partição /dev/sda6 , devidamente montada em /home , tem um tamanho de 85 GiB, dos quais 83 são usados e 0 acessível. O uso é reivindicado para ser 100%.

  2. Outra peculiaridade é que eu posso logar regularmente no meu perfil de usuário através da interface gráfica do usuário. Depois que as credenciais são reconhecidas, o sistema trava e não entra no ambiente de área de trabalho. Para obter as informações de df -h , preciso logar com minha identidade regular em qualquer terminal de texto ou com o status de convidado na interface gráfica do usuário. Como observação paralela, não parece que os dados tenham sido corrompidos.

Como posso corrigir essa situação? O objetivo é obter o aumento de tamanho da partição totalmente disponível para o sistema operacional. Obrigado por me ajudar.

    
por XavierStuvw 10.08.2016 / 19:18

2 respostas

2

Você provavelmente está usando um dos ext filesystems (o sistema de arquivos linux padrão, geralmente ext4 ). Na maioria das vezes, quando criado, ele será criado com um buffer específico chamado reserved blocks . Este espaço reservado deve ser apenas gravável pelos processos do sistema e raiz e, portanto, proteger o sistema operacional do preenchimento de disco pelos usuários.

O objetivo principal de df é mostrar a quantidade de espaço em disco disponível em um total geral. Embora também mostre o espaço usado (pelo usuário), ele não faz isso com esse espaço reservado.

Esse buffer é, por padrão, 5% de todo o disco. Você pode verificar se você tem esse buffer com sudo tune2fs -l /dev/sda6 | grep Reserved . Digitando sudo tune2fs -l /dev/sda6 | grep [bB]locks , também é possível ler o número de blocos reservados e o tamanho do bloco (em B), portanto, determinar o espaço da partição ocupada por essa construção. Isso explicaria o sistema vendo 85GiB, mas apenas 83 usados e 0 livres.

Se você realmente quiser, pode definir o buffer para um valor mais baixo com sudo tune2fs -m 2 /dev/sda6 (sendo 2 um valor de exemplo em porcentagem, que por padrão seria 5).

A melhor opção seria redimensionar de forma que espaço livre em disco esteja livre para ser seguro. 2GiB de 85GiB é apenas 2,35%, o que não é muito e, na maioria dos casos, seria muito rápido. Se você tem certeza de que seu uso de espaço permanecerá estável em 83GiB, então você pode usar tune2fs para reservar 0% de espaço por segurança, mas assim que seu disco for preenchido, (para 85GiB), você não poderá fazer login em tudo e a máquina provavelmente irá falhar e será mais difícil de consertar.

A margem de segurança de 5% é relativamente sã. Então, neste caso, eu colocaria a partição pelo menos 90GiB, mas provavelmente 100 ou mais, só para ter algum espaço de sobra para emergências. O espaço em disco é barato, seu tempo consertando os problemas decorrentes de um disco preenchido é provavelmente mais caro.

As respostas a esta questão dão algumas mais insights sobre o raciocínio.

    
por 10.08.2016 / 19:30
-1

Para melhor enquadrar a situação, alguma confusão lingüística deve ser eliminada. GParted , df e tune2fs usam palavras iguais ou semelhantes para noções ligeiramente diferentes sobre o espaço em disco.

Eu reescrevi meu entendimento em termos de pseudo-equações e sobrecarreguei esses operadores:

'=' means 'corresponds to'
'@' means 'according to'

Eu comecei usando df -h e deixei isso subestimado. Observe que tune2fs -l , sujeito à sintaxe apropriada, normalmente retorna as contagens de bloco, bem como o tamanho do bloco. Multiplicando um pelo outro, obtém-se o tamanho do espaço em disco. Certifique-se de que as medidas de espaço em disco sejam expressas na mesma base (2 ou 10).

Primeiramente, tendo em conta o ponto de vista do GParted

size @ gparted = size @ df = block count * block size @ tune2fs
unused @ gparted = free blocks * block size @ tune2fs 
used @ gparted = used @ df = (block count - free blocks) * block size @ tune2fs

É bastante intuitivo até agora.

Em seguida, tendo o ponto de vista de df

size @ df = size @ gparted = block count @ tune2fs 
used @ df = used @ gparted = (block count - free blocks) *block size @ tune2fs
available @ df = max[(free blocks - reserved block count) * block size @ tune2fs, 0]

Portanto, disponível @ df significa algo diferente de livre @ tune2fs e não usado @ gparted .

Em resumo, o espaço disponível em df mede o excesso do espaço total, declarado como livre em tune2fs ou não usado em gparted , acima da cota reservada por tune2fs. Quando esse excesso é zero, indica uma falta de espaço em disco reservada para um bom funcionamento.

    
por 12.08.2016 / 13:24