富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

自宅サーバー構築でスキルアップしよう【初心者向け】

こんにちは。日本仮想化技術株式会社の宮原です。

普段はニフクラエンジニアミートアップの企画や運営をしていますが、こちらのブログでも執筆することになりました。 今後、ミートアップで取り上げたテーマに関することや、その他皆さんのスキルアップに役立ちそうなことをブログでも執筆したりする予定です。

さて、今回は2月のミートアップで取り上げた自宅サーバー構築について書いてみようと思います。

blog.clouddirect.jp.fujitsu.com

ミートアップの様子は動画でも視聴できます。合わせてご覧ください。

youtu.be

なぜ自宅サーバー構築なのか

クラウドなのに、なぜ自宅サーバー構築なのでしょうか。

一番の理由は、クラウドサービスはWeb画面での操作やAPI操作などで簡単にシステム構築が可能になっているため、その裏側の技術が見えにくくなっています。もちろん、ある程度までは技術を知らなくてもシステム構築は可能ですが、より高度な使い方をするためには基盤となっている技術を理解しておく必要があります。

従来はそのようなスキルは基盤構築作業という形で習得したものですが、今ではクラウドファーストになってしまって、業務上で実際にサーバーのハードウェアなどに触れる機会がなくなってしまっています。

ならば、自宅サーバー構築という形でスキルを高めよう、というわけです。

どんなスキルが身につけられるのか

では、自宅サーバー構築でどんなスキルが身につけられるでしょうか。

ハードウェアのスキル

クラウドになったことで最も触れることが少なくなったのはハードウェアです。ハードウェアに関するスキルを身につけるには、自宅サーバー構築で実際にハードウェアを入手してみる、触ってみるのが一番の近道です。

ネットワークのスキル

以前はサーバー系エンジニアとネットワーク系エンジニアの領域は別々となっていましたが、クラウドになることで融合が進み、今ではインフラエンジニアはサーバーとネットワーク、両方のスキルが必要となっています。

最低限のネットワークスキルを身につけるためにも、自宅サーバー構築は重要です。また、よりしっかりとネットワークを学ぶということで、3月には自宅ネットワークをテーマにしたミートアップを開催しました。

blog.clouddirect.jp.fujitsu.com

こちらについては別エントリーで深掘りしてみようと思います。

OSや仮想化、コンテナなどのインフラソフトウェアのスキル

ハードウェアを動かすインフラ系ソフトウェアのスキルも重要です。OSはもちろん、VMwareなどの仮想化ソフトウェア、そしてコンテナのスキルをしっかりと身につけておきたいところです。

運用のスキル

システムを継続的に運用していくには、システムの稼働状況の監視やバックアップなどのスキルが必要となります。監視やバックアップは基本的なスキルだけでなく、いろいろなソフトウェアの使い方を学ぶ必要があります。

トラブルシューティングのスキル

トラブルシューティングは基礎をしっかりと習得して、何が異常なのかを把握することや、解決策を調べたりするスキルが必要となります。

自動化

構築や運用などを手作業で行うのではなく、自動化することも徐々に当たり前になりつつありますが、様々なツールが提供されており、これらの使い方の習得も必要となりつつあります。

ハードウェア選び

自宅サーバー構築でまず考えないといけないのが、サーバーとして使用するハードウェア選びです。100人いれば100通りのハードウェア選びがあるぐらい、絶対的な正解がありません。

購入するコストや電気代、置く場所など、自分の条件に合わせて選ぶ必要がありますが、大まかな選択肢は以下の通りです。

ノートPCやデスクトップPC

今既に使用しているノートPCやデスクトップPCをそのままサーバー環境に流用する方法です。

メモリが潤沢にあるなら、VirtualBoxなどの仮想マシンソフトウェアを使って手軽に始められます。自宅サーバー未経験であれば、この方法でまずはスタートしてみるとよいでしょう。

PCを自作する

ハードウェアについてしっかり学びたいのであれば、PC自作をすることをおすすめします。

PC自作といってもパーツ等の選定の幅が広いので、どのような構成にするか検討したり、実際に入手して組み立てることでかなりハードウェアについての学びが得られるでしょう。

最近ではAIや機械学習などをさせるためにGPUもしっかり載せるPCを組み立てることが多いようです。その場合、消費電力や電気代に注意が必要です。

ミニPC(Intel NUCなど)

置く場所を取らない、という点で自宅サーバーを構築する人たちに人気がある選択肢です。

コンパクトな筐体を採用しているため、購入時に選択できるのがメモリやストレージの容量だけになるので、あまり考える必要がありません。Intel NUCと呼ばれるシリーズは特に自宅に何台も置いて環境を構築する人たちに人気があります。

www.intel.co.jp

サーバー専用機

タワー型やラックマウント型など、業務で使用されるサーバー専用機を導入する方法です。

サイズが大きい、音がうるさい、電気を沢山消費するなどのデメリットがありますが、実際に業務で使用されるものを直接触れるのは大きな経験となります。また、リモートからの操作や監視などの機能が充実しているため、実際の運用に即した使い方ができます。

業務用サーバーは高価なものと思われがちですが、中古であればオークションなどでかなり安く入手できます。こまめにチェックして見る目を養うことで、意外な掘り出し物も見つけられたりすることもあります。

置く場所や騒音などの問題がクリアになるのであれば、検討する価値はあるでしょう。

Raspberry Piなどのワンボードコンピューター

Raspberry Piなどのワンボードコンピューターを自宅サーバーにする人も増えています。プロセッサがARMですが、マルチコアになり、クロック数も高くなったため、それなりの処理が行えるようになりました。また、搭載しているメモリが4GBや8GBのものもあり、複数台用意してKubernetesなどでコンテナを動かしたりすることもできます。低消費電力なのも電源を入れたままにするサーバーとしては魅力です。

難点といえば、昨今の半導体不足で入手が困難になり、また価格も高騰している点でしょうか。

筆者が所有するRaspberry Pi 4が4台で構成されたラズパイクラスタ

ソフトウェア選び

ハードウェア選びに続いて、考えないといけないのがソフトウェア選びです。

ひとまず構築したサーバーでどんなことをするのか、ということは置いておいて、OSなどの基本ソフトウェアの選択について考えます。

仮想化するか、しないか。あるいはコンテナか

ハードウェアに直接OSをインストールするか、仮想化ソフトウェアを導入するか。

学習という観点では両方行っておくべきですが、継続的に環境を維持するのであれば仮想化して柔軟に活用できるようにするべきでしょう。

また、現在ではコンテナを活用するケースが多くなっているので、仮想化されたサーバー上にコンテナ環境を構築するなどして、コンテナを動かせるようにすることも必要でしょう。

VMwareを導入する

多くの人が最初に検討する仮想化ソフトウェアはVMwareでしょう。ハイパーバイザーであるVMware Hypervisorは単独のサーバーで動作させるのであれば無償で利用できるので、自宅サーバー構築でもよく使われています。

www.vmware.com

より本格的にVMwareで環境を構築するのであれば、VMware vSphereなどのライセンスが必要になります。個人で入手するにはいくつかの方法がありますが、VMUG(VMware Users Group)のAdvantage Memberになるのがよいでしょう。2023年5月現在では年間200ドルの費用が必要になります。

www.vmug.com

Proxmox VE

Proxmox VE(Virtual Environment)はオープンソースの仮想化環境ソフトウェアです。KVMを利用した仮想マシンと、コンテナの動作をサポートしています。サポート付きの有償サブスクリプションで使うのが基本ですが、OSSのため無償版として使うこともできるため、一定の人気があります。

VMware以外を使ってみたい、コストを抑えたいといった場合にはProxmox VEを選択するのもよいでしょう。

proxmox.com

その他のコンテナ環境(Docker SwarmやKubernetes)

コンテナを動作させる環境を構築したい、というニーズも高くなりつつあります。

Dockerコンテナを動作させるのであればDocker Desktopが使用できます。個人的な利用であれば無償で利用できます。

www.docker.com

またKubernetesのような本格的なコンテナオーケストレーションツールを動かしてみることもできます。

kubernetes.io

コンテナ環境を単独で構築するのはもちろん、仮想マシン上で動かすケースなどもあるでしょう。

ネットワーク

構築するサーバー環境を接続するネットワークも重要になります。シンプルなネットワークはもちろん、本格的なネットワーク機器を導入し、冗長化を行うなども可能です。

このあたりは次回のエントリーで解説しようと思います。