💾

Proxmox VEマシンのSSDを交換、 ClonezillaでのクローニングとLVM拡張手順(自分用メモ)

に公開

私は開発や、デモや、信用の出来ないコードの実行はVirtual Machineで行っているんですが、古くはMacにParallelsをいれてWindowsやLinuxのVMをいれてそれを行ってきました。

しかし、Apple Silicon時代のMacはVM化と超絶的に相性が悪く、どうしようもないわ!ということで色々と諦め、VMは外に持つことになり、最近だとProxmoxにまとめておいている、という感じ。

で、昨今。

「パンッパンやがな!!」

元々そこそこ良いLinux box用として買ったPCを転用したんで、メモリ32GB、SSD512GBというスペが段々不便になってきます。「買い替え」という言葉が聞こえてきますが、正直買い替える程ではない。

と、いう、ことで。メモリとSSDを交換し、64G+2T構成にして落ち着いたのでした、めでたしめでたし…。

長い前振りだった

ということで、ProxmoxマシンでSSDを交換して容量拡張した話です。

私の構成だと、古いSSDから新しい大容量SSDへのクローニングと、その後のLVM(Logical Volume Manager)拡張等が必要です。

今回はClonezillaを使用したSSDクローニング(手順なんて画面に従うだけなので省略)と、
SSD拡張後のLVM拡張で必要なコマンド手順のメモを残します。

一応細かい説明しておくと、NVMeのストレージで、LVM/EXT4フォーマットです。

Disk暗号化はVM毎におこなっているので、Proxmox自体は暗号化されていません(じゃないと再起動が面倒じゃないですか…)

ざっくり手順

  • クローニング: Clonezillaを使用して、古いSSDから新しいSSDにProxmox VEをクローンし、システムを移行する。新しいSSDでBootすればまず勝ち。
  • LVM拡張: 新しいSSDの追加容量をLVMに組み込み、ルートボリューム(/dev/pve/root)を拡張して空き容量を確保する。

準備する物

  • ClonezillaをいれたUSBメモリ
  • 交換先の大きいSSD
    • 今回は、WDの2TB
    • 昨今、激安SSDみたいなのと比べて数千円しか差がないので、まともなメーカーを選びましょう。

Clonezillaを使用したクローン

Proxmoxのシャットダウン

まず、Proxmoxサーバーを停止します。

shutdown -h now

新しいSSDの接続

サーバを割り、古いSSDを外して新しいSSDをサーバーに接続します。

古いSSDはAmazonで2000円くらいで売ってるUSBエンクロージャーに接続してつないでおきました。


(写真は何の役にも立たない情報しかないが、このエントリ、華やかさがないので…)

一点ここでポイントとして、最近のPCは 内部ハードウェア構成を変えると画面が点くまでに数分 かかります。普段は秒で起動してたので焦って電源を切りがちですが、のんびり待ちましょう。(とはいえ、10分はかからんとおもいます)

Clonezillaの起動

Clonezillaライブメディアを挿入しサーバーを起動し、BIOS…ってもういわんよな…まあええわいわかるやろ、の、起動メニューで、起動デバイスでUSBメモリ(USB Storageとか)を選択します。このあたりは各PCで違うからPCの説明書でも見てください。

今回は作業の都合上、BootableなDeviceが3つあって混乱しますが、まあまちがえたらProxmoxが起動しちゃったり、起動しなかったり、成功するだけだと思います。

初心者モードみたいなのがあるので、今回はそれでやります。

クローンの実行

  • 「device-device」モードを選択。
    • LVMを拡張するみたいなのは全部無視、コピーだけしてもらう(後で自分でやるので)
  • ソースディスクとターゲットディスクを選択。
    • 私の環境では、ソースディスクが/dev/sda(500GB)、ターゲットディスクが/dev/nvme0n1(2TB)
    • 番号は、接続方法やらで色々かわります。SSDの型番を見ながら選ぶのがよいでしょう。

Clonezilla、TUIのわりにはなんかしばしばTUIが崩れてエラーとかWARNとかでますが、見なかったことにしてじっと待ちます。

すると最終的には実行前には、めっちゃ確認されます。

クローンを開始すると

時間がかかるので、一般的にはここで飯にでもいくわけです。

で、その所要時間がでますが、SSDの特性上、最初は「最高速」が出ます。

ここには13分とかありますが、私は約40分〜1時間かかりました。まあ、4倍くらいは見ておいた方が良いですね。

(なお、パーティーション拡張などはLVMでやる予定なので、そういったオプションは全部ナシなので最速のはずです)

起動野確認

完了後、 古いSSDを外し(絶対に重要)、サーバーを起動します。ここで起動したら、基本的には勝ち確定です。

  • クローン後、古いSSDを外さないとUUIDの重複で起動に失敗する可能性があります。

あと、LVM/ZFSだとGrubで問題があることが多いらしいです、私はそういうの含めて、 「こうきのうですごいzfs」 に良い思い出がない。

まあ、LVM/EXT4が楽ってことですよ。

ブートしました?しましたら各種のVMを起動したりして動作を確認します。

特にvz以外の仮想化でVMでWindowsとかもあって、LVを色々切ってるならそっちも確認してくださいね。


容量拡張編

クローニング後、新しいSSDの追加容量をLVMに組み込み、ルートボリュームを拡張します。私の環境では、ルートボリューム(/dev/pve/root)の使用率が100%で空き容量が不足していました。

後述だと pve-root になります。 pve-dataではないです(重要)。私の環境では一部仮想化をLVM直接接続しているものがあり、pve-rootが小さいんですよね。

ということで、それを増やす作業になります。

現在の状況の確認

まず、ディスクとLVMの構成を確認します。以下コマンドが役立ちます。

lsblk
pvdisplay
vgdisplay
lvdisplay
df -h

出力例:

  • lsblk:
    NAME                 MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    nvme1n1              259:0    0  1.8T  0 disk 
    ├─nvme1n1p1          259:1    0 1007K  0 part 
    ├─nvme1n1p2          259:2    0    1G  0 part /boot
    └─nvme1n1p3          259:3    0 475.9G  0 part 
      ├─pve-root         253:0    0   96G  0 lvm  /
      └─pve-data         253:1    0  363G  0 lvm  
    
  • df -h:
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/pve-root   96G   96G     0 100% /
    

この時点では、lsblkのサイズは増えていません。これを増やします。

パーティションの拡張

新しいSSDの未割り当て領域を利用するため、まずはパーティションを拡張します。

もしかするとパーティションテーブルの切り方によってはムズいことがあるでしょうが、私は素直に一番最後のバーティションがデータでしたので、素直に拡張できます。

lsblkをみて、増やすパーティションを間違えずに覚えておきます。

  1. growpartのインストール:
    apt update
    apt install cloud-guest-utils
    
  2. パーティションの拡張:
    growpart /dev/nvme1n1 3
    (nvme1n1p3 ではなく、 nvme1n1 の 3番、みたいな指定なので注意) 
    
    出力:
    CHANGED: partition=3 start=2099200 old: size=998115983 end=1000215182 new: size=3904929935 end=3907029134
    
  3. カーネルに反映:
    partprobe /dev/nvme1n1
    
  4. 確認:
    fdisk -l /dev/nvme1n1
    
    出力:
    Device           Start        End    Sectors  Size Type
    /dev/nvme1n1p1      34       2047       2014 1007K BIOS boot
    /dev/nvme1n1p2    2048    2099199    2097152    1G EFI System
    /dev/nvme1n1p3 2099200 3907029134 3904929935  1.8T Linux LVM
    

1.8Tってかいてあるので、成功してますね。

物理ボリューム(PV)のリサイズ

拡張したパーティションをPVに反映します。

LVMは パーティーション => Physical Volume => Volume group => Logical Volume となるので、手順が多いですね(でも、LVM使うならこうせざるをえない…)

pvresize /dev/nvme1n1p3

出力:

Physical volume "/dev/nvme1n1p3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

確認:

pvdisplay

出力:

PV Name               /dev/nvme1n1p3
VG Name               pve
PV Size               <1.82 TiB / not usable <3.07 MiB
Total PE              476675
Free PE               358932
Allocated PE          117743

はい、PV Sizeが正しく認識されました。

ボリュームグループ(VG)の確認

VGはサイズが自動的に拡張されるぽいです

vgdisplay

実録 出力:

VG Name               pve
VG Size               <1.82 TiB
Total PE              476675
Alloc PE / Size       117743 / 459.93 GiB
Free  PE / Size       358932 / <1.37 TiB

論理ボリューム(LV)の拡張

こっからは、「考えないといけない」ターンです。

私の場合は、仮想化Linuxがパンパンだったので、/dev/pve/rootを拡張したんですが、Windowsとかvzでない拡張の場合には話が変わってきますので注意。

私も増えた1TBをそのまま/dev/pve/rootに増やすのではなく、将来のためにVGに空き容量を残しておくことにしました。

ということで/dev/pve/rootを拡張します(例: 500GB追加)。

lvextend -L +500G /dev/pve/root

出力:

Size of logical volume pve/root changed from 96.00 GiB (24576 extents) to 596.00 GiB (152576 extents).
Logical volume pve/root successfully resized.

確認:

lvdisplay /dev/pve/root

出力:

LV Path                /dev/pve/root
LV Size                596.00 GiB
Current LE             152576

ファイルシステムのリサイズ

最後にext4ファイルシステムを拡張します。これでやっとdfコマンドなどから見えるDisk sizeに反映されます。

resize2fs /dev/pve/root

出力:

Filesystem at /dev/pve/root is mounted on /; on-line resizing required
old_desc_blocks = 12, new_desc_blocks = 75
The filesystem on /dev/pve/root is now 156237824 (4k) blocks long.

確認:

df -h

実録 出力:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/pve-root  587G   75G  487G  14% /

最終確認

すべての拡張が正しく反映されたことを確認します。

lsblk
pvdisplay
vgdisplay
lvdisplay
df -h

まとめ

本記事ではProxmoxサーバーの容量をふやすため、クローンを用いてSSDを交換しました。

これ系を何度もやっているとわかりますが、各々のPCで構成が異なるので、真似して動く事は無いとおもってとりかかりましょう。

とはいえ、今回古式ゆかしきLiveCDで起動したLinuxからddでコピーではなく、Clonezillaを使用したのでちょっとだけ楽しかったです。

こちらからは以上です

Discussion