Fecha de modificación: 13.08.2020

Instalación y uso de Btrfs

comenzando

Instale el paquete de utilidades personalizadas.

pacman -S btrfs-progs arch-install-scripts

lsblk - lista todas las secciones para decidir qué montar.

# disco de partición, -z dice poner a cero la tabla de particiones
cfdisk -z /dev/sda

Dado que Btrfs no puede contener un archivo de intercambio, debe ocuparse de la partición de intercambio con anticipación si la necesita.

mkswap /dev/sda2

Creamos un sistema de archivos en la partición. Para particiones de 1GB y más pequeñas, para usar el espacio de manera más eficiente, se recomienda pasar el interruptor -M a los parámetros mkfs.btrfs.

Opcionalmente, puede configurar la etiqueta con la tecla -L.

mkfs.btrfs /dev/sda<número>
mkfs.btrfs -L "root" /dev/sda<número>

Ahora montamos.

mount /dev/sdb1 /mnt

Luego crearemos dos subvolúmenes para los directorios de inicio de usuario y raíz.

btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home

Visualización de subvolúmenes.

btrfs subvolume list /mnt

Desmontemos la raíz FS.

umount /mnt

Para montar un subvoltaje como una partición de disco normal, el comando mount necesita especificar la opción subvol.

Monte la raíz. Compresión zstd o lzo.

mount -o subvol=@,compress=zstd /dev/sdb1 /mnt

Cree un directorio y monte nuestro futuro directorio de usuarios en él.

mkdir /mnt/home
mount -o subvol=@home,compress=zstd /dev/sdb1 /mnt/home

Luego actuamos en la wiki, es decir elija espejos e instale el sistema base. Al generar initramfs, mkinitcpio se quejará de la ausencia de fsck.btrfs; esto es normal. Eliminemos este gancho fsck de la configuración, porque no es necesario para Btrfs.

nano /etc/mkinitcpio.conf

Aquí está la línea dada en el archivo.

HOOKS="base udev autodetect modconf block filesystems keyboard"

Y vuelva a crear initramfs.

mkinitcpio -p linux

Y una cosa más sobre el gestor de arranque, no sé cómo otros, pero grub definitivamente sabe cómo arrancar desde Btrfs, así que es mejor elegirlo. Además, no olvide instalar el paquete btrfs-progs y hacerse cargo de las copias de seguridad.


Usando btrfs

Monte la raíz FS.

mount /dev/sdb1 /mnt

Crea instantáneas.

btrfs subvolume snapshot /mnt/@ /mnt/@_bac
btrfs subvolume snapshot /mnt/@home /mnt/@home_bac

btrfs subvolume list /mnt

Los directorios son absolutamente idénticos y, hasta que empezamos a cambiar los archivos, las instantáneas no ocupan espacio.

Eliminando.

btrfs subvolume delete /mnt/@

Rollback: arranque desde el Live CD, monte la raíz FS y cambie el nombre de los subvolúmenes. Los subvolúmenes también se pueden renombrar directamente en el sistema de producción si la descarga se realiza correctamente.

mount /dev/sdb1 /mnt
mv /mnt/@ /mnt/@_bad
mv /mnt/@_bac /mnt/@

mv /mnt/@home /mnt/@home_bad
mv /mnt/@home_bac /mnt/@home

O arrancamos como de costumbre, y en el menú de grub especificamos el subvolumen con la copia de seguridad rootflags=subvol=backup.

Copia en escritura (CoW). Si usa el comando cp con llave --reflink=auto, entonces la copia del archivo no ocupará espacio en disco. Y más tarde, por ejemplo, cuando se cambia el archivo copiado, solo se escribirán en el disco los bloques modificados.

"Online" - Comprobación de FS. En el que todos los datos / metadatos se leen con la verificación de sumas de verificación, si hay errores, se detectan y corrigen si es posible.

btrfs scrub start -B /

Si omite el modificador -B, el proceso pasará a segundo plano y el comando podrá averiguar sobre el progreso de la ejecución.

btrfs scrub status /

Salida de muestra.

scrub status for 56edc366-a153-4eee-b2a6-471b7066b93d
scrub started at Sat Dec 14 06:37:19 2013 and finished after 3242 seconds
total bytes scrubbed: 222.45GB with 0 errors

Se recomienda verificarlo regularmente (semanalmente). "Fuera de línea": comprobación de FS (en la partición desmontada). Si no hay errores, la utilidad devolverá 0.

btrfs check /dev/sda

Instalar desde un sistema existente o desde un usb en vivo

pacman -S btrfs-progs arch-install-scripts

lsblk - resalte todas las secciones para decidir qué montar.

Dado que Btrfs no puede contener un archivo de intercambio, debe ocuparse de la partición de intercambio con anticipación si la necesita.

mkswap /dev/sda2

¡Atención! esto formateará todo su disco, ¡con pérdida de datos! En este ejemplo, la instalación va a todo el disco, no a las particiones, si necesita un intercambio, considere este punto.

mkfs.btrfs -f -L WD /dev/sdb

Montamos.

mount /dev/sdb /mnt

Creemos dos subvolúmenes bajo la raíz @ y el directorio de inicio del usuario @ home.

btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home

Y desmonte la raíz FS.

umount /mnt

Monte la raíz.

mount -o subvol=@,compress=zstd /dev/sdb /mnt

Cree un directorio y monte nuestro futuro directorio de usuarios en él.

mkdir /mnt/home
mount -o subvol=@home,compress=zstd /dev/sdb /mnt/home

Instale paquetes básicos.

pacstrap /mnt base base-devel linux linux-headers xorg-xinit xorg-server grub zsh mc nano netctl wpa_supplicant dialog dhcpcd btrfs-progs

Creamos fstab.

genfstab -pU /mnt >> /mnt/etc/fstab

Comprobación.

cat /mnt/etc/fstab

Cree un directorio y monte el arranque si es necesario.

mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o bind /dev /mnt/dev

cp -L /etc/resolv.conf /mnt/etc

swapon /dev/sda2

A partir del kernel 5.0, puede crear un archivo de intercambio, el archivo de intercambio debe estar ubicado completamente en un dispositivo, creado con COW deshabilitado y compresión.

touch /swap             # crear un archivo / intercambio vacío
chmod go-r /swap        # el intercambio debe ser 600
chattr +C /swap         # apagar COW, la compresión también se apaga
fallocate /swap -l4g    # Archivo 4Gb
mkswap /swap
swapon /swap

Vamos a revisar.

btrfs subvolume list /mnt

Entramos en el sistema.

chroot /mnt /bin/zsh

Asignamos un anfitrión.

echo ctlos > /etc/hostname

Selección de zona horaria.

ln -sf /usr/share/zoneinfo/UTC /etc/localtime
hwclock --systohc --utc
timedatectl set-ntp true
# o
timedatectl set-timezone America/Mexico

Elija una configuración regional para el sistema.

sed -i "s/#\(es_MX\.UTF-8\)/\1/" /etc/locale.gen

locale-gen         # Generar locales

Registrarse en/etc/locale.conf.

echo "LANG=es_MX.UTF-8" > /etc/locale.conf
echo "LC_COLLATE=C" >> /etc/locale.conf

Fuente en Español en la consola.

echo "KEYMAP=es" > /etc/vconsole.conf

Cree un disco de marco mkinitcpio.

nano /etc/mkinitcpio.conf

En / etc / mkinitcpio.conf, en la sección HOOKS, elmapa de teclas del teclado del gancho debe estar registrado, eliminefsck.

En la sección MÓDULOS , debe registrar el controlador de su tarjeta de video: i915 para Intel, radeon para AMD, nouveau para Nvidia.

HOOKS=(base udev autodetect modconf block filesystems keyboard keymap)
mkinitcpio -p linux

Establecer contraseña de root.

passwd

Crear usuario.

useradd -m -g users -G wheel,audio,video,storage -s /bin/zsh killer

Y pídale una contraseña.

passwd killer

Descomente en / etc / pacman.conf.

[multilib]
Include = /etc/pacman.d/mirrorlist

Luego ejecuta.

pacman-key --init
pacman-key --populate
pacman -Syy

Instalación del cargador de arranque.

grub-install /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg

Configuración de sudo.

EDITOR=nano visudo

Otorgue al usuario privilegios de superusuario o grupo cuando escriba sudo.

malody ALL=(ALL) ALL

O un grupo.

%wheel ALL=(ALL) ALL

Para no solicitar una contraseña al usuario.

Defaults:malody      !authenticate