Windows Update のない世界 Linux へ(サーバーだけ)移行しよう

うちの仕事の環境は、基本 Windows で揃えているのですが、一番の難点は Windows Update です。別口で Windows Server を使えばいいのでしょうが、これは私にはオーバースペックだし、そもそも別口でサーバーを揃える位ならば、Linux を使える環境を用意したほうがよかろう、ってのが主旨で、

サブ開発環境を Ubuntu 18.04 で準備する | Moonmile Solutions Blog

去年の夏に Linux 環境を整えました。仕事柄 Visual Studio が必須なのと、仮想環境がワンセットになっていないと辛い(Windows 7 とか、別の Linux 環境とか)ので、メモリを増加させて相乗りをさえていた訳ですが、月1に訪れる「Windows Updateによる再起動」が辛い。

会社で使う業務PCならば、帰宅時に電源を落とすというのが普通なのでしょうが、

  • 機械学習させているときに、数日間廻しっぱなしにする必要がある
  • バックグラウンドで仮想環境(VMWare)が常に起動している
  • バックグラウンドで Docker が常に起動している

ということになると、不意にやってくる Windows Update による再起動は結構な痛手です。暫くはタイミングを見て手動で再起動(VMWareも手作業でスリープさせる)というのを繰り返していたのですが、去年の春あたりから「勝手に再起動」が頻発してしまって、あまりに耐えかねて Linux マシンを用意しました、ってのが去年の夏です。

構成などは、さきのブログを見て貰うということで、1年間 Linux サーバーとして動作させた感想をメモしておきます。

なんといっても再起動しないのが良い

目的が「再起動させない」なので、Linux マシンは24時間運用です。電力的にどうか?という話しもありますが、私の場合は仕事場が自宅なので、利用時間はこれで良いのです。
単純な NAS や自宅 WEB サーバーならば、Raspberry Pi でも良いのですが(あるいは Orange Pi などの互換機でもOK.),仮想環境として VMWare を動かすのが前提だってので、通常の PC を用意します。メモリはそれなりに潤沢に置いて、CPU はそこそこ、直接画面を見ることはないのでグラフィック関係はオンボードのものを利用しています。

Linux サーバーには普段はモニタはつけていなくて、VNC で接続します。実は VNC での画面更新は非常に遅いので、VSCode などを使った編集が難しいのがデメリットなのですが、そこは Telnet でつなげて vi なり emacs を使います。

業務上、常に VMWare 上で Windows 7 が動作しています。裏で見えているのが保守しているシステム(旧顧客環境のため Windows 7 が稼働している)、手前にあるのが VSCode ですね。絵文字もカラーで綺麗にでます。ただし、VNC 経由だとキーボードの反応とかが極めて遅いので、基本は、

  • telnet で vi を使ってコードを書く
  • WinSCP を使ってファイル転送
  • samba を使って Windows とファイル共有

ってことをやります。VMWare 上で動いている Windows 7 は、そのままリモートデスクトップで接続ができるので、VNC を介在せずに、業務 Windows 10 – Windows 7 間で動かせるので、通常の PC のように動かせて便利です。

Linux マシンは不意に再起動しないので、仮想環境がいきなり倒れたり、機械学習用のプロセスが倒れてたりすることはありません。まあ、実際のとこれは適度に apt upgrade するのですが、面倒?なのもあって、ここ半年ぐらいはそのままです。旧来の意味でのサーバーとしての利用ですね。

インストールするソフトウェアは最小限に

この Linux サーバーは外部に公開している訳ではないので、セキュリティリスクが低いのですが、一応、インストールするソフトウェアは最小限にしています。
最小限とはいっても、適当に動かしたいものを入れるので、

  • mysql
  • PHP
  • apache
  • java
  • dotnet

あたりが入っています。あまりたくさん入れると、再構築が面倒なのと、バージョン違いのあれこれで悩むことになるので、少な目にしておきます。
実際の業務サーバーになると、メールなりFWなりの設定が出てくるわけですが、社内(個人内)で使うものなので、ややこしい設定は入っていません。その分、再構築は楽なのです。

逆に、なんらかのテストをしたいときは、VMWare か Docker に押し込めます。VMWare にしても本格的な運用ではなく、実験的に使うことが多いので既存のものをクローンして使うだけで済みます。HDD の容量を見て、適当なタイミングで仮想環境は消してしまいます。

Ubuntu なので snap が使えるのですが、あまり使っていません。仕事柄ソフトウェアのバージョン違い、OS のバージョン違いを確認することが多いので、snap を使うよりも、VMWare で用意してしまったほうが楽なのです。

なお、仮想環境は HDD の容量を気にしてあれこれと消したりするよりも、2T HDD を買ってしまって、さっくりと増量してしまったほうがベターです。メモリも仮想環境用に 32GB まで増量させています。本当は 64GB に上げたかったのですが、結構な値段になってしまったのでランクを落としました。それでも大丈夫なのは、

  • 業務用 PC で Windows 10 で 32GB
  • Linux で Ubuntu 18.04 で 32GB

に分けられたからですね。業務用 PC のほうでは仮想環境を動かすことがなくなった(実際は、アズールレーンが BlueStacksで動いていますがw)ので、32GB でも十分になりました。

クラウド環境でもいいのでは?

自宅 Linux を作るよりクラウド環境を要したほうがいいのではないか?と思うこともあります。実際、VPS を借りたとしても、年間2万円弱でそれなりの Linux サーバーを借りられます。手元の Linux サーバーは 13万円 + 電気代がかかっているわけで、実は外部で借りたほうがランニングコストは安くなるでしょう。おそらく、VMWare 等を使って仮想環境を作らないのであれば、クラウド上に Linux や Windows を入れてしまったほうが手軽です。問題は、回線スピードなのですが、今となっては光回線が普通になってきているので、Windows 10 からリモートデスクトップで繋げても、そこそこの画面更新スピードで動くでしょう。

なので、最近となっては全面的にクラウドに持って行ってもよいのですが、クラウド環境を使う最大のデメリットは、

  • ビックデータや画像データなどの大量のデータを送り出すのに時間が掛かること

です。光回線の場合、下りのスピードは早いのですが、上りのスピードが遅いことが多々あります。なので、検索のためのデータとか、何か加工するためのデータをクラウド上にアップロードするときにかなりの時間が掛かります。転送量の価格もあるのですが、時間が掛かるのが大問題です。

手もとの Linux サーバーだと、HDD を USB でつなげるとか、社内ネットワーク越しにコピーするとかで相当にスピードでコピーができます。一番早いのは、micro SD カードか外付けの SSD にコピーして USB 3.0 経由ですね。
なので、業務的にデータの秘匿性が高くはなくても、オンプレミスで Linux サーバーを運用させるメリットはそれなりにあるわけです。まあ、オンプレミスの場合には、SE 役が必須なわけですが…ひとまず、自宅 Linux の場合は自分な訳だし。

カテゴリー: 開発 パーマリンク