Tengo un iscsi
disco de 2TB de tamaño. Hago una copia de seguridad de ese disco todas las semanas. El script de respaldo copia la imagen de todo el disco iscsi en un archivo en mi NFS. Desafortunadamente, no copia la imagen en una sola pieza, sino que la divide en trozos de 1 TB de tamaño. Entonces, en mi caso, tengo dos archivos de 1 TB (más un archivo de configuración):
-r--r----- 1 root root 1099511627776 May 10 02:12 Backup-LUN-itmp-lun-0.000
-r--r----- 1 root root 1099500093440 May 10 03:50 Backup-LUN-itmp-lun-0.001
-rw-r--r-- 1 root root 251 May 10 03:50 Backup-LUN-itmp-lun-0.conf
Ahora necesito acceder a mi copia de seguridad. Normalmente, si fuera un archivo, lo asignaría /dev/loop0
y luego lo montaría como un disco normal. Pero en mi caso, no puedo asignar dos archivos a /dev/loop0
. Una opción sería capturar esos dos archivos para crear un archivo grande, pero no tengo 2 TB de espacio adicional y, además, esta no es una buena solución de todos modos.
¿Alguien puede sugerir una solución?
ACTUALIZAR
Intenté usar dmsetup con objetivo lineal, como lo sugirió Andreas Wiese, pero aparece el siguiente error.
dmsetup create my-backup << EOF
> 0 2147483648 linear Backup-LUN-itmp-lun-0.000 0
> 2147483648 2147461120 linear Backup-LUN-itmp-lun-0.001 0
> EOF
device-mapper: reload ioctl on my-backup failed: Invalid argument
Command failed
dmesg contiene el siguiente error:
device-mapper: table: 254:0: linear: dm-linear: Device lookup failed
device-mapper: ioctl: error adding target to table
Respuesta1
Lo que desea hacer se puede lograr utilizando Device Mapper (que se configurará a través de dmsetup(8)
). Si los datos en los dos archivos son realmente unlinealvolcado de su volumen, podría crear un dispositivo DM compuesto por varios dispositivos de bloque que podría crear a partir de los archivos de los dispositivos de bucle, similar a este:
# losetup /dev/loop0 /path/to/Backup-LUN-itmp-lun-0.000
# losetup /dev/loop1 /path/to/Backup-LUN-itmp-lun-0.001
# size1=$(blockdev --getsz /dev/loop0)
# size2=$(blockdev --getsz /dev/loop1)
# dmsetup create my-backup << EOF
0 $size1 linear /dev/loop0 0
$size1 $size2 linear /dev/loop1 0
EOF
Esto lee una tabla que describe su dispositivo DM stdin
y crea un dispositivo de bloque llamado /dev/mapper/my-backup
que debería poder usar como cualquier otro dispositivo de bloque.
El formato de la tabla es
<start-sector> <length> <target> <target-args>
<start-sector>
y <length>
describir el inicio y la longitud (en sectores de 512 bytes) de una parte de su dispositivo DM, <target>
sería linear
para, bueno, un ensamblaje lineal. Los argumentos para el linear
objetivo son el dispositivo a usar y el desplazamiento dentro del dispositivo (por lo tanto, si, por ejemplo, su software de respaldo escribe algún tipo de encabezado delante del volcado, puede omitir esto), en este ejemplo es lo 0
que sería apropiado para un vertedero crudo.
Por lo tanto, el ejemplo anterior ensambla el my-backup
dispositivo de modo que la primera parte se asigna desde Backup-LUN-itmp-lun-0.000
(vía loop0
) y la segunda parte desde Backup-LUN-itmp-lun-0.000
(vía loop1
).
En caso de que su copia de seguridad no sea solo un volcado lineal (como usar dd
y dividir la salida en varios archivos), puede intentar tener suerte con los otros objetivos DM.
Editar:DM solo asigna dispositivos de bloque, no archivos, por lo que agregó la losetup
parte. Con esto también podrás utilizar blockdev --getsz
y no tendrás que preocuparte por las tallas, como muestra el ejemplo.