Se você colocar a partição /
no final de sda
, você terá um processo de atualização simples:
-
Encerre a VM e redimensione a unidade de disco bruta na interface de gerenciamento da VM.
-
Inicialize no modo de usuário único, redimensione a última partição para estender o novo espaço.
Fazer isso em uma partição entre dois outros provavelmente é mais um problema do que vale a pena.
Portanto, recomendamos que você mova parte do conteúdo da sua partição/
para um novo disco:
-
Desligue a VM e adicione outro disco virtual.
Dimensione-o para manter o conteúdo existente de
/
que você deseja mover para o novo disco, além do espaço que desejar. Digamos que você esteja usando 14 GiB dos seus 16 GiB/
e deseja mover apenas/home
, que está usando 10 GiB. Se você quiser dobrar seu espaço atual, você faria a nova unidade de 20 GiB.Você não deseja mover nenhum diretório do SO principal:
/bin
,/boot
,/etc
,/root
, a maioria de/usr
... É seguro mover/usr/share
e/usr/local
para outros discos. -
Inicialize novamente, de preferência no modo de usuário único. (Isso tornará as coisas posteriores mais fáceis se você não tiver muitas coisas em segundo plano em execução.)
Em seguida, descubra qual
/dev
do seu novo disco tem. Existem muitas maneiras para fazer isso. É mais provável que seja/dev/sdb
, mas pode ser que/dev/sdc
seja colocado depois de uma unidade óptica previamente mapeada, por exemplo.Assumiremos
/dev/sdb
para fins de explicação aqui. -
Use
parted
para particionar este novo disco virtual:# parted /dev/sdb (parted) mklabel gpt (parted) mkpart ext2 1 -1 (parted) quit
Isso assume todo o disco virtual. Isso permitirá que você use o processo de redimensionamento muito mais simples acima se a capacidade do disco ficar esgotada novamente no futuro.
Se você planeja mover vários diretórios não relacionados (por exemplo,
/home
,/var
e/usr/local
), é melhor criar um disco virtual separado para cada um, em vez de particionar um disco grande. O particionamento é um tipo de invasão que toleramos no mundo dos discos reais. Quando você está lidando com VMs, fica livre dos custos de vários discos rígidos independentes. -
Crie e monte o (s) novo (s) sistema (s) de arquivos em locais temporários. Eu normalmente os chamo de coisas como
/mnt/newhome
:# mkfs.ext4 /dev/sdb1 # mkdir -m 400 /mnt/newhome # mount /dev/sdb1 /mnt/newhome
-
Copie o conteúdo atual da árvore que você deseja transplantar, certificando-se de copiar as permissões. Existem várias maneiras de fazer isso:
# cd /home # find . -print | cpio -pd /mnt/newhome OR # cp -aR * /mnt/newhome OR # rsync -a * /mnt/newhome
-
Verifique se
/mnt/newhome
tem conteúdo plausível. Odf -h
mostra aproximadamente o mesmo valor quedu -h /home
, por exemplo? -
Inicialize no modo de usuário único, se você ainda não estiver.
-
Mova o sistema de arquivos antigo para fora do caminho e, em seguida, coloque o novo sobre ele:
# cd / # mv home oldhome # mkdir -m 400 home # umount /mnt/newhome # mount /dev/sdb1 /home # chmod 755 home # chown root.root home
Os dois últimos comandos são apenas exemplos. Dê ao novo ponto de montagem o mesmo proprietário, grupo e permissões que o antigo. (Não conte com o comando copy para obter as permissões neste diretório de nível superior).
-
Diga
exit
no prompt do modo de usuário único para continuar a inicialização no modo multiusuário. (Ou,init 5
, se o nível de execução normal for 5, por exemplo). Verifique se tudo parece estar funcionando com o novo sistema de arquivos.(Não reinicialize para fazer este teste! O novo sistema de arquivos não será montado automaticamente ainda.)
-
Quando estiver satisfeito por ter movido essa partição com sucesso, ajuste
/etc/fstab
para apontar para a nova partição.(Isso está fora do escopo desta resposta. Os detalhes exatos variam mesmo entre os Linuxes, e variam ainda mais amplamente entre os * ix em geral.)
-
Reinicie normalmente. Verifique novamente. Tudo isso ainda funciona? Certifique-se de ter o novo sistema de arquivos montado, não o antigo.
-
Quando tiver certeza de que tudo foi movido e montado corretamente, liberte o espaço ocupado pela cópia antiga:
rm -rf /oldhome
.
Se você tiver vários sistemas de arquivos para mover, GOTO 2
. :) (Ou passo 1, se você não adicionou todos os novos discos virtuais de uma vez.)
Se você usa um sistema VM que sabe como configurar um disco virtual esparso (por exemplo, VMware), não precisa se preocupar com espaço desperdiçado. Basta seguir seu processo normal de "redução" para recuperar o espaço de folga atual.
Existem outros refinamentos. Por exemplo, você pode querer dar algo como -L /home
ao comando mkfs.ext4
se o seu sistema operacional usar rótulos de disco em /etc/fstab
em vez de nomes de partição ou UUIDs.