domingo, 27 de mayo de 2012

Mover /home a otro disco por consola sin reiniciar en Ubuntu y Debian

Últimamente estoy metido en una encrucijada sobre la que no definí que voy a hacer. Por un lado noto que actualizo el blog cada vez menos, al tiempo que, contradictoriamente, tengo cada vez mas apuntes con tips útiles y no tanto... El tema principal es que cada entrada me lleva mucho tiempo, en general no menos de 2 horas, y la verdad es que la mayoría de las veces no tengo o no quiero dedicar esa cantidad de tiempo para una entrada. A su vez, el tema del tiempo se podría bajar si las entradas fuesen menos detalladas, simplemente diciendo la solución al problema sin mayores explicaciones. Ésta no fue nunca la idea del blog, pero también es cierto que la gran mayoría de la gente que busca soluciones a determinados problemas a traves de google solo apunta a encontrar "esa linea" que soluciona el problema limitándose a copiar y pegar y que funcione... Desde esta perspectiva, las entradas serían mas cortas, me llevarían menos tiempo y seguramente la actualización sería mas frecuente que una vez al mes... Pero desde otra perspectiva, convertiría al blog en uno de los tantos que hacen miles de entradas para copy and paste sin entrar en ningún detalle.
Aún no lo decidí, pero creo que lo mejor estaría en establecer un punto medio, se irán dando cuenta... supongo (?).
Bueno, vayamos a lo nuestro... Situación, me compro un disco porque el mio está a punto de explotar, y quiero mover mi /home al disco nuevo para liberar espacio en el viejo y de paso tenerlo aparte por si algún día sucede algo con el sistema operativo. ¿Y como hago? He aquí los pasos a seguir:

1- Agrego el disco a la PC, lógicamente... Esto es algo que no voy a explicar, pero la conexión de un disco básicamente consiste en conectar 2 cables, uno de datos y otro de energía (que viene de la fuente). Básicamente es eso. Una vez colocado el disco enciendo la PC.

2- Entramos a nuestro Ubuntu, Debian o cualquier distro de Linux (debería funcionar en cualquier distro, aunque yo particularmente lo probé solo en Ubuntu y Debian). Abrimos una terminal y nos fijamos que nos haya reconocido el disco. Para ello escribimos:

sudo fdisk -l

Este comando nos dará un listado de todos los discos de nuestra PC. En mi caso, el disco nuevo tomó el nombre de /dev/sdc.

3- El paso que sigue es crear una partición en el nuevo disco (Repito: en mi caso es sdc, ustedes van a tener que cambiar eso por la letra que les haya asignado a su disco):

sudo fdisk /dev/sdc

Esto nos va a abrir un asistente para crear la partición. Si presionamos "m" podremos ver un listado con distintas opciones para utilizar. En nuestro caso la primer opcion será "n" (crea una partición).
Luego nos pregunta si deseamos que la partición sea primaria o extendida. Elegimos primaria "p". En el número de partición elegimos 1. Y las 2 opciones que siguen serán para elegir el tamaño de la partición, o sea, si queremos destinar solo una parte del disco para el nuevo /home o si queremos destinar todo el disco. En nuestro caso vamos a dedicar todo el disco, con lo cual presionamos "ENTER" (Fijense que toma el primer cilindro como predeterminado) y luego presionamos "ENTER" de nuevo (Fijense que toma el ultimo cilindro como predeterminado, o sea, que tomamos todo el disco). En el caso de que no quisieran destinar todo el disco pueden presionar "ENTER"en la primer opción y luego elegir que cantidad de disco quieren brindarle a /home. Por ejemplo si quisieran darle 10GB, en la segunda opción en lugar de presionar "ENTER" deberían escribir +10240MB (que son 10GB convertidos a MB).
Por último escriben "w" para grabar todos los cambios, no se olviden de hacer esto porque sino vamos a tener el disco sin particionar!
Resumiendo, pulsamos las siguientes opciones:

n - p - 1 - enter - enter - w

Para los que le dieron una particion de 10GB fue así:

n - p - 1 - enter - +10240MB - w

4- El próximo paso es crear el sistema de archivos sobre la partición que creamos. Utilizaremos el sistema de archivos ext4:

sudo mkfs -t ext4 /dev/sdc1

Tengan en cuenta que mi disco era sdc, pero cuando creamos la partición primaria le asignamos la número 1, por eso ahora no es mas sdc sino sdc1.

5- Verificamos que el sistema de archivos de la partición sea efectivamente ext4:

sudo file -sL /dev/sdc1

/dev/sdc1: Linux rev 1.0 ext4 filesystem data, UUID=afc58f78-0464-43a1-9898-7d71b06d8753 (extents) (large files) (huge files)

6- El paso que sigue es modificar /etc/fstab para que el /home se monte en el disco nuevo cuando reiniciemos la PC (en este caso no va a hacer falta reiniciar, pero se supone que en algún momento vamos a hacer ésto y si no realizamos ésta modificación no se montará el /home):

sudo nano /etc/fstab

Y al final del archivo agregamos ésta línea:

/dev/sdc1      /home          ext4      defaults        0      0

Guardamos con ctrl + o y salimos con ctrl + x

7- Ahora creamos una carpeta /home temporal en /mnt para copiar todo el contenido de nuestro /home actual ahí:

sudo mkdir /mnt/home

8- Montamos el disco nuevo en el directorio temporal para copiar los archivos:

sudo mount -t ext4 /dev/sdc1 /mnt/home

9- Copiamos el contenido de nuestro /home actual al /home del nuevo disco recursivamente y preservando los permisos de los archivos:

sudo cp -Rp /home/* /mnt/home

10- Montamos el /home del nuevo disco:

sudo mount /home

11- Desmontamos el /home temporal:

sudo umount /mnt/home

Listo. Ya tenemos nuestro /home en el disco nuevo =)

Antes tenía mi /home en /dev/sdb y no era feliz
Ahora lo tengo en /dev/sdc1 y soy feliz
Espero que les haya servido!

6 comentarios:

  1. como puedo sincronizar mi ipod classic de 160 gb, con ryhtmbox sin perder lo que ya tengo de musica en la biblioteca del ipod.

    Saludos y gracias

    ResponderEliminar
  2. Como puedo borrar la antigua home? Me sigue ocupando espacio pero no veo como borrarla.

    Saludos y gracias.

    ResponderEliminar
  3. aaaaajajajaja que pelotudo comentario el de arriba

    ResponderEliminar
  4. Excelente tutorial!!

    He mirado un montón pero ninguno es tan cómodo y preciso como éste.

    Gracias..

    ResponderEliminar
  5. Que bueno!, muchas gracias.

    ResponderEliminar
  6. 2 meses en el mundo Linux. Cientos de horas investigando. Y eso que soy buen googlero. Con este tuto entendí cómo mover los benditos directorios sin estropearla. Gracias!.

    ResponderEliminar