論理ボリュームのマウント時のパーティションオフセット

論理ボリュームのマウント時のパーティションオフセット

私は何よりも、仮想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つのことは、mountLVのパーティションレイアウトを同時に変更せずに、最初のコマンド(オフセットなし、指定されたファイルシステムタイプなし)がしばらく前に機能したことです。なぜそんなことですか?

ベストアンサー1

デバイス自体をマウントしようとしないでください。デバイス上のパーティションをマウントする必要があります。ここでの問題は、システムがデフォルトでLVでパーティションを検出しようとしないことです(通常、LVでパーティションを作成することは意味がありません)。したがって、まず次のようにパーティションテーブルを読み込むようにカーネルに指示する必要があります。コマンドを発行しpartprobe /dev/vg0/windows-backupてマウントします/dev/vg0/windows-backup2

いくつかの仮想化ツールを使用する方が良いアイデアかもしれません。libguestfsデータにアクセスするには、LVに直接アクセスするよりもデータに直接アクセスする方が安全かどうかはわかりません。 (しかし、私は仮想化の専門家でもなくスナップショットもあるので大丈夫だと思います。)

おすすめ記事