私は何よりも、仮想Windows 10システムを実行しているLinuxサーバー(まだUbuntu 18.04)を維持しています。 Windows システムは論理ボリュームをハードドライブとして使用します。
私の目標は、ホストシステムディレクトリツリーにLVのスナップショットをマウントし、rsyncを使用してファイルをバックアップすることによってWindowsシステム上のいくつかのファイルをバックアップすることです(Linuxホストシステム上のファイルと同じように)。
私がやっていることは次のとおりです。
# create snapshot
lvcreate --snapshot --size 20G --name windows-backup /dev/vg0/vmachine
# mount snapshot
mkdir /mnt/windows-backup
mount --read-only /dev/vg0/windows-backup /mnt/windows-backup
ただし、次のエラーメッセージでインストールが失敗します。
mount: /mnt/windows-backup: wrong fs type, bad option, bad superblock on /dev/mapper/vg0-windows--backup, missing codepage or helper program, or other error.
LVが複数のパーティションで構成され、次の出力に従うためと考えられます。fdisk -l /dev/vg0/windows-backup
Disk /dev/vg0/windows-backup: 250 GiB, 268435456000 bytes, 524288000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x6be134ed
Device Boot Start End Sectors Size Id Type
/dev/vg0/windows-backup1 * 2048 1126399 1124352 549M 7 HPFS/NTFS/exFAT
/dev/vg0/windows-backup2 1126400 523192612 522066213 249G 7 HPFS/NTFS/exFAT
/dev/vg0/windows-backup3 523194368 524283903 1089536 532M 27 Hidden NTFS WinRE
それから試しました。
mount --read-only --types ntfs -o offset=$((512*1126400)) /dev/vg0/windows-backup /mnt/windows-backup
これで予想した結果が出ました。
私の質問:インストールする前にパーティションオフセットを手動で見つける必要がある手順、つまり私の場合は、バックアップスクリプトの値をハードコードする手順を何らかの方法で削除できますか?結局のところ、このオフセットが変更される可能性が理論的に可能ですか? !最大のNTFSパーティションのオフセットを動的に決定する方法はありますか?
私を少し混乱させるもう1つのことは、mount
LVのパーティションレイアウトを同時に変更せずに、最初のコマンド(オフセットなし、指定されたファイルシステムタイプなし)がしばらく前に機能したことです。なぜそんなことですか?
答え1
デバイス自体をマウントしようとしないでください。デバイス上のパーティションをマウントする必要があります。ここでの問題は、システムがデフォルトでLVでパーティションを検出しようとしないことです(通常、LVでパーティションを作成することは意味がありません)。したがって、まず次のようにパーティションテーブルを読み込むようにカーネルに指示する必要があります。コマンドを発行しpartprobe /dev/vg0/windows-backup
てマウントします/dev/vg0/windows-backup2
。
いくつかの仮想化ツールを使用する方が良いアイデアかもしれません。libguestfsデータにアクセスするには、LVに直接アクセスするよりもデータに直接アクセスする方が安全かどうかはわかりません。 (しかし、私は仮想化の専門家でもなくスナップショットもあるので大丈夫だと思います。)