RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

Almalinux9系を検証して分かった8系との違い・導入の注意点

はじめに

CentOS8系がEOL(End Of Life)を迎えた関係で、個人的にAlmalinux系を触る機会が増えていきました。
CentOS8系の代わりと考えるとAlmalinuxも同様にバージョン8系を使うというのが素直なところでしょうか。
しかしながら、EOLもありますし、Almalinuxバージョン9系がリリースされてもいますので、Almalinux9系のサーバを構築してみました。
構築してみて、気づいた点(主に8系との違い)をいくつかご紹介します。

※調査不足なこともあるかと思います。暖かく見守ってくだされば助かります。

インストールGUI

CentOS7やCentOS8/Almalinux8系と比べてもあまり差は感じませんでした。
タイムゾーン設定画面で地域をピンポイントで選択できるようになっていたぐらいかなと思います。
日本列島のいろんなところを選択はできるものの東京のタイムゾーンになります。

selinuxの無効化の方法が減った・・・

最近だとselinuxは有効化した状態でfirewalldも活用して、適切にセキュリティ環境を整えましょう
という風潮とは思いますが、とりあえず動く環境を構築するのにselinuxは邪魔!!なので↓

# vi /etc/selinux/config
SELINUX=enforcing を disabledにしてreboot!!

あれ?無効化されない?!

どうやらAlmalinux9系では、selinuxの無効化方法が減ったようです。
/etc/selinux/configのSELINUXをdisabledに設定することはできるが有効な手段ではないそうで、
カーネルパラメータを変更する方法しかなさそうでした。
改めて↓

# vi /etc/default/grub
(抜粋)
 GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/almalinux-swap rd.lvm.lv=almalinux /root rd.lvm.lv=almalinux/swap biosdevname=0 net.ifnames=0 selinux=0"

# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot

仮想環境上(LVM)でスナップショットを使ったリストアをすると起動しない?!

仮想環境で構築したAlmalinux9系のサーバの各種設定を色々イジって遊んでみよう!!
設定変更前の状態のスナップショットを取得しておいたら、元に戻せるし便利~♪
と思っていて、いざスナップショットを利用してリストアしてみたものの起動しない!!!

原因はLVM
LVMがDEVNAMEなどのPVを検索するために/etc/lvm/devices/system.devicesが使用されるるため、
クローンしたVM/スナップショットでリストアしたVMが正常に起動せずエマージェンシーモードで起動してしまいます。
Almalinux8系ではデフォルトで「無効」状態となっていたため今までは特に考慮することなくスナップショットを利用したリストアができていたようです。
是正方法は以下の通り。

# vi /etc/lvm/lvm.conf
 └ use_devicesfile = 0 をコメントイン
# rm -f /etc/lvm/devices/system.devices

(当初は原因がわからず、何回もOSインストールを行っていたのは内緒です)

ethernet命名が変わっただけじゃないの??

みなさんは、ネットワークの名前(ethernet)にはenp**とかens**とかをお使いでしょうか。 私はいまだにeth0とかeth1とか使ってます。
ということで、Almalinux9系のサーバでもいつもと同じようにethernetの名前を変えてしまいます。

/etc/default/grubGRUB_CMDLINE_LINUX項目でbiosdevname=0 net.ifnames=0を付与
selinuxのところで登場してるので、他のコマンドはここでは割愛)

# vi /etc/sysconfig/network-scripts/ <Tab>キー、、、<Tab>キー、、、あれ??
ifcfg-***とかが出てこない・・・

network-scriptsが削除されたとのことでした。。。
代わりに /etc/NetworkManager/system-connections/eth0.nmconnection を編集するそうです。

# vi /etc/NetworkManager/system-connections/eth0.nmconnection
  [connection]
  id=eth0
  uuid=<UUIDの長い文字列>
  type=ethernet
  autoconnect-priority=-999
  interface-name=eth0
  timestamp=
  
  [ethernet]
  
  [ipv4]
  address1=999.999.999.999/24,<必要ならデフォルトゲートウェイ>
  method=manual
  
  [ipv6]
  addr-gen-mode=eui64
  method=ignore  ※ipv6は原則ignoreしてます。いつの日にか使います。
  
  [proxy]

ざっと上記ような内容です。
nmcliコマンドによるIPアドレス変更はもちろんCentos7系以降は推奨なので使えます。
nmconnectionを修正したら↓

# nmcli c down eth0
# systemc restart NetworkManager
# nmcli c up eth0

※NetworkManagerサービスを再起動するだけでは反映されません。ethを一度ダウン、アップする必要があります。

意図したファイルのログローテーションがエラ―するよ。。。

今回Almalinux9系を触っていて、一番嵌ったのがこれかもしれません。
いわゆるrsyslog類【messages,maillog,secure,spoolerなど】のログローテーション状況を確認すると

# ls -1 /var/log/messages*
  /var/log/messages
  /var/log/messages-20231226
  /var/log/messages-20231227.gz

/etc/logrotate.confと/etc/logrotate.d/rsyslogの設定通りにログファイルはローテーションされています。

しかし、/etc/logrotate.d/に個別で設定した、意図したディレクトリ配下のファイルはなぜかローテーションされませんでした。
こういうときはおおよそ、以下が考えられると思います。

  • ローテーション対象のログファイルやそのディレクトリの権限がイケてない
  • 対象のファイル命名規則の誤り
  • ローテーションするファイルの指定ミス

messagesログにもエラーメッセージが出力されていました。
error: failed to rename <対象のログファイル> to <対象のログファイル>: 読み込み専用ファイルシステムです。

エラー内容から権限がイケてなさそうだと判断して、対象のファイルやディレクトリ、念のためローテーションのオプションを見直してみました。
翌日確認すると、同じエラー!!!
ここから数日同じ確認と修正をしては同じエラーに悩まされました。
ちなみに手動実行でのテストでは問題なし。

原因を切り分けていくとlogrotate.serviceファイルがもしや何らかの問題を抱えているのでは?と考え至り、確認してみました。
すると
/etc/systemd/system/logrotate.service
上記ファイルの設定の内ProtectSystem=fullという設定によってローテーションできないことが判明しました。

Almalinux9以前のOSでもこの設定はあるのですが、デフォルトではProtectSystem=noという設定になっており、ローテーションできていました。
設定を変更すると無事に問題が解決!

今回のケースでは2種類の解決方法がありました。

  1. ProtectSystem=noに設定変更
  2. ReadWritePaths=<ローテーションしたいディレクトリを指定>

セキュリティの観点では2を選択したほうがよさそうです。

最後に

LINUX系OSについて業界がざわざわする事態もありました。
その最中にAlmalinux9系を触ることになって、意味があるのかないのかひやひやしてましたが
落ち着いた?ようで今のところよかったです。
今回ご紹介したAlmalinux9系の情報が、だれかのお役に立てば幸いです。

Copyright © RAKUS Co., Ltd. All rights reserved.