解き放たれしソフトウェア

GNU/LinuxなどFLOSSについて書いてみるつもり

Let's Encrypt の TLS 証明書をウェブ以外で利用するには

Let’s Encrypt発行のTLS証明書は、FirefoxChrome などのウェブブラウザでは対応しています。 しかし、Let’s Encrypt の証明書はウェブで利用することが想定されていて、その他のインターネットサービスにはそのままでは利用不可能だったりします。

その原因は、認証局から直接に署名された証明書ではなく、中間に証明書をもう一つ挟んでいるからです。 その中間証明書がインストール済ならばそのまま利用可能なのですが、無ければ中間証明書を読み込ませる必要があります。

具体的には、 Let’s Encrypt で発行を受けたときに付いてくる chain.pem というファイルが相当しますが、 同じものが “Chain of Trust - Let's Encrypt - Free SSL/TLS Certificates” にアップロードされています。 (“Let’s Encrypt Authority X3 (IdenTrust cross-signed)”)

この中間証明書を保存して、 CA (Certificate Authority)ファイルとして読み込ませれば、ウェブ以外のネットワークサービスでも利用可能になるはずです。

lm_sensors でファンの回転数を制御する

近年の PC 用 M/B の多くは、温度やファン回転数、電圧のセンサーチップが搭載されています*1。CPU 温度と冷却ファン回転数を監視することで、ファンが壊れて即死という事態を予防しています。 そして、M/B のファームウェアによりますが、ファン回転数を制御可能な M/B が一般的になっています。

lm_sensors

さて、GNU/Linux では、 lm_sensors を用いると、こうした温度や回転数などの数値を取得可能です。 さらに、 lm_sensors を用いれば、検出した温度に合わせてファンの回転数を変えるということも可能です。

参照: ArchWiki

まず、 lm_sensors をインストールします。

sensors_detect

そして、sensors-detect を root 権限で実行して、センサーを検出します。

Gentoo の場合は

Gentoo の場合は Linux カーネルを自力でビルドするのが原則でしょうから、sensors-detect の出力内容に応じてカーネルコンフィグレーションをやり直し、カーネルの再インストールが必要になるかもしれません。 lm_sensors - Gentoo Wiki にも書いてありますが、

  • CONFIG_I2C
  • CONFIG_I2C_CHARDEV
  • CONFIG_HWMON
  • CONFIG_THERMAL_HWMON
  • (おそらくは) CONFIG_X86_CPUID
  • M/B に載っているセンサーチップ用のデバイスドライバ

以上を、ローダブルモジュール<M>でもいいですが、有効にする必要があります。

とはいえ、M/B に載っているセンサーチップが何かが判らないでしょう。 とりあえず後回しにして sensors-detect を先に実行すると判ります。

設定が完了したら、service lm_sensors start で開始し、rc-update add lm_sensors default で再起動後も始動するようにします。

sensors

設定完了後は、 sensors コマンドで、センサーの数値が表示されます。

fancontrol

lm_sensors に入っている fancontrol が、ファン回転数制御のためのプログラムです。

参考: ArchWiki

pwmcontrol

fancontrol を使えるようにするには設定が必要です( /etc/fancontrol )。 pwmconfig は、この設定のためのツールです。

Gentoo の場合は

Gentoo ではやはり、 service fancontrol start で始動し、 rc-update add fancontrol default で自動始動にします。

DCファンの構造と回転数制御

さて、PC は電源ユニットから先は直流電力(DC)ですから、冷却ファンもDCです。

DCですから、端子の一本はプラスで、一本はマイナスです。

CPU 冷却ファンなどでは、回転数を M/B に検知させるのが一般的になって久しいです。そこで、回転数を知らせるためのピンが1本あります。

よって、端子は、3ピンあるわけです。

回転数制御の手法

回転数を固定ではなく可変にすることもいまや一般的です。 そして、回転数を変えるための手法には

  1. M/B が一方的に電圧を上下させる手法(電圧制御方式)
  2. M/B がファンに信号を送って、その信号を受けたファンが回転数を変える手法(パルス幅変調制御方式 ; PWM

の2種類があります。

電圧による制御では、ファン側に特別な機能は必要ないのが利点で、挙動は M/B と ファンとの相性次第で何ら確証がないのが欠点です。電圧が足りないときのファンは、停止します。

他方の PWM 制御では、信号を送るためのピンがさらに1本必要になり、合計4本の端子になってしまいます。 PWM 制御では、挙動はファンの設計次第で決まるので確実です。

M/B の対応状況

電圧制御でも回転数の上下は可能ですから、 PWM 非対応の M/B は多いです。

lm_sensors の pwmconfig では、"PWM" という語を用いてはいますが、PWM 用の数値を M/B に送ったところで実際にどう処理されるかは M/B 次第です。

実際には PWM 非対応の M/B では、電圧を変えることでファンの回転数を制御します。

3ピン端子と4ピン(PWM対応)端子の互換性

3ピン端子と、4ピン(PWM対応)端子とは、互換性があります。 PWM 対応 M/B に 3ピン端子は挿せます。 PWM 用ファンを PWM 非対応 M/B に挿せます。ただし、他の部品による物理的干渉が無いことが前提ですが。

PWM 信号が来ないときの PWM ファンは、100% の指令が来ているものとして動作します。 ですから、電圧制御方式の M/B に挿しているときは、 PWM ではフル回転ですが、電圧不足で回転数が下げられます。

実際の回転数の設定どうしよう

ケース内には、M/B のシステムチップ、RAM モジュール、拡張ボード、HDD など、発熱する部品があるでしょう。 ですから、いくら CPU がパッシブヒートシンクだけでまかなえる状況であったとしても、ケースへの air flow はあった方がよいと思います。

ただし、電源ユニットがファンレスではない場合は、電源ユニットのファンを利用して冷却し、CPU ファンやケース(シャーシ;chasis)ファンは止めるという案もあるかもしれません。そうなると、 CPU ファンもケースファンも止める余地はあります。

*1:他方で、携帯端末などのいわゆる「組込み」などではそもそも CPU が過熱しない、ファンがないといったことから、事情は異なります

スワップは RAM の 20%、とレッドハットの人

Red Hat の人が、RAM の多い現在におけるスワップの必要性について書いています。

Do we really need swap on modern systems? - RED HAT BLOG

例えば RAM が 2GB でスワップが 2GB のシステム上で、間違えて 5GB を利用する設定でデータベースサーバを運用してしまったら、RAM を使い切ったらスワップアウトして遅くなり、スワップを使い切ってようやく不要なプロセスが終了させられるスワップが 2GB もあるせいで、システムが重くなる時間が長く続いてしまう。その間はログインすら不可能な状況が起こるかもしれない。

しかしもしもスワップ無しにしてしまうと、スワップアウトの起こらないまま直ちにプロセスが終了させられてしまう。そのため、トラブルを未然に防ぐことが不可能になるとともに、解析も困難になってしまう。

よって、RAM よりも少量でスワップを用意した方がよく、スワップに使用するディスクは速い方がよい、という結論。

Our size recommendation for most modern systems is ‘a part of the physical RAM’, for example, 20%. With this, the painfully slow phase of operation in our example will not last as long, and the OOM kicks in earlier.

物理 RAM の 2割

If you design your applications to regularly use swap, make sure to use faster devices, like SSD - starting with Red Hat Enterprise Linux 7.1, ‘swapon –discard’ can be used to send TRIM to SSD devices, to discard the device contents on swapon.

スワップに使用するディスクは、可能ならば SSD で。 いま(RHEL 7.1 以降)は、swapon のオプションには discard があるので、 SSDスワップを設定しても TRIM を発行させることが可能。

util-linuxswapon ですが、たしかにありますね。 https://git.kernel.org/cgit/utils/util-linux/util-linux.git/commit/?id=c230138

ただし、この記事は RHEL のブログで、あくまでもサーバ運用を想定して書かれています。

以前なら、書換寿命のある SSDスワップに用いたくはなかったものですが、今の SSD は耐性が向上しています。 しかもサーバ運用だとプロ用の高寿命 SSD が用いられることがよくあります。 そのため、高速である SSDスワップにも使った方がよいという思い切った結論の取れる時代になったようです。