Como posso armazenar / var em uma partição separada?

13

Eu gostaria de armazenar /varem uma partição separada de /. Qual é a maneira correta de configurar isso?

ændrük
fonte

Respostas:

17

Primeiro prepare uma nova partição (por exemplo, com partede mkfs).

Digamos que a partição seja / dev / sda5

Monte a nova partição:

mkdir /var2
mount /dev/sda5 /var2

Sincronize seu var atual:

rsync -a /var/ /var2

Adicione a entrada ao / etc / fstab

/dev/sda5    /var    ext4    defaults      2 2

Reinicie.

Se você precisar retornar seu antigo / var, apenas comente a entrada no fstab.

Aleksandr Levchuk
fonte
1
Eu adicionaria algumas informações para recuperar o espaço no antigo /var: inicie em um livecd, monte a partição no sistema instalado /e rm -rf /var/*.
enzotib
1
Bom ponto. Ou você pode montar /em outro local no sistema atual enquanto estiver em execução (mas após a reinicialização). Então você pode começar na idade /vare excluí-lo se você gosta
Aleksandr Levchuk
1
Eu costumava me perguntar sobre isso também. O primeiro 1 é algo realmente arcaico e sem efeitos, o segundo controla a ordem dos fsck quando é hora de verificar seu ext durante a inicialização. Eu não presto mais atenção neles. Basta colocar 1 1 porque a sintaxe exige.
Aleksandr Levchuk 04/04
2
Você deve colocar 2 2 para permitir que coisas como / obtenha o fsck varram antes / var quando você reiniciar pela 30ª vez. Caso contrário, se / var falhar e solicitar que você corrija as coisas manualmente em um único shell de usuário - você não terá nenhum sistema de arquivos. Coisas divertidas.
Aleksandr Levchuk
2
A recomendação não é usar UUIDs no fstab? Eu tenho o apropriado usando blkid -o list -s UUID, mas eu acho que você precisa para ser executado com sudo
steevc
2

Configurando uma nova partição / var em um servidor virtual

Quando assumi um novo servidor virtual que havia sido provisionado pela empresa de hospedagem do meu empregador, não havia espaço livre suficiente no sistema de arquivos raiz. Felizmente, eles usaram o Logical Volume Manager (LVM) para subdividir o disco virtual e havia espaço livre suficiente disponível para criar novos volumes. Criei volumes lógicos extras para vare homeque eram diretórios regulares no sistema de arquivos raiz. Como o provedor do servidor virtual não forneceu uma interface semelhante ao KVM pela qual eu poderia acessar o servidor no modo de usuário único, usei um método muito semelhante ao descrito por Aleksander (esta resposta inclui detalhes adicionais para recuperar espaço em disco no além dos comandos específicos do LVM).

Crie um novo sistema de arquivos / var com o LVM

Crie um volume lógico para o novo varsistema de arquivos, monte-o (usando um diretório temporário) e copie os arquivos do atual /varpara o novo sistema de arquivos:

# Create a new 60GB logical volume in the `VolGroup00` group called `var`.
sudo lvcreate -L 60GB -n var VolGroup00
# Create an ext4 filesystem on this new `var` volume.
sudo mkfs.ext4 /dev/VolGroup00/var
# Mount this filesystem at a temporary mount-point.
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new

Como os processos em execução terão arquivos /varmantidos abertos e em uso, a árvore de diretórios não pode simplesmente ser movida para o novo sistema de arquivos. -rCopie recursivamente ( ) arquivos da /varpartição atual para o novo sistema de arquivos, preservando atributos de arquivo e atributos estendidos ( -a, --archiveopção). Um usuário cauteloso pode primeiro criar um instantâneo LVM do volume atual antes de copiar, mas isso é um excesso de detalhes fora do tópico para esta pergunta.

sudo cp -ra /var/ /var.new/

Como alternativa, os arquivos podem ser copiados rsync, com a -a, --archiveopção de preservar carimbos de data e hora, propriedade, modos etc. e sua -X, --xattrsopção de preservar os atributos estendidos, como os rótulos de segurança usados ​​pelo AppArmor e SELinux:

sudo rsync -raX /var/ /var.new/

Atualize a tabela do sistema de arquivos

Configure o novo sistema de arquivos a ser usado como um novo ponto de montagem /var, adicionando a seguinte linha a /etc/fstab. Observe que 0é usado como o número da senha (último campo) para que o sistema de arquivos não seja verificado automaticamente ( fsck) após um certo número de reinicializações.

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

Como não é possível mudar para o modo de usuário único, reinicie o computador para usar este novo volume como /var.

Remova o ponto de montagem temporário

Após a reinicialização da máquina, o novo sistema de arquivos será montado /varpara que o ponto de montagem temporário possa ser removido com segurança:

sudo rmdir /var.new

Recuperar espaço em disco do sistema de arquivos raiz

Os /vararquivos antigos ainda ocupam espaço na partição raiz, mas não são facilmente acessíveis enquanto outro sistema de arquivos é montado /var(eles são "mascarados" pelo novo sistema de arquivos usando o /vardiretório como ponto de montagem). Use um ponto de montagem temporário para montar o sistema de arquivos raiz para que o conteúdo do /vardiretório original esteja disponível por um caminho alternativo.

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
Anthony Geoghegan
fonte
Boa explicação das opções envolvidas. No entanto, você usa lvcreatee mkfs.ext4sem explicar o que são ou por que são usados. Talvez você possa simplesmente dizer que é para fazer a nova partição, pois ela não é o tópico principal da resposta.
PhoneixS
Obrigado pelo feedback @PhoneixS Editei a resposta para torná-la mais clara e fornecer informações contextuais adicionais.
Anthony Geoghegan