¿Cómo borrar el espacio no utilizado con ceros? (Estoy pidiendo una herramienta para el sistema de archivos btrfs )
Estoy buscando algo más inteligente que
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
Al igual que FSArchiver está buscando "espacio usado" e ignora el sitio no utilizado, pero opuesto.
Propósito: Me gustaría comprimir las imágenes de partición, por lo que se recomienda llenar el espacio no utilizado con ceros.
Por cierto. Para ext3, ext4: Limpie el espacio no utilizado con ceros (ext3, ext4) . Aquí pido btrfs
Aclaración de "algoritmo más inteligente": como veo que "algoritmo más inteligente" genera confusión, aquí finalmente decidí agregar una línea al respecto. Estimado lector, piense en el sistema de archivos como estructura de datos. Para fines de simplificación, imaginemos el mapa de retención de árbol rojo-negro autobalanceado, que se usa como clave de asociación-> matriz de valores, donde los valores son enteros. El objetivo es borrar todos los valores negativos con ceros. El algoritmo "no inteligente" iterará sobre él y agregará pares clave: valor al nuevo mapa (con eventuales alteraciones negativas a cero). El algoritmo inteligente solo detectará los lugares donde se almacenan los valores negativos y los eliminará en el lugar .
fuente
sfill
sugerencia ? Parece que no requiere extX.truncate
y / ofallocate
Respuestas:
Aquí hay un cambio modificado y mucho más extendido de mi respuesta a su pregunta anterior:
sfill
desde elsecure-delete
paquete puedes hacer lo que quieras.A diferencia de zerofree (que funciona solo con los sistemas de archivos ext2, ext3 y ext4), sfill funcionará con cualquier sistema de archivos.
p.ej
La página de inicio sfill / secure-delete ahora parece haberse desvanecido, pero está empaquetada para debian y ubuntu. probablemente otras distribuciones también. si necesita código fuente, puede encontrarlo en los archivos de Debian si no puede encontrarlo en ningún otro lugar.
NOTA: sfill solo funciona en un sistema de archivos montado. Si no llena los archivos de imagen desde el sistema host en lugar de hacerlo desde una VM, deberá montar la imagen fs en el host. El método exacto varía según el tipo de archivo de imagen que sea (por ejemplo, qcow2 o raw).
Montar imágenes 'en bruto' es fácil y directo. Simplemente use
kpartx
el archivo de imagen para crear un dispositivo de bucle invertido y / dev / mapper / entradas para cada partición se pueden montar individualmente.Aquí hay una secuencia de comandos parcial modificada a partir de un fragmento de la secuencia de comandos que utilizo para montar imágenes de disco duro de red libre de arranque (utilizado para actualizaciones de BIOS en máquinas donde flashrom no funcionará):
NOTA: se supone que cada partición de la imagen se puede montar. Es cierto en mi caso de uso (una imagen HD de Freedos con una partición). no es cierto si una de las particiones es, digamos, espacio de intercambio. Detectar tales particiones y usar dd para poner a cero la partición de intercambio se deja como ejercicio para el lector :)
Este método, o una variante del mismo, también debería funcionar para volúmenes LVM.
Si sus imágenes son qcow, entonces puede usar la
qemu-nbd
herramienta delqemu-utils
paquete, que presentará el archivo de imagen y sus particiones como dispositivos de bloqueo de red, por ejemplo / dev / nbd0 / dev / ndb0p1, que puede usarse de manera similar a / dispositivos dev / mapper anteriores.Es posible que sea más fácil y menos complicado (pero más lento) usar
qemu-img
para convertir de qcow a raw, usar el método para raw anterior y luego convertir la imagen raw modificada de nuevo a qcow2 comprimido. Esto probablemente dará como resultado imágenes un poco más pequeñas que el uso de qemu-nbd, ya que comprimirá la nueva imagen qcow2 mientras se crea.fuente
La forma correcta e "inteligente" de limpiar el espacio libre es usando:
Use esto en un sistema de archivos montado.
Es importante tener en cuenta que esto no tiene ventajas de seguridad. Si desea limpiar su disco por seguridad, haga una copia de seguridad de sus archivos, ponga a cero todo el disco con un comando como "triturar" y luego restaure sus archivos.
Sin embargo, la solución funciona bien si su disco es una provisión delgada en un sistema de archivos disperso y desea recuperar el espacio no utilizado.
fuente