タグ: KVM

失敗記録:LVM物理ボリューム縮小とディスク切り詰めの挑戦。

注意事項

  • これは失敗した手順です。
  • なのでやってはいけないやつです。
  • あくまでも私の失敗したときの記録として残します。

何をやりたかったのか?

「KVMで作成したディスク(LVM)を500→200程度に切り詰めようとしたところ失敗した」。

環境

  • ホスト
    • Rocky Linux 8.6
    • KVM
  • ゲスト
    • Rocy Linux 9.7
    • シックボリュームで構築

1. ゲストOS内でのデータ整理

まず、ディスク容量を空けるために /home を削除・再作成し、使用量を削減しました。

  • 状態: 物理ボリューム(PV)500GB に対し、中身の合計(Root+Home+Swap)を 170GB 程度まで圧縮。

2. データの「前詰め」作業(pvmove)

LVMの「末尾」にあるデータを物理的にディスクの「先頭」へ移動させました。

  • コマンド: sudo pvmove --alloc anywhere /dev/vda2
  • 結果: pvdisplay -m にて、使用中セグメントが 0 ~ 73153 PE(約180GB圏内)に固まり、それ以降が FREE になったことを確認。

3. PVリサイズの試行(pvresize)

管理情報を 180GB に書き換えようと試みました。

  • コマンド:
sudo pvresize --setphysicalvolumesize 180G /dev/vda2
  • 結果: cannot resize to 46079 extents as later ones are allocated により失敗。
  • 考察: LVMの内部メタデータや、目に見えない微細なフラグが末尾に残っていた可能性。

4. ホスト側での物理コピー(dd による強行突破)

「データは前に寄せた」という事実に基づき、ホスト側から物理的に180GB 分だけを切り出す作戦を敢行。

  • 手順:
  1. ホスト側で新LV(180GB)を作成。
  2. dd コマンドで旧LVから 180GB 分を抽出コピー。
  3. lvrename を使い、VMが参照するターゲットを 180GB の新ディスクにすり替え。

5. 最終結果

  • 起動: 成功。
  • ログイン: 失敗。
  • 状況: virsh console 等で応答なし。
  • 結論: LVMおよびファイルシステムの整合性において、180GB という境界線で「管理情報の断裂」が発生。

教訓

  • LVMの末尾は聖域: pvmove でデータを寄せても、LVM自身の管理領域(Metadata Area)の整合性を保ったまま物理サイズを削るのは、OS稼働中や単純な dd では極めて困難である。
  • 切り詰めるなら「外から」より「中から」: 今回のように外部から dd で削る手法は、パーティションテーブルとLVMヘッダの整合性が 1 バイトでも狂うとシステム停止に直結する。

やはり、この手のリサイズは「新たにサーバを作成し(リサイズした上で)データを流し込む」という地道な主だが一番です。

Cockpitを用いたVMインストールメモ。

機会があったのでメモです。

前提

  • LinuxサーバにKVMがインストールされていること。
  • ISOイメージをサーバ内に格納していること。
  • Cockpit(Webブラウザ経由でLinux各種操作が行えるサービス)がインストールされていること。

1. ホスト側での事前準備(ターミナル操作)

仮想マシン用の論理ボリューム(LV)を作成します。

  • ボリュームグループ(VM)内に500GBのLV(ホスト名)を作成
sudo lvcreate -L 500G -n vm_host VMdisk

2. Cockpit ストレージプールの作成

予め作成されていたcockpitにブラウザからログインします。

  1. 「仮想マシン」 > 「ストレージプール」 を開く。
  2. 「ストレージプールの作成」 をクリック。
    • 名前: VM
    • タイプ: LVM ボリュームグループ
    • ターゲットパス: VM (※/dev/を含まないVG名のみを入力)
  3. 「作成」 をクリック。

3. 仮想マシンの作成と詳細設定

  1. 「仮想マシン」 > 「VMの作成」 をクリック。
  2. 基本情報: 名前、インストールタイプ、メモリ(8GB)を入力し、一旦作成する。
  3. CPUの編集:
    • vCPU最大値: 4 / vCPU数: 4
    • ソケット: 2 / ソケットごとのコア: 2 / コアあたりのスレッド: 1
  4. ディスク(LVM)の割り当て:
    • 既存のディスクがあれば編集、または追加。
    • ソース: 既存のストレージ
    • パス: /dev/VMdisk/vm_host を選択。
  5. インストールメディア(ISO)の追加:
    • 「ディスクの追加」 でホスト上のISOファイルを選択。
  6. ブート順序の変更:
    • cdrom を追加し、最上位(1番目)にドラッグして移動。
  7. ネットワークの設定:
    • インターフェース: Bridge to LAN を選択。

4. インストールの実行

  1. 「インストール開始」 をクリック。
  2. 「コンソール」 タブを開き、OSのセットアップを進める。

Powered by WordPress & Theme by Anders Norén