Mueva una instalación de Linux usando btrfs en el subvolumen predeterminado (subvolid = 0) a otro subvolumen

15

Al realizar una instalación en un sistema de archivos raíz btrfs, muchas distribuciones de Linux se instalan en el subvolumen predeterminado. Si no se modifica, este diseño obligará a crear instantáneas o subvolúmenes dentro del sistema de archivos raíz, lo que puede ser indeseable. Otro diseño posible sería tener el subvolumen predeterminado que contenga un snapshotsdirectorio y un rootfssubvolumen, que es el sistema de archivos raíz. ¿Cómo puedo cambiar la instalación btrfs de distro-default para usar este diseño de subvolumen sin arrancar desde un livecd?

goncalopp
fuente

Respuestas:

15

En primer lugar, crearemos el diseño que queremos en el subvolumen predeterminado:

btrfs subvolume snapshot / /rootfs
mkdir /snapshots

Tenga en cuenta que /rootfsserá nuestro nuevo sistema de archivos raíz, así que no realice ningún cambio en el actual después de este paso.

Edite /rootfs/etc/fstabpara hacer que el sistema use el nuevo subvolumen rootfs como sistema de archivos raíz. Para eso, deberá modificarlo para incluir la subvol=rootfsopción.

monte nuestro nuevo sistema de archivos raíz en algún lugar, monte los sistemas de archivos relevantes (dev, sys, proc, arranque si lo tiene), realice un arranque y actualice grub:

mount -o subvol=rootfs /dev/sdXX /media/temporary
cd /media/temporary
mount -o bind /dev  dev
mount -o bind /sys  sys
mount -o bind /proc proc
mount -o bind /boot boot
chroot .
update-grub
exit

Eso es. Reinicie, y su sistema de archivos raíz debería ser el subvolumen rootfs. Si esto tuvo éxito, no debería haber ningún directorio / snapshots. Ahora puede eliminar el contenido del antiguo sistema de archivos raíz en el subvolumen predeterminado.

Si lo desea, puede hacer un punto de montaje permanente para el subvolumen predeterminado:

mkdir /media/btrfs/root

entonces puedes mount -o subvolid=0 /dev/sdXX /media/btrfs/rooty crea tus instantáneas / subvolúmenes.

goncalopp
fuente
1
Además, tenga en cuenta que en lugar de montar, modificar y actualizar grub, simplemente puede configurar el subvolumen predeterminado para que sea rootfs btrfs subvolume set-default ID /. IDse puede encontrar usando `btrfs subvolume list /
goncalopp
Agregué subvol=/rootfs(tenga en cuenta que /) fstabya que parece ser la forma 'adecuada' como se describe en (btrfs wiki) [ btrfs.wiki.kernel.org/index.php/Mount_options] .
go2null
@ go2null El problema del uso subvol=/rootfses que cualquier programa que no tenga conocimiento de su diseño (instaladores de distribución, por ejemplo) montará el subvolumen predeterminado en su lugar. Si el programa espera que el sistema de archivos se vea como un sistema de archivos de Linux, si falla, o peor, llene su subvolumen predeterminado con cosas que no desea allí
goncalopp
hmm, habría pensado que los programas que se meten con los sistemas de archivos al menos verificarían fstabo configurarían el gestor de arranque.
go2null