Atualmente estou preso a um esquema de particionamento restritivo que faz minhas partições ficarem cheias. Se parece com isso:
/dev/sda7 870G 315G 511G 39% /
/dev/sda6 2.0G 271M 1.6G 15% /tmp
/dev/sda3 15G 13G 1.5G 90% /usr
/dev/sda2 15G 8.6G 5.0G 64% /var
/dev/sda1 99M 36M 58M 39% /boot
tmpfs 7.9G 0 7.9G 0% /dev/shm
Quero mover os dados /usr
(e /var
provavelmente também) para a partição raiz. Eu realmente não me importo com as partições em si, portanto não é necessária uma mesclagem.
Qual seria a melhor abordagem para fazer isso? Atualmente meu plano é este:
cp -R /usr /newusr
umount /usr
mv /newusr /usr
Poderia ser realmente tão simples ou estou negligenciando alguma coisa?
Responder1
Sua abordagem está correta. Crie um diretório na partição raiz, copie seus dados lá, desmonte a usr
partição e mova seu novo diretório para usr
. Não se esqueça de editar o seu /etc/fstab
depois.
Responder2
Primeiro você deve sempre verificar se tem espaço livre suficiente. Desta vez, você tem.
Sobre a cópia:
Não tão simples. Existem arquivos especiais, cujos atributos especiais nem sempre são copiados corretamente. Em vez de cp -R
, use
cp -vfa /usr /newusr
Se você quiser ver o que está sendo feito atualmente, isso pode ser feito com o sinalizador "-v".
- Não se esqueça de editar
/etc/fstab
as alterações. - AVISO: Após um reparticionamento, o kernel nem sempre consegue reler sua nova tabela de partições e, portanto, é possível que ele utilize ainda mais a antiga! É muito perigoso! A versão do kernel sobre a tabela de partição atual pode ser encontrada em
/proc/partitions
, e a tabela de partição no disco pode ser lida com um arquivofdisk -l /dev/sda
. Se houver uma incompatibilidade sobre a partição que você deseja alterar atualmente, é melhor reiniciar.
Responder3
Para isso seria necessário fazê-lo em modo monousuário ou utilizando um LiveCD, é o que você encontrará na internet.
Além disso, é possível fazer isso em tempo de execução (um pouco arriscado, claro), mas acho que dessa forma só funcionará para /var e não para/usr, algumas bibliotecas de tempo de execução dependem desta pasta. Você pode experimentar uma máquina de teste anteriormente, se funcionar.
Em primeiro lugar vocêdeveverifique se algum processo/serviço está usando/gravando no diretório que você deseja mover.
lsof | grep -E '/usr|/var'
Geralmente /var ainda está em uso para arquivos pid e sock,/usrassim como qualquer lib precisará disso.
Portanto, pare/elimine serviços e processos que aparecem.
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cupsd 723 root 5u REG 8,1 0 8651393 /var/log/cups/error_log
cupsd 723 root 6u REG 8,1 0 8651908 /var/log/cups/page_log
cupsd 723 root 12u unix 0xffff88020d97d780 0t0 9958 /var/run/cups/cups.sock
Neste breve exemplo, o daemon cups está rodando e usando esses diretórios. Se pará-los, eles não aparecerão na saída lsof.
Depois disso, você precisa de uma cópia dos seus dados atuais, sugiro usar rsync em vez de cp (para preservar tudo, permissões, links simbólicos, etc.)
mkdir /mnt/var
mkdir /mnt/usr
Faça seu backup
rsync -avz /var/* /mnt/var
rsync -avz /usr/* /mnt/usr
Desmontar pastas
umount /var
umount /usr
Restaurar dados
rsync -avz /mnt/var/* /var
rsync -avz /mnt/usr/* /usr
Edite seu/etc/fstabarquivar e comentar/excluir as entradas onde/vare/usronde deveria ser montado.
Então você pode iniciar todos os serviços interrompidos ou reiniciar sua máquina. Se por/usrnão funciona, você não pode parar um daemon (talvez você não possa matá-lo porque depende do init pid) a única maneira será usando um LiveCD.
Embora você não tenha mencionado que tipo de máquina é (seu PC, máquina de escritório, servidor, etc.), dependerá disso para realizar o desempenho da maneira formal possível.