2023年10月17日火曜日

FreeBSD で「libssl.so.11」がないからアプリが実行できない,と言われた

 2023年10月15日に FreeBSD 上のアプリケーションのアップデートをしていたら,急に多くのアプリケーションが動かなくなった。 その顛末を書こう。

 きっかけは FreeBSD 上で portupgrade をしたことに始まる。このパターンは結構多い。 今回は,実はアップデート自体には全く問題はなかった。 しかし,その後,急に多くのアプリが動かなくなった。 吐き出すエラーは
ld-elf.so.1: /usr/local/lib/libssl.so.11: version XXXXXX required by YYYYYY not found
という感じのもの(ここで XXXXXX や YYYYYY はバージョンやこのライブラリを使ってるアプリやら別のライブラリやら)

これが1個や2個ならいいが,サーバーによってはルート権限で実行もできなくてほとほと困ってしまった。

ちょっと調べると,この「libssl.so.11」は「openssl-1.1.1w」でインストールされるものだった。 これは,FreeBSD では「/usr/ports/security/openssl111/」でインストールできる。 実は少し前までは「openssl」といえばこのバージョンだったが,ちょっと前にデフォルトバージョンが「3.0.x」に変わっていた。 そのため,openssl をアップデートした際に,v.1.1.1w から v.3.0.x に上がってしまい,ライブラリが libssl.so.12 になっていた。 結果として openssl-1.1.1w でインストールされた libssl.so.11 を使ってるアプリケーションソフトでエラーが起こったみたい。

そこで,どのアプリが libssl.so.11 を使っているかをチェックしてみた。 それには以下のようにする。
# pkg shlib -qR libssl.so.11
libevent-2.1.12
librtmp-2.4.20190330
rtmpdump-2.4.20190330
python27-2.7.18_2
p5-Net-SSLeay-1.92
w3m-0.5.3.20230129
..........

2023年10月9日月曜日

FreeBSD で zfs ファイルシステムに M.2 NVMe SSD を追加した

 2023年9月に FreeBSD で使用している「zfs」に M.2 NVMe 接続の SSD を追加した。 その件についてメモを兼ねて書いておこう。

 1個前の投稿で,zfs ファイルシステムのアップグレードの話を書いた。 zfs ファイルシステムのアップグレードは,実は今回の M.2 NVMe 接続の SSD を追加の際に必要になったので行ったのだった。 一部重複する内容もあるが,あまり気にしないでおこう。

 SSD の追加が必要になった理由は,使用している 2.5 inch の SSD の容量が心もとなくなってきたから,である。 Note PC をサーバーとして使い,そのストレージに 1TB の 2.5 inch SSD を使っているが,写真やらを大量に置いていると徐々に SSD の容量を圧迫してきた。 実質 920GB ほどの領域で,空きが 180GB 程度になっていた。これはちょっと心もとない。ということで,ストレージを増やすことにした。

 今使ってる Note PC には空いている NVMe のスロットがあるので,新たに NVMe の SSD を追加することにした。 そうすると 2.5 inch SSD は特に何もしなくていい。特に「zfs」を使ってるので拡張も簡単やし…。 そこで 1TB の M.2 NVMe SSD を買って追加することにしたのだった。

M.2 NVMe 接続の SSD の追加

 具体的な(物理的な)M.2 NVMe 接続の SSD の追加についてはここでは書かないでおこう。 写真とか撮ってないし…。 NVMe SSD は思ったよりも小さい印象がある。2.5 inch SSD よりも小さい(細長く薄っぺらい)印象がある。

zfs について

 zfs に関しては前回の投稿を見てほしいが, 複数のデバイス(複数の HDD や複数の SSD など)をストレージに使う際に,見た目は全体として1個のファイルシステムとして(全体を1個のプール (pool)として)扱えるところが便利である。 言い換えると「プール」という大きな HDD が1個あるような感じであり,その中に物理的なデバイスを追加して,複数の(1個でもいいが)HDD や SSD で1個のプールを構成している。 今回も M.2 NVMe SSD を追加して,それを既存のプールに追加するだけだった。

FreeBSD で zfs をアップグレードした際に efi boot 領域を作り直した

 2023年9月に FreeBSD で使用している「zfs」に M.2 NVMe 接続の SSD を追加した。 その際,「zfs」ファイルシステムのアップグレードが必要であり,かつ元からあった 2.5 inch SSD の efi boot 領域を作り直さないといけなかった。 その件についてメモを兼ねて書いておこう。

 そもそも,なぜ zfs のアップグレードが必要になったというと,使用している 2.5 inch の SSD の容量が心もとなくなってきたから,だった。 現在,当該の FreeBSD は L社の Note PC に入っているが,HDD は遅いので SSD に置き換えている。 その際,1TB の 2.5 inch SSD を入れたのだが,web サーバーに写真やらを大量に置いていると徐々に SSD の容量を圧迫してきた。 実質 920GB ほどの領域で,空きが 180GB 程度になっていた。 さすがにこれはちょっと心もとない。ということで,ストレージを増やすことにした。

 ストレージを増やすには,一つの手段として 2.5 inch SSD をより大きな容量のものに変更する,という手が考えられる。 しかし,それだと新しい SSD にシステムを入れ直して,データも移動させないといけない。それは手間がかかる。 一方,現在使っている Note PC には空いている NVMe のスロットがある。それなら新たに NVMe の SSD を追加することもできる。 M.2 NVMe を追加するなら 2.5 inch SSD は特に何もしなくていいことになる。データの移動もさせなくてもいい。 そこで 1TB の M.2 NVMe SSD を買って追加することにした。 (M.2 NVMe SSD の追加の話は次の投稿で書くことにする

 ところで,現在 FreeBSD を入れているサーバーは,ファイルシステムとして「zfs」を使っている。 これはもともと Oracle 社の Solaris 用に開発されたものみたい。 zfs の便利な点は,複数のデバイス(複数の HDD や複数の SSD など)をストレージに使う際に,見た目は全体として1個のファイルシステムとして扱える点が挙げられる。 そのため,どんな物理デバイスがどのように使われているか,をあまり意識しなくていい。 デバイスを追加する際にも,いちいちスライスを切り直したりしなくてもいい。 また,既存のシステムのデバイスを交換する際にも,物理的にデバイスを接続した後の処理がシステムを止めずにできる。 デメリットとしては,ファイルシステムの管理用にある程度 CPU の能力を使う点が挙げられるが…。