Ubuntu Linux 24.04 LTSが出て1ヶ月が経ったので

Ubuntu Linux 22.04 LTS

長らくブログを更新していなかった件

引っ越しが終わり落ち着いたのも束の間、世の中は激変の時代に突入しました。インフレと円安による物価高で生活が苦しくなり、電気代の高騰でサーバー遊びも難しくなりました。生成AIの台頭アフィブログなんか読むよりAIに聞いた方がマシな時代になり、ブログ更新の意義が問われるようになりました。

そしてオープンデータ界隈もコロナ渦中の気前の良さはどこへやら、AIによる学習への恐れか有意義なデータがどんどんネットから消えていき、データベース構築へのモチベーションも失われていきました。サーバーを並べて分散データベースを構築しても入れるデータがないという状況になってしまいました。

生成AIブームでIT分野の関心事ももっぱらGPUの活用が中心となりました。ローカルではせいぜいVRAM16GB前後しか積めないためクラウドでやらないとAIが賢くない状況となり、IT大手がGPU性能の殴り合いでAIの開発競争を続けるなか個人の居場所は失われていきました。

このような流れの中で、組織から離れた自分に何が出来るか分からない状況が今日まで続いています。

淡々とアップデートを続けるUbuntu、4月末ギリギリで24.04 LTSをリリース

Canonicalはセキュリティ関連の修正で半月リリースが遅れたものの、4月中に無事Ubuntu Linux 24.04 LTSを公開しました。Linuxがインストールゲームだった時代はとうの昔に終わり、枯れたPCでは22.04時代のノウハウそのままでトラブルもなく24.04を導入できています。うーん、書くことがない。

一方、面白みはないもののUbuntuを取り巻く環境は良くなっています。Windows 11に非対応とされサポート打ち切りが近づくIntel Core i 7xxx(第七世代)以前の中古ノートPCはフルHDモデルですら1万円台でゴミのように叩き売られ、Core i8xxx(第八世代)以降のPCも軒並み値崩れしました。自慢みたいになるので詳しくは書きませんが、私はWindows11が動くフルHD/NVMe SSDのノートPCを2万円台で入手したり、最新に近いCore i7-11700搭載のミニタワーを5万円台で入手したりしています。

新しめの中古PCが値崩れしている裏の理由に、「ぶっちゃけスマホの方が速くて便利」というものもありそうです。私が最近買ったでかいタワー型PCですら、せいぜい手元のスマホの2〜3倍の処理能力しかないのです。中高年のパソコンおじさんが新しいPCを手にした謎の高揚感、万能感も木っ端微塵です。おそらくiPhoneをお持ちの方なら、お手元のPCのCPU処理能力はiPhoneより遅いか大差ないはずです。ぜひ一度比べてみてください。

OSの話に戻りましょう。より使いにくく押し付けがましくなったWindows11を使いたくない一心でWindows10を使い続ける人にアップデートバグが襲ってきました。KB5034441の0x80070643エラーKB5034441が0x80070643エラーでインストールできない問題などを見ると、皆さん苦労されていることが伝わってきます。私も未だにアップデートが止まりっぱなしのWindows機があり、こんなに苦労するならもうUbuntu Linuxでいいじゃんとの思いを新たにしています。

KB5034441の0x80070643エラーやKB5034441が0x80070643エラーでインストールできない問題

物価高で飯を食うのもやっとの中で高いお金を払ってWindows PCを買い換えるくらいなら、どんどんUbuntuに入れ替えて余ったお金で食べ物を買いましょう。それが出来るだけの知識があるのは幸せなことです。

でもAlmaLinuxも入れてみた

Linux初心者の方が私のブログにたどり着くことは少ないと思いますが、Linuxサーバー管理を仕事にしたい方にUbuntuが向いているかというと、微妙な点があります。日本では業務用のLinuxサーバーOSとして長らくRedHat Enterprise Linux(RHEL)が使われており、Linux関連の資格もRHELが前提になっています。AWSなどのクラウドではUbuntuサーバーも選べますが、クラウドベンダーの自社OSはRHELクローン(RHELと互換性があるOS)であることが多いです。

個人的にはUbuntuのとっつきやすさが気に入っているのですが、パッケージ管理などのコマンド体系がRHELとはだいぶ異なっているので、資格の勉強をしたい方はRHELクローンのAlmaLinuxを学習用に利用した方が良いでしょう。私も某団体の勉強会で推奨されていたことをきっかけに、AlmaLinuxのノートPCを1台確保しました。

なお、Google周辺などAI界隈では業務用でもUbuntuがけっこう使われているので、サーバー管理者を目指しているわけではない方はUbuntuメインでも全く問題がないと思います。

今後のプラン「Ubuntu Linux 22.04 LTS構築手順書」

夢の無い時代ではありますが、中高年が何もやっていないと認知症が進行しますのでプランだけでも考えてみました。

これまではサーバーの台数が少なかったので、特に手順書もなしに過去の経験をもとに適当にサーバー構築していました。しかしサーバーの台数が増えてきたこと、クライアント用でもUbuntuを本格的に使うようになったことをきっかけに、自分用のUbuntuサーバー/構築手順書を作り始めています。

自宅で(あまりセキュリティとかを気にせずに)使い勝手が良い環境を構築する観点から、下記のような項目をブログに上げたいと思っています。

  • BIOS(UEFI)の更新とUbuntuのインストール
  • ハードウェア情報の取得、管理
  • Ubuntuの基本的な設定とアプリのインストール
  • Windows機との連携(samba、xrdp)
  • サーバー監視(温度、システム負荷など)
  • 出先からのサーバー接続VPN(tailscale)
  • RDBデータベースの構築(PostgreSQL、Citus)

生成AI関連の学習も進めたいのですが、敢えてローカルで挑戦する価値のあるものが現状ではStable Diffusionくらいしかないので、少しずつ進めようと思います。先に書いたタワー型PCはGPU利用のために(邪魔だけど仕方なく)購入したもので、GeForce RTX 4060 Ti 16GBのGPUも入手済ではあります。

EliteDesk 800 G8 TWR/CT
GV-N406TWF2OC-16GD

また、Claude3やChatGPTなど生成AIの助けを借りてPythonの簡単なコードを書いてGoogle Colabで実行する、といった少し先進的な(?)試みにも挑戦したいと思います。作成するコード自体は生成AI関連ではなく、ブログには敢えて書かないようにしている株式投資に関連した情報収集がテーマになると思います。

個人データ基盤を敢えてオンプレで構築する理由

時代はクラウド。しかしお財布が……

AWSやAzure、GCP、OCIなど大手ITはクラウドサービスを揃え、熱心に推進しています。個人でもクラウドを学習しやすいように、無料枠クーポンを拡充するベンダーも増えてきました。

クラウドはPCやLANなどの初期投資が不要でコスト的にも敷居は低く、高性能PCを上回る処理能力の仮想マシン(VM)インスタンスも提供されています。

しかし、常時稼働するとランニングコストが1台あたり月1万円を超えてきます。私は90年代からレンタルサーバーで当サイトを運営してきましたが、普通のサラリーマンとして自腹でサーバー費用を負担するのは月 1万円あたりが限界でした。

クラウドがコスト的に有利なのは「必要なものを必要なときだけ」調達するからです。具体的には当Webサイトのように最小限のリソースだけ常時稼働する場合、あるいは機械学習などのために高性能GPUなど贅沢なリソースを一定時間だけ用いる場合などに限られます。技術力が高い方なら、データ処理タスクにしか課金されないサーバーレスアーキテクチャでシステム全体を構築することも選択肢となり得ます。

いずれにせよ、「使い放題はクラウドでは実現出来ない(現実的な費用では)」ということです。例外として、常時稼働こそ出来ませんが月1,000円でGPUインスタンスが使い放題Colab Proあたりがデータ基盤として個人が契約出来るクラウドの限界、との認識です。

Excelで出来るデータ分析にデータ基盤は要らない

ここでいったん原点に戻り、「個人が何のためにデータ基盤を構築するのか?」というテーマを考察します。

学校の課題や仕事で、初めてデータ分析に取り組んだときのことを思い出してみましょう。ほとんどの人はExcelだったと思います。機械学習界隈では「なぜかいきなりPython」というストーリーが多いです。しかし、PythonやRはExcelより圧倒的に敷居が高いですから、本来は「Excelでは無理だから」PythonやRに取り組むのが筋、というものでしょう。具体的には

  • Excelにない機能を使いたいのでPythonやRなどの言語を使う
  • Excelでは処理出来ないほど巨大なデータを操作したいのでSQLデータベースを使う
  • ギガバイト、テラバイト単位のデータベースを管理したいのでデータ基盤を構築する

といった動機であるはずです。これってかなり高度で贅沢ですよね。まずExcelやGoogleスプレッドシートを試してみて、データ分析の目的が本当にExcelやGoogleスプレッドシートで足りないのか確認することをお勧めします。特にGoogleスプレッドシートはPC版のExcelではやりにくいウェブからのデータ取得も無料で出来ますので、集めたいデータがビッグデータでなければ最初に検討するべき選択肢だと思います。

個人データ基盤を作るのは「ビッグデータを贅沢に使いたいから」

ここまで来ると、個人でデータ基盤を作るのは「ビッグデータを贅沢に使いたいから」だということが見えてきます。本来なら企業や大学でしか扱えないような巨大なデータを敢えて個人で蓄積・活用したいのが動機ですから、石油王でもなければクラウドでは無理ということになります。

オンプレと言っても、PC1台で出来るタスクなら『データ基盤』などという仰々しいものを個人で作る必要はありません。バックアップの観点でもGoogleドライブでは100GBが年額2,500円ですから、将来的に1TBを超えるようなデータを管理したいような人が『データ基盤』を検討する価値がある人、ということになります。

個人データ基盤で想定するアーキテクチャ=『PCクラスタ』

個人でテラバイト単位のデータを大量に蓄積して利活用するには、さすがにクラウドやPC1台では無理があります。そこで複数台のPCを連携する『PCクラスタ』を考えてみます。

個人用PCは最近ではノートPCが主流ですし、タワー型のような大型PCを複数台自宅に置くのは現実的ではありません。しかしコールセンターや受付用に販売されている超小型PCなら、5台くらい自宅に置いても場所はさほど取りません。私の自宅では、実際に超小型PCが10台ほど稼働しています

超小型PCで組むPCクラスタ

1台あたりの消費電力は30W前後で、電気料金は1台あたり月額数百円程度です。電気料金だけで見れば「オンプレデータ基盤のランニングコストはクラウドの100分の1」ということになります。

データ基盤としてのPCクラスタ利用を想定する場合、LANの速度が深刻なボトルネックとなります。現状ではコストとの兼ね合いから2.5GbEで構築するのが現実的です。少しお値段が張りますが2.5GbE対応のハブとUSB接続のLANアダプターを用意することをお勧めします。

OSは、アップデート時の通信量の少なさやサーバー管理の容易さなどからUbuntu Linuxを使用しています。現在はUbuntu 20.04 LTSを使用していますが、2022年4月末にリリース予定のUbuntu 22.04 LTSに入れ替える予定です。Ubuntu 22.04 LTSは、最近のAMD Ryzen APUでも素のバニラ状態で動く初のLTSリリースとなるため大いに期待しています。なお、後にご紹介する『分散データベース』は大半がJava VM上で動作するため、中古PCバンドルで安価に入手出来るWindows Professionalなど一般の方が使い慣れたOSでも構築運用自体は可能と思われます。

念のため補足しておきますが、超小型PCをクラスタ運用する際には、モニターやキーボードは邪魔なので外しています。必要に応じてHDMI/DisplayPortで接続出来るモバイルモニター、キーボードとタッチパッドが一体化した入力装置を接続してメンテナンスを行います。部屋が暑くなる方は先の写真のように超小型PCと同サイズのUSBファンを重ねて設置しておくと夏場も少し安心です。

SQL or NoSQL?

PCクラスタ向けのデータ管理には専用のソフトウェアが必要です。スタンドアロンのデータベースは定期的なバックアップでデータを保全しますが、PCクラスタ向けの分散データベースはデータ本体を分割して複数の『レプリカ』としてサーバーに分散格納する『シャーディング』という仕組みで動きます。

これまで分散データベースにはNoSQLの『Elasticsearch』を使ってきました。しかしElasticsearchはKibanaなど同社のBIツールと連携して用いることを前提としており、無償の範囲では汎用的なJDBCコネクタを利用出来ないことなどから、次期のデータ基盤は分散RDBに替えようと思っています。

NoSQLはJSON&KeyValueでのデータ格納を前提としています。ログデータの蓄積に向いており柔軟なデータ構造に対応出来るという意味では優れています。しかし、データ分析の際はほぼほぼ表形式に加工して用いることやデータ格納時にデータ型をチェックしておかないと分析時に前処理で困ることが多いことなどから、私にとってはSQL対応の分散RDBでデータを管理するのが一番、という結論に至りました。

クラウドでは『ボタンひとつ』で使える分散RDB。しかしオンプレでは……

分散RDBは分散データベースの一種で、複数のサーバーにデータを複製して保存するシャーディングという技術を用います。サーバーの数を増やしてレプリカを再構築すれば自動的に新しいサーバーにデータが複製されますし、サーバーのうち1台が壊れても他のサーバーにレプリカが保存されているのでデータを失わずに済みます。

個人でもNASなどでRAIDを運用している方も多いと思いますが、NASそのものが壊れてしまうとデータはHDDからサルベージしなければならず、無事サルベージ出来るかも運次第、というのが現実です。ハードウェア障害時にもデータを実運用出来る形で保持するためには、PCクラスタでデータをレプリケーションして分散運用するのがオンプレで唯一の有効な手段と考えています。

このような技術は、大手クラウドでは既に当たり前のものとなっています。GoogleのCloud Spannerやデータ分析に特化したBigQuery、AWSのAmazon Redshiftなどはユーザーが意識しない形で巨大な分散データベースを構築しており、これによりペタバイト級のデータを扱えるとされています。データのレプリケーションもユーザーに意識させることなく複数のデータセンターに分散して格納されているため、データの堅牢性という意味ではクラウドが最強であることに疑いはありません。ただし、当然ながら堅牢な分だけお高いので、データ保全命でクラウドにビッグデータを置くかどうかは「お財布と相談」になります。

しかし、オンプレ用の分散RDBには従来、めぼしいものがありませんでした。オープンソースの製品もいくつか存在してはいるのですが、SQLの対応が弱かったりJDBCドライバで文字化けが出るなど汎用的なデータ基盤としては厳しいものがありました。開発元もアメリカではなく会社としての事業継続性も未知数、という印象。

分散RDBの決定打となるか?PostgreSQL拡張『Citus』

ところが最近になって、マイクロソフトからAzure Database for PostgreSQL – Hyperscale (Citus) というクラウドサービスが出てきました。これ自体は他社クラウドの分散RDBと大差無いのですが、

  • 定番のOSS RDBであるPostgreSQLを拡張する形で分散RDBを実現している
  • PostgreSQLの拡張であるため、BIなど各種ツールが用意しているPostgreSQL用のJDBC/ODBCドライバがそのまま利用できる(かも知れない)
  • 【これが重要】CitusはOSSであり、オンプレで利用できる
  • 開発元のCitus Dataは2019年にマイクロソフトが買収しており、経営が安定している

など利点が多く「まさに決定的」という印象です。

Citusはマイクロソフト傘下でありながらOSSであり、オンプレで使える

マイクロソフトの藤田氏によれば「Citus Dataの創立者から聞いた話ですが、買収提案を受け入れた理由は、MicrosoftがOSSコミュニティーに最も貢献しているパブリッククラウドプロバイダーだったからとのことです」とのこと。ベンダーがここまで明言している以上は、CitusがOSSサポートを中止することは当分ないはず、です。

Citusを使うのはAzureが一番楽だと思いますが、Citusがオンプレで提供されている限り、その気になればAWSやGCPのVM上でもCitusによる分散RDBを構築運用できるはず、です。これはクラウドベンダーにロックインされた挙句、突然の大幅値上げで泣く羽目になっても逃げる余地があることを意味します。これがどれだけ重要なことかは、IT業界に長い方ならよくご存知でしょう。

うちでは「全部これから」です💦

我が家の自宅クラスタは、2022年4月末のUbuntu 22.04 LTSのリリースを待って全てのサーバーOSを入れ替える予定です。これに合わせて分散データベースもCitusに入れ替えたいと考えており、「全部これから」です。近い将来PostgreSQL自体も分散RDB機能を持つようになるかも知れませんが、それを待っていられるほど私の寿命は長くなさそうです。

データ活用の観点からも、従来kibanaやPythonなどに限られていた分析ツールがJDBC/ODBC対応の各種BIツールに拡がることが期待されます。無償で多機能なPower BI Desktopなどが使えるはずですし、PostgreSQL自体が持っているマテリアライズドビューなどの機能を用いてRDB側でクエリを高速化することも(スキル次第では)出来るでしょう。

これからマイペースで記事も投稿していこうと考えていますので、引き続きよろしくお願いします。