Como mover / var para outra partição existente?

16

Eu tenho uma partição / que contém / var e é muito pequena. Eu tenho outra partição existente com espaço suficiente.

Aqui está o meu df:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

Como posso mover a pasta / var de sda1 para sda2?

Jérémie
fonte

Respostas:

19

Entre no modo de usuário único e verifique se qualquer processo de gravação /varestá parado. (Verifique com lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# você pode remover /var.oldquando terminar de recuperar o espaço
  • mkdir -p /var
  • mount -o bind /home/var /var
  • atualize seu /etc/fstabpara tornar a montagem de ligação permanente.

/etc/fstab

 /home/var /var        none    bind
Zoredache
fonte
Thks! Como posso entrar no modo de usuário único? A pasta 'var' permanecerá na / home?
Jérémie
Sim, sempre haveria um /home/vardiretório se você resolver o problema dessa maneira. Uma maneira de entrar no modo de usuário único reiniciando e escolhendo o modo de usuário único no menu Inicialização.
Zoredache
Não tenho muita certeza se isso funcionará bem o tempo todo. Se você estiver usando uma versão mais recente (wheezy), poderá estar OK, pois possui um sistema de arquivos / run. OTOH: no início do processo de inicialização, os arquivos podem ser abertos no / var antes de serem montados no bind.
Cstamas 19/09/12
11
@cstamas, Ter / var em um sistema de arquivos separado é suportado , e sempre foi. Ter / var separado é sugerido como algo bom na FHS e nos documentos oficiais do Debian.
Zoredache
Ok, acho que você está certo. Era estranho para mim fazer isso com montagens de fixação.
Cstamas 19/09/12
5

Você também pode usar:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

Isso parece muito mais fácil do que brincar com o fstab e montar coisas.

mdpc
fonte
11
Não sei por que alguém teria voto negativo sobre isso. Isso funcionaria perfeitamente bem. Um link sym deve funcionar bem. Eu apenas uso montagens de ligação para outras coisas, então costumo pensar nisso primeiro.
Zoredache
11
Para adicionar isso, pode não ser tão seguro, mas funciona de fato. Recentemente, fiz isso em uma máquina antes de colocá-la em produção. Eu deveria ter cuidado se for uma máquina em uso ou com muitos processos em execução. No meu caso, era um servidor novo para executar apenas o tomcat.
AJ Brown
11
O link simbólico / var funciona, mas, em vez de fazê-lo, prefiro inserir uma entrada no / etc / fstab, para me lembrar de qual partição / volume eu coloco o quê e por quê (você pode adicionar comentários). Dessa forma, também é mais compreensível para mim o que preciso alterar na configuração se precisar alterar algo no meu hardware.
gerlos
11
Não vejo como isso funcionaria. Quero que funcione, mas coisas básicas como init usam / var, não é?
Sue Spence
1

Mover /varsem mudar para o modo de usuário único

Quando assumi um novo servidor virtual que havia sido provisionado para mim pela empresa de hospedagem do meu empregador, criei volumes lógicos extras para vare homeque eram diretórios regulares na partição 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, as respostas acima não eram aplicáveis ​​à minha configuração. Espero que esta resposta seja útil para outras pessoas em uma situação semelhante (mantive os detalhes do LVM, mas eles podem ser ignorados, pois não é particularmente relevante se o novo sistema de arquivos é criado em um volume lógico ou em uma partição de disco).

Crie e use um novo /varsistema de arquivos com LVM

Crie o sistema de arquivos para o novo varvolume, monte-o (usando um diretório temporário) e copie os arquivos do atual /varpara o novo sistema de arquivos. Ao copiar arquivos com rsync, use sua -a, --archiveopção para preservar carimbos de data e hora, propriedade, modos etc. e sua -X, --xattrsopção para preservar os atributos estendidos, como os rótulos de segurança usados ​​pelo AppArmor e SELinux.

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
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 (não tenho acesso para efetuar login no servidor no modo de usuário único).

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

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

Recuperar espaço em disco do sistema de arquivos raiz

Após a reinicialização da máquina, execute as seguintes etapas para limpar o diretório temporário e remover os /vararquivos antigos do sistema de arquivos raiz:

  1. Remova o ponto de montagem temporário:

    sudo rmdir /var.new
    
  2. Crie um novo ponto de montagem para criar um caminho alternativo para os arquivos no /vardiretório antigo no sistema de arquivos raiz (atualmente é "mascarado" pelo novo /varsistema de arquivos montado no diretório):

    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 G - justiça para Monica
fonte