proxmox-admin について
Proxmox VE ホストをコマンドラインで管理するためのスキルです。管理者が Proxmox のコマンドラインツールを使い、KVM 仮想マシン、LXC コンテナー、ストレージ、ネットワーク、クラスターや一般的な問題に対応できます。
主な機能
- 01`qm` による KVM 仮想マシン管理
- 02`pct` による LXC コンテナー管理
- 03ストレージとネットワークの設定
- 04Proxmox クラスターの管理
- 05スクリプトによるゲスト構築
- 06ホストとゲストの問題調査
活用シーン
- 01仮想マシンの作成と設定
- 02LXC コンテナーの展開と保守
- 03ゲスト構築の自動化
- 04移行やストレージのエラー調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bastos/ skills --skill proxmox-adminインストール後、Claude Code で/proxmox-adminを入力して読み込まれたか確認します。
同梱ファイルreferences/cli-cheat-sheet.md
詳細
Proxmox VE の管理
概要
Proxmox VE は、Debian を基盤とするサーバー仮想化プラットフォームです。Web UI または CLI ツールを使用して、KVM 仮想マシンと LXC コンテナを管理します。このスキルでは、qm(VM)、pct(コンテナ)、およびサポートユーティリティを使用した CLI ベースの管理について説明します。
使用する場面
- KVM 仮想マシンの作成、設定、管理
- LXC コンテナの起動と管理
- Proxmox のストレージ、ネットワーク、クラスタの管理
- スクリプトによる VM/コンテナのプロビジョニングの自動化
- Proxmox ホストまたはゲストの問題のトラブルシューティング
対象外: Web UI のみを使用するワークフロー(以下の CLI 相当のコマンドを使用してください)。
クイックリファレンス
| ツール | 用途 |
|---|---|
qm | KVM 仮想マシンの管理 |
pct | LXC コンテナの管理 |
pvesm | ストレージの管理 |
pvecm | クラスタの管理 |
pveam | アプライアンス/テンプレートのダウンロード管理 |
pvesh | シェルから Proxmox API にアクセス |
pveperf | ホストのパフォーマンスをベンチマーク |
qm による VM 管理
VM の作成
# Create a VM with ID 100
qm create 100 --name my-vm --memory 2048 --cores 2 --sockets 1 \
--net0 virtio,bridge=vmbr0 --ostype l26
# Create with SCSI disk on local-lvm storage (32GB)
qm create 100 --name my-vm --memory 4096 --cores 4 \
--scsi0 local-lvm:32 --scsihw virtio-scsi-pci \
--net0 virtio,bridge=vmbr0 --ostype l26
# Attach an ISO for installation
qm set 100 --cdrom local:iso/ubuntu-22.04-server.iso --boot order=ide2
VM のライフサイクル
| コマンド | 用途 |
|---|---|
qm start <vmid> | VM を起動 |
qm shutdown <vmid> | ACPI による正常なシャットダウン |
qm stop <vmid> | 強制停止(電源を引き抜くような動作) |
qm reboot <vmid> | VM を再起動 |
qm reset <vmid> | ハードリセット |
qm suspend <vmid> | RAM にサスペンド |
qm resume <vmid> | サスペンドから再開 |
qm destroy <vmid> | VM とそのディスクを削除 |
qm destroy <vmid> --purge | VM、ディスク、および関連するすべてのジョブを削除 |
VM の設定
# Show current config
qm config 100
# Modify hardware
qm set 100 --memory 8192
qm set 100 --cores 4
qm set 100 --balloon 2048 # dynamic memory (min)
qm set 100 --cpu cputype=host # pass through host CPU features
qm set 100 --machine q35 # use Q35 chipset (for PCIe passthrough)
# Add/resize disks
qm set 100 --scsi1 local-lvm:50 # add 50GB disk
qm disk resize 100 scsi0 +20G # grow existing disk by 20GB
# Networking
qm set 100 --net0 virtio,bridge=vmbr0,tag=10 # VLAN tagged
qm set 100 --net1 virtio,bridge=vmbr1 # second NIC
# Cloud-init (for automated provisioning)
qm set 100 --ide2 local-lvm:cloudinit
qm set 100 --ciuser admin --cipassword 'secret'
qm set 100 --ipconfig0 ip=10.0.0.50/24,gw=10.0.0.1
qm set 100 --sshkeys ~/.ssh/authorized_keys
qm set 100 --boot order=scsi0
# EFI / UEFI boot
qm set 100 --bios ovmf --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1
# Serial console (headless)
qm set 100 --serial0 socket --vga serial0
# PCI passthrough (GPU, NIC, etc.)
qm set 100 --hostpci0 0000:01:00.0,pcie=1
スナップショットとクローン
# Create a snapshot
qm snapshot 100 before-upgrade --description "Before kernel upgrade"
# List snapshots
qm listsnapshot 100
# Rollback to snapshot
qm rollback 100 before-upgrade
# Delete a snapshot
qm delsnapshot 100 before-upgrade
# Clone a VM (full copy)
qm clone 100 101 --name cloned-vm --full
# Clone as linked clone (shares base disk, faster)
qm clone 100 101 --name linked-vm
テンプレート
# Convert VM to template (irreversible)
qm template 100
# Create VM from template (linked clone)
qm clone 100 200 --name from-template
# Create VM from template (full clone)
qm clone 100 200 --name from-template --full
移行
# Online migration to another node
qm migrate 100 node2 --online
# Offline migration
qm migrate 100 node2
モニタリング
# VM status
qm status 100
# List all VMs
qm list
# Show running processes/agent info
qm agent 100 ping
qm agent 100 get-osinfo
# Monitor interface (QEMU monitor)
qm monitor 100
pct によるコンテナ管理
コンテナの作成
# Download a template first
pveam update
pveam available --section system
pveam download local debian-12-standard_12.2-1_amd64.tar.zst
# Create container with ID 200
pct create 200 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \
--hostname my-ct --memory 1024 --cores 2 \
--rootfs local-lvm:8 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp \
--password 'secret' --unprivileged 1
# Create with static IP
pct create 201 local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \
--hostname web-ct --memory 2048 --cores 2 \
--rootfs local-lvm:16 \
--net0 name=eth0,bridge=vmbr0,ip=10.0.0.51/24,gw=10.0.0.1 \
--nameserver 1.1.1.1 --unprivileged 1
コンテナのライフサイクル
| コマンド | 用途 |
|---|---|
pct start <ctid> | コンテナを起動 |
pct shutdown <ctid> | 正常にシャットダウン |
pct stop <ctid> | 強制停止 |
pct reboot <ctid> | コンテナを再起動 |
pct destroy <ctid> | コンテナとそのボリュームを削除 |
pct enter <ctid> | コンテナ内のシェルを開く |
pct exec <ctid> -- <cmd> | コンテナ内でコマンドを実行 |
pct console <ctid> | コンテナのコンソールに接続 |
コンテナの設定
# Show config
pct config 200
# Modify resources
pct set 200 --memory 4096
pct set 200 --cores 4
pct set 200 --swap 1024
# Add mount point (bind mount from host)
pct set 200 --mp0 /mnt/data,mp=/data
# Add additional storage volume
pct set 200 --mp1 local-lvm:50,mp=/var/lib/data
# Networking
pct set 200 --net0 name=eth0,bridge=vmbr0,ip=10.0.0.60/24,gw=10.0.0.1
pct set 200 --net1 name=eth1,bridge=vmbr1,ip=dhcp
# Features (nesting, FUSE, NFS)
pct set 200 --features nesting=1
pct set 200 --features nesting=1,fuse=1,mount=nfs
# DNS
pct set 200 --nameserver "1.1.1.1 8.8.8.8" --searchdomain example.com
# Start on boot
pct set 200 --onboot 1 --startup order=1,up=30
コンテナのスナップショットとクローン
# Snapshot
pct snapshot 200 clean-install
# Rollback
pct rollback 200 clean-install
# Clone
pct clone 200 201 --hostname cloned-ct --full
ストレージ管理
# List storage pools
pvesm status
# List content of a storage
pvesm list local
pvesm list local-lvm
# Add storage (examples)
pvesm add dir my-backup --path /mnt/backup --content backup
pvesm add nfs nfs-share --server 10.0.0.5 --export /exports/pve --content images,vztmpl
pvesm add lvm my-lvm --vgname my-vg --content rootdir,images
pvesm add zfspool my-zfs --pool rpool/data --content rootdir,images
# Remove storage
pvesm remove my-backup
# Download ISO
wget -P /var/lib/vz/template/iso/ https://example.com/image.iso
ネットワーク
# List network interfaces
cat /etc/network/interfaces
# Common bridge configuration (in /etc/network/interfaces)
# auto vmbr0
# iface vmbr0 inet static
# address 10.0.0.1/24
# bridge-ports eno1
# bridge-stp off
# bridge-fd 0
# Apply network changes
ifreload -a
クラスタ管理
# Create a new cluster
pvecm create my-cluster
# Join an existing cluster
pvecm add 10.0.0.1
# Show cluster status
pvecm status
# List cluster nodes
pvecm nodes
# Remove a node (run from a remaining node)
pvecm delnode nodename
# Check quorum
pvecm expected 1 # force quorum (dangerous, single-node recovery only)
ファイアウォール
# Start or stop the node firewall service
pve-firewall start
pve-firewall stop
pve-firewall status
# Enable datacenter firewall in /etc/pve/firewall/cluster.fw
# [OPTIONS]
# enable: 1
#
# Manage rules via config files. Add remote management allow rules before
# enabling restrictive policies.
# Datacenter: /etc/pve/firewall/cluster.fw
# Node: /etc/pve/nodes/<node>/host.fw
# VM/CT: /etc/pve/firewall/<vmid>.fw
バックアップと復元
# Backup a VM
vzdump 100 --storage local --mode snapshot --compress zstd
# Backup a container
vzdump 200 --storage local --mode stop --compress zstd
# Backup all guests
vzdump --all --storage local --mode snapshot --compress zstd --mailto [email protected]
# Restore a VM
qmrestore /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst 100
# Restore a container
pct restore 200 /var/lib/vz/dump/vzdump-lxc-200-*.tar.zst
# Restore to different storage
qmrestore /var/lib/vz/dump/vzdump-qemu-100-*.vma.zst 100 --storage local-lvm
よくあるプロビジョニングパターン
テンプレートからの Cloud-Init VM
# 1. Create base VM and install OS, then convert to template
qm template 9000
# 2. Clone and customize with cloud-init
qm clone 9000 110 --name web-server --full
qm set 110 --ciuser deploy --sshkeys ~/.ssh/authorized_keys
qm set 110 --ipconfig0 ip=10.0.0.110/24,gw=10.0.0.1
qm set 110 --nameserver 1.1.1.1
qm start 110
コンテナの一括作成
for i in $(seq 1 5); do
CTID=$((300 + i))
pct create $CTID local:vztmpl/debian-12-standard_12.2-1_amd64.tar.zst \
--hostname "worker-${i}" --memory 1024 --cores 2 \
--rootfs local-lvm:8 \
--net0 name=eth0,bridge=vmbr0,ip=10.0.0.$((60 + i))/24,gw=10.0.0.1 \
--unprivileged 1 --start 1
done
ディスクイメージのインポート(例:クラウドイメージ)
# Download a cloud image
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
# Import to a VM
qm disk import 100 jammy-server-cloudimg-amd64.img local-lvm
# Attach the imported disk
qm set 100 --scsi0 local-lvm:vm-100-disk-0
qm set 100 --boot order=scsi0
トラブルシューティング
| 問題 | 解決方法 |
|---|---|
| VM が起動しない | qm config <vmid> を確認し、pvesm status でストレージが存在することを確認します |
| 「TASK ERROR: can't lock file」 | まず実行中のタスクを確認します。タスクが終了している場合は、qm unlock <vmid> または pct unlock <ctid> を使用します |
| コンテナにネットワーク接続がない | ブリッジが存在することを brctl show で確認し、ファイアウォールルールを確認します |
| ストレージのディスク容量が不足している | pvesm status で使用状況を確認し、LVM シンプールについては lvs を確認します |
| クラスタのクォーラムが失われた | 稼働中のノードで pvecm expected 1 を実行します(単一ノードの復旧時のみ) |
| 移行に失敗する | 同じ CPU タイプであることを確認するか、ライブ移行で --online を使用します。ノード間のネットワークも確認します |
| ロックエラーでバックアップに失敗する | qm unlock <vmid> または pct unlock <ctid> を使用します |
| VM のディスク I/O が遅い | --scsihw virtio-scsi-single と、,iothread=1,discard=on などのディスクオプションを使用します |
| ゲストエージェントが応答しない | VM に qemu-guest-agent をインストールし、qm set <vmid> --agent 1 で有効にします |
便利なパス
| パス | 内容 |
|---|---|
/etc/pve/ | クラスター全体の設定(pmxcfs) |
/etc/pve/qemu-server/<vmid>.conf | VM 設定ファイル |
/etc/pve/lxc/<ctid>.conf | コンテナー設定ファイル |
/etc/pve/storage.cfg | ストレージ定義 |
/etc/pve/nodes/ | ノードごとの設定 |
/var/lib/vz/ | デフォルトのローカルストレージルート |
/var/lib/vz/template/iso/ | ISO イメージ |
/var/lib/vz/template/cache/ | コンテナーテンプレート |
/var/lib/vz/dump/ | バックアップファイル |
/var/log/pve/tasks/ | タスクログ |
コメント
Markdown 対応