突然ですが、あなたは破壊神ですか?もっと具体的に言うとOS、よく壊してませんか?壊してなくとも 取り返しのつかないとこまでいじってOSの再インストールをしたことはありますか? かく言う私は何か新しいものを見つけてはいじり倒し、その度に不具合を起こしてはOSを入れ直してい ました。毎回この作業に数時間を取られる日々に破壊神の私はうんざりしていました。 もうこんな作業は嫌だ!もっと手軽にOSの破壊と創造をしたい!と思って色々な仮想環境を模索してい ました。そして最終的に辿り着いたのがこの「 Proxmox」です。 この記事ではそんなProxmoxについて説明と使用方法を書いていきます。 尚、かなり多機能なのでいくつかの記事に分かれます。ご了承下さい。 今回は仮想環境、およびProxmoxについての説明をしていきます。
目次
てかProxmoxって何?
まず仮想環境って何?
Proxmoxについて説明する前に、まず「仮想環境」とは理解しておく必要があります。 ついでに類似しているソフトウェア(Dockerとか)との違いも説明します。 知っとるわ!て人は次の記事に進んでください。
仮想環境のざっくりとした説明
仮想環境とは、めっちゃざっくり言うと「パソコンの中にパソコンを作る」ことです。
…は?と思った方にもう少し詳しく説明します。 普段使うパソコンは下の図のように、ハードディスクやSSD全体を使用して、OSやデータを格納しています。
この時、もしOSを変にいじってOSが逝った場合、外部からはアクセスが不可能となるのでパソコンを直接操作してOSを修復するなり、データを取り出して再度環境を構築するなりしなければいけません。 場合によってはデータが全部おじゃんになる可能性もあります。
けどこれは流石に面倒だし、外出先にいた時はサーバーがある場所まで戻らない限り修復ができませ ん。
しかも場合によっては一から構築し直す必要があります。 そこで仮想環境(今回はProxmox)の出番です。 仮想環境はハードディスクやSSDの中にハイパーバイザーと呼ばれるソフトウェアを用意して、その中 にOSをインストールします。これを仮想マシンと言います。(場合によっては違う場合もある。)
この方式をとることによって、この中のOSをいじってOSが逝ってもProxmoxが動いているので引き続き 外部から操作できますし、仮想マシン同士で隔離されているため、被害は逝ったものの中身だけにとど まります。 これで他のサービスには影響を与えず、外部からフルリモートで環境を再構築することができます。
、、、とまあざっくり説明するとこんな感じです。そしてProxmoxはこれらの操作をチョー簡単にして くれるソフトウェアってことです。
仮想環境には今回紹介するProxmoxだけでなく、VMware ESXiやHyper-Vなどがあります。 だけどVMware ESXiはなんか設定だるいしHyper-VはWindows10が起動してないとダメらしい。というわ けで筆者はProxmoxに逃げた訳ですね。
LXCコンテナについて
ここからはもう少し踏み込んだ内容について触れていきます。 Proxmoxは「LXCコンテナ」という、ざっくり説明すると元々入っているOSの根幹部分を借りて仮想マ シンを作ることができます。下の図みたいな感じです。
普通に仮想マシンを作ると、OSのイメージファイルから作ることになるので容量はデカいわ、二重でOS 動かしてるようなもんだから重くなるわで、いくつかデメリットが存在します。下の図で言うと黄色く 塗られている分無駄に重くなる訳ですね。
Proxmoxは普通に仮想マシンを作ることもできますが、Linux系OSを使う場合はLXCコンテナを使用した 方が圧倒的に効率的です。
Dockerとかとは何が違うの?
ここで同じような方式のDockerとかkubernetesとはどう違うの?ってなりますよね。
一言で言うと
LXCコンテナは非常に軽い仮想マシンを作るために使われる。既存のネットワークから固有のIPアドレスを新たに割り当てることができる。
対して
Dockerやkubernetesはアプリケーションを使用するためにコンテナを作り、使用する。ネットワークは 分離され、ポート転送によって外部と通信する。
ここが大きな違いです。素人なりに細かく説明します。
Dockerやkubernetesはそれらを動かしているサーバーがあって、その下にコンテナがぶら下がってい ます。下の図はネットワークの視点として見た時、このように黄色い枠と赤い枠でネットワークが分離 されています。 外部からコンテナにアクセスする場合、必ず真ん中のサーバーを通して初めて通信することができま す。なのでこの時コンテナが80番のポートを使用している場合、他のコンテナやサーバーは80番ポート を使用することができません。 コンテナにおいては、厳密に言うと使えないこともないですが、少なくとも使用中のポートをそのまま 使用することはできません。
個人的にこの仕様が好きではなくて、テスト的にWebサーバー立てようとしたらエラー吐かれるってい うのがストレスなんですよね。 まあこれはDockerをロクに扱えてない筆者が悪いだけなんですけども。 このような仕様なのでDockerなどは、アプリケーションを使用するためにコンテナが作られるんです ね。
対してLXCコンテナはコンテナに対して新たにIPアドレスが割り当てられます。そしてそのIPアドレス はLXCコンテナを動かしているサーバーと同一ネットワーク内にあるので、コンテナにアクセスするに はそのIPアドレスに直接アクセスすれば良い訳ですね。 図にすると下のようになり、ネットワーク的には同じネットワークに複数のサーバーがあるように見え る訳です。これにより、どのLXCコンテナも全てのポートを使用することができます。
ProxmoxはこのLXCコンテナをWebコンソール上にて構築することができるので、フルリモートからお手 軽かつ、素早く仮想マシンを立てることができるのです。
まとめ
以上の説明を簡単にまとめると
・仮想環境、仮想マシンとはパソコンの中にパソコンを作ること
・Proxmoxは仮想マシンを簡単に作ることができるツール
・Dockerとは少し利用目的、仕様が違ってくる。
こんなところでしょうか。かなり説明が拙いかもしれませんが、追加でググるなりそれっぽく理解する なりしてみて下さい。次回は実際にProxmoxを使用して、仮想マシンの作成方法を説明していきます。
とても分かりやすい説明と図です、ありがとうございます。
ありがとうございます。そのコメントが非常に励みになります!