Fedora LiveUSB クリエーターで作成されたディスク イメージをプログラムでマウントしようとしていますが、いくつかの問題が発生しています。
私が聞いたところによると、LVM スナップショットをホスト システムの外部にマウントするのは非常に困難です。「元の」イメージと永続的なスナップショットの両方を持っているので、技術的には可能だと思いました。
何か案は?
Fedora LiveUSB クリエーターで作成されたディスク イメージをプログラムでマウントしようとしていますが、いくつかの問題が発生しています。
私が聞いたところによると、LVM スナップショットをホスト システムの外部にマウントするのは非常に困難です。「元の」イメージと永続的なスナップショットの両方を持っているので、技術的には可能だと思いました。
何か案は?
LVM のボリュームの概念は、いくつかの md ドライブを一緒に叩いても動作するのと同じ意味で、システム間で移植できません。各 LVM vg には一意の識別子があり、システムの LVM がそれを受け入れるようにする必要があります。言い換えれば、LVM はボリューム グループの存在を「伝える」まで、そのボリューム グループを「見る」ことができません。それができれば、そこからは順風満帆なはずです。
スナップショットは、記録されたセクター デルタで構成されます。その通りです。元のスナップショットとスナップショットの両方が存在することで、スナップショットを表示できるはずです。スナップショット自体は機能しません。
これを実現するには lvm ツールセットが必要なだけなので、これを一緒にスクリプト化することを考えていると思います。
旅のお手伝いをするささやかなお別れの贈り物。/usr/sbin/lvms として保存し、所有者を root/root、chmod 755 として設定し、それを使用して指先を保存します。
#!/bin/sh
#lvms command - consolidates all LVM views into a single command
pvscan 1>/dev/null 2>/dev/null
vgscan 1>/dev/null 2>/dev/null
lvscan 1>/dev/null 2>/dev/null
echo "Available Physical Volumes - - - - - - -"
pvs
echo
echo "Active Volume Groups - - - - - - - - - -"
vgs
echo
echo "Active Logical Volumes - - - - - - - - -"
lvs
Fedora LiveCD または LiveUSB のオペレーティング システム イメージは、埋め込まれたルート ファイルシステムを公開した後にマウントできます。Fedora の livecd-tools パッケージは、Python を使用してこれを行うユーティリティliveimage-mountを提供します。
Fedora LiveOS イメージ( Live CD/USB オペレーティング システム) テクノロジは、Device-mapper スナップショット ターゲットを使用して、ルート ファイルシステムの圧縮された読み取り専用コピーを作成し、ブート時に読み取り/書き込みマウントに使用できるようにします。または永続的なコピー オン ライト オーバーレイ。すべてはdmsetup
コマンドで達成されます。LVM は関与しません (ただし、Device-mapper テクノロジも使用します)。
LiveOS がインストールされたデバイスには、そのベース ファイルシステムに /LiveOS/ ディレクトリがあります。/LiveOS/squashfs.img ファイルには、圧縮された (読み取り専用の) ext4 ファイルシステムが含まれています。このファイルシステムには、それ自体に /LiveOS/ ディレクトリが含まれており、その中に ext3fs.img という名前のファイルに分散ルート ファイルシステムが含まれています。そのため、squashfs.img ファイルにはディレクトリとファイル /LiveOS/ext3fs.img が含まれており、このファイル自体にルート ファイルシステム (/bin、/boot、/dev、/etc、/home など) が含まれています。
デバイスに永続的なオーバーレイ ファイルがインストールされている場合、
/LiveOS/overlay-<LABEL>-<UUID>として保存されます。LABEL
と UUID は、次のコマンドで報告されるデバイス パーティション ラベルと UUID です。
lsblk -o LABEL,UUID
プログラムでできる
ルートファイルシステムのサイズを 512 バイトのセクター単位で決定し、
blockdev --getsz <basefs_loop>
次に、この一般的なコマンドで Device-mapper スナップショット ターゲットをセットアップします。
dmsetup create <target_name> --table "0 <size> snapshot <basefs_loop> <overlay_loop> P 8"
最後に、Device-mapper ターゲットを目的のマウント ポイントにマウントします。
mount /dev/mapper/<target_name> <mount point>