特定の瞬間にシステムが変更されていることをどのように検出できますか?

特定の瞬間にシステムが変更されていることをどのように検出できますか?

BTRFSを使用して、ファイルシステム全体のスナップショットを定期的に作成します。アプリケーションのインストールやシステム全体のアップグレードなど、システムが一貫性のない状態にあるときにスクリプトがスナップショットを撮らないようにする必要があります。

  1. これらの動作をどのように安定して検出できますか?

複数のインスタンスを呼び出すことができないかのように、スナップショット操作が完了する(または他のパッケージ管理ソフトウェア)ロックを作成したいとapt思いますapt install(ディスクIOによっては数秒かかることがあります)。

  1. パッケージ管理アプリケーションの実行を一時的に防ぐ方法は?

答え1

これらの動作をどのように安定して検出できますか?

/var/lib/dpkg/lockapt操作が進行中かどうかを検出できるaptロックファイル。

if (( $(sudo lsof -t /var/lib/dpkg/lock | wc -w) > 0 )) ; then
    echo "dpkg is running."
fi

パッケージ管理アプリケーションの実行を一時的に防ぐ方法は?

ロックされたファイルが開かないようにします。変更できないプロパティを設定します。

sudo chattr +i /var/lib/dpkg/lock  # "chattr -i" to release

あるいは、正直に言うと、スナップショットを実行した瞬間、その中に何があるのか​​が定義されていることに気づきます。スナップショットの作成中にストレージのパフォーマンスが低下する可能性がありますが、起動後の変更はスナップショット自体には影響しません。

実際、スナップショットはかなり軽いです。 「このデータまたはメタデータブロックを変更する場合は、コピーを作成し、現在有効なものとしてマークし、有効なものとしてマークする」だけです。有効なもののスナップショットを撮ります。そしてそれを保存しなさい。」これは、記録中のコピーファイルシステムの完全に正常な動作モードである。。違いは、スナップショットの一部ではないデータをインポートすると、コピー(およびコピーの変更)後に元のデータが空きエクステント/メタデータブロックプールに返されることです。

関連情報