2020-05-23

Linux ディストロ探訪(14) 〜 Proxmox VE 〜

Linux とは本来 Linux カーネルのことを指しています。しかし、カーネルだけでは OS として動作させることはできません。そこで、OS に関連するツールやアプリケーションなどをまとめて、インストールし易く、インストール後にすぐ利用できるような配布形態にしたものを「ディストリビューション(略してディストロ)」と呼んでいます。

本シリーズ記事は、Linux ディストリビューションをピックアップ、仮想マシン(あるいは実機)にインストールして紹介します[不定期]。

Proxmox VE とは

Proxmox VE (Virtual Environment) はオープンソースのサーバー仮想化環境です。Debian ベースの Linux ディストロで、仮想マシンとコンテナのデプロイメントを Web ブラウザ上で管理できます。Proxmox VE は Web コンソールとコマンドラインツール、サードパーティ向けの REST API を提供しています。仮想化は、OpenVZ による Linux のコンテナ-ベースの仮想化と、KVM による完全仮想化の二つです。

Proxmox VE は Proxmox Server Solutions GmbH というドイツの企業が開発し、GNU Affero General Public License, version 3 のもとで配布しています。

Wikipedia より引用・翻訳、編集

Proxmox VE をインストールした後、他の PC から Proxmox VE の Web ベースの管理ツールへアクセスした例を示しました。

Proxmox VE の Web ベースの管理ツール

仮想環境にインストール

仮想環境を扱う OS を仮想環境 (GNOME Boxes) にインストールするのは変なのですが、動作確認のため CPU コアとストレージの割り当てを多くしてインストールしてみました。下記のサイトから、Proxmox VE 6.2 ISO Installer の Download ボタンをクリックして、proxmox-ve_6.2-1.iso をダウンロードしました。

インストールは、ほぼデフォルトのままで次のようにインストールしました。

インストール完了後、以下のように Proxmox VE が起動します。

デスクトップ向けのディストロでないため、ログインは CUI ベースです。

Web ベースの管理ツール

Proxmox VE をインストールしたサーバの IP アドレスの 8006 ポートを(本記事の仮想環境へインストールした例では https://192.168.122.111:8006/)インターネットブラウザでアクセスすると、Proxmox VE の管理ツールを利用できます。

最初にログイン画面になりますので、ルートでログインします。

有効なサブスクリプションが無いという警告が出ます。

Proxmox VE は Proxmox Server Solutions GmbH 社の製品で、サブスクリプションの料金を支払ってサポートを受けるというビジネスモデルです。無料で使う限り、ログイン後に一回表示されます。

Proxmox VE は、Debian ベースの OS 上に稼働するこの管理ツールであると言えます。UI でカバーされていない操作は、このツール上でシェルを選択して利用できる端末エミュレータ上でコマンド処理します。

Proxmox VE の Web ベースの管理ツール上のシェル

Linux コンテナのデプロイ

Proxmox VE では LXC とよばれる Linux コンテナを利用できます。

Linux コンテナ (LXC) イメージのダウンロードは、Proxmox VE の Web システムの UI で出来ないので、端末エミュレータ上でダウンロードします。ダウンロードしたイメージは Proxmox VE 上ではテンプレートとして扱われ、これをデプロイします。コマンド名は違いますが考え方は Docker と同じです。

テンプレートさえあれば、あとは Web の UI でデプロイできますが、まずは、コマンドでコンテナの起動までやってみます。

コンテナのテンプレートのダウンロードは、pveam (Proxmox VE Appliance Manager) というコマンドで操作します。

まず、次のようにコンテナ・テンプレートのデータベースを更新します。

root@pve:~# pveam update
update successful

ダウンロード可能なテンプレートを表示します。

root@pve:~# pveam available
mail            proxmox-mailgateway-6.2-standard_6.2-1_amd64.tar.gz
system          alpine-3.10-default_20190626_amd64.tar.xz
system          alpine-3.11-default_20200425_amd64.tar.xz
system          archlinux-base_20200508-1_amd64.tar.gz
system          centos-6-default_20191016_amd64.tar.xz
system          centos-7-default_20190926_amd64.tar.xz
system          centos-8-default_20191016_amd64.tar.xz
system          debian-10.0-standard_10.0-1_amd64.tar.gz
system          debian-8.0-standard_8.11-1_amd64.tar.gz
system          debian-9.0-standard_9.7-1_amd64.tar.gz
system          fedora-31-default_20191029_amd64.tar.xz
system          fedora-32-default_20200430_amd64.tar.xz
system          gentoo-current-default_20200310_amd64.tar.xz
system          opensuse-15.1-default_20190719_amd64.tar.xz
system          ubuntu-16.04-standard_16.04.5-1_amd64.tar.gz
system          ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz
system          ubuntu-19.10-standard_19.10-1_amd64.tar.gz
system          ubuntu-20.04-standard_20.04-1_amd64.tar.gz
turnkeylinux    debian-10-turnkey-b2evolution_16.0-1_amd64.tar.gz
turnkeylinux    debian-10-turnkey-cakephp_16.0-1_amd64.tar.gz
...
(途中省略)
...
turnkeylinux    debian-9-turnkey-zurmo_15.2-1_amd64.tar.gz
root@pve:~# 

ここでは Debian 10 のシステムイメージ debian-10.0-standard_10.0-1_amd64.tar.gz をダウンロードします。

root@pve:~# pveam download local debian-10.0-standard_10.0-1_amd64.tar.gz
starting template download from: http://download.proxmox.com/images/system/debian-10.0-standard_10.0-1_amd64.tar.gz
target file: /var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz
--2020-05-20 19:16:25--  http://download.proxmox.com/images/system/debian-10.0-standard_10.0-1_amd64.tar.gz
Resolving download.proxmox.com (download.proxmox.com)... 51.91.38.34, 2001:41d0:203:7470::34
Connecting to download.proxmox.com (download.proxmox.com)|51.91.38.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 230629816 (220M) [application/octet-stream]
Saving to: '/var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz.tmp.10384'

     0K ........ ........ ........ ........ ........ ........  1%  641K 5m47s
  3072K ........ ........ ........ ........ ........ ........  2%  772K 5m13s
...
(途中省略)
...
224256K ........ .......                                     100% 1.36M=2m10s

2020-05-20 19:18:35 (1.70 MB/s) - '/var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz.tmp.10384' saved [230629816/230629816]

download finished
root@pve:~#  

pveam download コマンドでダウンロードされる LXC(テンプレート)は、proxmox.com ドメインのサイトにある圧縮ファイルで、local ストレージの /var/lib/vz/template/cache/ にダウンロードされます。

ダウンロードされたコンテナ・テンプレートの一覧を表示します。

root@pve:~# pveam list local
NAME                                                         SIZE  
local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz        219.95MB

コマンド操作でコンテナをデプロイ

コンテナを操作するには pct コマンド (Tool to manage Linux Containers (LXC) on Proxmox VE) を使用します。

仮想コンテナの識別番号 VMID を 999 として、ダウンロードしたテンプレート (debian) を local-lvm へデプロイします。

root@pve:~# pct create 999 local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz -storage local-lvm
  Logical volume "vm-999-disk-0" created.
mke2fs 1.44.5 (15-Dec-2018)
Discarding device blocks: done                            
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: 33026232-926d-4308-86dc-217f5d3e1b0f
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Multiple mount protection is enabled with update interval 5 seconds.
Writing superblocks and filesystem accounting information: done 

extracting archive '/var/lib/vz/template/cache/debian-10.0-standard_10.0-1_amd64.tar.gz'
Total bytes read: 669562880 (639MiB, 127MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_dsa_key' - this may take some time ...
done: SHA256:cuNLeoIF1tNAIi6XIm57QX8KbMJUbz3SseQub8PqZm0 root@localhost
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
done: SHA256:aZ3voXWsIFma4rCrY4Vj/Y2efVq6zjpU/j6c9V4/ZwA root@localhost
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
done: SHA256:gBxNPclG5fKs+21q34U1lUaGMvQPw+RucpBI3VJP+7k root@localhost
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
done: SHA256:oEzC4qODjCwuHOF4aw4a7gPceHMt8Tk1tm12QI5C0Ec root@localhost
root@pve:~# 

ストレージの論理ボリュームの領域 local-lvm にボリュームラベル vm-999-disk-0 を付けて 4GB ほどの領域が作成され、そこへコンテナのテンプレートがデプロイされました。

デプロイしたコンテナにネットワークを設定しておきます。固定アドレスではなく DHCP を指定しました。MAC アドレスは指定をしなければ自動的に生成されるようです。

root@pve:~# pct set 999 -net0 name=eth0,bridge=vmbr0,ip=dhcp

VMID = 999 を指定して、コンテナを起動します。

root@pve:~# pct start 999

Web 左側のコンテナアイコン (CT999) が起動したのを確認して、コンテナに入ります。

root@pve:~# pct enter 999
root@CT999:~#
コンテナの起動して、コンテナに入る

コンテナから出て、ストレージの使用状況を確認すると、以下のようになっています。

root@CT999:~# exit
root@pve:~# lsblk
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                            8:0    0 120.1G  0 disk 
├─sda1                         8:1    0  1007K  0 part 
├─sda2                         8:2    0   512M  0 part 
└─sda3                         8:3    0 119.6G  0 part 
  ├─pve-swap                 253:0    0     4G  0 lvm  [SWAP]
  ├─pve-root                 253:1    0  29.8G  0 lvm  /
  ├─pve-data_tmeta           253:2    0     1G  0 lvm  
  │ └─pve-data-tpool         253:4    0    69G  0 lvm  
  │   ├─pve-data             253:5    0    69G  0 lvm  
  │   └─pve-vm--999--disk--0 253:6    0     4G  0 lvm  
  └─pve-data_tdata           253:3    0    69G  0 lvm  
    └─pve-data-tpool         253:4    0    69G  0 lvm  
      ├─pve-data             253:5    0    69G  0 lvm  
      └─pve-vm--999--disk--0 253:6    0     4G  0 lvm  
sr0                           11:0    1  1024M  0 rom  
root@pve:~# 

今回、Proxmox VE を評価するにあたって、約 120GB の領域を確保したのですが、上記の領域を単純に足し合わせると総量と合いません。この仕組みを理解できていませんので調べる必要があります。

Web UI でコンテナをデプロイ

コンテナのテンプレートがダウンロードされていれば、Web UI 上でデプロイできます。画面右上にある「CTを作成」ボタンをクリックします。

「CTを作成」ボタン

ボタンをクリックすると、ダイアログ画面が表示されますので、まずルートのパスワードを入力します。VMID やホスト名の指定もできます。

ダウンロード済みのテンプレートが選択できますので、デプロイするテンプレートを選択します。ここでは ubuntu を選択しました。

ストレージの容量、CPU のコア数、メモリ (RAM) の容量を設定します。

ネットワークは DHCP を選択しました。

DNS の設定はそのままで、最後の確認画面で完了をクリックします。

すると、テンプレートのデプロイがはじまります。

テンプレートのデプロイ

デプロイが終わると UI 上にデプロイしたコンテナが表示されます。

デプロイしたコンテナを選択し、右クリックするとプルダウンメニューが表示されますので、「開始」を選択してコンテナを起動します。

コンテナが起動してアイコンが変化したのを確認し、再び右クリックでプルダウンメニューを表示され、「コンソール」を選択します。

すると、ブラウザ上の端末エミュレータが別ウィンドウで表示されますので、root でログインできることを確認します。

端末エミュレータで デプロイした ubuntu のコンテナにログインできることを確認

仮想マシンのインストール

Linux カーネルを利用する場合はコンテナを利用した方が効率が良いのですが、Linux のカーネルを使わない OS を利用したい場合は、コンテナではなくて仮想マシンを作成します。Windows をインストールする場合、ISO ファイルを入手して、Web UI でアップロードします。

ストレージ local の内容を表示し、「アップロード」ボタンをクリックします。

Windows.iso を選択してアップロードします。

ストレージ local の内容の画面で ISO イメージの項目が追加され、アップロードされた Windows.iso が表示されます。

アップロードされた ISO ファイルは、/var/lib/vz/template/iso に格納されます。

「VMを作成」ボタンをクリックします。仮想マシンの設定は、テンプレートの代わりに ISO ファイルを選ぶ以外、コンテナをデプロイするときの設定とほぼ同じです。

仮想マシン 101 (Windows) を開始(起動)します。

アイコンが変わって開始を確認したらコンソールを開きます。

Windows 10 のインストーラーが起動します。じつに久しぶりの Windows のインストールですが、その紹介は本記事のテーマではないので、詳細は割愛します。

Windows 10 のインストール開始画面

拷問のように長い設定の後、ようやく Windows を使えるようになりました。

Windows 10 Home のデスクトップ画面

まとめ

項目 説明
ディストリビューション Proxmox VE
プロジェクトサイト https://www.proxmox.com/
デスクトップ環境 なし
対応プラットフォーム x86_64
パッケージ管理 deb, APT
日本語入力 N/A
寸評

Web ベースの管理システムで仮想環境のための Linux ディストロ、ハイパーバイザーです。大規模なクラウド環境がどのようになっているかは想像を超えるので、あれこれ言えませんが、オンプレミスな環境で強力なサーバーシステムがあれば、Proxmox VE をインストールして、そのコンピュータ資源を有効に活用できそうです。Proxmox VE ではクラスター管理もできるようになっていますが、評価できる環境がありませんでした/

雑感

7 - 8 年前、当時勤めていた会社の文書管理システムに新しいシステムを導入したときのことです。結構パワフルなサーバーを導入し、Linux の仮想システム上に、Web サーバー、アプリケーションサーバー、そしてデータベースサーバーを 3 つの Windows OS で構成しました。一台 3 役の設定です。文書管理担当の部下から、どうしてそんな面倒な構成にするのですかと尋ねられたとき、返答に詰まりました。スケーラビリティを確保するためと答えたかったのですが、それでは伝わらないと思ったからです。

IT に詳しくない部下にうまく伝えられないと上から目線で偉そうに考えていましたが、なんのなんの、自分も五十歩百歩だったに違いありません。Proxmox VE を動かしてみて勉強になったことが多々あるからです。

参考サイト

  1. ProxmoxVEのセットアップと利用 - Qiita [2018-10-18]
  2. Proxmoxインストールしようぜの巻 | エンジニアブログ [2019-05-22]

ブログランキング・にほんブログ村へ
にほんブログ村