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メモリ
- https://clonezilla.org/downloads.php
- 自分は
alternative stable - 20250303-oracular
のISOを、Etcherで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をみて、増やすパーティションを間違えずに覚えておきます。
-
growpartのインストール:
apt update apt install cloud-guest-utils
-
パーティションの拡張:出力:
growpart /dev/nvme1n1 3 (nvme1n1p3 ではなく、 nvme1n1 の 3番、みたいな指定なので注意)
CHANGED: partition=3 start=2099200 old: size=998115983 end=1000215182 new: size=3904929935 end=3907029134
-
カーネルに反映:
partprobe /dev/nvme1n1
-
確認:出力:
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