ZFS: ¿Elimina archivos de instantáneas?


10

Digamos que tengo un conjunto de datos con 100 instantáneas y quiero rm -rftodas las carpetas llamadas "caché" en todas las instantáneas.

En realidad, quiero liberar el espacio, no solo esconderlo en capas de instantáneas, así que hacer un clon y eliminarlo y luego tomar una nueva instantánea no parece hacer lo que quiero.

¿Alguna forma semiautomática de hacer eso? ¿Algún ajuste alrededor de la lista zfs -t instantánea, clon zfs, promoción zfs, instantánea zfs?

(publicación cruzada de /superuser/313197 ya que veo que esto tiene más cosas de ZFS)


3
No haga crosspost, pero espere a que se migre su pregunta.
Sven

Además, no estoy seguro de que esto sea posible: las instantáneas son de solo lectura, y si usa el par clonar / promover, revertirá la dependencia entre la instantánea clonada y el conjunto de datos "HEAD", que probablemente no sea lo que usted desea. querer. Vea el documento aquí: download.oracle.com/docs/cd/E19253-01/819-5461/gbcxz/index.html
Sven

Esperaría la migración, pero también parecía haber una buena cantidad de preguntas ZFS en SU, así que dudé de que se moviera automáticamente ... encaja en ambos lugares, así que seguí una meta guía sobre cómo ser amable con el cross -destino.
Tino Didriksen

@TinoDidriksen ¿podría proporcionar una referencia a esa meta publicación, por favor? Me gustaría verlo. Gracias.
nhinkle

2
La publicación a la que hizo referencia no es una política oficial. Hay una pregunta frecuente sobre MSO que explica cómo manejar las preguntas que el usuario cree que están en el tema de múltiples sitios. Para resumir, la publicación cruzada no está permitida. Si decide, después de publicar, que sería mejor en otro lugar y no ha obtenido buenas respuestas, puede marcarlo para migrarlo o puede eliminarlo y volver a preguntar, pero debe adaptar la publicación al sitio en el que está preguntando Reenvió exactamente la misma pregunta palabra por palabra sin esperar, lo que falla las pautas en ambas meta publicaciones sobre publicación cruzada.
nhinkle

Respuestas:


9

Las instantáneas son de solo lectura. Si necesita que se eliminen esas carpetas, debe eliminar toda la instantánea.

Puede hacer una copia de seguridad (con algo como tar), excluyendo las carpetas ofensivas, y luego eliminar la instantánea. Obviamente, la copia de seguridad ahora está en formato tar o lo que sea; pero al menos todavía tienes una copia de seguridad.


2
El verdadero problema con esta solución es que ahora tiene que almacenar cada bit de datos n veces de verdad, mientras que una instantánea solo almacenaría bloques modificados. De esta manera, es probable que termine con mucho más espacio del que guardó al eliminar las memorias caché de los archivos tar.
Sven

Dedupe ayudaría con eso, pero estás en lo correcto. Sin embargo, estoy bastante seguro de que no hay forma de modificar esas instantáneas de la manera que él quiere.
Chris S

Tengo tanto la compresión gzip-1 como la deducción, por lo que copiar datos idénticos solo ocupa espacio en la contabilidad. Pero, por supuesto, me gustaría evitar alguna forma de copiar.
Tino Didriksen

Dudo que en caso de múltiples archivos tar de casi la misma deducción de datos ayude mucho, ya que agregar o restar solo un byte al comienzo del archivo significaría que ningún bloque sería idéntico a otro, haciendo que la deducción sea inútil.
Sven

@SvenW Después de releer la pregunta, veo que está haciendo esto para tratar de ahorrar espacio; con lo que mi respuesta realmente no está ayudando a menos que retire los archivos tar de la computadora, de lo que podría exportar las instantáneas de todos modos. Parece que está atrapado por todas partes.
Chris S

14

Puedes probar lo siguiente:

  1. Clone la instantánea más antigua en un nuevo sistema de archivos (llámelo fsnew).
  2. Promueva el clon ( fsnew) para permitirle destruir la instantánea en la que se basa el sistema de archivos.
  3. Eliminar los archivos ofensivos.
  4. Crea una instantánea de fsnew.

Ahora, para cada instantánea después, rsynccon la --inplacebandera de la instantánea para saltear nuevos archivos que no desea. El --inplaceindicador reduce el número de escrituras y permite instantáneas más pequeñas.

  1. Crea una instantánea de fsnew.
  2. Destruye la instantánea original.

Cuando se hace esto, debe tener una instantánea fsnewque corresponda a las instantáneas del sistema de archivos original con los archivos ofensivos eliminados.

Si tiene espacio en la unidad, puede omitir el comando "destruir" hasta que su script funcione correctamente.


También deberá pasar la --deleteopción a rsync, de lo contrario perderá las eliminaciones ocurridas entre las instantáneas. De lo contrario, esta es una gran idea.
Tobia

1
  1. Destruye la instantánea original.

No puede destruir la instantánea original después de promover la acción. Solo si es así, destruya el conjunto de datos padre.

ejemplo (después de promover clon).

zfs destruyen media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

no puede destruir 'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y': la instantánea tiene clones dependientes

use '-R' para destruir los siguientes conjuntos de datos:

media1/media/backup@auto-20190531.1622-2y

media1 / media / backup

zfs destruye media1/media/backup@auto-20190531.1622-2y

zfs destruyen media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

no puede destruir 'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y': la instantánea tiene clones dependientes

use '-R' para destruir los siguientes conjuntos de datos:

media1 / media / backup

Después de esa operación "divertida", debo hacer las siguientes

instantánea de zfs media1 / media / backup @ 1

zfs enviar media1 / media / backup @ 1 | pv | zfs recibe media1 / media / backupnew

zfs destruye media1 / media / backup @ 1

zfs destroy -R media1 / media / backup

zfs renombrar media1 / media / backupnuevo media1 / media / backup

O invertir promover uno. zfs promueve media1 / media / backup y después de que elimine el clon en otro momento, porque tendrá una gran instantánea en el lugar src))

Solo rsync / backup puede ayudar aquí.


-3

Las instantáneas de ZFS para un sistema de archivos ZFS particular se pueden encontrar en el .zfs/snapshotsdirectorio en la raíz del sistema de archivos. Debería poder escribir un script que atraviese esta carpeta y rmlos archivos que necesita, que deberían eliminarlo de las instantáneas.


3
Las instantáneas de ZFS son de solo lectura. No puedes eliminar de ellos.
Sven

Mi mal, no estoy seguro de dónde tuve la impresión de que podrías :(
growse
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.