非常に面倒だが有意義だったサーバー構築の記録
前言: 去年の年末ごろだったか、変わった任務を引き受けた。特殊な機能を持つサーバーを構築するというもので、サーバー本体は単位で淘汰された古いマシンの再利用だ。まさかそんな任務で、半年も断続的に構築を続けることになるとは思わなかった。この任務はそれほど緊迫したものではなく、「あればいい、なくても別に」という状態だったので、仕事自体に影響は出なかった。ただ、構築の過程で大量の罠に引っかかり、「疑わしい」ハードウェア故障にも遭遇し、思いがけず「高人」の指導も受けた。解決策も紆余曲折で、何度も諦めようと思ったが、なぜか最後までやり遂げた。自分でもなぜだかわからない。なので、思いついたままに過程を記録しておこうと思う。同じような経験をした人の役に立つかもしれない。
まず、クソリプで突っかかってくる奴を避けるために宣言しておく:
1、こんなサーバーに意味があるのかと聞かないでくれ 2、「金を積んでXXXを買えば済む話だろ」とか言わないでくれ 3、「電子ゴミで遊ぶなよ」とか言わないでくれ 4、「その構成は安全じゃない」とか言わないでくれ
こういう問題は俺の方がよくわかっている。俺が個人的に楽しんでいるだけだと思ってくれ。

任務受領:特殊な「踏み台サーバー」
うちの単位では内外網分離方式でセキュリティを確保していて、業務システムは独立した内網にあり、インターネットに接続するネットワークと業務システムは物理的に分離されている。
しかしこれが問題を生む。外注会社のエンジニアがサーバーを遠隔保守する必要がある場合、信頼できる経路がないのだ。以前うちで使っていた方法は、デュアルNICのPCを何台か用意し、起動してSunlogin(向日葵)をインストールし、必要なときに番号を伝えて相手に接続してもらい、問題を処理するというものだった。
ところが近年「六関」の厳格な検査が始まり、退勤時にはPCの電源を切ることが義務付けられた。しかもデュアルNICのPCの台数が少なすぎて、一群で一台を取り合うのは日常茶飯事だった。
そこで後にある上の大物が俺に聞いてきた:大容量メモリのサーバーを用意して、それを多数の小さなシステムに仮想化できないか。システムの目的はSunloginのようなサービスを動かして人に遠隔で踏み台として使ってもらうことだけで、他の機能はほとんど不要だ……と。
これを聞いて、これって要するに仮想化じゃねえか、と思った。だがデュアルNICの問題はどう解決する?サーバーにデュアルNICを挿すのか?その後相談して、ネットワーク層でマッピングを行うことにした。内網の踏み台サーバー(堡垒机)のWebログイン画面を外網のIPアドレスにマッピングし、特定のIPアドレスにバインドした。このIPアドレスを使うマシンだけが、Web経由で内網の踏み台サーバーの保守画面を開いてログインし、内網に入ってデータ保守を行える。
後で大物が俺に聞いてきた:これ、できるか?できれば定時管理もできるといい。例えばこれらの仮想化マシンは特定の時間帯だけ使用可能で、それ以外の時間は接続できないようにできないか……と。
考えてみれば、仮想化プラットフォームでやれば超簡単だ。定時管理なんてのは定時電源ON/OFFだけで済む。ちょうど俺もそういう仮想化サービスシステムをいじってみたかったので、少し興味が湧いた。大物は「これは急ぎではない。今はみんなデュアルNICのマシンを順番待ちで使っていて、ちょっと面倒なだけだ。できればやる、できなければ別にいい。どうしても無理なら金を積んで専門設備を買う(審査が通ればだが)」と言った。
実はこれは良い解決策ではないと思う。もっと良いのは、網閘(ゲートウェイ)やアカウント管理などを備えた、より完備された踏み台サーバーだ。しかし俺自身が仮想化をいじってみたかったので、この任務を引き受けた。
記録1:映像信号なし、表示範囲外
任務を引き受けてからサーバーを選び始めた。大物の意向は「利旧」、つまり淘汰された古いハードウェアを可能な限り使うというものだった。必要なら小さなアップグレードも可。この要求は、俺のようなジャンク好きにとってはなぜか妙に「燃える」ものだった。あれこれ探した結果、配置要件を満たすサーバーは4台だけだった。うち3台はIBM時代のもので、最新のものはHP DL580 G7だった。このマシンはなんと64GBのメモリを搭載し、4ソケットのCPUがフルに挿さっていて、各CPUは6コア12スレッド、合計24コア。まさに仮想化に最適な選択だ。
ハードディスクは5台、各600GBで、内蔵RAIDカードはP410i。多くはないが、仮想化用途なら十分だろう。
そこでProxmox VE 8.1をダウンロードし、OSのインストールを始めた。
ところが最初の一歩で大問題が発生。Proxmoxのインストールディスクから起動した直後、画面が真っ暗になり、「信号なし、表示範囲外」と表示された。
この表示には度肝を抜かれた。前回これを見たのは子供の頃、CRTモニターに接続して、グラフィックカードが誤ってリフレッシュレートを85Hz以上に設定してしまったときだ。
とりあえず検索を始めると、すぐに原因が見つかった:
https://forum.proxmox.com/threads/out-of-range-issue-on-hp-servers.111086/
要するに、このマシンのグラフィックカードが古すぎて、グラフィックドライバーが正常に起動できないということだ。解決策も簡単で、インストール時のGrub画面でEを押し、nomodesetを追加すればいい。
記録2:RAIDカードはHBA非対応、しかもマザーボードはMBRのみ
OSインストール時にGrubがインストールできないことが判明。割り当てたRAID 5が起動ディスクとして使えないからだ。
5台のハードディスクをすべてP410i RAIDカードに接続しているので、いっそHBAモードにしてProxmox VEに全ディスクを管理させ、ZFSも使おうかと考えた。しかしこのRAIDカードはHBAパススルーに対応していない。ネットにはパススルーのチュートリアルがあり、Linuxカーネルを改造して対応するらしいが、面倒すぎる。
あれこれ調べた結果、このマシンにOSをインストールするには、別途1台のハードディスクを切り出して自分でRAID0を作成し、RAID設定でそれを起動ディスクに指定して、そこにOSを入れる必要がある。
残りの4台でRAID 5を作ると……容量が小さすぎてイメージをたくさん置けない。いっそストライピングにしようかと思ったが、ダメだった。作成したRAIDの容量が2TBを超えるとシステムが認識できないのだ。強引に使うこともできるが、余分な2TBの空間は無駄になる。

ここでこのサーバーのマザーボードについて言及せざるを得ない。UEFIに全く対応しておらず、つまりGPTディスクとは完全にお別れだ。MBRのブートローダーしかなく、MBRがサポートする最大ディスク容量は2TB。2TBを超えるディスクは認識できない……何しろ利旧サーバーなので、ハードRAIDはやめて、Proxmox VEにディスク管理を任せてソフトRAIDにしようと考えた。
しかし前述の通り、P410iはこのマザーボードではHBAをサポートしていない。どうするか?同じ手を使う。各ディスクに単一ディスクのRAID0を個別に作成し、HBAに似た形を実現する。Smart情報は失われるが、こんな古物に誰が気にするだろうか?
記録3:CPUはコア数が多いが低性能
紆余曲折を経て、ようやくOSのインストールが始まった。Proxmox VEのインストールは速い。Debianベースの魔改造システムだからな。インストール後、ZFSパーティションを組んでみたが、ディスク性能はそれほど速くない。試しにWindows 10 LTSCをインストールしてみたが、耐え難いほど遅い。仮想ディスクの読み書きにしても、システムのCPU使用率にしても高いままだった……
ここで重要な問題に気づいた。このマシンのCPUはE7-4807で、6コア12スレッドだが、クロックはわずか1.86GHz、しかもTurbo Boostがない。このクロックは低すぎて、仮想マシンでどんなOSが動くのか全くわからない。俺の記憶が正しければ、ATOMのX5 8550の方がクロックが高いんじゃないか?
最初は仮想マシンにコアを多めに割り当て、Windows 10の大量のエフェクトと負荷を切ってサービスを簡素化してみたが、効果はほとんどなかった。このCPU性能は低すぎる……特にグラフィック性能は目も当てられない。Proxmox VEのWindowsサポートもKVMベースで、これまで良いGPUドライバーは存在しない。現在開発中のものがあるが、まだ使えない状態だ: https://github.com/virtio-win/kvm-guest-drivers-windows/pull/943
今ではこのサーバーの構成が何のためのものだったのかわからない。コアが多く、メモリも多いのに、クロックが低い。聞いたところによると、このサーバーは元々「知識データベース」を動かしていたらしい。最初の担当者を調べたら、なんと俺自身だった。記憶にない。エンジニアが2回来てデータをアップグレードしたことだけ覚えている。会社は逃げ出した。
そこで考え始めた。このマシンの仮想化を向上させる方法はないか。Windowsを動かすなら、Windows Serverをインストールするのが最適解かもしれない?
記録4:「それ」以外に選択肢はない
このマシンにWindows Serverをインストールするのは困難の連続だった。まず立ちはだかるのがドライバーの問題だ。
まずこのマシンは元々Windows Server 2003、しかも32bit版を動かしていた。もはや骨董品という言葉では足りない。Windows Server 2008をインストールしてみたが、Hyper-Vのようなものはないようだ。仮想化を動かすなら少なくともWindows Server 2012以上が必要だ。
そこで問題だ。HP DL580 G7という骨董品に、公式が提供する最後のドライバーサポートは2008まで、しかも32bitのようだ……Windows Server 2012など、ドライバーは全くない。
強引にインストールしてみたが、代償としてマザーボードのチップセットドライバーすら入らず、タスクマネージャーでコアの表示すら見えない。
仕方なく、デバイスマネージャーに表示されるハードウェアIDを頼りに、一つ一つネットでドライバーを探した。なんと全部見つかった。ほとんどはドライバーが入った……型番の奇妙なATIのグラフィックカードを除いて。
ATI、ああ、なんて懐かしい名前だ。小学校の頃のRage 128を思い出す。今はAMDと呼ばれているが、まさか何年も経ってまたこいつに囚われるとは思わなかった。グラフィックドライバーが入らないとHyper-Vが全く使えない。グラフィック性能目当てでやっているのに、ドライバーがなければGPUもクソもない。
Hyper-VがダメならVirtualboxかVmwareで仮想マシンを動かそうとも思ったが、全部このクソグラフィックドライバーに粉砕された。
あれこれ検索した結果、この問題は解決不能だとわかった。2024年現在、このグラフィックカードをサポートできるのはLinuxだけだ。PCI-Eのグラフィックカードを挿すことも考えたが、サーバーのブラケットが入手しにくいのでやめた。
LinuxならVirtualboxは動くが、使いやすい遠隔管理がない。Virtualboxにはphpvirtualboxというプロジェクトがあったが、とっくに死んでいる。誰かがフォークして最新版サポートを提供しているが、サポートは限定的で、Virtualboxのマイナーバージョンアップのたびに再コンパイルが必要で、多くの機能が不安定なままだ……
結局、紆余曲折を経て、使える選択肢はProxmox VEだけだとわかった。
というより、Proxmox VE以外に選択肢はない。
記録5:メルカリ(閑魚)大作戦と最終的なProxmox VE
あれこれ考えたが、やはり諦めたくない。シングルコア性能が低すぎる問題を解決する方法はたくさんある。ソフトウェアがダメならハードウェアからだ。最終的に俺は閑魚(中国のメルカリ的存在)大作戦を選んだ。
閑魚で70元もしない価格でE7-4860が4個買えることがわかった。これで10コア20スレッドにアップグレードできる。コア数が増えるだけでなく、周波数もようやく向上する。デフォルト2.26GHz、Turboで2.67GHzまで上がり、シングルコア性能もかなり改善される。不満なのはCPU本体は安いのに、送料の割合が高すぎることだ。
CPUが届くとすぐにサーバーを開けた。HPのサーバーはネットにマニュアルがあるだけでなく、筐体にも図解があるので分解は簡単だ。4つのCPUを交換し、さらにサーマルグリスを塗り直して冷却を改善した。
交換後は一発点灯。Proxmox VE 8.1を再インストールし、仮想マシンを動かしてみると、まだ速いとは言えないが、少なくとも元よりはるかにマシになった。グラフィック性能についてはQXLを直接使い、3Dはすべて諦めて2Dアクセラレーションのみを提供する。Sunlogin程度を動かして踏み台にするなら全く十分だ。
そこでProxmox VEでNATネットワークを設定した: https://blog.einverne.info/post/2021/10/proxmox-ve-config-nat-vm-use-same-public-ip.html
ZFSの最大メモリ使用量を設定した: https://www.cnblogs.com/surplus/p/14055003.html
国内のデータソースに変更した: https://mirrors.tuna.tsinghua.edu.cn/help/proxmox/
そして独自のスケジュールタスクで、対応する仮想マシンの自動起動と停止を実現した。
こうしてこの「仮想プラットフォームサーバー」は内部テスト段階に入った。何人かのユーザーにテストしてもらい、問題なく動いているように見えた。そして2ヶ月後のある日……
記録6:性能向上を狙って大失敗
この「ジャンク仮想サーバー」は約2ヶ月間、「内部テスト試運転」段階として3〜4人に使ってもらった。マシンを奪い合う必要がなくなったので、反応は悪くなかった。しかし稼働時間が長くなるにつれ、サーバー自体の応答速度も遅くなり始めた。
普段Linuxを使っていて強迫症気味なのか、このサーバーはもっと最適化して速くできるはずだといつも思ってしまう。そこでSwapやカーネルスケジューリングもいくつか調整した。効果はあったが、まあまあだった。
そんなときProxmox VEが8.2のアップデートをリリースした。Changelogを見ると、役立ちそうな新機能がたくさんあった。
- 新しい6.8カーネル
- 新しいZFSモジュール、性能向上が期待できる
- 新しいQEMU、こちらも性能向上
俺はそれほど過激な人間ではないが、サーバーにはすでにProxmox VE 8.1が入っている。8.1から8.2へのアップグレードは「大規模バージョンアップ」では全くないだろう、問題ないはずだ……と思った。
そこでさらなる性能最適化のためにアップグレードを選び、安全のためにZFSのスナップショットとバックアップを取った。めちゃくちゃ遅かったが、なんとか完了した。
アップグレードはProxmox VE付属のWeb UIで行い、割と順調だった。しかし半分ほど進んだところで様子がおかしくなった。システムがフリーズし始め、I/O読み書きエラーのようなものが発生した。まずいと思い、いろいろ試したが救えず、再起動するしかなかった。
再起動後、システムは完全に死亡モードに入った。起動後にrootfsすらマウントできず、何度か再起動するとzfsのマウントもエラーを出す。
まずい、まさかディスクが逝ったか?
Ubuntu Live CDを探してZFSのファイルヘッダを修復すると、再起動後は確かにマウントできた。しかししばらく動かすと、またI/O読み書きエラーが発生。
実はこの時点で上のデータはほぼ諦めていた。そもそも大したデータはない。全部踏み台マシンだし、バックアップも再設定の手間を省くためだけのものだ。そこで試用中の3人に連絡し、16GBメモリのPCを用意して別にProxmox VEをインストールし、仮想マシンを3つ設定して、臨時に使ってもらうことにした。特筆すべきは、俺がインストールしたのがProxmox VE 8.2で、すべて正常だったことだ。

そして一からやり直すつもりで、ダメ元でこの「アップグレードで殺した」サーバーの修復を始めた。
記録5:犯人はディスクかCPUか
システムに起きた問題はI/O読み書きエラーだ。普通の人が最初に思うのはディスクが逝ったということだろう。今やProxmox VE 8.2の新規インストールすらままならず、途中でフリーズする。どう見てもディスク問題にしか見えない。
しかしサーバーのディスクランプはすべて正常で、Ubuntu Live CDでディスクを検査しても、どれも良好だった。
だがディスクのことなんて誰にもわからない。隠れた欠陥かもしれない。しかしそのときログに別のクソみたいな記録を見つけた:
NMI: IOCK error (debug interrupt?) for reason 61 on CPU 0
これは参った。まさかCPUが壊れたのか?閑魚の業者に騙されたのか?いや、そんなはずはない。こんなに生きてきて、CPUが物理的損傷なしに壊れるのを初めて見た。前回CPUが逝くのを見たのは、昔のAMD Duronが煙を上げたときだ。
マシンを分解し、CPUを1個だけ残して再度Proxmox VE 8.2をインストールすると、なんとすべて順調だった。
やはりCPUの問題か?
OSインストール後に簡単な設定をして、20分ほど経つと、システムが再び応答しなくなった。相変わらずのI/O読み書きエラーだ。

草!犯人はCPUかディスクかどっちだ?
消去法を始めて、以下の結果を得た:
- ディスクはどうテストしても問題なし
- マザーボードに挿すCPUの数が少ないほどシステムは安定し、4個挿すとProxmox VE 8.2のインストールすら通らない
- どのようにProxmox VE 8.2をインストールしても、サーバーが20分以上稼働すると必ずI/O読み書きエラーが出る
- どのCPUを残してOSをインストールしても、I/Oエラーは安定して発生する
困惑した。CPUの問題なら、4個同時に壊れるはずがない。確率が低すぎる。ディスクの問題なら、なぜどうテストしても問題ないのか?
しかし選べと言われれば、やはりディスク寄りだ。そんなとき、マザーボードのRAIDカードにも新しいエラーが出た。P410iが「RAIDカードのバッテリー切れ、キャッシュ読み書きを無効化」と言い、時にはRAID情報も読み取れなくなる。これでディスク問題だという信念がさらに強くなり、ここから手を付けることにした。
記録6:呂布が犬に乗る、ジャンクに新品SSD
半週間ほど格闘したが、CPUが壊れたのかディスクが壊れたのか確定できなかった。メモリが壊れた可能性も考えてメモリの挿し抜きテストもしたが、メモリとは無関係だった。しかし問題は解決せず、放置した。
数ヶ月後、単位の班長がこのサーバーの状況を聞いてきたので、この件を話した。相手は「ダメならディスクを換えてみたら」と言い、倉庫から新しいディスクを持ってきた。見ると、なんとサーバー用のSSDだった。これをこの骨董サーバーに挿すのはまさに「呂布が犬に乗る」ようなものだ。
それなら試してみようと、SSDを挿してすぐにProxmox VE 8.2のインストールを開始。なんとインストールは非常に順調で、CPUコアを無効化しなくてもフリーズせずにインストールできた。まさか本当にディスクの問題だったのか?
しかしマシンを30分放置すると、またI/O読み書きエラーが発生した。
…………
やはりディスクの問題ではなかった。では問題はどこだ?起動時のRAIDカードのエラー情報を見て、この問題を思い出した……
まさかこのP410iがおかしいのか?
マシンを開けて調べると、このP410iは丸ごと取り外せる。RAID以外にもいくつかモジュールが載っている。ネットで調べると、RAIDカードの故障による同様の障害事例が確かにあった。それなら……P410iを交換してみるか?

しかし機房の倉庫を探しても、同様の機器やスペアパーツが見つからない。あれほどあったHPのサーバーが全部消えていた…
そこで閑魚を思い出し、検索すると、このボードがなんと80元で売っていた。ここまでやってきたのだから、やはり諦めたくない。交換してみようか?
記録7:高人と出会う
閑魚でこのボードを売ってくれた人は海南の人で、買うと知ると少し値引きしてくれた上に、RAIDのバッテリーと、載っている拡張キャッシュまで付けてくれた。
ボードが届き、確認すると程度は非常に良く、貴重な在庫品のようだった。閑魚の兄貴は詳細なインストールマニュアルまで付けてくれて、それに従って無事起動した。


RAIDカードのエラーはすべて消え、OSインストールも順調だった。
どうやら問題は本当に解決しそうだ。あとは30分待ってI/Oエラーが出ないか見るだけだ。
20分経過、まだ正常
30分経過、エラーは約束通りやってきた……
このときは本当に諦めようと思った。換えられるものは全部換え、テストできるものは全部テストした。まさかマザーボードを交換しろと?閑魚でこのマシンは200元で買えるが、本当に必要か?
そんなとき、閑魚の兄貴がまだ熱心に「解決したか?」と聞いてきた。俺は正直に話すしかなかった。
すると兄貴の興味が湧いたのか、アドバイスをくれ始めた。HPの診断モードに入って全ハードウェアを検査しろと言う。彼はほとんど知らないことがなく、HPサーバーの設定を完全に理解していた。彼の助けを借りてサーバーの全方位的な健康診断を行い、非常に困惑する結論を得た:
ハードウェアに問題はない。
俺は不思議に思って兄貴に聞いた。「なぜそんなに詳しいんですか?転売屋にしては常識外れすぎるでしょう」
兄貴は意味深に答えた:「昔はHPのゴールドエンジニアだったんだ。辞めて、今は手元に残ったスペアパーツを売ってる」
最後に兄貴は、コロナで収入が減り、給料も下がり、HPを辞めてから小さな会社のプロジェクトを手がけたが、報酬を踏み倒され、まだ多くの金を受け取れていないなどと話してくれた……
まさか閑魚でゴールドエンジニアに会えるとは……このサーバーは保証切れから何年も経っている。HPに電話して金を払っても、相手にしてくれるかどうかわからない。
兄貴は最後にこう言った。ハードウェアに問題はまずないとほぼ確信している、唯一考えられるのは元のRaidカードの電池が切れていてキャッシュがオフになりディスク性能が落ちていたことだ、今は電池を補填したからディスク性能は大幅に上がるはずだ、それ以外にハードディスクエラーが出る理由はない。
「やっぱりソフトウェア面から原因を探したほうがいいと思うよ」
これが「元HPゴールドエンジニア」の残した助言だ。
記録8:見落とされたエラー
そのエンジニア兄貴の言葉でさらに混乱した。ソフトウェア問題?ソフトウェアに何の問題があるんだ?
俺は8.1から8.2にアップグレードして、新しいカーネル、新しいQEMU、新しいZFSにしただけだ。何の問題があるっていうんだ?もし問題があるなら最初からマウントできないはずだし、きっちり30分後にエラーを吐くなんておかしいだろ?
問題があるならなぜ一部のCPUを無効にすればインストールできて、問題の発現タイミングが変わるんだ?
再検証した結果、問題は8.1から8.2へのアップグレード時に発生していることがわかった。もし本当にソフトウェア問題なら、この2つの間の問題しかありえない。
そこでよく見てみると、盲点を発見した: https://pve.proxmox.com/wiki/Roadmap#Proxmox_VE_8.2
そこにこんな一文があった:
#### Kernel: `intel_iommu` now defaults to on
The `intel_iommu` parameter defaults to `on` in the kernel 6.8 series. Enabling IOMMU can cause problems with older hardware, or systems with not up to date BIOS, due to bugs in the BIOS.
The issue can be fixed by explicitly disabling `intel_iommu` on the kernel commandline (`intel_iommu=off`) [following the reference documentation](https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysboot_edit_kernel_cmdline).
そして「intel_iommu」と「NMI: IOCK error」というエラーの関係を検索し、この古いカーネルメールを見つけた:
https://lore.kernel.org/linux-iommu/20191206072453.5jjwrjedqbjimx45@cantor/t/
どうやら「intel_iommu」パラメータは一部のHPの古いサーバーでフリーズを引き起こすらしく、Proxmox VEは8.2からこのパラメータをデフォルトで有効にしていた。以前のカーネルでは無効だったのだ。
そこでダメ元でカーネルパラメータのgrubでこのパラメータを無効にしてみた……
再起動後、問題は二度と発生せず、すべて正常に戻った。
最初は不安だったので、さらに半月ほど簡単にテストしたが、サーバーはフリーズもI/O読み書きエラーも一切起きなくなり、これで本当に問題が修正されたと確認できた。
断続的に4ヶ月近くかけて、原因はこんなに単純だったとは。本当に文句の一つも言いたくなる感じだ。メルカリで知り合った兄貴にもこの状況を話したが、彼もこの問題は確かに珍しいと言っていた。「intel_iommu」パラメータは主にGPUパススルー用で、ほとんどは手動で有効にする必要があり、カーネルがデフォルトで有効にすることは稀だからだろう。俺のプラットフォームではGPUパススルーは全く意味がない、動けばいい。
記録9:完全な振り返り
というわけで、ここで問題の完全な振り返りをしよう:
まずこのポンコツサーバーを引き継いだ時点ではハードウェア問題はなかったはずだ。CPUが少し遅い以外は、メルカリでアップグレードもした。
しかしサーバー上のRaidカードの電池残量が深刻に不足していた。それでもまだなんとか使えた。だからOSをインストールし、2ヶ月間試運転して問題なかった。
この「2ヶ月」の間に、Raidカードの電池が完全に切れ、充電もできなくなり、マシンのディスク性能が大幅に低下。マシン全体と仮想マシンの性能を圧迫し、俺の注意を引いたので最適化を始めた。
いろいろ最適化して効果はあったが、顕著ではなかった。そんな時Proxmox VE 8.2がリリースされ、新しいカーネルと新しいZFSを見て、アップグレードで性能向上が得られると思い実行した。まさか新バージョンがデフォルトで「intel_iommu」パラメータを有効にしていて、古いマシンのフリーズ問題を引き起こすとは。「正確にはHPの古いサーバーでフリーズやその他の安定性問題を引き起こす」のだ。
俺はハードウェア問題の調査を始め、CPU、メモリからハードディスク、最後にはRaidカードまで調べたが、ソフトウェア自体は完全に無視していた。何しろ16GBの古いデスクトップでProxmox VE 8.2を動かした時は全く正常だったから。
実は根本的な問題はやはり「intel_iommu」パラメータで、無効にすればすべて解決した。今回のアップグレードも無意味ではなかった。少なくともRaidカードの新しい電池に交換し、ディスク性能低下の問題を完全に解決したからだ。
記録10:タスク完了
根本原因がわかったので、サーバーはOSを再インストールしてデプロイを始めた。以前よりSSDを1台追加してOSを動かし、Raidカードの電池も交換したのでディスク性能は大幅に向上。標準装備の64GBメモリで10台以上の仮想マシンを起動でき、ZFSのスナップショット機能も正常に動作するようになり、この古い骨董品サーバーはついに新たな命を吹き込まれた。


現在上のシステムはすべて安定稼働しており、元の要求を完全に満たしている。むしろ予想以上に性能が良いくらいだ。
記録11:RaidZ1のディスク交換
これは追記。ほどなくしてRaidZ1のディスク1台に問題が発生したが、無事に修理できた。 /archives/13911/
結語:痛い目にあったが収穫はあった
こうして一通り折腾したわけだが、「無駄な折腾」とまでは言えない。少なくとも意味と収穫はあった:
Proxmox VEを古いサーバーにインストールすると画面が表示されない場合があり、カーネルに nomodeset を追加する必要がある
Proxmox VE 8.2からカーネルで「intel_iommu」が有効になり、古いHPサーバーでは安定性問題を引き起こすので手動で無効にする必要がある
複数の独立ディスクでRaid0アレイを組むとHBAに似た効果が得られる
UEFI非対応のサーバーでは大容量ディスクを扱えない
心の奥底にある「ジャンク漁り」の折腾魂を満たした
HPサーバーの分解組立とハードウェア保守を学んだ
Raidカードの電池を常に監視すべし。電池が劣化すると完全に充電できなくなり、Raidカードのキャッシュが無効になってディスク性能に深刻な影響が出る
古いサーバーの保守で困ったらメルカリを覗いてみるといい。破産して退職した「ゴールドエンジニア」にたくさん出会えるかもしれない。電話するよりよほど信頼できて効率的だ
コメントは中国語の本家サイトで受け付けています。このミラーは閲覧専用です。