lvextendなどのループバックデバイスでサポートされているLVM操作を実行するには、後続の同期呼び出しが必要ですか?

lvextendなどのループバックデバイスでサポートされているLVM操作を実行するには、後続の同期呼び出しが必要ですか?
  • test.ddオペレーティングシステムのイメージファイルとLVM管理パーティションがあります。
  • オペレーティングシステムのイメージファイルサイズを拡張し、パーティションサイズを完全に拡張します。
  • ループバックデバイスを作成しtest.dd、LVMが管理するパーティションデバイスを取得します。/dev/loop0p1
  • たとえば、LVM VG(ボリュームグループ)を有効にし、その中に論理ボリューム(LV)を取得します。/dev/dm-1
  • PV(物理ボリューム)サイズを大きくするpvresize /dev/loop0p1
  • LV(論理ボリューム)サイズを大きくするlvextend -l +100%FREE /dev/dm-1

test.dd私の質問は(実際には単一:他の場所に安全にコピーする方法です):

  1. test.dd安全にコピーできますか? (ディスクの内容が物理的にフラッシュされたかどうかは気にせず、test.ddディスクやファイルバッファから別の場所にコピーしたいです。)
  2. それともsyncコピーする前に電話する必要がありますか?
  3. または、コピーする前にループバックデバイスを取り外す必要がありますか?
  4. 何があってもループバックデバイスを取り外せない場合はどうなりますか?

sync編集:時には非常に遅くノンストップになるため、コマンド呼び出しを消そうとします(例:kill -9は機能しません)。

編集:私がこの質問をしたのは、他の状況でループバックデバイスとサポートファイルに関するデータの不一致の問題が発生したためです。

編集:スクリプトを使用してvgchange --activate n --select vg_uuid=$LVM_VG_UUIDボリュームグループを無効にしてからlosetup --detach /dev/loop0コピーudevadm settleを開始しますtest.dd。この問題を経験することなくtest.ddをコピーできるかどうか疑問に思います。

編集:コマンドを間違った順序で入力して申し訳ありません。実際にはvgchange --activate n --select vg_uuid=$LVM_VG_UUID-> udevadm settle-> losetup --detach /dev/loop0-> cp test.dd... です。

答え1

私は本当に知らない。私はできます。希望必要はありませんが、LVMについてはよくわかりません。

LVM VG全体とループデバイスを使用する他のすべてを無効にすると安全になることを願っています。

Linux管理では、エンディングが重複するのが一般的な標準のようですsync

umountキャッシュリフレッシュ、fdiskダイヤルfsyncなど

さらに、Linuxではブロックデバイスの最後のユーザがデバイスを閉じたときの暗黙的な同期。したがって、すべてを無効にした場合、実際に実行を避けるわけではありませんsync /dev/loop0:-).

しかし、私は過度の暴露を避けることsync、つまりすべての機器を洗い流すことには確かに同意します。

すべての機能を無効にするには、ループデバイスも簡単に無効にできます。これにより、ループデバイスを開いたまま何も見逃しておらず、まだ記録されていないデータがあるかどうかを確認できます。

これがあなたを幸せにするならば、カーネルはこのLVMメタデータを書いたり読んだりしません。すべてがユーザースペースにあります。そして、書き込みストレージキャッシュを保持するLVMデーモンはありません。 LVメタデータキャッシュを読みます。

関連情報