¿Cómo hacer una instantánea btrfs?

22

Mi partición / home consiste en un disco físico completo. Está formateado como btrfs. Quiero tomar una foto. Estoy confundido con respecto a los nombres de subvolúmenes, en particular.

Soy consciente de que hay preguntas similares, pero cada pregunta similar parece estar haciendo algo diferente de lo que estoy preguntando (y son más antiguas, lo que significa que probablemente estén desactualizadas, dado el rápido desarrollo de btrfs). Por ejemplo, la respuesta a esta pregunta aparentemente no es la respuesta a mi pregunta porque mi partición / home es un volumen separado y la página de manual para btrfs muestra un comando diferente para crear instantáneas ahora.

Otro problema similar, no hay una solución sólida .
alguien más tan confundido como yo sobre los problemas de nombres

Mi pregunta:

Comienzo simple: ¿es este el comando correcto para tomar una instantánea simple de mi partición de inicio?

btrfs subvolume snapshot /home/@home /home/@home_snapshot_20120421

Me volví muy valiente y lo probé y no funciona. El error es error accessing /home/@home. Como se muestra a continuación, @home aparece en la lista.

Obviamente estoy confundido con los nombres de subvolúmenes. ¿Necesito usarlos para crear instantáneas? Algunos ejemplos muestran /homecómo tomar instantáneas del hogar como parámetro de origen, pero según los ejemplos de volúmenes raíz, me parece que necesito usarlo /home/@home.

¿Funcionaría este comando? Y si no, ¿por qué?

btrfs subvolume snapshot /home /home/@home_snapshot_20120421

¿Es @solo una convención de nomenclatura? ¿Tiene algún sentido?

Aquí hay algunos resultados que pueden ser relevantes:

btrfs subvolume list /home
ID 256 top level 5 path @home

No estoy seguro de lo que eso significa exactamente. Cuando lo intento btrfs device scan, aparece un error (por ejemplo, no puedo escanear el dispositivo / dev / sda1). Mi sistema de archivos no tiene ningún error. Todo esta bien.

Aquí están mis particiones. En respuesta a una respuesta, no / home no es mi única partición btrfs.

/dev/sda1: (boot partition) TYPE="ext2"  
/dev/sda2: (root partition) TYPE="btrfs"  
/dev/sdb1: (home partition) TYPE="btrfs"  
/dev/sdc1: (shared partition) TYPE="btrfs"  
/dev/sdc2: TYPE="swap"  
MountainX para Monica Cellio
fuente
la comunidad decidirá sobre el repositorio ...
One Zero

Respuestas:

19

¿Cuál es el comando correcto para crear una instantánea de mi partición de inicio en Ubuntu 12.04?

Dado que home está en una partición btrfs y está montado como / home, el comando correcto es:

sudo btrfs subvolume snapshot /home/ /home/<any_name_you_choose_for_the_snapshot>

Aquí están mis resultados:

Antes de ejecutar el comando hoy:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936

El comando:

$ sudo btrfs subvolume snapshot /home/ /home/@snapshot_20120611_1307  
Create a snapshot of '/home/' in '/home/@snapshot_20120611_1307'

Después de ejecutar el comando hoy:

$ btrfs subvolume list /home  
ID 256 top level 5 path @home  
ID 257 top level 5 path @home/@snapshot_20120521_1936  
ID 258 top level 5 path @home/@snapshot_20120611_1307

El único problema con este método es que las instantáneas aparecen cuando estás (lista) / inicio.

El Wiki de la comunidad Ubuntu se ha actualizado con una solución para esto. Aquí está:

Cómo trabajar con instantáneas en el diseño de Ubuntu

Para trabajar con instantáneas de / o / home en el diseño de Ubuntu, es muy conveniente montar el sistema de archivos btrfs en una ubicación separada y trabajar desde la parte superior del árbol btrfs, en lugar de hacerlo desde los subvolúmenes montados. <- esa es la solución. Lamentablemente, no es conveniente .

sudo mount /dev/sdX# /mnt

Para crear una instantánea, use la misma sintaxis que usé anteriormente:

sudo btrfs subvolume snapshot /mnt/@ /mnt/@_snapshot

Esto creará una instantánea del subvolumen @ llamado @_snapshot ubicado también en la parte superior del árbol btrfs. Dado que está en la parte superior del árbol, no se mostrará al enumerar archivos en un volumen montado.

Para volver a una instantánea, simplemente necesita cambiar su nombre al nombre que ubuntu monta y reiniciar. Aquí se explica cómo cambiar el nombre:

sudo mv /mnt/@ /mnt/@_badroot
sudo mv /mnt/@_snapshot /mnt/@

Para eliminar una instantánea use:

sudo btrfs subvolume delete /mnt/@_badroot

Las instantáneas de btrfs son subvolúmenes en sí mismas y son independientes, eliminando el subvolumen @ antiguo de esta manera está bien, siempre que tengamos un reemplazo.

NOTA: El comando btrfs-tools set-defaultromperá el diseño de Ubuntu.

MountainX para Monica Cellio
fuente
Entonces estás ahí ¿verdad? Ahora debería poder montar sus instantáneas.
turbo
En realidad no he intentado montarlos todavía. Y acabo de ver la respuesta de psusi sobre el paquete apt-btrfs-snapshot. Eso se ve interesante, ¿verdad?
MountainX para Monica Cellio
Sí, lo mencioné en el tercer punto también. Lo siento tenía que señalarlo;)
turbo
Te sugiero que marques tu solución como respuesta entonces.
turbo
Hay una solución para las instantáneas que aparecen cuando estás / home. Estoy editando mi respuesta con la información ahora.
MountainX para Monica Cellio
11

Ok primero lo primero:

  • El nombre del subvolumen que está viendo es @homecomo se muestra en btrfs subvolume list /home. Está montado adentro /home. @home es el nombre del subvolumen también tiene el ID 256, por lo que lo más probable es que solo su / home esté formateado como btrfs.

  • Ahora, para crear una instantánea de @home, debe emitir: sudo btrfs subvolume snapshot /home/ /home/@home_snapshot_20120421

  • El subvolumen puede tener cualquier nombre. @ Es la convención de Ubuntu en el momento de la instalación. (Si usa apt-btrfs-snapshotel subvolumen raíz, debe llamarse por @cierto.) El wiki de la comunidad recomienda encarecidamente mantenerlo @como raíz y @homecomo hogar ya que está montado de esa manera. Esto es especialmente importante si desea revertir: NO debe usar btrfs subvolume set-default (no la sintaxis resaltada por propósito).

  • Para btrfs device scanque tengas que usar sudo.

  • Para eliminar un subvolumen, puede usar sudo btrfs subvolume delete @home_snapshot_20120421

Todos los comandos btrfs pueden abreviarse siempre y cuando no son ambiguas, así que por ejemplo sudo btrfs device scanse puede truncar a sudo btrfs d s, sudo btrfs dev sco cualquier otra cosa.

Espero que eso haya respondido a sus preguntas. Existen algunas herramientas para realizar copias de seguridad periódicas, btrfs-snapshot-rotacion es un ejemplo. Úselos con precaución ya que ninguno de ellos es realmente maduro o ha ganado suficiente tracción, es decir, es muy posible que contengan errores.

turbo
fuente
Me sale un error:$ sudo btrfs subvolume snapshot @home home/@snapshot_20120611_1257 ERROR: error accessing '@home'
MountainX para Monica Cellio
Además, btrfs device scantodavía no tuve éxito . Cualquier variante, incluido el uso, sudoda el error "ERROR: no se puede escanear el dispositivo '/ dev / sdX'" donde X es cualquier nombre válido como a, a1, b, etc.
MountainX para Monica Cellio
@OneZero: Todavía no tengo todas las respuestas, pero descubrí el comando correcto para crear una instantánea de mi partición de inicio en Ubuntu 12.04 y proporcioné esa información como respuesta a continuación.
MountainX para Monica Cellio
eso es realmente extraño. Lo comprobé con mi partición btrfs btrfs sub snap @ /mnt/randomy funcionó para mí. Por otra parte, estaba en / mnt donde se montó @. Perdón por la confusión
turbo
@turbo: Tu respuesta fue muy útil. No es necesario disculparse por intentar ayudar. Incluso las páginas de Ubuntu no son claras. Lo resolveremos todo eventualmente.
MountainX para Monica Cellio
10

Instalar el apt-btrfs-snapshotpaquete, y utilizar sus subcomandos list, snapshot, deletey set-default.

Este es un script que envuelve los btrfscomandos de nivel inferior . Funciona montando primero el sistema de archivos raíz btrfs en alguna parte. Con eso quiero decir la raíz real, en oposición al /@subvolumen que normalmente se monta como /. En otras palabras, es necesario ejecutar mount /dev/sda1 /mntpara que puedas ver las subcaudales que se enumeran como /mnt/@, /mnt/@homey cualquier otro que haya creado. Desde allí puede btrfs subvolume snapshot /mnt/@home @snapshot-today, lo que creará una instantánea de /@homenamed /@snapshot-today. Compare esto con la ejecución btrfs subvolume snapshot /home /home/@snapshot_today, que en su lugar crea la instantánea como hijo de /@home, por lo tanto, aparece cuando usted ls /homey su nombre real es /@home/@snapshot-today.

Hacer retroceder una instantánea es sólo una simple operación de cambio de nombre: mv /mnt/@home @backup ; mv /mnt/@snapshot-today @home. La próxima vez que arranque, cuando se va a montar /@homeen /home, encontrará la instantánea.

Es un poco complicado entenderlo porque debes tener en cuenta la diferencia entre cómo btrfs ve las cosas y cómo el kernel ve las cosas, lo cual está influenciado por las opciones de montaje (el subvol = argumento específicamente).

psusi
fuente