CentOS 7 は保守終了 (EOL) を迎えたため、移行先として Alibaba Cloud Linux 3 が推奨されています。このトピックでは、移行前に影響を評価できるよう、両ディストリビューションの違いについて説明します。
詳細については、「CentOS EOL ガイダンス」および「オペレーティングシステムのメンテナンスサポート」をご参照ください。
対応が必要な互換性を損なう変更
以下の変更は、移行後にアプリケーションやスクリプトが破損する可能性があります。移行前にこれらをご確認ください。
カーネルとコアツールチェーン
Alibaba Cloud Linux 3 では、コアツールチェーンのバージョンが新しくなっています。移行後、Alibaba Cloud Linux 3 で使用されるダイナミックリンクライブラリ (DLL) に適応させるために、アプリケーションを再コンパイルする必要があります。そうしないと、アプリケーションが DLL ファイルを認識できなくなる可能性があります。
| コンポーネント | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 | Alibaba Cloud Linux 3 Arm64 |
|---|---|---|---|
| gcc | 4.8.5_44.el7 | 10.2.1_3.8.al8 | 10.2.1-3.5.al8 |
| glibc | 2.17_326.el7_9 | 2.32_1.16.al8 | 2.32-1.12.al8 |
| カーネル | 3.10.0-1160.114.2.el7 | 5.10.134-16.1.al8 | — |
| binutils | 2.27_44.base.el7_9.1 | 2.35_12.2.al8 | — |
| systemd | 219_78.el7_9.9 | 239_74.0.3.al8 | — |
| grub2 | 2.02_0.87.0.2.el7.centos.14 | 2.02-148.0.1.al8.1 | — |
カーネルバージョンの違いについては、「カーネルの差異」セクションをご参照ください。
デフォルトの Python インタープリター
CentOS 7 では、/usr/bin/python は Python 2 を指します。Alibaba Cloud Linux 3 では、Python 3 を指します。ご利用のスクリプトやプログラムが python xxx.py を呼び出す場合、移行後に動作が異なったり、失敗したりする可能性があります。
| コンポーネント | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 および Arm64 |
|---|---|---|
| Python | Python 2、Python 3.4、Python 3.6 | Python 2、Python 3.6、Python 3.8、Python 3.11 |
デフォルトの Java インストール
yum install java を実行すると、ディストリビューションに応じて異なる JDK がインストールされます:
CentOS 7:
java-1.8.0-openjdkをインストールしますAlibaba Cloud Linux 3:
java-1.8.0-alibaba-dragonwell(Alibaba の OpenJDK ディストリビューション) をインストールします
Alibaba Cloud Linux 3 に OpenJDK をインストールするには、yum install java-1.8.0-openjdk を実行します。
| コンポーネント | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 および Arm64 |
|---|---|---|
| java-1.8.0-alibaba-dragonwell | — | 3:8.15.16.372-2.al8 |
| java-1.8.0-openjdk | 1:1.8.0.412.b08-1.el7_9 | 1:1.8.0.412.b08-2.0.1.1.al8 |
デフォルトの MySQL インストール
yum install mysql を実行すると、異なるデータベースパッケージがインストールされます:
CentOS 7:MariaDB をインストールします
Alibaba Cloud Linux 3:MySQL をインストールします
| コンポーネント | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 および Arm64 |
|---|---|---|
| mysql | — | 8.0.36-1.0.1.1.al8 |
| mariadb | 5.5.68-1.el7 | 3:10.5.22-1.0.1.al8 |
システムツールの置き換え
Alibaba Cloud Linux 3 では、3 つのコアシステムツールが置き換えられています。ご利用のスクリプトや自動化を適宜更新してください。
| 機能 | CentOS 7 | Alibaba Cloud Linux 3 | 注 |
|---|---|---|---|
| パッケージ管理 | YUM | DNF | |
| ネットワークパケットフィルタリング | iptables | nftables | ファイアウォールルールを nftables の構文を使用するように更新してください。 |
| コンテナランタイム | Docker | Podman | 自己デプロイメント用に Docker Community Edition (CE) をインストールすることもできます。 |
ファイルシステムのサポート
Alibaba Cloud Linux 3 は ext4 と XFS をサポートしていますが、Btrfs はサポートしていません。ご利用のワークロードが Btrfs を使用している場合は、切り替える前にデータを ext4 または XFS に移行してください。
| Kconfig パラメーター | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 | Alibaba Cloud Linux 3 Arm64 |
|---|---|---|---|
| CONFIG_BTRFS_FS | m (モジュールとして有効) | 未設定 | 未設定 |
その他のコンポーネントのバージョン差異
以下のコンポーネントのバージョンは Alibaba Cloud Linux 3 で更新されています。ご利用のアプリケーションが特定のバージョンに依存していない限り、通常は対応は不要です。
CentOS 7 の YUM リポジトリで利用できないコンポーネントバージョンをコンパイルしてインストールした場合、移行後にシステムにログインしたり、アプリケーションを実行したりできなくなる可能性があります。そのようなコンポーネントは Alibaba Cloud Linux 3 でコンパイルするか、Alibaba Cloud Linux 3 の YUM リポジトリからインストールしてください。
| コンポーネント | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 および Arm64 |
|---|---|---|
| golang | 1.20.12-1.el7 | 1.20.12-8.0.1.al8 |
| nginx | 1:1.20.1-10.el7 | 1:1.20.1-1.0.3.al8 |
| php | 5.4.16-48.el7 | 7.4.33-1.0.1.al8 |
| postgresql | 9.2.24-9.el7_9 | 13.14-1.0.1.al8 |
| redis | 3.2.12-2.el7 | 6.2.7-1.0.2.al8 |
| openssl | 1.0.2k_26.el7_9 | 1.1.1k_12.0.1.al8 |
ポートの差異
Alibaba Cloud Linux 3 は CentOS 7 と比較して異なるポートをリッスンします。必要に応じてファイアウォールルールを更新してください。
| プロトコル | ポート | サービス | CentOS 7 | Alibaba Cloud Linux 3 |
|---|---|---|---|---|
| TCP/UDP | 111 | rpcbind | はい (TCP/UDP) | はい (TCP/UDP/TCP6/UDP6) |
| TCP | 22 | SSH | はい | はい |
| TCP | 25 | SMTP | はい | いいえ |
| UDP | 68 | DHCP | はい (NetworkManager プロセス) | はい (dhclient プロセス) |
| UDP/UDP6 | 323 | chronyd | はい | はい |
| TCP/UDP | 5355 | systemd-resolve | いいえ | はい |
主な違い:
ポート 25 (SMTP) は CentOS 7 では開いていますが、Alibaba Cloud Linux 3 では開いていません。
ポート 5355 (systemd-resolve) は Alibaba Cloud Linux 3 では開いていますが、CentOS 7 では開いていません。
UDP 68 (DHCP) は CentOS 7 では NetworkManager プロセスによって管理され、Alibaba Cloud Linux 3 では dhclient プロセスによって管理されます。
カーネルの差異
sysctl パラメーター
変更されたパラメーター
以下の sysctl パラメーターは Alibaba Cloud Linux 3 でデフォルト値が異なります。ほとんどの場合、対応は不要です。これらのデフォルト値はクラウド環境向けに調整されています。
| パラメーター | CentOS 7 の値 | Alibaba Cloud Linux 3 の値 | 説明 |
|---|---|---|---|
| kernel.panic | 0 (読み取り/書き込み) | 1 (読み取り/書き込み) | パニック後にカーネルが自動的に再起動するかどうかを制御します。0 = 再起動なし、>0 = n 秒後に再起動、<0 = 即時再起動。Alibaba Cloud Linux 3 はデフォルトで 1 秒後に再起動します。対応は不要です。 |
| kernel.watchdog_thresh | 10 (読み取り/書き込み) | 50 (読み取り/書き込み) | ウォッチドッグのタイムアウト期間 (秒)。ネットワークリンクがより複雑なクラウド環境での誤検知アラートを減らすために増加されています。対応は不要です。 |
| kernel.nmi_watchdog | 1 (読み取り/書き込み) | 0 (読み取り/書き込み) | マスク不可能割り込み (NMI) を使用したハードロックアップ検出。NMI は Elastic Compute Service (ECS) ではサポートされていないため、デフォルトで無効になっています。ベアメタルインスタンスを使用してハードロックアップ検出が必要な場合は、手動で有効にしてください。 |
| kernel.hung_task_timeout_secs | 120 (読み取り/書き込み) | 240 (読み取り/書き込み) | D (TASK_UNINTERRUPTIBLE) 状態のプロセスが警告をトリガーするまでのタイムアウト (秒)。クラウド環境での誤検知アラートを減らすために増加されています。対応は不要です。 |
| vm.drop_caches | 0 (読み取り/書き込み) | — (書き込み専用) | Alibaba Cloud Linux 3 では読み取り権限が削除されました。CentOS 7 では、このパラメーターを読み取ると、実際にはキャッシュクリアタスクを開始するにもかかわらず、非キャッシュモードを示しているとユーザーを誤解させる可能性がありました。対応は不要です。 |
| vm.dirty_ratio | 30 (読み取り/書き込み) | 40 (読み取り/書き込み) | プロセスが強制的に書き込みを行う前に、ダーティページで埋めることができるシステムメモリの最大パーセンテージ。アクティブなパフォーマンスプロファイルに基づいて tuned デーモンによって設定されます。カスタムチューニングスクリプトがない限り、対応は不要です。 |
| vm.numa_zonelist_order | default (読み取り/書き込み) | Node (読み取り/書き込み) | NUMA メモリ割り当て時のゾーン選択順序を制御します。このオプションは新しいカーネルバージョンでは無効になり、手動制御は不要になりました。対応は不要です。 |
| net.ipv4.tcp_mem | — (読み取り/書き込み) | — (読み取り/書き込み) | TCP が割り当て可能な最大メモリ。更新された初期化アルゴリズム (コミット b66e91ccbc34ebd5a2f90f9e1bc1597e2924a500) のため、同じメモリ仕様でも、Alibaba Cloud Linux 3 のデフォルトのバッファーサイズは CentOS 7 の約半分です。対応は不要です。 |
| net.ipv4.tcp_fastopen | 0 (読み取り/書き込み) | 1 (読み取り/書き込み) | TCP Fast Open を制御します。0 = 無効、1 = アウトバウンド接続のみ有効。Alibaba Cloud Linux 3 ではデフォルトで有効になっています (コミット e1cfcbe82b4534bd0f99fef92a6d33843fd85e0e)。対応は不要です。 |
| net.ipv4.tcp_fack | 1 (読み取り/書き込み) | 0 (読み取り/書き込み) | TCP Forward Acknowledgment (FACK) は RACK (Recent Acknowledgment) アルゴリズムに置き換えられ、無効化されています。対応は不要です (コミット 713bafea92920103cd3d361657406cf04d0e22dd)。 |
| net.core.somaxconn | 128 (読み取り/書き込み) | 4,096 (読み取り/書き込み) | ソケットリスニングキューの最大長。サーバーワークロードの要件を満たすために 128 から 4,096 に増加されました (コミット 19f92a030ca6d772ab44b22ee6a01378a8cb32d4)。対応は不要です。 |
| net.core.default_qdisc | pfifo_fast (読み取り/書き込み) | fq_codel (読み取り/書き込み) | デフォルトのキューイング規律。バッファブロートを防ぐために Fair Queuing Controlled Delay (FQ-CoDel) に変更されました。対応は不要です。 |
削除されたパラメーター
CentOS 7 の以下の sysctl パラメーターは Alibaba Cloud Linux 3 では利用できません。ご利用の構成ファイルやスクリプトがこれらのパラメーターを参照している場合は、削除または置き換えてください。
| パラメーター | CentOS 7 のデフォルト値 | 削除理由 | 推奨される対応 |
|---|---|---|---|
| kernel.panic_on_stackoverflow | 0 | 自動的に検出を行うカーネルスタックガードページに置き換えられました (コミット 117ed45485413b1977bfc638c32bf5b01d53c62b)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| kernel.random.read_wakeup_threshold | 64 | カーネルバージョンの反復中に削除されました (コミット c95ea0c69ffda19381c116db2be23c7e654dac98)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| kernel.compat-log | 1 | 仮想 8086 モードは x86 64 ビットアーキテクチャではサポートされていません。このオプションが生成していた警告ログは不要になりました (コミット 9dcfcda5768eda793e15a1a73da38cfd1fc1a47a)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| kernel.numa_balancing_settle_count | 4 | Linux は現在、タスクの負荷を区別するためにより正確なメトリックを使用しており、このオプションによる周波数しきい値制御は不要になりました (コミット 1bd53a7efdc988163ec4c25f656df38dbe500632)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| kernel.sched_shares_window_ns | 10,000,000 | このオプションは CentOS 7 では効果がありませんでした (コミット 3c3fcb45d524feb5d14a14f332e3eec7f2aff8f3)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| kernel.sched_time_avg_ms | 1,000 | リアルタイムスケジューリングのための per-entity load tracking (PELT) アルゴリズムに置き換えられました (コミット 5fd778915ad29184a5ff8eb82d1118f6916b79e4)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| vm.hugepages_treat_as_movable | 0 | メモリホットスワップ機能に問題を引き起こしたため削除されました (コミット d6cb41cc44c63492702281b1d329955ca767d399)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| vm.nr_pdflush_threads | 0 | このオプションは CentOS 7 では効果がありませんでした (コミット b35bd0d9f8a8ea17aae40893e18274d191a2d2c5)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| net.ipv4.tcp_tw_recycle | 0 | NAT 環境で使用される TCP タイムスタンプのランダム化と競合するため削除されました (コミット 4396e46187ca5070219b81773c4e65088dac50cc)。 | 構成ファイルから削除してください。 |
| net.ipv4.tcp_thin_dupack | 0 | TCP RACK アルゴリズムに置き換えられました (コミット 4a7f6009441144783e5925551c72e3f2e1b0839b)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| net.ipv4.tcp_max_ssthresh | 0 | より効果的な自動スロースタートメソッドに置き換えられました (コミット 9f9843a751d0a2057f9f3d313886e7e5e6ebaac9)。 | 構成ファイルから削除してください。置き換えは不要です。 |
| fs.negative-dentry-limit | 0 | CentOS 7 固有の機能であり、Linux コミュニティカーネルの一部ではありません。CentOS 8 以降で削除されました。詳細については、「Red Hat KB」をご参照ください。 | 構成ファイルから削除してください。置き換えは不要です。 |
| fs.may_detach_mounts | 0 | CentOS 7 固有の機能であり、Linux コミュニティカーネルの一部ではありません。CentOS 8 以降で削除されました。詳細については、「Red Hat KB」をご参照ください。 | 構成ファイルから削除してください。置き換えは不要です。 |
/sys/ パラメーター
| パス | CentOS 7 | Alibaba Cloud Linux 3 | 注 |
|---|---|---|---|
| /sys/block/\<blk\>/queue/read_ahead_kb | 128 | 4,096 | この値は tuned デーモンによって設定されます。大きな先読み値は、データベースワークロードのパフォーマンスを低下させ、ディスク I/O を増加させる可能性があります。これがご利用のワークロードに影響を与える場合は、値を 128 に戻してください。 |
| /sys/module/virtio_net/parameters/napi_tx | — | 有効 | virtio_net 送信キューで NAPI を使用するかどうかを制御します。一部のベンチマークシナリオでは、NAPI を有効にすると TCP パケットのアセンブリが妨げられ、スループットが低下します。無効にするには、virtio_net.napi_tx=0 を設定します。 |
カーネルコマンドラインパラメーター
| パラメーター | CentOS 7 | Alibaba Cloud Linux 3 | 説明 |
|---|---|---|---|
| cgroup.memory=nokmem | 未構成 | 構成済み | cgroup のカーネルメモリ課金 (CONFIG_MEMCG_KMEM) を無効にします。無効にするとシステムパフォーマンスが向上します。詳細については、「Anolis コミュニティ」をご参照ください。 |
| crashkernel=auto | 構成済み | 未構成 | kdump サービス用に予約されたメモリを自動的に計算します。Alibaba Cloud Linux 3 イメージには crashkernel の予約メモリサイズが事前構成されているため、このパラメーターをデフォルト設定から削除しても影響はありません。 |
| net.ifnames=0 | 構成済み | 構成済み | レガシーなネットワークインターフェイスの命名 (eth0, eth1) を復元し、systemd の予測可能な命名機能を無効にします。両方のディストリビューションでデフォルトで構成されています。ネットワークインターフェイスの命名の変更は互換性に影響を与える可能性があります。詳細については、「「サポートされていないネットワーク構成」というエラーメッセージが表示された場合の対処法」をご参照ください。 |
Kconfig パラメーター
以下のカーネル構成パラメーターは、2 つのディストリビューションで異なります。
| パラメーター | CentOS 7 x86 | Alibaba Cloud Linux 3 x86 | Alibaba Cloud Linux 3 Arm64 | 説明 |
|---|---|---|---|---|
| CONFIG_NR_CPUS | 5,120 | 1,024 | 1,024 | サポートされる最大 CPU コア数。1,024 コアを超える Alibaba Cloud インスタンスはないため、実用上の影響はありません。 |
| CONFIG_NODES_SHIFT | 10 | 6 | 6 | サポートされる最大 NUMA ノード数 (2^6 = 64 ノード)。64 NUMA ノードを超える Alibaba Cloud インスタンスはないため、実用上の影響はありません。 |
| CONFIG_PREEMPT_NONE | 未設定 | y | 未設定 | カーネルプリエンプションモード。x86 上の Alibaba Cloud Linux 3 は、クラウドパフォーマンスを向上させるために非プリエンプションモードを使用します。このモードは、歴史的な理由から Arm64 用の Alibaba Cloud Linux 3 では無効になっています。カーネルバージョン 5.10.134-17 以降では、カーネルコマンドラインパラメーターを使用してデフォルトのプリエンプションモードを動的に変更できます。 |
| CONFIG_PREEMPT_VOLUNTARY | y | 未設定 | y | 自主的プリエンプションモード。CentOS 7 および Alibaba Cloud Linux 3 Arm64 で有効です。 |
| CONFIG_BTRFS_FS | m | 未設定 | 未設定 | Alibaba Cloud Linux 3 は ext4 および XFS ファイルシステムをサポートしていますが、Btrfs はサポートしていません。ご利用のワークロードが Btrfs を使用している場合は、切り替える前にデータを ext4 または XFS に移行してください。 |