15 de julio de 2011

Cómo instalar Fedora 15, u otra distro, sobre Btrfs como mandan los cánones

Hace ya meses que la cuenta de sectores relocalizados de mi disco duro (sectores dañados cuya referencia se modifica para que apunten a otros en buen estado) era demasiado preocupante, una especie de señal divina advirtiendo de que era hora de cambiar de disco, así que he aprovechado para conseguirle no un reemplazo, sino dos (con sus correspondientes ventiladores), y de ese modo dar a btrfs un hogar más apropiado.

Pero al comenzar una instalación nueva de Fedora 15, con ese inexplicable deseo de convertirla en espejo y honra de todos los administradores, me encontré con un problema que no había resuelto en la anterior instalación, y que ahora podía aprovechar resolver. Se trata de hacer, desde el principio, una instalación acondicionada para convivir con los subvolúmenes de btrfs.

En btrfs, los subvolumenes (que podrían describirse confusamente como pseudosistemas de archivos vacíos creados a partir del espacio disponible) son añadidos a la raíz del sistema de archivos como directorios. Una buena instalación sobre btrfs debería dejar ese directorio raíz exclusivamente para subvolúmenes, e instalar cosas dentro de estos. Por ejemplo, tendríamos un subvolumen "/raiz-fedora/" con la instalación de Fedora, otro "/raiz-debian/" con la de Debian, y un cursi "/casita/" para los datos personales. El problema está en que los instaladores de las distros no tienen nociones de subvolúmenes (Fedora los tendrá en la próxima versión), no permiten crearlos; y, lo que es más puntilloso, tampoco permiten montar unos que se hayan creado a mano fuera de la instalación, así que te instalan todo en la raíz principal. Se puede solucionar posteriormente a base copiar archivos y modificar el fstab, no digo que no, pero hay una alternativa, que cuento aquí porque no he logrado encontrarla en Google.

Resulta que btrfs permite configurar un subvolumen determinado como directorio raíz, es decir, podemos hacer que al montar el sistema de archivos, en lugar del directorio raíz contenedor de todos los subvolúmenes, monte /raiz-fedora o /raiz-debian. Así que, metidos en la tarea...

# mkfs.btrfs -d raid0 -m raid1 -L btrfspool /dev/disco1particion /dev/disco2particion

Con esto se crea un "pool" de almacenamiento consistente de esos dos discos, con la configuración de RAID0 (distribución) para datos y RAID1 (replicación) para metadatos (en un futuro se podrán tener diferentes políticas para cada subvolumen, pero de momento...)


# mount /dev/sdb /mnt; cd /mnt
# btrfs subvolume create raiz-fedora
Create subvolume './raiz-fedora'
# btrfs subvolume create casita
Create subvolume './casita'

Con esto se han creado los subvolúmenes requeridos.

# btrfs subvolume list /mnt
ID 256 top level 5 path raiz-fedora
ID 257 top level 5 path casita

# btrfs subvolume set-default 256 /mnt

Con esto se consigue que cada vez que se monte el sistema de archivos se monte directamente el subvolumen raiz-fedora, y no la verdadera raiz, que quedará oculta a primera vista (se puede volver a montar pasando a mount la opción -o subvolid=0). Ahora se puede instalar Fedora -con el DVD de instalación, no el Live, y pasando "btrfs" como opción del kernel-, y bastará indicar al instalador que se utilize /dev/disco1particion como raíz /: sin que el instalador se percate, estará instalando sus cosas en el subvolumen raiz-fedora.

Queda lo de poner al subvolumen casita como "/home". Una vez terminada la instalación, y antes de entrar por primera vez en la sesión, se puede entrar a una consola y modificar el /etc/fstab, añadiendo la línea correspondiente y, si apetece, adornar la de la raiz:

UUID=numero-raro / btrfs defaults,subvol=raiz-fedora 1 1
UUID=mismo-numero-raro /home btrfs defaults,subvol=casita 1 1

Tras esto, un reinicio, un mount -a o un montaje manual montará el subvolumen casita donde corresponde, aunque hay que acordarse de dar permisos adecuados al nuevo directorio /home (chmod o+rx /home). Ya puestos en la tarea, parecería apropiado crear el directorio del usuario que ya se había creado en los diálogos de inicio: mkdir /home/usuario; chown usuario:usuario /home/usuario - bonus para quien sea lo suficientemente diligente para, antes de montar el subvolumen en /home/, mover el directorio de usuario que la instalación había creado a, por ejemplo, /tmp, y devolverlo luego a su sitio natural.

Pero no se fíen, que siempre está SELinux para hacer la puñeta. Además de dar permisos a todos los usuarios en el nuevo montaje /home, es necesario darle el contexto SELinux adecuado, y también a /home/usuario, especialmente si quieren mover todos sus archivos personales de una instalación anterior. Así que queda un último comando: restorecon -R /home. Y, ahora si, todo completado.

3 comentarios:

  1. Pienso instalar Fedora esta semana en la PC de escritorio la cual actualmente tiene roto varios paquetes con Funtoo, distribución que por cierto tiene buena documentación acerca de btrfs:
    http://www.funtoo.org/wiki/BTRFS_Fun#Playing_with_subvolumes_and_snapshots

    ResponderEliminar
  2. leprosys: buena documentación, si...

    ResponderEliminar
  3. ...traigo
    sangre
    de
    la
    tarde
    herida
    en
    la
    mano
    y
    una
    vela
    de
    mi
    corazón
    para
    invitarte
    y
    darte
    este
    alma
    que
    viene
    para
    compartir
    contigo
    tu
    bello
    blog
    con
    un
    ramillete
    de
    oro
    y
    claveles
    dentro...


    desde mis
    HORAS ROTAS
    Y AULA DE PAZ


    COMPARTIENDO ILUSION
    DÓH!

    CON saludos de la luna al
    reflejarse en el mar de la
    poesía...




    ESPERO SEAN DE VUESTRO AGRADO EL POST POETIZADO DE TOQUE DE CANELA ,STAR WARS, CARROS DE FUEGO, MEMORIAS DE AFRICA , CHAPLIN MONOCULO NOMBRE DE LA ROSA, ALBATROS GLADIATOR, ACEBO CUMBRES BORRASCOSAS, ENEMIGO A LAS PUERTAS, CACHORRO, FANTASMA DE LA OPERA, BLADE RUUNER ,CHOCOLATE Y CREPUSCULO 1 Y2.

    José
    Ramón...

    ResponderEliminar