Ventanas.  virus  Cuadernos.  Internet.  oficina.  Utilidades.  Conductores

btrfs(a veces se pronuncia butter fs) es un nuevo sistema de archivos gratuito que se está desarrollando con el apoyo de Oracle. Distribuido bajo la licencia GPL. A pesar de que su desarrollo aún está lejos de completarse, el 9 de enero de 2009, el sistema de archivos se integró en núcleo de linux, y está disponible en Debian Squueze.

Aunque Btrfs se incluyó en el kernel 2.6.29, los desarrolladores afirman que "a partir del kernel 2.6.31, solo planeamos hacer que el formato de cambio de disco sea compatible de ahora en adelante". Los desarrolladores todavía quieren mejorar las herramientas de administración/usuario para que sean más fáciles de usar. por conseguir información adicional sobre Btrfs, en el enlace de la sección.

Ext2/3/4 se puede convertir en Btrfs (pero no al revés).

Estado

Debian Squeeze y las versiones más recientes son compatibles con Btrfs.

Preguntas más frecuentes

¿Qué paquete contiene utilidades para btrfs?

btrfs-tools (en DebianSqueeze y superior)

Consulte también: Preguntas frecuentes sobre wiki de Btrfs

Comandos de ejemplo para trabajar con btrfs

Creación sistema de archivos:

mkfs.btrfs

Administrar volúmenes, subvolúmenes, instantáneas; comprobando la integridad del sistema de archivos:

btrfsctl

Escaneo de sistemas de archivos btrfs:

btrfsctl -a btrfsctl -A /dev/sda2

Creación de instantáneas y subvolúmenes:

montar -t btrfs -o subvol=. /dev/sda2 /mnt btrfsctl -s new_subvol_name /mnt btrfsctl -s snapshot_of_default /mnt/default btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name btrfsctl -s snapshot_of_a_snapshot /mnt/snapshot_of_new_subvol ls /mnt

Comprobación de los árboles de extensión del sistema de archivos:

btrfsck

Metadatos de salida en forma de texto:

árbol de depuración árbol de depuración /dev/sda2 >& big_output_file

Mostrar sistemas de archivos btrfs en el disco duro:

btrfs-show /dev/sda*

Desfragmentar (no requerido por defecto):

# desfragmentación del sistema de archivos btrfs /mnt o # desfragmentación del sistema de archivos btrfs /mnt/file.iso

Conversión de un sistema de archivos ext3 a btrfs

El sistema de archivos ext3 se puede convertir en btrfs y seguir trabajando con él como un nuevo sistema de archivos. Además, el estado del sistema de archivos ext3 original estará disponible más adelante.

# Ejecutar siempre fsck primero %# fsck.ext3 -f /dev/xxx # Convertir desde Ext3->Btrfs %# btrfs-convert /dev/xxx # Montar el sistema de archivos Btrfs resultante %# mount -t btrfs /dev/xxx /btrfs # Montar la instantánea ext3 %# mount -t btrfs -o subvol=ext2_saved /dev/xxx /ext2_saved # Loopback montar el archivo de imagen %# mount -t ext3 -o loop,ro /ext2_saved/image /ext3

El directorio /ext3 ahora muestra el estado del sistema de archivos original.

El desmontaje tiene lugar en orden inverso:

%# desmontar /ext3 %# desmontar /ext2_saved %# desmontar /btrfs

Puede volver a un sistema de archivos ext3 y perder sus cambios:

%# btrfs-convert -r /dev/xxx

O puede permanecer en btrfs y eliminar la imagen del sistema de archivos ext3 guardada:

%# rm /ext2_saved/imagen

Nota: el nuevo sistema de archivos a veces tiene un tamaño de metadatos muy grande después de la conversión.

Ver tamaño de metadatos:

# sistema de archivos btrfs df /mnt/data1tb/

Normalizar su tamaño:

btrfs fi saldo /mnt/btrfs

Leer más: Conversión de ext3 (inglés) y Conversión de ext3fs a btrfs (ruso)

Cambiar el tamaño del sistema de archivos y las particiones

Para btrfs, está disponible el cambio de tamaño en línea (sobre la marcha) del sistema de archivos. Primero necesitas montar sección deseada:

# montar -t btrfs /dev/xxx /mnt

Agregando 2GB:

# btrfs filesystem redimensionar +2G /mnt o # btrfsctl -r +2g /mnt

Reducción de 4GB:

# btrfs filesystem redimensionar -4g /mnt o # btrfsctl -r -4g /mnt

Establezca el tamaño en un sistema de archivos de 20 GB:

# btrfsctl -r 20g /mnt o # sistema de archivos btrfs redimensionar 20g /mnt

Usando todo el espacio libre:

# btrfs sistema de archivos redimensionar max /mnt o # btrfsctl -r max /mnt

Los comandos anteriores son válidos solo para el sistema de archivos. Para cambiar el tamaño de una partición, debe usar otras utilidades como fdisk. Considere un ejemplo para reducir una partición en 4 GB. Montar y reducir la partición:

# montar -t btrfs /dev/xxx /mnt # btrfsctl -r -4g /mnt

Ahora desmonte la partición y use fdisk:

# umount /mnt fdisk /dev/xxx # donde está dev/xxx disco duro con la sección que necesitamos

Pasar a un nuevo sistema de archivos siempre es una tarea difícil. Ya confiamos en el sistema de archivos antiguo y probado. Incluso puede tener algunas limitaciones en cuanto a funcionalidad y rendimiento, pero nunca nos ha defraudado. Los nuevos sistemas de archivos ofrecen muy un gran número de funciones, pero surge la pregunta, ¿se puede confiar en ellos?

Uno de esos sistemas de archivos es Btrfs. Este es un sistema de archivos relativamente nuevo que apareció en 2007 y fue desarrollado por Oracle. Ofrece una gama muy amplia de nuevas funciones y, por lo tanto, es de gran interés para los usuarios, pero todavía hay rumores en la red de que este sistema de archivos aún no es adecuado para un uso permanente. En este artículo, intentaremos descubrir qué oportunidades nos brinda Btrfs y también si ya se puede usar.

Como dije, Btrfs fue desarrollado por Oracle en 2007. No existe una decodificación única del nombre, algunos dicen que significa B-tree FS, otros Better Fs. Al igual que en otros sistemas de archivos, todos los datos se almacenan en el disco en direcciones específicas. Estas direcciones se almacenan en metadatos. Y aquí es donde empiezan las diferencias. Todos los metadatos están organizados como árboles b. Esto brinda un mayor rendimiento al trabajar con el sistema de archivos y también le permite agregar una cantidad ilimitada de archivos.

Pero incluso eso no es todo. Cuando sobrescribe un archivo, los datos no se sobrescriben, sino que solo la parte modificada se copia en la nueva ubicación. Luego, los metadatos simplemente se actualizan. Esto le permite crear instantáneas del sistema de archivos que no ocupan espacio en el disco hasta que se hayan realizado muchos cambios. Si el bloque antiguo ya no es necesario porque no forma parte de ninguna instantánea, se elimina automáticamente.

Debido a su estructura, Btrfs tiene muchas posibilidades, por ejemplo, puede manejar los grandes medios de almacenamiento actuales. El tamaño máximo del sistema de archivos es de 16 exabytes. Todo esto es posible gracias al uso adecuado del espacio en disco. Otros sistemas de archivos utilizan todo el disco duro, de extremo a extremo, para registrar su estructura.

Btrfs hace las cosas de manera diferente. Cada disco, independientemente de su tamaño, se divide en bloques de 1 GB para datos y 256 MB para metadatos. Estos bloques luego se ensamblan en grupos, cada uno de los cuales se puede almacenar en diferentes dispositivos, el número de tales bloques en un grupo puede depender de nivel RAID para el grupo El administrador de volúmenes ya está integrado en el sistema de archivos, por lo que no es necesario utilizar software adicional.

La protección y compresión de datos también es compatible a nivel del sistema de archivos, por lo que aquí tampoco necesita programas adicionales. El sistema de archivos btrfs también admite la duplicación de datos en varios medios. Aquí hay otras características de btrfs que se pueden mencionar:

  • Compatibilidad con instantáneas del sistema de archivos, de solo lectura o solo escritura;
  • Checksums para datos y metadatos usando el algoritmo crc32. De esta manera, cualquier daño al bloque puede determinarse muy rápidamente;
  • Compresión con Zlib y Lzo;
  • Optimizado para trabajar con SSD, el sistema de archivos detecta automáticamente SSD y comienza a comportarse de manera diferente;
  • Proceso en segundo plano para la detección y corrección de errores, así como desfragmentación y deduplicación en tiempo real;
  • Soporta conversión de ext4 y ext3 y viceversa.

Todo esto es muy bueno, pero ¿es posible usar este sistema de archivos ya? Tratemos de lidiar con esto.

¿Btrfs está listo para usar?

Todavía hay muchos conceptos erróneos sobre Btrfs. Muchos de ellos provienen de problemas reales que se presentaron al comienzo del desarrollo del sistema de archivos. Pero las personas que miran esta información no miran su fecha. Sí, Btrfs era de hecho inestable e inestable. Hubo muchos problemas de pérdida de datos y muchos usuarios escribieron al respecto, pero eso fue en 2010.

La parte más importante de un sistema de archivos es su formato de almacenamiento en disco. Pero el formato del sistema de archivos Btrfs ya está arreglado, sucedió en 2012 y ya no cambia a menos que sea absolutamente necesario. Esto solo es suficiente para reconocer la estabilidad de btrfs.

Pero, ¿por qué muchos consideran que Btrfs es inestable? Hay varias razones para esto. En primer lugar, es el miedo de los usuarios a las nuevas tecnologías. Esto no fue solo en Linux, sino también en Microsoft, con su transición a NTFS, y en Apple. Pero hay una paradoja aquí, el sistema de archivos XFS ha pasado por 20 años de desarrollo estable, pero el sistema de archivos más estable es ext4, que se desarrolló a partir de una bifurcación de ext3 en 2006. De hecho, es un año mayor que Btrfs.

La segunda razón está en desarrollo activo, aunque el formato de almacenamiento de datos está congelado, la base de código principal todavía está en desarrollo activo y todavía hay mucho espacio para mejoras de rendimiento y nuevas funciones.

Pero ya hay muchas confirmaciones de que el sistema de archivos está listo. Este sistema de archivos se utiliza en los servidores de Facebook, donde la empresa almacena sus datos confidenciales. Y eso en sí mismo es un factor importante. Empresas como Facebook, SuSE, RedHat, Oracle, Intel y otras están trabajando para mejorar el sistema de archivos. Este sistema de archivos se ha utilizado de forma predeterminada en SUSE Linux Enterprise desde la versión 12. Todos estos factores juntos demuestran que el sistema de archivos está listo para usar. Y dada la funcionalidad y características de btrfs, ya se puede utilizar.

uso de btrfs

Por qué vale la pena usar Btrfs y si vale la pena, lo descubrí. Ahora me gustaría mostrar algo de práctica para que pueda evaluar este sistema de archivos en acción. Daré ejemplos basados ​​en Ubuntu. Primero, instale las herramientas de administración del sistema de archivos:

sudo apt install btrfs-herramientas

Creación de un sistema de archivos btrfs

Primero necesita crear un sistema de archivos. Digamos que tenemos dos discos duros /dev/sdb y /dev/sdc, queremos crear un solo sistema de archivos en ellos con duplicación de datos. Para hacer esto, solo haz:

sudo mkfs.btrfs /dev/sdb /dev/sdc

El valor predeterminado será RAID0 para datos (sin redundancia) y RAID1 para metadatos (duplicados en un solo disco). Al usar un solo disco, los metadatos también se duplican; si desea deshabilitar este comportamiento, puede usar -m single opción:

sudo mkfs.btrfs -m single /dev/sdb

Pero al hacer esto, aumenta el riesgo de pérdida de datos, porque si se pierden los metadatos, también se pierden los datos.

Puede ver información sobre el sistema de archivos recién creado con el comando:

sistema de archivos sudo btrfs show /dev/sdb

O sobre todos los sistemas de archivos montados:

sudo btrfs muestra del sistema de archivos

montaje btrfs

Para montar, use el comando habitual:

sudo mount /dev/sdb /mnt

Puede montar cualquiera de las unidades, tendrá el mismo efecto. La línea en /etc/fstab se verá así:

/dev/sdb /mnt btrfs por defecto 0 1

Ahora miramos la información sobre el espacio en disco ocupado:

sudo btrfs sistema de archivos df /mnt

Compresión en btrfs

Para habilitar la compresión, simplemente agregue la opción de compresión al montar. Puede pasarle el algoritmo lzo o zlib:

sudo mount -o compress=lzo /dev/sdb /mnt
$ sudo mount -o compress=zlib /dev/sdb /mnt

Restaurando btrfs

Para recuperar un Btrfs dañado, use la opción de montaje de recuperación:

sudo mount -o recuperación /dev/sdb /mnt

Cambio de tamaño

Puede cambiar el tamaño de un volumen en tiempo real usando el comando de cambio de tamaño:

cambio de tamaño del sistema de archivos sudo btrfs -2g /mnt

Reduzca el tamaño en 2 gigabytes. Luego aumente en 1 gigabyte:

cambio de tamaño del sistema de archivos sudo btrfs +1g /mnt

Creación de subvolúmenes

Puede crear particiones lógicas, subvolúmenes dentro de la partición principal usando Btrfs. Se pueden montar dentro de la partición principal:

sudo btrfs subvolumen crear /mnt/sv1
$ sudo btrfs subvolumen crear /mnt/sv2
$ sudo btrfs lista de subvolumen /mnt

Montaje de subvolúmenes

Puede montar el subvolumen con la identificación que obtuvo con el último comando:

sudo umount /dev/sdb

sudo mount -o subvolid=258 /dev/sdb /mnt

O puedes usar el nombre:

sudo mount -o subvol=sv1 /dev/sdb /mnt

Eliminación de subvolúmenes

Primero, monte la raíz btrfs en lugar del subvolumen:

sudo cantidad /mnt

sudo mount /dev/sdb /mnt/

Para eliminar un subvolumen, puede usar la ruta de montaje, por ejemplo:

sudo btrfs subvolumen eliminar /mnt/sv1/

Tomar instantáneas

El sistema de archivos Btrfs le permite crear instantáneas de los cambios. El comando de instantánea se utiliza para esto. Por ejemplo, creemos un archivo y luego tomemos una instantánea:

toque /mnt/sv1/prueba1 /mnt/sv1/prueba2

Crear una instantánea:

sudo btrfs instantánea de subvolumen /mnt/sv1 /mnt/sv1_snapshot

Ninguno de nosotros es inmune a los errores. A veces, el síndrome de las manos torcidas tiene consecuencias muy tristes. A veces es muy difícil resistirse y no realizar experimentos "anticientíficos" con el sistema o ejecutar un script/aplicación descargada de una fuente no verificada. Y aquí vienen al rescate varias herramientas para ejecutar aplicaciones en un entorno aislado y capacidades extendidas del sistema de archivos.

Introducción

*Los sistemas nix siempre han sido relativamente resistentes a las aplicaciones mal escritas (siempre y cuando, por supuesto, no se ejecuten como root). Sin embargo, a veces existe el deseo de experimentar con el sistema: jugar con las configuraciones, algunas de las cuales pueden ser vitales, ejecutar un script sospechoso, instalar un programa obtenido de una fuente no confiable ... De lo contrario, la paranoia simplemente supera, y quiero para construir tantas barreras como sea posible para proteger contra malware potencial. El artículo describirá algunos medios para evitar las consecuencias de los errores no forzados al retroceder a un punto de retorno creado previamente (instantáneas Btrfs), ejecutar un programa sospechoso en un entorno limitado y divertir su paranoia (Arkose y chroot).

chroot

Chroot se conoce desde hace mucho tiempo. Tiene una gran ventaja sobre otras herramientas: funciona en todas partes, incluso en distribuciones muy antiguas. Todas estas cajas de arena novedosas no son más que su desarrollo posterior. Pero también hay desventajas. Por ejemplo, no hay forma de restringir la red, la raíz puede salir de ella con un poco de esfuerzo y, lo que es más importante, es bastante difícil configurarla. A pesar de esto, para algunos propósitos, como instalar paquetes desde el código fuente, es ideal.

Hay al menos tres formas de crear un entorno chroot:

  1. Usted define todas las aplicaciones y bibliotecas necesarias para que funcione el programa iniciado. Esta es la forma más flexible, pero también la más confusa.
  2. El entorno chroot se forma dinámicamente. En un momento existió el proyecto Isolate, que hizo esto, pero ahora, por razones desconocidas, se ha hundido en el olvido.
  3. Implementar el sistema base en el directorio especificado y rootearlo: lo describiré.

grub y btrfs

Lo más probable es que, al arrancar desde la partición Btrfs, Grub jurará que los archivos dispersos no están permitidos y le pedirá que presione cualquier tecla. Para evitar que aparezca este mensaje, ábralo en su favorito editor de texto archivo /etc/grub.d/00.header y comente la siguiente línea allí:

Si [ -n "\$(have_grubenv)" ]; entonces si [ -z "\$(boot_once)" ]; luego save_env recordfail; fi; fi

En realidad, la variable recordfail es necesaria para evitar un reinicio cíclico, por lo que se amartilla al inicio y luego, en caso de carga exitosa, se establece en 0. Aunque no es deseable comentar el código responsable de este procedimiento, Creo que en un sistema de escritorio es bastante lo que puedes prescindir de él.

Ognelis en la caja de arena: esto es lo que dice el título

Primero, instalemos el paquete debootstrap, que se usa solo para este propósito.

$ sudo apt-get install debootstrap

Luego, crearemos un directorio en el que se ubicará el chroot e implementaremos el sistema base cuántico en él. En general, se puede crear en cualquier lugar, pero su ubicación tradicional es /var/chroot. Dado que la mayoría de los siguientes comandos requieren permisos de root, tiene sentido cambiar a la cuenta de superusuario:

$ sudo su - # mkdir /var/chroot && cd /var/chroot # debootstrap quantal ./quantal-chr1 http://mirror.yandex.ru/ubuntu

Echemos un vistazo al último comando. Implementa la versión Quantal Ubuntu en un directorio quantal-chr1 separado (nunca se sabe, de repente necesita otro chroot) desde el espejo más cercano. Una vez completada la implementación, debe asignar los sistemas de archivos procfs, sysfs y (si corresponde) el directorio /dev a este subárbol. En caso de que el chroot solo se use para aplicaciones de texto hasta que se reinicie, los siguientes comandos deberían ser suficientes:

# montaje --bind /proc /var/chroot/quantal-chr1/proc # montaje --bind /sys /var/chroot/quantal-chr1/sys # montaje --bind /dev /var/chroot/quantal-chr1/ desarrollador

Si desea que este subárbol funcione después de reiniciar, agregue las líneas correspondientes a /etc/fstab. Bueno, por el trabajo de algunos aplicaciones graficas también se deben mostrar los directorios /tmp y /var/run/dbus. Después de eso, ya puede ingresar el siguiente comando, que, de hecho, hace el chroot:

# chroot /var/chroot/quantal-chr1/

Y ya estás encerrado en él. Para no confundir chroot con un sistema real, recomiendo cambiar el indicador de shell. Por ejemplo, instalemos y ejecutemos Skype en el chroot. Para hacer esto, debe instalar el paquete schroot en el sistema host, lo que facilita la ejecución de programas en un entorno chroot:


Implementación en el chroot del sistema base usando debootstrap # apt-get install schroot

Luego agregamos una entrada al archivo /etc/schroot/schroot.conf. En mi caso, agregué lo siguiente:

/etc/schroot/schroot.conf description=Quantal directorio de Skype=/var/chroot/quantal-chr1 prioridad=3 usuarios=rom groups=rom root-groups=root,rom

Reenviamos /dev, /proc, /sys, /tmp y /var/run/dbus; vea más arriba cómo hacerlo. Agregue un usuario y un grupo de Skype al chroot: es deseable que el uid y el gid coincidan con el uid / gid del usuario principal del sistema real (en mi caso, rom), para lo cual escribimos los siguientes comandos:

# schroot -c quantal-skype -u root # addgroup --gid 1000 skype # adduser --disabled-password --force --uid 1000 --gid 1000 skype

Después de eso, colocamos el Skype recién descargado, nuevamente en el chroot, y satisfacemos sus dependencias:

# dpkg --force-all -i skype-ubuntu-precise_4.1.0.20-1_i386.deb # apt-get -f install # salir

En el sistema principal, permitimos conexiones al servidor X desde localhost e ingresamos al chroot como un usuario normal:

$ xhost +localhost $ cd / && schroot -c quantal-skype -u rom /bin/bash

Configure la variable DISPLAY (que debe ver en el sistema principal) e inicie Skype:

$ exportar DISPLAY=":0.0" $ skype --dbpath=/home/skype/.Skype &

Skype se instaló y lanzó con éxito en un entorno chroot.

Sería posible escribir un script para facilitar el lanzamiento, pero puede hacerlo usted mismo.


Usando Arkose

Arkose funciona de manera similar a los entornos limitados de Windows, como Sandboxie. En la práctica, esta es una envoltura conveniente para contenedores LXC. Pero, como saben, la comodidad y la flexibilidad a veces son incompatibles. sintonia FINA contenedores creados es difícil. De las ventajas, observo una interfaz intuitiva (esto es si usa la GUI; sin embargo, iniciar desde línea de comando también es muy simple), pero por las desventajas: por defecto, requiere bastante espacio libre en el disco duro y hay algunos formas posibles derivación; pero, si usa Arkose como un envoltorio adicional para posibles formas de introducir malware (navegador) o incluso simplemente para experimentar con algunos aplicación interesante, no te dolerá.

seccomp y seccomp-bpf

Seccomp es un mecanismo poco conocido introducido en el kernel 2.6.12 que permite que un proceso haga una transición unidireccional a un estado "seguro", donde solo hay cuatro llamadas al sistema disponibles: exit(), sigreturn(), read() y write(), y los dos últimos están disponibles solo para abrir archivos. Si el proceso intenta llamar a cualquier otra llamada al sistema, se eliminará de inmediato.

Obviamente, esta solución no es muy flexible. En este sentido, seccomp-bpf apareció en el kernel 3.5, que le permite ajustar, usando reglas BPF, qué llamadas al sistema (y sus argumentos) están permitidas y cuáles no. Seccomp-bpf se utiliza en Google Chrome, Chrome OS y retroportado a Ubuntu 12.04.

Antes de usar Arkose, debe instalarse. El procedimiento es estándar:

$ sudo apt-get install arkose-gui

Se instalarán tanto la GUI (arkose-gui) como la utilidad de línea de comandos (arkose). La interfaz gráfica es tan simple que no veo el sentido de describirla, es mejor pasar inmediatamente a la práctica.


Creación manual
instantánea de solo lectura-
ta en btrfs

Las opciones de la línea de comandos considerarán:

  • -n (ninguno, directo, filtrado): asigna la red al entorno limitado. Las opciones ninguno y directo se explican por sí mismas, filtrado crea su propia interfaz para cada sandbox. En la práctica, es mejor usar ninguno o directo, ya que filtrar toma mucho tiempo para configurarlo.
  • -d (ninguno, sistema, sesión, ambos): acceso a los buses D-Bus desde el entorno limitado.
  • -s tamaño: establece el tamaño de almacenamiento en megabytes. El valor predeterminado es 2000 MB para ext4 o la mitad de la memoria para tmpfs. Una vez que finaliza el programa que se ejecuta en la zona de pruebas, el repositorio se destruye.
  • -t - tipo de sistema de archivos de almacenamiento. El valor predeterminado es ext4.
  • --directorio raíz: especifica el directorio que está asignado al entorno limitado como raíz.
  • --root-type (cow,bind) - cómo mostrar exactamente la raíz. Si usa vaca, se perderán todos los cambios después de cerrar la caja de arena y, si los vincula, se guardarán.
  • --base-path: especifica la ubicación donde se almacena el sandbox. El valor predeterminado es ~/.arkose.
  • --bind directorio y --cow directorio: muestra un directorio en modo vaca o directamente. Naturalmente, el uso de una u otra opción depende del tipo de mapeo raíz; no tiene sentido usar la opción --cow en un directorio que ya es de copia en escritura.
  • -h - usa el directorio de inicio real. Similar a --bind $HOME.
  • -p - permite el uso de PulseAudio.

Empecemos Firefox como ejemplo:

$ sudo arkose -n direct -p firefox

Este comando iniciará Firefox con acceso web y PulseAudio. Dado que cada contenedor recién creado tiene su propio directorio de inicio de forma predeterminada, el perfil de firelis también será nuevo, sin complementos instalados, si tiene alguno.

"¡Pero espera! ¿Por qué Sudo? - puede surgir una pregunta razonable. El hecho es que algunas operaciones preparatorias solo están disponibles desde la raíz. Sin embargo, me apresuro a asegurarle: el programa lanzado funcionará con los derechos del usuario actual.


Agregar un usuario para ejecutar Skype en chroot

Brevemente sobre BTRFS

Sucede que después de instalar actualizaciones, el sistema colapsa. Las herramientas similares al componente Restaurar sistema de Windows serían útiles aquí. ¡Me enorgullece decir que los tenemos! Y una de esas herramientas es Btrfs. De las ventajas del nuevo sistema de archivos de Oracle, cabe destacar las siguientes:

  • Copiar en escrito. Esta tecnología se utiliza para crear instantáneas: instantáneas instantáneas del estado del sistema. Al crear una instantánea, el controlador FS copia los metadatos en ella y comienza a monitorear la grabación real. Si se encuentra, los bloques de datos originales se colocan en la instantánea y se escriben nuevos en su lugar.
  • Asignación dinámica de inodos. A diferencia de la generación anterior de FS, Btrfs no tiene un límite en la cantidad de archivos.
  • Compresión de archivo.
  • Posibilidad de alojar un sistema de archivos en varios soportes físicos. De hecho, este es el mismo RAID, solo que un nivel superior. En el momento de escribir este artículo, se admiten RAID 0, RAID 1 y RAID 10, mientras que la compatibilidad con RAID 5 se encuentra en las primeras etapas de desarrollo.

Creación y eliminación de instantáneas

Para realizar operaciones en un sistema de archivos de nueva generación, como crear instantáneas, desfragmentar un volumen y muchas otras, se usa el comando btrfs. Su sintaxis, en general, es la siguiente:

btrfs<команда> <аргументы>

¿Qué tipo de operaciones se pueden realizar en Btrfs? A continuación se muestran los comandos que me parecieron interesantes.

  • btrfs subvol crear [<путь>/]<имя>- crea un subvolumen (ver barra lateral). Si no se especifica una ruta, la crea en el directorio actual.
  • btrfs subvol eliminar<имя>- respectivamente, elimina el subvolumen.
  • btrfs subvol encontrar-nuevo<путь> <поколение>- lista de los últimos archivos modificados en la ruta especificada, a partir de la generación especificada. Desafortunadamente, todavía no es posible. de una manera sencilla averiguar la generación actual de un archivo en particular, por lo que el uso de este comando puede ir acompañado de un baile con una pandereta.
  • instantánea de subvol de btrfs [-r]<подтом> <путь к снапшоту>- Lo más destacado del programa. Crea una instantánea del subvolumen especificado con la ruta especificada. La opción -r deshabilita la escritura en instantáneas.
  • lista de subvolúmenes btrfs<путь>- muestra una lista de subvolúmenes e instantáneas en la ruta especificada.
  • btrfs filesys df: uso de espacio para el punto de montaje especificado.
  • cambiar el tamaño de btrfs filesys [+/-]<новый размер> <путь>- sí, sí, Btrfs tiene la capacidad de cambiar el tamaño en un sistema "en vivo", y no solo aumentar, sino también disminuir. Con los argumentos creo que todo está más o menos claro, pero, además de especificar el tamaño, puedes usar el argumento max, que expande el sistema de archivos al máximo tamaño posible.

Los comandos restantes, aunque interesantes, están relacionados con el tema del artículo solo en la medida en que no los consideraremos. Entonces, para crear una instantánea de un subvolumen con la fecha actual, por ejemplo, el directorio raíz, escribimos el siguiente comando:

$ sudo btrfs subvol snap -r / /instantánea-2013-01-16

$ sudo btrfs subvol del /instantánea-2013-01-16

subvolumen btrfs

Un subvolumen Btrfs puede actuar de dos formas: como directorio y como objeto VFS, algo que se puede montar. Por ejemplo, al instalar Ubuntu, se crean dos subvolúmenes: @ y @home. El primero contiene archivos del sistema, el segundo son los datos del usuario. Esto es similar a particionar un disco, solo que si anteriormente una partición podía contener, por regla general, solo un objeto VFS, ahora puede haber varios objetos en una partición a la vez y se pueden anidar.

Automatización

No veo mucho sentido en crear instantáneas manualmente; simplemente puede olvidarse de hacer esto. Tres escenarios de automatización vienen a la mente:

  • escriba un script y colóquelo en rc.local;
  • escribir un script y ponerlo en cron;
  • use el comando btrfs autosnap.

Desafortunadamente, en Ubuntu 12.10, el último método no está disponible por alguna razón, por lo que prácticamente no hay otra opción como tal. Personalmente, preferí escribir un script cron, pero primero, creemos un subvolumen en el que se almacenarán nuestras instantáneas. ¿Para qué? Al menos para no ensuciar la carpeta raíz.

# mkdir /mnt/sda11 # mount /dev/sda11 /mnt/sda11 # btrfs subvol create /mnt/sda11/@snapshots # umount /mnt/sda11

Veamos qué hacen estos comandos. Dado que la raíz real del FS en este momento inaccesible (en ubuntu, el subvolumen @ se usa como raíz), tenemos que montarlo manualmente. En mi caso está en /dev/sda11. Con el tercer comando, creamos el subvolumen @snapshots, por lo que si no lo montamos o la raíz real, su contenido será inaccesible. Y ahora el guión real:

Autosnap.sh #!/bin/bash set -e VOLUME=/dev/sda11 TMP_PATH=/tmp/snapshots MOUNT_OPTS=" [correo electrónico protegido]" # Fecha y hora actual: necesaria para nombrar carpetas de instantáneas NOW="$(date +%Y%m%d%H%M)" NOW_SEC="$(date +%s)" if [ $# -ne 1 ] ; luego # Si el script se ejecuta sin argumentos, establezca el valor predeterminado en hace un día OLDER_SEC="$(date --date "1 day ago" +%s)" else # Si tenemos un argumento, asumimos que es una fecha en cualquier formato que entienda el comando date, con todas las consecuencias OLDER_SEC="$(date --date "$1" +%s)" fi # Reste la fecha deseada de la fecha actual y conviértala en minutos OLDER=$ (($NOW_SEC-$ OLDER_SEC)) OLDER_MIN=$(($OLDER/60)) [ ! -d "$(TMP_PATH)/" ] && mkdir "$(TMP_PATH)/" [ -z "`grep "$( TMP_PATH)" /proc/ mounts`" ] && mount "$(VOLUME)" "$(TMP_PATH)/" -o "$(MOUNT_OPTS)" && ( # Mount mkdir "$(TMP_PATH)/$(NOW)/" # Crear instantáneas btrfs subvol snap / "$(TMP_PATH)/$(NOW)/rootsnap" > /dev/null 2>&1 btrfs subvol snap /home "$(TMP_PATH)/$(NOW)/homesnap" > /dev/ null 2>&1 ) && ( # Busque carpetas con instantáneas anteriores a la fecha especificada para f en `find "$(TMP_PATH)" -min depth 1 -max depth 1 -type d -cmin +"$OLDER_MIN" -print0 |xargs - 0`; hacer btrfs subvol del "$(f)/rootsnap" > /dev/null 2>&1 && btrfs subvol del "$(f)/homesnap" > /dev/null 2>&1 && # y eliminar instantáneas y carpetas que las contengan rmdir "$f" hecho ) umount -l "$(TMP_PATH)" && rmdir "$(TMP_PATH)"

Este script se puede colocar donde sea conveniente (personalmente prefiero colocar esas cosas en /usr/local/bin, pero esto es cuestión de gustos) y ejecutarlo desde cron o desde rc.local. De forma predeterminada, la secuencia de comandos rota las instantáneas anteriores a un día, pero puede especificar cualquier número deseado en el formato del comando de fecha; lo más importante, no olvide incluirlas entre comillas.

Usar una imagen ISO

Para no sacar el disco con el ubunt grabado cada vez que se dañan archivos vitales, es posible agregar el elemento de arranque desde la imagen ISO en el menú de Grub, lo cual propongo hacer. Para hacer esto, necesitará una partición que no sea Btrfs (porque, por razones desconocidas, el initramfs estándar de Ubuntu ISO no quiere ver la imagen si está ubicada en la partición con el FS descrito) y manos directas. Agregue las siguientes líneas al archivo /etc/grub.d/40_custom:

Entrada de menú "Ubuntu 12.10 i386 iso" ( insmod part_msdos insmod fat # Instale la raíz desde donde obtenemos el conjunto ISO root="hd0,msdos7" # Ruta a la imagen relativa al conjunto raíz anterior isofile=/ubuntu-12.10-desktop- i386.iso # Montar como dispositivo loopback directamente en Grub loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt -- initrd (loop)/casper/initrd.lz )

y ejecute el comando para actualizar la configuración principal de Grub:

$ sudo actualizar grub

Ahora, incluso en caso de daños graves en el sistema, a menos que, por supuesto, el cargador de arranque y sus archivos se vean afectados, siempre puede arrancar desde una imagen ISO y cambiar los archivos dañados o volver a un estado anterior del sistema.


INFORMACIÓN

Si trabaja en un entorno chroot como root, entonces existe la oportunidad de escapar de allí. Una forma es usar la llamada al sistema mknod() y luego montar la raíz real. La instalación del conjunto de parches grsecurity resuelve este problema.

Los comandos Btrfs tienen formato estándar y abreviado. Por ejemplo, el comando "btrfs subvolume snapshot" se puede escribir como "btrfs su sn".

Entonces, supongamos que dejó caer el sistema y necesita restaurarlo desde una instantánea de Btrfs. Para hacer esto, inicie desde esta imagen ISO, monte la partición en la que colocó el sistema, ¡exactamente la partición, no el subvolumen! - e ingrese los siguientes comandos (por supuesto, ajustados para sus instantáneas y particiones):

# cd /mnt/sda11 # mv @ @_badroot # mv @snapshots/201302011434/rootsnap @

Lo mismo, si es necesario, hacemos con @home y reiniciamos. Si todo salió bien, puede eliminar @_badroot:

$ sudo btrfs subvol del @_badroot

Conclusión

En los sistemas *nix, hay muchas formas de protegerse o mitigar los malos experimentos. He revisado algunos de ellos. Sin embargo, vale la pena señalar que todos estos métodos están destinados principalmente a experimentadores a los que les gusta profundizar en el sistema. No son adecuados para capturar malware; son bastante fáciles de detectar, aunque ciertamente brindan cierto nivel de seguridad.

Original: Cómo crear y usar instantáneas BTRFS - Tutorial
Autor: Igor Ljubuncic
Fecha de publicación: 25 de febrero de 2012
Traducción: A. Krivoshey
Fecha de transferencia: abril de 2012

BTRFS es un sistema de archivos relativamente nuevo basado en ZFS de Sun, que trajo la mayor innovación a Unix en los últimos 25 años antes de que Oracle lo adquiriera. BTRFS todavía se considera inestable y, por lo tanto, no es adecuado para aplicaciones de producción. Sin embargo, este sistema de archivos tiene muchas características útiles que vale la pena explorar. Uno de ellos es la creación de instantáneas del sistema.
Déjame aclarar. Las instantáneas son instantáneas instantáneas del estado de un sistema. En cierto sentido, si copia un archivo y hace una copia de seguridad, está tomando una instantánea del mismo en el momento de la copia. Esto se puede hacer en cualquier lugar y en cualquier momento. Piense en un sistema de archivos que realmente pueda administrar varias copias de sus archivos dentro de su estructura y que le permita usarlos como desee. Suena interesante, investiguemos.

Introducción a BTRFS

Antes de que comencemos a profundizar, me gustaría resumir brevemente las capacidades de este sistema de archivos. BTRFS debe manejar todas las operaciones del sistema relacionadas con la administración de discos y archivos, que generalmente requieren utilidades adicionales. BTRFS proporciona desfragmentación, equilibrio de carga, reducción, crecimiento, intercambio en caliente, RAID, instantáneas, compresión, clonación y más, todo integrado en el controlador del sistema de archivos. Con otros sistemas de archivos, probablemente necesitará una variedad de otros controladores y utilidades de usuario para administrar todo este tipo de operaciones, como un desfragmentador de sistema de archivos, controladores RAID y LVM, etc.
La funcionalidad integrada significa rendimiento y facilidad de uso. Sin embargo, por el momento, BTRFS aún no se puede utilizar por completo debido a la inestabilidad y la degradación del rendimiento en comparación con otros sistemas de archivos como Ext4. Pero tiene un potencial enorme, por lo que no puede ser ignorado, sino que debe ser estudiado.
En esta guía, le mostraré cómo administrar las instantáneas. Esta es una característica súper relevante que te permitirá crear copias de seguridad archivos importantes antes de realizar cambios en ellos y luego restaurarlos si es necesario. En cierto modo, es como Restaurar sistema de Windows más un controlador de reversión a nivel de sistema de archivos. Por cierto, además de instantáneas, en este artículo también puedes encontrar algunas información útil sobre el trabajo diario con el sistema de archivos BTRFS. Las pruebas se realizaron en un sistema Fedora 16 Verne con un escritorio KDE.

Cómo administrar BTRFS

Puede usar BTRFS para el sistema de archivos raíz, con la excepción de /boot, que debe formatearse con un sistema de archivos de diario tradicional. Para simplificar, en esta guía trabajaremos con un dispositivo separado /dev/sdb1 formateado en BTRFS y utilizado cuando sea necesario. En la práctica, podría ser /home o /data, o lo que sea.

¿Entonces, que vamos a hacer?

Tomaremos /dev/sdb1 y lo montaremos. Luego crearemos algunas subsecciones. Piense en las subsecciones como árboles enraizados virtuales, ya que cada uno de ellos es una estructura de datos de árbol independiente y separada, incluso si los datos son los mismos.
A continuación se muestra la secuencia de comandos necesaria para ello. No te asustes, te explicamos cómo funcionan.

$ subvolumen btrfs create /mnt/data $ subvolumen btrfs create /mnt/data/orig $ echo "Dedoimedo is l33t" > /mnt/data/orig/file $ subvolumen btrfs snapshot /mnt/data/orig /mnt/data/backup

/dev/sdb1 está montado en /mnt. Creamos una subclave llamada data. Dentro de él, creamos otra subsección llamada orig. Y ya dentro de ella se crearán nuestros archivos. Desde el punto de vista del usuario, las subsecciones parecen directorios regulares. En otras palabras, data y data/orig son directorios.
A continuación, creamos Archivo de texto al archivo de origen llamado que contiene algo de texto. Finalmente, creamos una instantánea de la subclave orig y la llamamos copia de seguridad. Ahora tenemos una copia idéntica de la subsección original. Aquí está la prueba:

Además, para comprobar, usamos el comando lista de subvolúmenes btrfs para ver todas las subsecciones:

$ btrfs lista de subvolúmenes

Tenga en cuenta que cada subsección tiene su propio número de identificación. Como pronto veremos, esto es importante.

Vista predeterminada

Actualmente, /mnt muestra tanto el origen como la copia de seguridad de forma predeterminada (todo en datos). Podemos cambiarlo. ¿Recuerdas que antes mencioné las estructuras de árboles raíz virtuales? BTRFS le permite cambiar el directorio raíz virtual a cualquiera de las subclaves.
Por lo tanto, usar subsecciones e instantáneas simplemente significa cambiar entre diferentes jerarquías de datos. No es necesario eliminar, sobrescribir archivos ni hacer nada más. Simplemente cambia a otra subsección. Ahora veremos cómo se hace esto.
Equipo ID predeterminado del conjunto de subvolumen btrfs es todo lo que necesitamos. Estableceremos la vista predeterminada en una partición diferente, luego desmontaremos el dispositivo y lo volveremos a montar. ¡Es importante!
Ahora, si está trabajando en un sistema de archivos que no se puede desmontar porque está en uso, como /usr o /etc, debe reiniciar la computadora para que los cambios surtan efecto. Ahora se mostrará otra subsección en el árbol de directorio dado. El usuario no notará la diferencia, pero los datos en los directorios cambiarán.
Para ver realmente cómo funciona esto, editaremos el archivo en la copia de seguridad. Reemplace el texto Dedoimedo is l33t con Dedoimedo is NOT l33t.

$ echo "Dedoimedo NO es l33t" > /mnt/data/backup/file

De acuerdo, conocemos el ID de todas las subsecciones. Por lo tanto, montaremos la ID como la vista predeterminada. Esto significa que tan pronto como vuelva a montar /mnt, veremos un archivo con este contenido aquí.

$ subvolumen btrfs set-default 257 /mnt $ umount /mnt $ mount /dev/sdb1 /mnt

Ahora volvamos a poner todo:

Esto se puede hacer tantas veces como sea necesario:

Arriba, cambiamos la vista entre 257 y 260, es decir, entre orig y backup, como resultado, pudimos ver el contenido del archivo modificado. Simplemente mostramos al usuario diferentes subsecciones.
Como resultado, si queremos ver tanto el origen como la copia de seguridad en el directorio de datos, debemos restaurar la vista predeterminada de la subsección de nivel superior, es decir, datos. Tenga en cuenta que todos los datos se muestran en el directorio /mnt, ya que lo elegimos como punto de montaje. Sin embargo, puede usar cualquier otro directorio en su lugar.

Conclusión

La función de instantánea en BTRFS se implementa de manera bastante clara y su uso no es difícil. Por supuesto, debe tener cuidado de usar el árbol de datos correcto y no mezclar las cosas. Pero ahora ya conoce los comandos básicos de BTRFS y puede actuar con más confianza. En el futuro, probaremos Snapper, una interfaz BTRFS disponible en openSUSE que permite implementar la misma funcionalidad a través de una interfaz gráfica de usuario para aquellos a quienes no les gusta la línea de comandos.

Como geek, todavía tengo la costumbre de experimentar constantemente con el sistema: reconstruir, instalar kernels RC no estables, incluidas las ramas de actualización experimental. A menudo, incluso diría que rompo el sistema con demasiada frecuencia (mi mejor marca personal, 2 semanas sin reinstalar).

¿Qué significa romper? Cuando algo funciona extremadamente mal, por ejemplo, LibreOffice y Compiz que a menudo fallan y les gusta congelarse, intento reconfigurar el sistema, pero esto es bastante largo y aburrido.

Exactamente a lo que quiero llegar.

Si a alguien, como a mí, le gusta experimentar con el sistema y está cansado de restaurarlo cada vez, entonces aquí hay una opción para usted sobre cómo resolví este problema por mí mismo. Pasaré por debajo del gato.

Cómo hacerlo o bicicleta normal.

Elemento 1: CD en vivo

Post factum, partimos del hecho de que el disco está dividido en 2 particiones: /boot formateada en ext4 y /formateada en btrfs.
Grub 2 está escrito en el MBR del disco.
En consecuencia, el primer párrafo:
Por hábitos y consideraciones personales, es mucho más fácil restaurar el sistema desde la interfaz gráfica que admirar la pantalla en negro y, a veces, sin acceso a Internet, recordar y prescribir comandos. No, no creo que la consola sea mala, me encanta la consola, pero en fin, es más agradable desde la interfaz gráfica.
Acto uno
La idea no es nueva, confieso que apareció en algún lugar de Habré, pero no encontré el enlace, así que pido disculpas a la fuente de la publicación.
Copie la imagen de la distribución en vivo deseada a la carpeta /boot
sudo cp /media/timofey/boot/grub/ISO/Linux/Ubuntu/ubuntu-12.10-desktop-amd64.iso /boot/ubuntu-12.10-desktop-amd64.iso
/boot se mueve a una partición separada, no porque sea mejor, sino porque, por razones que desconozco, los LiveCD escritos en btrfs desde grub 2 no se cargan.
ahora arreglamos configuración de grub 2 por defecto, para que al actualizar grub"a, no se pierda la imagen.
sudo nano /etc/grub.d/40_custom

Y pega algo como esto ahí, después de los comentarios:
entrada de menú "Ubuntu 12.10 amd64" (set isofile=/ubuntu-12.10-desktop-amd64.iso loopback loop $isofile linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt -- initrd (loop )/casper/initrd.lz )

En realidad, se configuró a imagen y semejanza (wiki oficial de ubuntu):
/Grub2/ISOBoot
Ahora "casi" lo más importante, volvemos a generar la configuración:

sudo update-grub

Eso es todo, ahora después de reiniciar, manteniendo presionada la tecla Mayús, podemos iniciar un mini sistema con Internet y una interfaz gráfica, independientemente del estado del sistema principal.

Ítem ​​2: Imágenes

Creo que cualquier persona que haya estado familiarizada con Linux durante mucho tiempo al menos haya oído hablar de btrfs, tal vez incluso que ya se haya formado su propia opinión. En instalando ubuntu en una partición con btrfs por defecto se hace muy sabiamente, se usa el mecanismo de subpartición, y se crean 2 subsecciones, estas son @ y home (que reemplazo / y /home), respectivamente, al reinstalar el sistema correctamente, no perderemos las configuraciones. Pero ahora no se trata de eso. ¿Cómo utilizar esta preocupación para los usuarios finales? Muy simple.

Un poco de historia:
Originalmente se planeó ejecutar el script a través de rc.local, pero no se ejecutó, luego se implementó a través de cron diario, luego derroté a rc.local y apagué las instantáneas al infierno en cron.

Código de secuencia de comandos:

#!/bin/bash #Este script para la creación automática de instantáneas al inicio #Versión 1.2.9 set -e DATA="$(date +%g%m%d%k%M%S)" VOLUME=/dev/sda1 [ ! -d "/tmp/$DATA/" ] && sudo mkdir "/tmp/$DATA/" mount $VOLUME "/tmp/$DATA/" && ( [ ! -d "/tmp/$DATA/snapshots/" ] && sudo mkdir "/tmp/$DATA/snapshots/" mkdir "/tmp/$DATA/snapshots/$DATA/" && cd "/tmp/$DATA/" btrfs subvolumen snapshot ./@ ."/snapshots/$DATA /@_$(DATA)/" btrfs subvolumen snapshot ./@home ."/snapshots/$DATA/@home_$(DATA)/" [ ! -f ./snapshots/snapshots.log ] && touch ./snapshots/ snapshots.log chmod 777 ./snapshots/snapshots.log echo on_startup_$(date +%X_%x) >> ./snapshots/snapshots.log umount -l "/tmp/$DATA/" && sudo rmdir "/tmp/ $DATOS/" )

Se encuentra en /etc/btrfs_snapshot_onstartup
Agréguelo a /etc/rc.local y otorgue permisos de ejecución a ambos archivos a través de Sudo chmod +x "ruta del archivo"
Es posible que el registro de ejecución en el archivo ./snapshots/snapshots.log no funcione, entonces debe crearlo manualmente con derechos de root. Después del reinicio, él mismo recibirá los derechos necesarios.

En cualquier momento, podemos ver el estado de las instantáneas del sistema escribiendo:
gato /var/log/instantáneas.log

Todas las instantáneas se agregan a la partición con el sistema en la carpeta de instantáneas, donde se crea una carpeta para cada inicio exitoso del sistema.
Algunos podrían decir que no vale la pena tomar instantáneas al inicio. En absoluto, justifica, en un día puedo hacer un montón de cambios en el sistema y reiniciarlo cien veces, y en casos alternativos no podré volver al momento de un lanzamiento exitoso (real), pero Hace solo un día.

Opción para iniciar manualmente:
#!/bin/bash #Este script para la creación automática de instantáneas #Versión 1.2.8 set -e DATA=$(date +%g%m%d%k%M%S) ########### ####################### [ ! -d /tmp/$DATA/ ] && sudo mkdir /tmp/$DATA/ sudo mount /dev/sda2 /tmp/$DATA/ && ( ################## ############################################## # [ ! -d /tmp/$DATA/snapshots/ ] && mkdir /tmp/$DATA/snapshots/ mkdir /tmp/$DATA/snapshots/$DATA/ cd /tmp/$DATA/ sudo btrfs subvolumen snapshot ./@ . /snapshots/$DATA/@_$(DATA)/ sudo btrfs subvolumen snapshot ./@home ./snapshots/$DATA/@home_$(DATA)/ ############## # ############################################# ## ### sudo chmod 777 ./snapshots/snapshots.log sudo echo this.hands_$(date +%X_%x) >> ./snapshots/snapshots.log sudo cat ./snapshots/snapshots.log sleep 1 sudo desmontar - l /tmp/$DATA/ && sudo rmdir /tmp/$DATA/ ############################### # ################################ Sudo btrfs filesystem df / #información sobre fs ) leer salir 0

Ítem ​​3: Recuperación

Eso es lo que intentaron, mataron el sistema, ¿qué hacer?
Arrancar desde LiveCD, montar partición del sistema, a una carpeta conveniente para nosotros.
Luego, si es necesario, oculte o elimine los subvolúmenes estándar @ y home.
y reemplace el que falta con la instantánea necesaria.
En la mayoría de los casos, es suficiente reemplazar @.
nazarpc
Además, las instantáneas permiten no solo retroceder a un determinado estado del sistema, sino también extraer el archivo o la configuración necesarios, lo que también brinda cierta libertad al eliminar archivos de origen desconocido.

Punto 4: Limpieza

Las instantáneas no ocupan mucho espacio, pero con el tiempo, se puede acumular una gran cantidad de basura en el disco debido a ellas. Aquí hay una secuencia de comandos para limpiar automáticamente las carpetas de instantáneas. Esto elimina todas las instantáneas del sistema.

#!/bin/bash #Versión 0.0.9 set -e DATA=$(date +%g%m%d%k%M%S) [ ! -d "/tmp/$DATA" ] && sudo mkdir "/tmp/$DATA" sudo mount /dev/sda1 "/tmp/$DATA" && ( cd "/tmp/$DATA/snapshots/" for i in * /* sudo btrfs subvolume delete "$i" done for i in * do sudo rmdir -v "$i" done echo cleanup_$(date +%g%m%d%k%M%S) > "./snapshots .log" sudo cp "./snapshots.log" "/var/log/snapshots.log" sudo umount -l "/tmp/$DATA" && sudo rmdir "/tmp/$DATA" ) leer salir 0

Resultado

Hemos creado un sistema relativamente tolerante a fallas en el que tenemos la capacidad de restaurar rápidamente el sistema después de una falla. Al mismo tiempo, gastar un mínimo de tiempo y esfuerzo en construir un sistema de protección.
Mis propios pensamientos sobre esto
Creo que es poco probable que una solución de este tipo sea útil en grandes estructuras de TI, pero para uso doméstico pequeño debería ser ideal.

También sería genial terminar el script de limpieza para que limpie todas las instantáneas anteriores a, por ejemplo, semanas, y no todas las disponibles, honestamente lo intenté, pero no funcionó para mí. Luego, también se podría ejecutar, por ejemplo, en cron de manera predeterminada, para que se ejecute una vez al día, y luego se incluya en el script de instalación oficial de btrfs. Creo que con modificaciones menores, esta es una solución bastante universal basada en las funciones estándar de btrfs.

Sí, conozco lvm, pero no necesito una capa adicional de abstracción del hardware y poner imágenes en una sección separada tampoco es comme il faut.

UPD 1:
gracias a los usuarios

Si nota un error, seleccione un fragmento de texto y presione Ctrl + Enter
COMPARTIR: