Como mover para uma unidade ou partição diferente?

0

Eu preciso chegar a uma partição maior do que a que importo para importar um projeto que não cabe no lugar onde estou atualmente. Também estou executando o Linux em uma VM no Windows.

jack@ubuntu:~$ sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
NAME   FSTYPE   SIZE MOUNTPOINT LABEL
sda              20G
ââsda1 ext4    15.7G /
ââsda2            1K
ââsda5 swap     4.3G [SWAP]
sdc              40G
ââsdc1 ext4      40G            work
sdb              20G
ââsdb1 ext4      20G /mnt/disk
jack@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000750e0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    32956415    16477184   83  Linux
/dev/sda2        32958462    41940991     4491265    5  Extended
/dev/sda5        32958464    41940991     4491264   82  Linux swap / Solaris
    
por jdl 26.08.2013 / 19:34

1 resposta

3

Se você colocar a partição / no final de sda , você terá um processo de atualização simples:

  1. Encerre a VM e redimensione a unidade de disco bruta na interface de gerenciamento da VM.

  2. Inicialize no modo de usuário único, redimensione a última partição para estender o novo espaço.

  3. Redimensione o sistema de arquivos .

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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
    
  5. 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
    
  6. Verifique se /mnt/newhome tem conteúdo plausível. O df -h mostra aproximadamente o mesmo valor que du -h /home , por exemplo?

  7. Inicialize no modo de usuário único, se você ainda não estiver.

  8. 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).

  9. 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.)

  10. 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.)

  11. Reinicie normalmente. Verifique novamente. Tudo isso ainda funciona? Certifique-se de ter o novo sistema de arquivos montado, não o antigo.

  12. 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.

    
por 26.08.2013 / 20:08

Tags