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
使用するデバイスとデバイス内のオフセットです (したがって、たとえばバックアップ ソフトウェアがダンプの前に何らかのヘッダーを書き込む場合は、これをスキップできます)。この例では、0
raw ダンプに適しています。
したがって、上記の例では、最初の部分が( 経由) からマップされ、2 番目の部分が( 経由)からmy-backup
マップされるようにデバイスが組み立てられます。Backup-LUN-itmp-lun-0.000
loop0
Backup-LUN-itmp-lun-0.000
loop1
バックアップが単なる線形ダンプではない場合 (dd
出力を複数のファイルに分割して使用するなど)、他の DM ターゲットでうまくいくかどうか試してみることができます。
編集:DM はファイルではなくブロック デバイスのみをマップするため、losetup
部分を追加しました。これにより、 も使用できblockdev --getsz
、例に示すようにサイズを気にする必要がなくなります。