Ubuntu 22.04 LTSで自宅PCクラスタを構築する【ハードウェア&初期インストール編】

まずはバラすところから

 クラウド全盛のご時世ですが、当記事では「弁当箱PCをバラす」シーンからスタートです👍

クラウドの仮想マシンはCPUやメモリ、SSDなど多彩な構成からサクッと選べて便利です。でも、クラウドからITに入った世代はCPUやメモリ、SSDが具体的にどういうモノか知らない方も多いのではないでしょうか。どうせなら、知っておいた方がいいですよね🤗

というわけで、バラしてみます。

Lenovo ThinkCentre M75q Gen2の上フタを開いたところ

PCのフタを開けるには基本的にプラスドライバーがあれば十分ですが、ドライバーのサイズがネジと合わないと力を込めても回らずネジ山を潰してしまうという恐ろしい罠があるので、精密ドライバーセットを一式、揃えておきましょう。

Lenovo ThinkCentre M75q Gen2は、HDD無しモデルを選んでも2.5インチマウンターが付属するようです。保守部品は入手に手間がかかることも多いので、この配慮はありがたいですね。というわけで早速マウンターを外します。

Lenovo ThinkCentre M75q Gen2の2.5インチマウンターを外したところ

機械が苦手な方は既にこの写真に恐怖を覚えるかも知れませんが、周辺機器の増設はレゴブロックレベルの難易度です。2.5インチマウンタではSATAケーブルがマザーボード上のコネクタから外れることがあると思いますが、ただの嵌め込み式なので落ち着いてはめ直しましょう。大丈夫です、たぶん。

2TBの2.5インチSSDをデータドライブとして増設!

今回はLenovo ThinkCentre M75q Gen2の2.5インチマウンターに、HDD(ハードディスク)ではなく2TBの2.5インチSSDを増設します。

Lenovo ThinkCentre M75q Gen2の2.5インチ SSDを装着したところ

HDDは内部でディスクが物理的に回転しているので、一般的にSSDより故障のリスクが高いと言えます。純粋なファイル保管用で一日数回しかアクセスしないような用途なら安価なHDDは今でも選択肢となり得ますが、自宅クラスタのサーバー用途では極力SSDを選びましょう

SSDはM.2 2280というガムをひと回り大きくしたサイズの規格が主流となりつつありますが、弁当箱PCではM.2 2280のスロットがひとつしかないことが多く、2台目のデータドライブは2.5インチにするのが現実的です。2.5インチ SATAはSSDとしては無駄にデカいですが、値段的にも少しお安めなので、悪い話ではありません。

なお、2.5インチはSATA3という規格で転送速度は最大6Gbpsです。M.2はSATA3とNVMeの2つの規格がありますが、主流のNVMe最大20Gbpsと高速化しています。とは言え、NVMeでも実効速度に大きな違いはなく、発熱が激しいのが現状のようです。要は「HDDではなくSSDであることが大事で、性能は大差ない」そうです。

SSDを選ぶ際にもうひとつ重要なのは「予算が許す限り大容量のものにする」ことです。というのも、SSDなどの不揮発性メモリは書き込み回数に限界があり、残り容量が少なくなると同じ領域に繰り返し書き込むため劣化しやすいと言われているからです。そういう意味でも、2022年現在では2TBの2.5インチ SATA SSDはコスパ的に悪くない選択肢と言えます。なお、今回は『SanDisk SDSSDH3 2T00』を選びました。

メモリとM.2 NVMe SSDの交換・増設

続いて、Lenovo ThinkCentre M75q Gen2の裏蓋を開きます。

Lenovo ThinkCentre M75q Gen2の裏蓋を開く

この機種のマザーボードはスロットが両面実装になっており、メモリとM.2 SSDは裏側です。まず、裏蓋をスライドしてマザーボードを露出します。

Lenovo ThinkCentre M75q Gen2の裏蓋を開くと、メモリとM.2 SSDのスロットがある

Lenovo ThinkCentre M75q Gen2の裏蓋を開くと、メモリとM.2 SSDのスロットがあります。交換を前提に最小構成で注文したので、メモリ8GB、SSD256GBとなっています。メモリは64GB、M.2 SSDはNVMe 1TBに交換しました。

メモリは64GB、M.2 SSDはNVMe 1GBに交換する

SSDを2台構成にしているのは、システムドライブ(M.2 NVMe)とデータドライブ(2.5インチSATA)を分けるためです。あとあと設定が面倒にはなりますが、大容量データを扱うためには乗り越えたい壁です。クラスタ構成が前提であれば、1台構成でも良い気がしますが……💦

なお、今回はメモリは『Transcend JM3200HSE-32G』2枚、SSDは『Western Digital WD Blue SN570 1TB』を選びました。

周辺機器を認識したかどうかBIOSでチェック

周辺機器の増設が終わったので、ふたを閉じて弁当箱PCを起動します。OSを入れる前に、まずBIOSで周辺機器を認識したかどうかをチェックします。

USBメモリを優先起動する設定にするついでに、SSDを認識したかどうかチェック

BIOS画面の『USB HDD』がUSBメモリ、『M.2 Drive 1』がM.2 SSD(WD Blue SN570 1TB)、『SATA 1』が2.5インチ SSD(SanDisk SDSSDH3 2T00)です。どちらも正しく認識しました🙌

メモリも65536MBとなり、無事3200MHzでの動作を確認

システム概要の画面で、メモリを64GB認識して3200MHzで動いていることも確認します。これで安心🙌

SSDやメモリは未だに相性問題があり、たまにではありますが交換しても動かないことはあります。PCメーカーか周辺機器メーカーの動作確認リストに載っているのが理想ですが、コスパ的になかなかそうもいきません。先人の交換履歴をウェブ検索で確認して、動いているパーツを選ぶのが次善策です。安くて動作が安定したパーツはよく使われているので、地道に検索すれば自分の目的に合ったものが見つかると思います。

Ubuntu 22.04 LTSをUSBメモリでインストールする

手ごろなUSBメモリを購入し、Ubuntu 22.04 LTSISOイメージをダウンロードして格納します。BitTorrentでもダウンロード出来るので、TransmissionなどのBitTorrentクライアントをお使いの方にはお勧めです。

UbuntuのダウンロードはBitTorrentにも対応している

ISOイメージをUSBメモリに格納して起動ドライブにするには、専用のアプリを使います。私はWindowsも使う派なので、Rufusを愛用しています。DVDに焼いてDVDドライブから起動することも可能だとは思いますが、さすがに円盤を常用する時代ではないと思います。USBメモリにもType-C化の波が押し寄せているので、Type-AとType-Cの両方のコネクタがついたUSBメモリをお勧めします。

今回は敢えてサーバー版ではなくデスクトップ版をインストールします。エンジニア的にはセキュリティ上の理由から「最小構成が常に正義」ですが、私は基本情報技術者ではあるものの硬派な本職さんではありませんので、ふだん使いのUbuntuでそのままサーバーやクラスタを管理できる利点を優先しました。おそらく鯖缶ガチ勢の皆様はUbuntuではなくRHEL系のLinuxをお使いだと思いますので、この辺は棲み分け、という感じです🤗

毎度のことながら、初回の起動がうまくいくかドキドキします……。

USBメモリからUbuntu 22.04 LTSのインストーラを起動する

今回は無事、起動しました🙌

最近はLinuxも市民権を得てきたのでPCメーカーがLinuxを公式にサポートすることも多くなってきました。もちろん最近出たばかりのOSをサポートすることはまず無いのですが、Linuxを公式にサポートしている機種の方がドライバなどを含めて安定動作する可能性が高いとは言えると思います。私はコスパがすべてですが💰

Ubuntu 22.04 LTSのインストーラが周辺機器を認識しているかを確かめる

Ubuntu 22.04 LTSのインストーラが起動したら、設定画面で周辺機器を認識しているかチェックします。BIOSが認識しているからといってOSも正しく認識できるとは限らないからです。

Ubuntu 22.04 LTSのインストーラがメモリとSSDを認識しているかチェックする

『Memory』が64GiB、『Disk Capacity』が3.0TBと表示されています。これで、ほぼ安心です🙌

SSDの初期化とパーティションの設定

インストーラを起動し、指示に従ってポチポチ進めていきます。初心者が詰まりやすいほぼ唯一の設定項目がSSDの初期化とパーティションの設定です。ディスクが1台なら言われた通りにポチポチすれば良いのですが、今回はディスクが2台なのでM.2ドライブにOSを決め打ちで入れる必要があります。

SSDの初期化とパーティションの設定は初心者のつまづきポイント

パーティションの設定にはUNIX系のOSに特有のパスという概念を理解する必要があります。すべてのデバイスやデータは『/』というルートパスの下にツリー構造でぶら下がっています。ルートパスの『/』をOS用のドライブ(/dev/nvme0n1)にマウントすることで、M.2ドライブにOSが入ります。ファイルシステムは今回『ext4』としました。

最近のPCではこれとは別に、512MB前後の『efi』パーティションを作る必要があります(無いと怒られます💦)。SATAのデータドライブ(/dev/sda)は『/data』にマウントしました(特に命名ルールはありません)。

あとはインストーラの完了を待ち、画面の指示に従ってUSBメモリを抜いて再起動すれば無事終了です。こうやって書くとまだまだ大変ですね💦 皆さんもあきらめずにがんばってください👍

Ubuntu 22.04 LTSが自宅PCクラスタの救世主な理由【2022年3月版】

自宅PCクラスタを組むなら『弁当箱PC』で決まり❕

個人データ基盤を敢えてオンプレで構築する理由』でご説明した通り、「ビッグデータを贅沢に使いたい」ならクラウドとは別にオンプレのPCクラスタが必要です。そして狭い日本の家でPCクラスタなどという仰々しいシステムを組むには超小型PCが必要です。私はサイズが分かりやすいので『弁当箱PC』と呼んでいます🤗

弁当箱PC(超小型PC)の特徴は、

  • モニタ無しで容量1リットル前後の弁当箱サイズ
  • 消費電力40W以下(CPUのTDPは35W)
  • グラフィックはGPU内蔵型(APU)

といったものです。小ささにこだわるのは、限られた面積で少しでも多くのCPUコアを動かすためです。消費電力にこだわるのは、1500Wの家庭用コンセントで安定稼働させるべく余計な機能による電力消費を抑えるためです。特に高性能GPU(グラフィック)はディープラーニング以外の用途では不要です。

弁当箱PCは本来受付やコールセンターの端末用のため、CPUやメモリの性能が全体的に抑えめです。しかしPCクラスタ用途では弁当箱サイズの範囲内で可能な限り贅沢にする必要があります。処理速度だけなら遅いPCを何台も並べるより我らがヒーロー藤井SOTAのThreadripperのように超高性能PC1台の方が強いです。PCクラスタは貧乏人の激安PC活用術分散処理データ保全の両取りを狙って敢えて複数台にしますが、個々のPCが速ければ速いに越したことはないです。具体的には、

  • CPUは最低6コア、予算が許せば8コア16スレッド
  • メモリは最低32GB、予算が許せば64GB
  • 512GB以上のSSD、予算が許せば1TB
  • USB Type-C 3.2 Gen2 10Gbpsポート推奨
  • 台数は5台以上を想定

となります。1台10万円以下に抑えたいところですが、インフレが進んだ今では10万円を超えてしまうかも知れません。予算に余裕がないならリース落ちの中古PCを拾っていくのもひとつの選択肢です。USB 3.2 Gen2推奨なのは将来的に10Gbps EthernetのハブとLANアダプターが安くなった際に10GbEで運用出来るからです。ストレージが控えめなのはクラスタの強みである「壊れたら復旧など考えずさっさと入れ替え」を想定しているからです。

2022年時点のお勧めCPUはAMD Ryzen APU

PCクラスタのCPUはIntelかAMDの2択となりますが、現時点で私はAMD Ryzen APU推しです。IntelがCPU自社製造に縛られて未だに14nmや10nmのプロセスを使っているのに対して、AMDはTSMCの最新7nmプロセスを使っており近い将来5nmも出てくるからです。CPUが微細化するほど消費電力あたりの処理性能(通称『ワッパ』)が上がるので貧乏人に優しい自宅クラスタで有利だからです。

実際に2022年3月20日時点でHPの弁当箱PCでIntelとAMDの同価格帯商品の性能を比べてみると、

  • Intel …… Core™ i5-10500T
  • AMD …… AMD Ryzen™ 5 Pro 5650GE

消費電力はどちらもTDP35Wで6コア12スレッド。CPUの総合性能(マルチスレッド)ベンチマークであるPassMark resultはAMDの19266に対してIntelは10760でAMDの方が2倍近く速いことが分かります。この差は基本的に微細化の差であり、将来的には微細化でどちらが勝つかで勝負が決まると思われます。なおbig.LITTLEという「比較的大型で高いパフォーマンスを持つCPUコア(big)と、小型で低消費電力のCPUコア(LITTLE)を組み合わせる」技術を用いた製品も出てきていますが、サーバー用途では基本的に全てのCPUコアを用いるので無意味です。

Ubuntu Linuxは無料で管理が楽なOSだが、AMD対応は遅れている

Ubuntu LinuxはWindowsと比べて巨大なアップデートで苦しむことが少なく、必要な機能を選んで入れられるのでスキルがある方には便利なOSです。サーバーが10台にもなるとアップデートの通信量も10倍になるので、貧弱な回線しか引けない貧乏人にとっては比較的アップデートが小さいUbuntuが有力な選択肢になります。

また弁当箱PCを新品で買うとリモートデスクトップのホストになれないWindows Homeが入っていることが多く、高いProを買うくらいならUbuntuに替えた方が楽で安上がりという事情もあります。

ところが、LinuxはかつてAMD対応が遅れており、私も「Ubuntu 20.04 LTSがRyzen5 4600Hノートで画面表示出来ない」など苦労がありました。しかし、Linuxの親玉リーナス・トーバルズがAMDを寄付してもらった買ったことでAMD対応が進み、UbuntuでもAMD Ryzen APUで画面表示出来るようになってきました

Ubuntu Linux 22.04 LTSは初の最新Ryzen APU対応LTSバージョン

Ubuntuは長期サポート版(LTS = Long Time Support)と無印版があり、LTSは2年ごとのリリースとなっています。サーバーとして真面目に使うならLTSが前提となるため、2022年4月21日にリリース予定のUbuntu Linux 22.04 LTSが初の最新Ryzen APU対応LTSバージョンとなります。

Ubuntu 22.04 LTSは2032年3月までのサポートなのでサーバー運用でも安心

Ryzen APUへの対応はUbuntuではなくLinuxカーネルで行われているので、

  • Linuxカーネルのどのバージョンから該当するRyzen APUに対応しているか
  • Ubuntu LTSがどのバージョンのLinuxカーネルを採用するか

の2点でお手持ちのRyzen APUでUbuntuが(素のバニラ状態で)動くかが決まります。具体的には、Linuxカーネルバージョンは

となります。なおTDP35Wモデルのうち5000番台は5300GE(4コア)、5600GE(6コア)と5700GE(8コア)、4000番台は4300GE(4コア)、4350GE(4コア)、4600GE(6コア)、4650GE(6コア)、4700GE(8コア)、4750GE(8コア)などとなります。

Ubuntuが採用するLinuxカーネルは下記となります:

  • Ubuntu 20.04 LTS …… 5.4
  • Ubuntu 20.10 …… 5.8
  • Ubuntu 21.04 …… 5.11
  • Ubuntu 21.10 …… 5.13
  • Ubuntu 22.04 LTS …… 5.15

長くなりましたが、要は「新品のRyzen弁当箱PCを買って2022年4月21日まで待ってUbuntu 22.04 LTSを入れれば動く(はず)」ということです。

なお、私は現在無職で貧乏なのでPCクラスタを全部入れ替えることなど出来ませんが、1台だけ4750GEを入手済です🤗