SUSE Linux EnterpriseのLVMシンプロビジョニングにおける容量不足を安全に修正する

変更を加える前に、何を判断すべきでしょうか?

まず、シンプールがデータ領域、メタデータ領域、またはその両方を使い果たしたかどうかを判断します。この区別によって復旧計画が変わります。シンプールには、割り当てられたブロックを格納するデータ論理ボリュームと、それらの割り当てを追跡するメタデータ論理ボリュームが含まれています。シン論理ボリュームの仮想サイズはプールの物理容量を超えることがあり、これがシンプロビジョニングの目的であると同時に、オーバーコミットを監視する必要がある理由でもあります。

SUSE Linux Enterprise Server 15 SP7 のドキュメントでは、シンボリュームがオンデマンドでシンプールから領域を割り当て、その合計仮想サイズが使用可能な物理ストレージ容量を超過する可能性があることが確認されています。アップストリームの LVM シンプールに関するドキュメントには、重要な運用ルールが追加されています。それは、またはData%がMeta%100% に達する前にプールを拡張することです。詳細については、SUSE Linux Enterprise Server 15 SP7 ストレージ管理ガイドおよびLVM シンプロビジョニングマニュアルを参照してください。

1. データ領域がいっぱいなのか、それともメタデータがいっぱいなのか?

lvs一般的なディスク容量チェックに頼るのではなく、明示的な列を指定して実行してください。ファイルシステムは仮想領域に空きがあると報告する一方で、その下の物理的なシンプロビジョニングプールはほぼ枯渇している可能性があります。

lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
SUSE Linuxターミナルにlvsの出力が表示され、シンプールでデータ使用率がほぼ100%、メタ使用率が低くなっています。

キャプション:シンプールは、そのデータ%とメタ%の値によって識別する必要があります。ファイルシステムの空き容量だけでは、物理的なシンプールの枯渇はわかりません。

が100に近い場合Data%、プール内の新規書き込み用のブロックが不足しています。LVMの公式ドキュメントでは、データプールが枯渇すると書き込み時にエラーが発生する可能性があり、その結果ファイルシステムが損傷する可能性があると警告しています。がMeta%100に達した場合、メタデータ枯渇によってシンプールメタデータとファイルシステムの両方に不整合が生じる可能性があるため、より保守的な対応となります。

2. ボリュームグループにはまだ空き物理領域がありますか?

これが次の判断ポイントです。シンプールは、ボリュームグループに空きエクステントがある場合にのみ拡張できます。ただし、そのボリュームグループに物理ストレージを追加した場合は別です。

vgs -o vg_name,vg_size,vg_free
vgdisplay VG_NAME
SUSE Linuxターミナルでvgsとvgdisplayの出力を表示したところ、ボリュームグループに空きエクステントがないことがわかった。

キャプション:VGの空き容量を確認することで、単純な薄型拡張と、先にストレージを追加する必要があるケースを区別できます。

VGに十分な空き容量がある場合は、通常、シンボリュームプールを直接拡張できます。空き容量VFreeがゼロまたは小さすぎる場合は、再試行を繰り返さずlvextend、不要なシンボリュームやスナップショットを削除できるか、破棄によってブロックを解放できるか、または新しい物理ボリュームを追加できるかを判断してください。

3.復旧前にアプリケーションを停止すべきでしょうか?

ストレージプールの使用率が既に100%に達している場合は、ストレージの変更を行う前に、書き込み負荷の高いアプリケーションを停止または静止状態にしてください。これにより、ストレージ層の障害発生時や修復中に、データベース、仮想マシン、コンテナ、その他のサービスが書き込み処理を継続する可能性を低減できます。

systemctl stop YOUR_APPLICATION.service
systemctl status YOUR_APPLICATION.service
SUSE Linuxターミナルに、LVMシンプールメンテナンス前に書き込み負荷の高いアプリケーションサービスが停止したことが表示されている。

キャプション:アプリケーションを静止させることで、満杯または破損したシンプールの復旧中に発生する追加の書き込みを制限できます。

停止すべきサービスの一覧は一律ではありません。ワークロードのアーキテクチャとメンテナンス手順に従ってください。データベースや仮想マシンについては、プロセスを強制終了するのではなく、製品がサポートするシャットダウンまたは静止状態への移行方法を使用してください。

4. Data% が満杯で、VG に空き容量がある場合、プールを拡張するにはどうすればよいですか?

問題は物理的なプール容量の不足にあるため、仮想的なシンLVではなく、シンプール自体を拡張してください。例:

lvextend -L +20G VG_NAME/THIN_POOL
lvs -o lv_name,vg_name,lv_size,data_percent,metadata_percent VG_NAME/THIN_POOL
SUSE Linuxターミナルに、lvextendがLVMシンプールのサイズを増やし、その後データの割合が減少している様子が表示されている。

キャプション:薄型プールを拡張することで物理的な容量が増加します。新しいスペースが利用可能になれば、結果としてデータ使用率は低下するはずです。

lvextendのマニュアルには、シン プールの直接拡張と--poolmetadatasizeメタデータ用の個別のオプションが記載されています。実際の成長率と予約可能なストレージ容量に基づいて増分を選択してください。固定の例は、+20Gすべてのシステムに対するサイジングの推奨事項ではありません。

5. ボリュームグループに空き容量がない場合はどうすればよいでしょうか?

ストレージを追加する際は、対象のブロックデバイスが未使用であり、必要なデータが含まれていないことを確認してからにしてください。LVM物理ボリュームを作成すると、選択したデバイスにLVMメタデータが書き込まれるため、デバイス名を間違えるとデータが失われる可能性があります。

lsblk
blkid

pvcreate /dev/NEW_DEVICE
vgextend VG_NAME /dev/NEW_DEVICE
vgs -o vg_name,vg_size,vg_free
SUSE Linuxターミナルに、lsblkで検証された新しいディスクが表示され、その後pvcreateで初期化され、vgextendでボリュームグループに追加されました。

キャプション:VGがいっぱいになった場合、管理者が正しい未使用デバイスを確認した後、最初に新しい物理ストレージを追加できます。

SUSEのドキュメントによると、ボリュームグループはパーティションまたはディスク全体を追加することで拡張できます。マルチパス、SAN、RAID、暗号化、クラスタリング、またはクラウドベースのシステムでこれを行う前に、ストレージトポロジを確認してください。単純な例で示されている生ディスクが正しいデバイスレイヤーではない可能性があるためです。

6. もしMeta%が100%に達したらどうなるでしょうか?

メタデータ枯渇は、単にデータ容量を追加するのではなく、オフライン修復のケースとして扱ってください。LVM シンプール マニュアルには、メタデータ枯渇によってシンプール メタデータとファイルシステムに不整合が生じる可能性があることが明記されています。マニュアルに記載されている復旧手順は、プールを非アクティブ化し、修復を行いlvconvert --repair、メタデータを拡張してから、ファイルシステムをチェックすることです。

アプリケーションを停止した後、ファイルシステムをアンマウントするか、プールを使用してシン論理ボリュームを非アクティブ化します。その後、以下のような制御されたメンテナンス手順に従ってください。

lvchange -an VG_NAME/THIN_LV
lvconvert --repair VG_NAME/THIN_POOL
lvextend --poolmetadatasize +1G VG_NAME/THIN_POOL
SUSE Linuxターミナルに、シン論理ボリュームが非アクティブ化され、シンプールでlvconvert修復が実行され、メタデータ領域が拡張されたことが示されています。

キャプション:メタデータが満杯の状態では、単にデータエクステントを増やすだけでなく、オフラインでのシンプール修復と追加のメタデータ領域が必要になります。

図+1Gはあくまで一例です。メタデータのサイズは、プールサイズ、チャンクサイズ、スナップショットの使用状況、および割り当て動作によって異なります。修復後、システムログを確認し、I/Oエラーが発生した場合は、ファイルシステム固有のサポートされているチェックまたは修復手順を実行してください。マウントされたファイルシステムに対して、ファイルシステム修復ツールを安易に実行しないでください。

ファイルを削除することで、シンプールを即座に解放できますか?

必ずしもそうとは限りません。ファイルを削除するとファイルシステム内の空き領域は確保されますが、シン プールは破棄情報がプールに到達した場合にのみ物理的なチャンクを解放します。LVM のドキュメントにfstrimは、このようなブロックを解放できると記載されていますが、スナップショットはブロックを参照し続け、ブロックが解放されるのを妨げる可能性があります。プールが破棄を無視するように構成されている場合、trim はブロックを解放しません。

ファイルシステムとワークロードが対応している場合は、破棄動作を確認し、プールが十分に安定して動作できる状態になってからのみトリムを実行します。

lvs -o lv_name,discards VG_NAME/THIN_POOL
fstrim -v /mount/point

古いシン・スナップショットを削除すると、それらのスナップショットがブロックへの残りの参照となっている場合、ストレージ容量を解放できることがあります。スナップショットを削除する前に、バックアップと保持に関する要件を確認してください。

7. このような事態が再発しないようにするにはどうすればよいでしょうか?

LVM シンプール監視を有効にして検証し、VG に十分な空き容量がある状態で自動拡張を設定します。アップストリーム LVM はdmeventd、通常はlvm2-monitorサービスを介して、データまたはメタデータの使用量が設定されたしきい値を超えた場合に反応します。

systemctl status lvm2-monitor.service
lvs -o+seg_monitor VG_NAME/THIN_POOL
lvchange --monitor y VG_NAME/THIN_POOL

lvmconfig --type full activation/thin_pool_autoextend_threshold
lvmconfig --type full activation/thin_pool_autoextend_percent
SUSE Linuxターミナルにlvm2-monitorがアクティブであること、およびLVMシンプール自動拡張のしきい値とパーセント設定が表示されている。

キャプション:自動拡張は、アクティブな監視、適切なしきい値、およびボリュームグループ内に残っている空きエクステントに依存します。

LVMのマニュアルによると、しきい値を100に設定すると自動拡張が無効になり、有効な最小しきい値は50です。しきい値を低く設定すると、書き込み速度が非常に速いプールでもLVMが対応できる時間が長くなります。拡張率は、ポリシーがトリガーされたときにプールがどれだけ拡張されるかを決定します。

代表的な構成例は/etc/lvm/lvm.conf以下のとおりです。

activation {
    thin_pool_autoextend_threshold = 70
    thin_pool_autoextend_percent = 20
}

これらの値は例であり、普遍的なデフォルト値ではありません。書き込みバースト率、監視間隔、ストレージプロビジョニングのリードタイム、および利用可能なVG空き容量に応じて、安全マージンのサイズを設定してください。VG自体が既に満杯の場合は、自動拡張は役に立ちません。

8. 回復が本当にうまくいったことを、どうやって確認するのですか?

複数のシグナルを確認してください。プールには十分な余裕があり、VGには想定される成長に対応できる十分な空き容量があり、アプリケーションは正常に書き込みができ、ログには継続的なシンプールI/Oエラーやメタデータエラーが表示されないことを確認してください。

lvs -a -o lv_name,vg_name,lv_attr,lv_size,data_percent,metadata_percent
vgs -o vg_name,vg_size,vg_free
journalctl -u lvm2-monitor.service --since "30 minutes ago"
SUSE Linuxターミナルには、データとメタデータの割合が低下し、VGの空き容量が増え、監視ログが正常である、回復したシンプールが表示されています。

キャプション:プール使用率に余裕があり、VGが使用可能な空き容量を保持し、監視レポートで継続的なI/Oエラーがないことが確認された場合、復旧が確定します。

アプリケーションを段階的に再起動し、実際のワークロードが回復するまでシンプールを監視してください。Data%シンプールが再び異常に急速に増加する場合は、プールを拡張することで一時的な障害は解消されたものの、キャパシティプランニングの問題は解決されていない可能性があります。

いつ停止して別の復旧方法に切り替えるべきでしょうか?

観察推奨方向
Data%100近く、Meta%健康、VGには空きスペースがありますシンプールを拡張し、ワークロードの回復を確認します。
Data%100に近いVGには空きスペースがありません拡張する前に、検証済みのストレージを追加したり、ブロックを安全に再利用したり、保持されているシンボリューム/スナップショットを削減したりしてください。
Meta%100に到達しましたワークロードを静止させ、プールを非アクティブ化し、メタデータをオフラインで修復し、メタデータを拡張し、ファイルシステムを検証します。
lvconvert --repair失敗するメタデータへの書き込みを安易に行わないでください。ログとメタデータのバックアップを保存し、SUSEサポートまたは経験豊富なLVM復旧エンジニアに連絡してください。
クラスター状の薄いボリュームクラスタリソースの手順に従ってください。SUSEでは、シンプールとシンボリュームをまとめて管理し、それらが常に1つのノードにのみ割り当てられるようにする必要があります。
拡張後まもなくプールは再び満水になるスナップショットの保持、破棄動作、書き込み増加、監視しきい値、および容量計画について調査する。

避けるべきことは何ですか?

  • df -h薄いプールには物理的な空きストレージがあるとは限らないという前提を置いてはいけません。
  • 未使用であることを確実に確認するまでは、新しいデバイスを初期化しないでくださいpvcreate。
  • メタデータ枯渇を、通常のデータ枯渇と同じ問題として扱わないでください。
  • VGに空き領域を確保せずに自動拡張に頼らないでください。
  • ファイルシステムベンダーがその操作を明示的にサポートしていない限り、マウントされたファイルシステムに対してファイルシステム修復コマンドを実行しないでください。
  • 警告を抑制するためだけに監視を無効にしないでください。警告は、書き込みが失敗する前にプールを拡張できる最後の機会となる場合が多いからです。

公式および主要な参考文献

コメントを残す

UbuntuでSMARTドライブの状態をメールアラートで監視する方法

UbuntuでSMARTドライブの状態をメールアラートで監視する方法

Ubuntuにsmartmontoolsをセットアップして、ドライブの状態を監視し、SMARTメールアラートを送信します。デバイスのサポート状況を確認し、メール配信を設定し、通知をテストし、障害のトラブルシューティングを行います。

UEFIシステムにDebianをインストールした後に発生する「起動可能なデバイスが見つかりません」エラーを修正する

UEFIシステムにDebianをインストールした後に発生する「起動可能なデバイスが見つかりません」エラーを修正する

インストーラーのブートモード、EFIシステムパーティション、NVRAMエントリ、GRUB EFIファイル、セキュアブート、およびファームウェアのフォールバックを確認することで、DebianのUEFIブートの失敗を修正します。

UbuntuデスクトップでBtrfsの自動スナップショットを設定する方法

UbuntuデスクトップでBtrfsの自動スナップショットを設定する方法

Ubuntu Desktop 上で、Snapper を設定してスケジュールされた Btrfs スナップショットを取得およびクリーンアップします。まずサブボリュームのレイアウトを確認し、systemd タイマーを有効にして、保持期間が安全に設定されていることを確認してください。

SUSE Linux EnterpriseのLVMシンプロビジョニングにおける容量不足を安全に修正する

SUSE Linux EnterpriseのLVMシンプロビジョニングにおける容量不足を安全に修正する

SUSE Linux Enterprise 上で、データ枯渇とメタデータ枯渇を区別し、ストレージを拡張し、メタデータを修復し、自動拡張を有効にすることで、LVM シン プールが満杯になった場合の診断と復旧を行います。

Debian 12 CIS のセキュリティ強化ガイド:段階的なサーバーベースライン

Debian 12 CIS のセキュリティ強化ガイド:段階的なサーバーベースライン

アップデート、SSH、ファイアウォール、AppArmor、監査、検証のための安全なサーバーワークフローを使用して、Debian 12 Bookwormを最新のCIS Benchmark v2.0.0に対して強化します。

Gooroom OSにFlatpakとSnapアプリをインストールする方法

Gooroom OSにFlatpakとSnapアプリをインストールする方法

リリース情報の確認、ターミナルコマンドの使用、互換性、セキュリティ対策、アップデート、ストレージに関する実用的な比較を通して、Gooroom OSにFlatpakおよびSnapアプリをインストールする方法を説明します。

UbuntuでGPGエラー「以下の署名を検証できませんでした」を修正する方法

UbuntuでGPGエラー「以下の署名を検証できませんでした」を修正する方法

Ubuntu APT署名エラーを安全に修正します。パッケージ検証を無効にすることなく、NO_PUBKEY、EXPKEYSIG、BADSIG、クロック、リポジトリ構成の問題を特定します。

SLES 15でDM-Multipathを設定する方法:実践ガイド

SLES 15でDM-Multipathを設定する方法:実践ガイド

SLES 15 上で、安全な検出、サービス設定、最小限の multipath.conf 変更、initramfs の更新、およびパスの健全性チェックを使用して DM-Multipath を構成します。

SLES Btrfs Snapper のアップデート失敗後のロールバック:安全な復旧ガイド

SLES Btrfs Snapper のアップデート失敗後のロールバック:安全な復旧ガイド

BtrfsとSnapperを使用して、アップデート失敗後のSLESを復旧します。ロールバックオプションを比較し、スナップショットを安全にテストし、システムを復元し、リポジトリを検証します。

Pardusクライアント全体にカスタム壁紙とポリシーを展開する方法

Pardusクライアント全体にカスタム壁紙とポリシーを展開する方法

LiderahenkとAhenkを使用して、カスタムのPardus GNOME壁紙をステージングし、dconfで選択した設定をロックし、テスト済みのパイロットを通じて他のクライアントポリシーを展開します。