Silly Bytes has moved - Silly Bytes se trasladó

www.sillybytes.net

17 dic. 2015

Migrating GNU/Linux installation to a SSD / Migrando instalación GNU/Linux a un SSD

Introduction

 

I recently bought a 120GB SSD (yes, a small one) to replace the 500GB HDD in my laptop so i can benefit from the extra speed and just keep my bulk data in the old HDD.


Once you're new SSD arrives you are probably very exited, you want that speed up for your system. BUT! you don't want to reinstall your whole system on it, you want to preserve it right?. Ok let's do so.







Note: I use Gentoo, but this is perfectly applicable to every distribution.

My current HDD partitioning scheme is like this:

    Device     Boot     Start       End   Sectors   Size Id Type
    /dev/sda1            2048   2099199   2097152     1G 83 Swap
    /dev/sda2  *      2099200 148899839 146800640    70G 83 Linux
    /dev/sda3       148899840 358615039 209715200   100G 83 Linux
    /dev/sda4       358615040 976773167 618158128 294.8G 83 Linux
  • /dev/sda1 is a 1GB swap
  • /dev/sda2 is the GNU/Linux system installation (including boot)
  • /dev/sda3 is currently unused
  • /dev/sda4 is my /home partition with all my data
The partitioning scheme i want for the new SDD is like this:
    Device     Boot   Size Id Type
    /dev/sda1           1G 83 Swap
    /dev/sda2  *       70G 83 Linux
    /dev/sda3          50G 83 Linux
  • /dev/sda1 is a 1GB swap
  • /dev/sda2 is the GNU/Linux system installation
  • /dev/sda3 is my /home partition (with just the more important data)


This way i can keep my system as it was before, and the new smaller /home will contain the data of daily use. Videos, movies, etc could be used connecting the old HDD with a SATA-USB converter.


Backup


DO NOT remove nor modify the old HDD partition structure before the system is ported AND tested in the SSD, you don't want to loose your system or data, do you?

While playing with your storage devices is a good idea to keep a completely separate and isolated backup so your data will survive if you mess something up.

I made a backup for my /home and / partitions using a 1TB external (USB) hard drive like so:

    /mnt/
    |
    +-- alx/        # /home/alx
    |
    +-- root/       # /


    # mount /dev/sdb1 /mnt
    # rsync -av --progress /home/axl /mnt/alx/
    # rsync -av --progress / /mnt/gentoo/ --exclude /mnt 
--exclude /home --exclude /proc --exclude /tmp 
--exclude /sys --exclude /dev


The -a option will preserve all the meta data your system needs, use it!
Now put this hard drive safe in a drawer and don't touch it until you are completely sure you haven't loose any data in the process.


Partitioning


You can connect the SSD to another SATA port if you're using a desktop, but i used a SATA-USB converter.

Then using cfdisk the resulting partitioning is:

    Device     Boot  Size Id Type
    /dev/sdb1            1G 82 Linux swap / Solaris
    /dev/sdb2  *        70G 83 Linux
    /dev/sdb3         40.8G 83 Linux


Note that the last partition is actually 40GB and not 50GB, the reason is that the SSD turns out to have ~112GB usable storage.

Now give the partitions the appropriate file systems:

    # mkswap /dev/sdb1
    # mkfs.ext4 /dev/sdb2
    # mkfs.ext4 /dev/sdb3


Migration

 

 

Lets mount the future / and migrate the current system to it:
    # moutn /dev/sdb2 /mnt
    # rsync -av --progress / /mnt/ --exclude /mnt 
--exclude /home --exclude /proc --exclude /tmp 
--exclude /sys --exclude /dev


Now you should mount the new /home and copy all the information you need in the new home selectively, but remember to copy all the dotfiles:
    # umount /mnt
    # mount /dev/sdb3 /mnt
    # cp -av /home/alx/.* /mnt
    # cp -av /home/alx/<files you need> /mnt


Then install your bootloader in the SSD, assuming GRUB2:

    # umount /mnt
    # mount /dev/sdb2 /mnt
    # cd /mnt
    # mkdir tmp dev proc sys home mnt
    # sudo mount --bind /dev /mnt/dev
    # sudo mount --bind /proc /mnt/proc
    # sudo mount --bind /sys /mnt/sys
    # sudo chroot /mnt
    # grub2-mkconfig -o /boot/grub/grub.cfg
    # grub2-install /dev/sdb
    # exit


Shutdown your system and replace the HDD with the SSD.

Oh boy, this thing is FAST!






 

Introducción

Recientemente compré un SSD de 120GB (si, uno pequeño) para reemplazar el HDD de 500GB de mi laptop para beneficiarme de la velocidad y mantener la mayor parte de mis datos en el viejo HDD.

Una vez que el nuevo SSD llega probablemente estas muy emocionado, quieres toda esa velocidad para tu sistema. PERO! no quiere reinstalar todo tu sistema en el, prefieres preservarlo verdad?. Bueno, hagamos eso entonces.


Nota: Yo uso Gentoo, pero esto aplica perfectamente a cualquier distribución.

El esquema de particionado de mi HDD actual es:

    Device     Boot     Start       End   Sectors   Size Id Type
    /dev/sda1            2048   2099199   2097152     1G 83 Swap
    /dev/sda2  *      2099200 148899839 146800640    70G 83 Linux
    /dev/sda3       148899840 358615039 209715200   100G 83 Linux
    /dev/sda4       358615040 976773167 618158128 294.8G 83 Linux

  • /dev/sda1 es una swap de 1GB
  • /dev/sda2 es la instalación GNU/Linux (incluido boot)
  • /dev/sda3 está actualmente sin utilizar
  • /dev/sda4 es mi partición /home con toda mi información


El esquema de particionado que quiero para el nuevo SSD es:

    Device     Boot   Size Id Type
    /dev/sda1           1G 83 Swap
    /dev/sda2  *       70G 83 Linux
    /dev/sda3          50G 83 Linux

  • /dev/sda1 es una swap de 1GB
  • /dev/sda2 es la instalación GNU/Linux
  • /dev/sda3 es mi partición /home (con la información más importante)


De esta forma puedo mantener mi sistema como estaba, y la nueva partición /home contendrá la información de uso diario. Vídeos, películas, etc se podrán usar conectado el viejo HDD con un conversor SATA-USB.


Respaldo

NO remuevas ni modifiques la estructura de particionado de el viejo HDD antes de que el sistema este portado Y probado en el SSD, no quieres perder tu sistema o tu información, verdad?

Mientras se juega con los dispositivos de almacenamiento es una buena idea mantener un respaldo completamente separado y aislado, de forma que tu información sobrevivirá si arruinas algo.


Hice un respaldo para mis particiones /home y / usando un disco externo (USB) de 1TB, así:

    /mnt/
    |
    +-- alx/        # /home/alx
    |
    +-- root/       # /


    # mount /dev/sdb1 /mnt
    # rsync -av --progress /home/axl /mnt/alx/
    # rsync -av --progress / /mnt/gentoo/ 
--exclude /mnt --exclude /home --exclude /proc 
--exclude /tmp --exclude /sys --exclude /dev


La opción a preservará todos los meta datos que tu sistema necesita, úsala!

Ahora pon este disco a salvo en un cajón y no lo toques hasta que estes completamente seguro que no has perdido información en el proceso.


Migrando

 

Vamos a montar el futuro / y migrar el sistema a él:

    # moutn /dev/sdb2 /mnt
    # rsync -av --progress / /mnt/ --exclude /mnt 
--exclude /home --exclude /proc --exclude /tmp 
--exclude /sys --exclude /dev


Ahora debes montar la nueva /home y copiar en ella toda la información que necesites de forma selectiva, pero recuerda copiar también los dotfiles:

    # umount /mnt
    # mount /dev/sdb3 /mnt
    # cp -av /home/alx/.* /mnt
    # cp -av /home/alx/<files you need> /mnt


Luego instala el bootloader en el SSD, asumiendo GRUB2:

    # umount /mnt
    # mount /dev/sdb2 /mnt
    # cd /mnt
    # mkdir tmp dev proc sys home mnt
    # sudo mount --bind /dev /mnt/dev
    # sudo mount --bind /proc /mnt/proc
    # sudo mount --bind /sys /mnt/sys
    # sudo chroot /mnt
    # grub2-mkconfig -o /boot/grub/grub.cfg
    # grub2-install /dev/sdb
    # exit


Apaga la computadora y reemplaza el HDD con el SSD.

Vaya que esta cosa es VELOZ!