アップデート

アップデート

2TB のディスクがありますiscsi。毎週そのディスクのバックアップを取っています。バックアップ スクリプトは、iscsi ディスク全体のイメージを NFS 上のファイルにコピーします。残念ながら、イメージは 1 つにコピーされず、1TB のサイズのチャンクに分割されます。そのため、私の場合は 1TB のファイルが 2 つ (および 1 つの構成ファイル) あります。

-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

ここで、バックアップにアクセスする必要があります。通常、1 つのファイルであれば、 にマップして/dev/loop0、通常のディスクとしてマウントします。しかし、私の場合、2 つのファイルを にマップすることはできません/dev/loop0。1 つのオプションは、これら 2 つのファイルを cat して 1 つの大きなファイルを作成することですが、余分な 2TB のスペースはなく、いずれにしてもこれは良い解決策ではありません。

誰か解決策を提案してもらえますか?

アップデート

Andreas Wiese の提案に従って、線形ターゲットで dmsetup を使用しようとしましたが、次のエラーが発生します。

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 には次のエラーが含まれています:

device-mapper: table: 254:0: linear: dm-linear: Device lookup failed
device-mapper: ioctl: error adding target to table

答え1

あなたがやりたいことは、デバイスマッパー( で設定dmsetup(8))を使って実現できます。2つのファイルのデータが実際には線形ボリュームをダンプすると、loop-devices のファイルから作成できる複数のブロック デバイスで構成された DM デバイスを作成できます。次のようになります。

# 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

これは、DM デバイスを記述するテーブルを読み取り、他のブロック デバイスと同様に使用できる とstdin呼ばれるブロック デバイスを作成します。/dev/mapper/my-backup

表の形式は

<start-sector> <length> <target> <target-args>

<start-sector><length>DM デバイスの一部の開始と長さ (512 バイトのセクター単位) を記述すると、線形アセンブリに<target>なりますlinear。ターゲットの引数は、linear使用するデバイスとデバイス内のオフセットです (したがって、たとえばバックアップ ソフトウェアがダンプの前に何らかのヘッダーを書き込む場合は、これをスキップできます)。この例では、0raw ダンプに適しています。

したがって、上記の例では、最初の部分が( 経由) からマップされ、2 番目の部分が( 経由)からmy-backupマップされるようにデバイスが組み立てられます。Backup-LUN-itmp-lun-0.000loop0Backup-LUN-itmp-lun-0.000loop1

バックアップが単なる線形ダンプではない場合 (dd出力を複数のファイルに分割して使用するなど)、他の DM ターゲットでうまくいくかどうか試してみることができます。

編集:DM はファイルではなくブロック デバイスのみをマップするため、losetup部分を追加しました。これにより、 も使用できblockdev --getsz、例に示すようにサイズを気にする必要がなくなります。

関連情報