LVM2 を搭載したリムーバブル (ホットプラグ、USB など) ストレージ デバイスを適切に取り外し (削除)、後で接続 (挿入) するにはどうすればよいですか?
私は見つけたこのメモ
取り外す(プラグを抜く、取り出す):
lvchange -an /dev/your_volume_group_name
vgexport -a
挿入(プラグ):
vgimport -a
lvchange -ay /dev/your_volume_group_name
-a
しかし、「すべて」オプションを使用するのはやり過ぎではないかと疑問に思います。
もう一つのことは、状況によってはそのようなシナリオで使用する必要があるのではないかということですvgscan
pvscan
。自動化されたソリューションを考えています。
答え1
VG をエクスポートする必要はありません。VG は、あるシステムから別のシステムに移行するために使用されます。
vgchange -an vgname
取り外すボリューム グループ上のすべての論理ボリュームを非アクティブ化する だけです。
その後、デバイスを再度接続すると、vgchange -ay vgname
vgname VG 内のすべての論理ボリュームが再アクティブ化され、LV をマウントして使用できるようになります。
デバイスの認識はハードウェアやカーネル モジュールなどに依存しますが、最新のキットでは動作するはずです。
答え2
私は次のようなスクリプトを使用します:
- ボリュームグループ内のすべてのファイルシステムをアンマウントするvg_name
- vg_name 内のすべてのファイルシステムがアンマウントされている場合は、VG を使用不可に設定します。
- メモリ バッファーをディスクに同期することを忘れないでください...
- sispmctlは外付けディスクの電源を切るために使用されます
#!/bin/bash echo "ファイルシステムをアンマウントしています" マウント | grep vg_name && { マウント | grep vg_name | cut -d' ' -f3 | xargs umount -v } マウント | grep vg_name || { echo "VG の設定が利用できません" /sbin/vgchange -an /dev/vg_name && { echo "ディスクを同期" 同期; 同期 && { echo "ディスクの電源を切る" /usr/local/bin/sispmctl -D 01:01:4b:54:e5 -f 1 } } }
ディスクが接続されると、適切なモジュールがシステム上で利用可能になるとカーネルはそれを自動的に検出します(これは通常、メインストリームのディストリビューションの場合です)。
エクスポート/インポートは、PV/VG/LV が変更され、VG が別のシステムに接続されている場合にのみ必要です。その場合、vgexport は vgchange の後に実行されます。