1.4. インストール時のディスクの暗号化およびミラーリング
OpenShift Container Platform のインストール時に、クラスターノードでブートディスクの暗号化およびミラーリングを有効にできます。
1.4.1. ディスクの暗号化について
インストール時に、コントロールプレーンおよびコンピュートノードのブートディスクの暗号化を有効にできます。OpenShift Container Platform は Trusted Platform Module (TPM) v2 および Tang 暗号化モードをサポートします。
- TPM v2
- これは優先モードです。TPM v2 は、パスフレーズをサーバー上の安全な暗号プロセッサーに保存します。このモードを使用すると、ディスクがサーバーから取り外された場合に、クラスターノード上のブートディスクデータの暗号化が解除されないようにすることができます。
- Tang
- Tang および Clevis は、ネットワークバインドディスク暗号化 (NBDE) を有効にするサーバーおよびクライアントコンポーネントです。クラスターノードのブートディスクデータを 1 つまたは複数の Tang サーバーにバインドできます。これにより、ノードが Tang サーバーにアクセスできる安全なネットワーク上にない限り、データの復号化が防止されます。Clevis は、クライアント側の復号化の実装に使用される自動復号化フレームワークです。
Tang 暗号化モードを使用したディスクの暗号化は、user-provisioned infrastructure でのベアメタルおよび vSphere インストールでのみサポートされます。
以前のバージョンの Red Hat Enterprise Linux CoreOS (RHCOS) では、ディスク暗号化は Ignition 設定で /etc/clevis.json
を指定して設定されました。このファイルは、OpenShift Container Platform 4.7 以降で作成されたクラスターではサポートされていません。次の手順を使用して、ディスク暗号化を設定します。
TPM v2 または Tang 暗号化モードを有効にすると、RHCOS ブートディスクは LUKS2 形式を使用して暗号化されます。
この機能には以下の特徴があります。
- installer-provisioned infrastructure、user-provisioned infrastructure、および Assisted Installer のデプロイメントで利用可能
Assisted Installer のデプロイメントの場合:
- 各クラスターは、Tang または TPM の 1 つの暗号化方式のみを持つことができる
- 一部またはすべてのノードで暗号化を有効にできる
- Tang のしきい値がないため、すべてのサーバーが有効で動作している必要がある
- 暗号化はインストールディスクにのみ適用され、ワークロードディスクには適用されない
- Red Hat Enterprise Linux CoreOS (RHCOS) システムのみでサポートされる
- マニフェストのインストール段階でディスク暗号化を設定し、最初の起動以降、ディスクに書き込まれるすべてのデータを暗号化する
- パスフレーズを提供するのにユーザーの介入を必要としない
- FIPS モードが有効な場合は、AES-256-XTS 暗号化、または AES-256-CBC を使用する
1.4.1.1. 暗号化しきい値の設定
OpenShift Container Platform では、複数の Tang サーバーの要件を指定できます。TPM v2 と Tang 暗号化モードを同時に設定することもできます。これにより、TPM セキュア暗号プロセッサーが存在し、Tang サーバーがセキュアネットワーク経由でアクセスできる場合にのみ、ブートディスクデータの復号化が有効になります。
ブタン設定で threshold
属性を使用して、復号化が発生するために必要な TPM v2 および Tang 暗号化条件の最小数を定義できます。
宣言条件の組み合わせで指定値に到達した場合に、しきい値が満たされます。オフラインプロビジョニングの場合、オフラインサーバーは含まれているアドバタイズメントを使用してアクセスされ、オンラインサーバーの数が設定されたしきい値を満たさない場合にのみ、その提供されたアドバタイズメントを使用します。
たとえば、次の設定の threshold
2
は、オフラインサーバーをバックアップとして使用して 2 つの Tang サーバーにアクセスするか、TPM セキュア暗号プロセッサーといずれかの Tang サーバーにアクセスすることで到達できます。
ディスク暗号化の Butane 設定例
variant: openshift version: 4.14.0 metadata: name: worker-storage labels: machineconfiguration.openshift.io/role: worker boot_device: layout: x86_64 luks: tpm2: true tang: - url: http://tang1.example.com:7500 thumbprint: jwGN5tRFK-kF6pIX89ssF3khxxX - url: http://tang2.example.com:7500 thumbprint: VCJsvZFjBSIHSldw78rOrq7h2ZF - url: http://tang3.example.com:7500 thumbprint: PLjNyRdGw03zlRoGjQYMahSZGu9 advertisement: "{\"payload\": \"...\", \"protected\": \"...\", \"signature\": \"...\"}" threshold: 2 openshift: fips: true
variant: openshift
version: 4.14.0
metadata:
name: worker-storage
labels:
machineconfiguration.openshift.io/role: worker
boot_device:
layout: x86_64
luks:
tpm2: true
tang:
- url: http://tang1.example.com:7500
thumbprint: jwGN5tRFK-kF6pIX89ssF3khxxX
- url: http://tang2.example.com:7500
thumbprint: VCJsvZFjBSIHSldw78rOrq7h2ZF
- url: http://tang3.example.com:7500
thumbprint: PLjNyRdGw03zlRoGjQYMahSZGu9
advertisement: "{\"payload\": \"...\", \"protected\": \"...\", \"signature\": \"...\"}"
threshold: 2
openshift:
fips: true
- 1
- このフィールドをクラスターノードの命令セットアーキテクチャーに設定します。いくつかの例には、
x86_64
、aarch64
、またはppc64le
が含まれます。 - 2
- Trusted Platform Module (TPM) を使用してルートファイルシステムを暗号化する場合は、このフィールドを追加してください。
- 3
- 1 台以上の Tang サーバーを使用する必要がある場合は、このセクションを追加してください。
- 4
- オプション: オフラインプロビジョニングにこのフィールドを含めます。Ignition は、実行時にサーバーからアドバタイズメントを取得するのではなく、Tang サーバーバインディングをプロビジョニングします。これにより、プロビジョニング時にサーバーが利用できなくなります。
- 5
- 復号化を行うために必要な TPM v2 および Tang 暗号化条件の最小数を指定します。
デフォルトの しきい値
は 1
です。設定に複数の暗号化条件を追加してもしきい値を指定しない場合は、いずれかの条件が満たされると復号が行われます。
復号に TPM v2 と Tang が必要な場合、threshold
属性の値は、指定された Tang サーバーの総数に 1 を加えた値と等しくする必要があります。threshold
が低い場合は、単一の暗号化モードを使用することで、しきい値に達する可能性があります。たとえば、tpm2
を true
に設定し、2 つの Tang サーバーを指定すると、TPM セキュア暗号プロセッサーが利用できない場合でも、2 つの Tang サーバーにアクセスすることでしきい値 2
を満たすことができます。
1.4.2. ディスクのミラーリングについて
コントロールプレーンおよびワーカーノードでの OpenShift Container Platform のインストール時に、ブートおよびその他のディスクの 2 つ以上の冗長ストレージデバイスへのミラーリングを有効にできます。1 つのデバイスが使用可能なままであれば、ストレージデバイスの障害後もノードは機能し続けます。
ミラーリングは、障害の発生したディスクの置き換えをサポートしません。ノードを再プロビジョニングして、ミラーを本来の劣化していない状態に復元します。
user-provisioned infrastructure のデプロイメントの場合、ミラーリングは RHCOS システムでのみ使用できます。ミラーリングのサポートは、BIOS または UEFI で起動した x86_64
ノードおよび ppc64le
ノードで利用できます。
1.4.3. ディスク暗号化およびミラーリングの設定
OpenShift Container Platform のインストール時に暗号化およびミラーリングを有効にし、設定できます。
前提条件
- インストールノードで OpenShift Container Platform インストールプログラムをダウンロードしている。
インストールノードに Butane がインストールされている。
注記Butane は、OpenShift Container Platform が使用するコマンドラインユーティリティーであり、マシンの設定を記述および検証するための便利で簡潔な構文を提供します。詳細は、「Butane を使用したマシン設定の作成」を参照してください。
- Tang 交換キーのサムプリントの生成に使用できる Red Hat Enterprise Linux (RHEL) 8 マシンにアクセスできる。
手順
- TPM v2 を使用してクラスターを暗号化する必要がある場合は、TPM v2 暗号化を各ノードのホストファームウェアで有効にする必要があるかどうかを確認します。これは、ほとんどの Dell システムで必要になります。特定のシステムのマニュアルを確認してください。
Tang を使用してクラスターを暗号化する必要がある場合は、以下の準備段階の手順に従います。
- Tang サーバーを設定するか、既存のサーバーにアクセスします。手順は、Network-bound disk encryption を参照してください。
RHEL 8 マシンに
clevis
パッケージがインストールされていない場合はインストールします。sudo yum install clevis
$ sudo yum install clevis
Copy to Clipboard Copied! RHEL 8 マシンで以下のコマンドを実行し、交換キーのサムプリントを生成します。
http://tang1.example.com:7500
を Tang サーバーの URL に置き換えます。clevis-encrypt-tang '{"url":"http://tang1.example.com:7500"}' < /dev/null > /dev/null
$ clevis-encrypt-tang '{"url":"http://tang1.example.com:7500"}' < /dev/null > /dev/null
1 Copy to Clipboard Copied! - 1
- この例では、
tangd.socket
は Tang サーバーのポート7500
でリッスンしています。
注記clevis-encrypt-tang
コマンドは、交換キーの拇印を生成します。このステップでは、データは暗号化コマンドに渡されません。/dev/null
は、プレーンテキストの代わりに入力としてここに存在します。この手順には必要ないため、暗号化された出力は/dev/null
に送信されます。出力例
The advertisement contains the following signing keys: PLjNyRdGw03zlRoGjQYMahSZGu9
The advertisement contains the following signing keys: PLjNyRdGw03zlRoGjQYMahSZGu9
1 Copy to Clipboard Copied! - 1
- エクスチェンジキーのサムプリント。
Do you wish to trust these keys? [ynYN]
のプロンプトが表示されたら、Y
と入力します。オプション: オフライン Tang プロビジョニングの場合は、以下を行います。
curl
コマンドを使用して、サーバーからアドバタイズメントを取得します。http://tang2.example.com:7500
を Tang サーバーの URL に置き換えます。curl -f http://tang2.example.com:7500/adv > adv.jws && cat adv.jws
$ curl -f http://tang2.example.com:7500/adv > adv.jws && cat adv.jws
Copy to Clipboard Copied! 予想される出力
{"payload": "eyJrZXlzIjogW3siYWxnIjogIkV", "protected": "eyJhbGciOiJFUzUxMiIsImN0eSI", "signature": "ADLgk7fZdE3Yt4FyYsm0pHiau7Q"}
{"payload": "eyJrZXlzIjogW3siYWxnIjogIkV", "protected": "eyJhbGciOiJFUzUxMiIsImN0eSI", "signature": "ADLgk7fZdE3Yt4FyYsm0pHiau7Q"}
Copy to Clipboard Copied! 暗号化のためにアドバタイズメントファイルを Clevis に提供します。
clevis-encrypt-tang '{"url":"http://tang2.example.com:7500","adv":"adv.jws"}' < /dev/null > /dev/null
$ clevis-encrypt-tang '{"url":"http://tang2.example.com:7500","adv":"adv.jws"}' < /dev/null > /dev/null
Copy to Clipboard Copied!
ノードが静的 IP アドレス指定で設定されている場合は、RHCOS ノードをインストールするときに
coreos-installer iso customize --dest-karg-append
を実行するか、coreos-installer
--append-karg
オプションを使用して、インストール済みシステムの IP アドレスを設定します。ネットワークに必要なip=
およびその他の引数を追加します。重要一部の静的 IP の設定方法は、初回のブート後に initramfs に影響を与えず、Tang 暗号化では機能しない場合があります。これらには、
coreos-installer
--copy-network
オプション、coreos-installer iso customize
--network-keyfile
オプション、およびcoreos-installer pxe customize
--network-keyfile
オプションが含まれるほか、インストール中のライブ ISO または PXE イメージのカーネルコマンドラインにip=
引数が追加されます。静的 IP 設定が間違っていると、ノードの 2 回目のブートが失敗します。
インストールノードで、インストールプログラムが含まれるディレクトリーに切り替え、クラスターの Kubernetes マニフェストを生成します。
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>
1 Copy to Clipboard Copied! - 1
<installation_directory>
は、インストールファイルを保存するディレクトリーへのパスに置き換えます。
ディスクの暗号化、ミラーリング、またはそれら両方を設定する Butane 設定を作成します。たとえば、コンピュートノードのストレージを設定するには、
$HOME/clusterconfig/worker-storage.bu
ファイルを作成します。起動デバイスの Butane 設定例
variant: openshift version: 4.14.0 metadata: name: worker-storage labels: machineconfiguration.openshift.io/role: worker boot_device: layout: x86_64 luks: tpm2: true tang: - url: http://tang1.example.com:7500 thumbprint: PLjNyRdGw03zlRoGjQYMahSZGu9 - url: http://tang2.example.com:7500 thumbprint: VCJsvZFjBSIHSldw78rOrq7h2ZF advertisement: "{"payload": "eyJrZXlzIjogW3siYWxnIjogIkV", "protected": "eyJhbGciOiJFUzUxMiIsImN0eSI", "signature": "ADLgk7fZdE3Yt4FyYsm0pHiau7Q"}" threshold: 1 mirror: devices: - /dev/sda - /dev/sdb openshift: fips: true
variant: openshift version: 4.14.0 metadata: name: worker-storage
1 labels: machineconfiguration.openshift.io/role: worker
2 boot_device: layout: x86_64
3 luks:
4 tpm2: true
5 tang:
6 - url: http://tang1.example.com:7500
7 thumbprint: PLjNyRdGw03zlRoGjQYMahSZGu9
8 - url: http://tang2.example.com:7500 thumbprint: VCJsvZFjBSIHSldw78rOrq7h2ZF advertisement: "{"payload": "eyJrZXlzIjogW3siYWxnIjogIkV", "protected": "eyJhbGciOiJFUzUxMiIsImN0eSI", "signature": "ADLgk7fZdE3Yt4FyYsm0pHiau7Q"}"
9 threshold: 1
10 mirror:
11 devices:
12 - /dev/sda - /dev/sdb openshift: fips: true
13 Copy to Clipboard Copied! - 1 2
- コントロールプレーンの設定は、これらの両方の場所で
worker
をmaster
に置き換えます。 - 3
- このフィールドをクラスターノードの命令セットアーキテクチャーに設定します。いくつかの例には、
x86_64
、aarch64
、またはppc64le
が含まれます。 - 4
- ルートファイルシステムを暗号化する必要がある場合は、このセクションを追加してください。詳細は、「ディスクの暗号化について」を参照してください。
- 5
- Trusted Platform Module (TPM) を使用してルートファイルシステムを暗号化する場合は、このフィールドを追加してください。
- 6
- 1 台以上の Tang サーバーを使用する必要がある場合は、このセクションを追加してください。
- 7
- Tang サーバーの URL を指定します。この例では、
tangd.socket
は Tang サーバーのポート7500
でリッスンしています。 - 8
- 前述のステップで生成された Exchange キーサムプリントを指定します。
- 9
- オプション: オフライン Tang サーバーのアドバタイズメントを有効な JSON 形式で指定します。
- 10
- 復号化に実行に必要な TPM v2 および Tang 暗号化条件の最小数を指定します。デフォルト値は
1
です。このトピックの詳細は、「暗号化しきい値の設定」を参照してください。 - 11
- ブートディスクをミラーリングする必要がある場合は、このセクションを追加してください。詳細は、「ディスクのミラーリングについて」を参照してください。
- 12
- RHCOS がインストールされるディスクを含む、ブートディスクミラーに含まれる必要があるすべてのディスクデバイスを一覧表示します。
- 13
- クラスターで FIPS モードを有効にするためにこのディレクティブを追加します。
重要クラスターで FIPS モードを有効にするには、FIPS モードで動作するように設定された Red Hat Enterprise Linux (RHEL) コンピューターからインストールプログラムを実行する必要があります。RHEL での FIPS モードの設定の詳細は、FIPS モードでのシステムのインストール を参照してください。ノードをディスク暗号化とミラーリングの両方を使用するように設定する場合は、両方の機能を同じ Butane 設定ファイルに設定する必要があります。FIPS モードが有効になっているノードでディスク暗号化を設定する際には、FIPS モードが別のマニフェストで有効になっている場合でも、同じ Butane 設定ファイルに
fips
ディレクティブを追加する必要があります。対応する Butane 設定ファイルからコントロールプレーンまたはコンピュートノードのマニフェストを作成し、
<installation_directory>/openshift
ディレクトリーに保存します。たとえば、コンピュートノードのマニフェストを作成するには、以下のコマンドを実行します。butane $HOME/clusterconfig/worker-storage.bu -o <installation_directory>/openshift/99-worker-storage.yaml
$ butane $HOME/clusterconfig/worker-storage.bu -o <installation_directory>/openshift/99-worker-storage.yaml
Copy to Clipboard Copied! ディスクの暗号化またはミラーリングを必要とするノード種別ごとに、この手順を繰り返します。
- 今後マニフェストを更新する必要がある場合は、Butane 設定ファイルを保存します。
残りの OpenShift Container Platform インストールを継続します。
ヒントインストール時に、ディスク暗号化またはミラーリングに関連するエラーメッセージがないか、RHCOS ノードでコンソールログをモニタリングできます。
重要追加のデータパーティションを設定する場合、暗号化が明示的に要求されない限り、それらは暗号化されません。
検証
OpenShift Container Platform のインストール後に、ブートディスクの暗号化またはミラーリングがクラスターノードで有効にされているかどうかを確認できます。
インストールホストから、デバッグ Pod を使用してクラスターノードにアクセスします。
ノードのデバッグ Pod を開始します。次に例を示します。
oc debug node/compute-1
$ oc debug node/compute-1
Copy to Clipboard Copied! /host
をデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/host
にノードのルートファイルシステムをマウントします。root ディレクトリーを/host
に変更すると、ノードの実行可能パスに含まれるバイナリーを実行できます。chroot /host
# chroot /host
Copy to Clipboard Copied! 注記Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform クラスターノードは変更できず、Operator を使用してクラスターの変更を適用します。SSH を使用したクラスターノードへのアクセスは推奨されません。ただし、OpenShift Container Platform API が利用できない場合や、
kubelet
がターゲットノードで適切に機能しない場合は、oc
操作がその影響を受けます。この場合は、代わりにssh core@<node>.<cluster_name>.<base_domain>
を使用してノードにアクセスできます。
ブートディスクの暗号化を設定している場合は、有効であるかどうかを確認します。
デバッグシェルで、ノードでのルートマッピングのステータスを確認します。
cryptsetup status root
# cryptsetup status root
Copy to Clipboard Copied! 出力例
/dev/mapper/root is active and is in use. type: LUKS2 cipher: aes-xts-plain64 keysize: 512 bits key location: keyring device: /dev/sda4 sector size: 512 offset: 32768 sectors size: 15683456 sectors mode: read/write
/dev/mapper/root is active and is in use. type: LUKS2
1 cipher: aes-xts-plain64
2 keysize: 512 bits key location: keyring device: /dev/sda4
3 sector size: 512 offset: 32768 sectors size: 15683456 sectors mode: read/write
Copy to Clipboard Copied! 暗号化されたデバイスにバインドされる Clevis プラグインを一覧表示します。
clevis luks list -d /dev/sda4
# clevis luks list -d /dev/sda4
1 Copy to Clipboard Copied! - 1
- 前述のステップの出力の
device
フィールドに一覧表示されるデバイスを指定します。
出力例
1: sss '{"t":1,"pins":{"tang":[{"url":"http://tang.example.com:7500"}]}}'
1: sss '{"t":1,"pins":{"tang":[{"url":"http://tang.example.com:7500"}]}}'
1 Copy to Clipboard Copied! - 1
- この出力例では、Tang プラグインは、
/dev/sda4
デバイスの Shamir の Secret Sharing (SSS) Clevis プラグインにより使用されます。
ミラーリングを設定している場合は、有効かどうかを確認します。
デバッグシェルから、ノードにあるソフトウェアの RAID デバイスのリストを表示します。
cat /proc/mdstat
# cat /proc/mdstat
Copy to Clipboard Copied! 出力例
Personalities : [raid1] md126 : active raid1 sdb3[1] sda3[0] 393152 blocks super 1.0 [2/2] [UU] md127 : active raid1 sda4[0] sdb4[1] 51869632 blocks super 1.2 [2/2] [UU] unused devices: <none>
Personalities : [raid1] md126 : active raid1 sdb3[1] sda3[0]
1 393152 blocks super 1.0 [2/2] [UU] md127 : active raid1 sda4[0] sdb4[1]
2 51869632 blocks super 1.2 [2/2] [UU] unused devices: <none>
Copy to Clipboard Copied! 上記のコマンドの出力に記載されている各ソフトウェア RAID デバイスの詳細を確認してください。以下の例は、
/dev/md126
デバイスの詳細を示しています。mdadm --detail /dev/md126
# mdadm --detail /dev/md126
Copy to Clipboard Copied! 出力例
/dev/md126: Version : 1.0 Creation Time : Wed Jul 7 11:07:36 2021 Raid Level : raid1 Array Size : 393152 (383.94 MiB 402.59 MB) Used Dev Size : 393152 (383.94 MiB 402.59 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Wed Jul 7 11:18:24 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Consistency Policy : resync Name : any:md-boot UUID : ccfa3801:c520e0b5:2bee2755:69043055 Events : 19 Number Major Minor RaidDevice State 0 252 3 0 active sync /dev/sda3 1 252 19 1 active sync /dev/sdb3
/dev/md126: Version : 1.0 Creation Time : Wed Jul 7 11:07:36 2021 Raid Level : raid1
1 Array Size : 393152 (383.94 MiB 402.59 MB) Used Dev Size : 393152 (383.94 MiB 402.59 MB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Wed Jul 7 11:18:24 2021 State : clean
2 Active Devices : 2
3 Working Devices : 2
4 Failed Devices : 0
5 Spare Devices : 0 Consistency Policy : resync Name : any:md-boot
6 UUID : ccfa3801:c520e0b5:2bee2755:69043055 Events : 19 Number Major Minor RaidDevice State 0 252 3 0 active sync /dev/sda3
7 1 252 19 1 active sync /dev/sdb3
8 Copy to Clipboard Copied! ソフトウェア RAID デバイスにマウントされているファイルシステムを一覧表示します。
mount | grep /dev/md
# mount | grep /dev/md
Copy to Clipboard Copied! 出力例
/dev/md127 on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /etc type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /usr type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /sysroot type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/containers/storage/overlay type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/1 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/2 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/3 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/4 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/5 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md126 on /boot type ext4 (rw,relatime,seclabel)
/dev/md127 on / type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /etc type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /usr type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /sysroot type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/containers/storage/overlay type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/1 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/2 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/3 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/4 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md127 on /var/lib/kubelet/pods/e5054ed5-f882-4d14-b599-99c050d4e0c0/volume-subpaths/etc/tuned/5 type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,prjquota) /dev/md126 on /boot type ext4 (rw,relatime,seclabel)
Copy to Clipboard Copied! この出力例では、
/boot
ファイルシステムが/dev/md126
software RAID デバイスに、root ファイルシステムが/dev/md127
にマウントされています。
- OpenShift Container Platform ノードタイプごとに検証手順を繰り返します。
1.4.4. RAID 対応のデータボリュームの設定
ソフトウェア RAID のパーティション設定を有効にして、外部データボリュームを提供できます。OpenShift Container Platform は、データ保護およびフォールトトレランスに対応するために RAID 0、RAID 1、RAID 4、RAID 5、RAID 6、および RAID 10 をサポートします。詳細は、「ディスクのミラーリングについて」を参照してください。
OpenShift Container Platform 4.19 は、インストールドライブ上のソフトウェア RAID をサポートしていません。
前提条件
- インストールノードで OpenShift Container Platform インストールプログラムをダウンロードしている。
インストールノードに Butane をインストールしている。
注記Butane は、OpenShift Container Platform が使用するコマンドラインユーティリティーで、マシン設定を作成するための便利で簡略化した構文を提供したり、マシン設定の追加検証を実行したりします。詳細は、Butane を使用したマシン設定の作成 セクションを参照してください。
手順
ソフトウェア RAID を使用してデータボリュームを設定する Butane 設定を作成します。
ミラーリングされた起動ディスクに使用されるのと同じディスク上に RAID 1 を使用してデータボリュームを設定するには、
$HOME/clusterconfig/raid1-storage.bu
ファイルを作成します。以下に例を示します。ミラーリングされた起動ディスク上の RAID 1
variant: openshift version: 4.14.0 metadata: name: raid1-storage labels: machineconfiguration.openshift.io/role: worker boot_device: mirror: devices: - /dev/disk/by-id/scsi-3600508b400105e210000900000490000 - /dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6 storage: disks: - device: /dev/disk/by-id/scsi-3600508b400105e210000900000490000 partitions: - label: root-1 size_mib: 25000 - label: var-1 - device: /dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6 partitions: - label: root-2 size_mib: 25000 - label: var-2 raid: - name: md-var level: raid1 devices: - /dev/disk/by-partlabel/var-1 - /dev/disk/by-partlabel/var-2 filesystems: - device: /dev/md/md-var path: /var format: xfs wipe_filesystem: true with_mount_unit: true
variant: openshift version: 4.14.0 metadata: name: raid1-storage labels: machineconfiguration.openshift.io/role: worker boot_device: mirror: devices: - /dev/disk/by-id/scsi-3600508b400105e210000900000490000 - /dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6 storage: disks: - device: /dev/disk/by-id/scsi-3600508b400105e210000900000490000 partitions: - label: root-1 size_mib: 25000
1 - label: var-1 - device: /dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6 partitions: - label: root-2 size_mib: 25000
2 - label: var-2 raid: - name: md-var level: raid1 devices: - /dev/disk/by-partlabel/var-1 - /dev/disk/by-partlabel/var-2 filesystems: - device: /dev/md/md-var path: /var format: xfs wipe_filesystem: true with_mount_unit: true
Copy to Clipboard Copied! セカンダリーディスク上に RAID 1 を使用してデータボリュームを設定するには、
$HOME/clusterconfig/raid1-alt-storage.bu
ファイルを作成します。以下に例を示します。セカンダリーディスク上の RAID 1
variant: openshift version: 4.14.0 metadata: name: raid1-alt-storage labels: machineconfiguration.openshift.io/role: worker storage: disks: - device: /dev/sdc wipe_table: true partitions: - label: data-1 - device: /dev/sdd wipe_table: true partitions: - label: data-2 raid: - name: md-var-lib-containers level: raid1 devices: - /dev/disk/by-partlabel/data-1 - /dev/disk/by-partlabel/data-2 filesystems: - device: /dev/md/md-var-lib-containers path: /var/lib/containers format: xfs wipe_filesystem: true with_mount_unit: true
variant: openshift version: 4.14.0 metadata: name: raid1-alt-storage labels: machineconfiguration.openshift.io/role: worker storage: disks: - device: /dev/sdc wipe_table: true partitions: - label: data-1 - device: /dev/sdd wipe_table: true partitions: - label: data-2 raid: - name: md-var-lib-containers level: raid1 devices: - /dev/disk/by-partlabel/data-1 - /dev/disk/by-partlabel/data-2 filesystems: - device: /dev/md/md-var-lib-containers path: /var/lib/containers format: xfs wipe_filesystem: true with_mount_unit: true
Copy to Clipboard Copied!
前のステップで作成した Butane 設定から RAID マニフェストを作成し、それを
<installation_directory>/openshift
ディレクトリーに保存します。たとえば、コンピュートノードのマニフェストを作成するには、以下のコマンドを実行します。butane $HOME/clusterconfig/<butane_config>.bu -o <installation_directory>/openshift/<manifest_name>.yaml
$ butane $HOME/clusterconfig/<butane_config>.bu -o <installation_directory>/openshift/<manifest_name>.yaml
1 Copy to Clipboard Copied! - 1
<butane_config>
および<manifest_name>
を直前の手順のファイル名に置き換えます。たとえば、セカンダリーディスクの場合は、raid1-alt-storage.bu
およびraid1-alt-storage.yaml
になります。
- 今後マニフェストを更新する必要がある場合には、Butane 設定を保存します。
- 残りの OpenShift Container Platform インストールを継続します。
1.4.5. Intel® Virtual RAID on CPU (VROC) データボリュームの設定
Intel® VROC はハイブリッド RAID の一種で、メンテナンスの一部はハードウェアにオフロードされますが、オペレーティングシステムにはソフトウェア RAID として表示されます。
Intel® VROC のサポートはテクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次の手順では、Intel® VROC 対応 RAID1 を設定します。
前提条件
- Intel® Volume Management Device (VMD) が有効になっているシステムがある。
手順
次のコマンドを実行して、Intel® Matrix Storage Manager (IMSM) RAID コンテナーを作成します。
mdadm -CR /dev/md/imsm0 -e \ imsm -n2 /dev/nvme0n1 /dev/nvme1n1
$ mdadm -CR /dev/md/imsm0 -e \ imsm -n2 /dev/nvme0n1 /dev/nvme1n1
1 Copy to Clipboard Copied! - 1
- RAID のデバイス名。この例では、2 つのデバイスがリストされています。2 つ以上のデバイス名を指定する場合は、
-n
フラグを調整する必要があります。たとえば、3 つのデバイスをリストするには、フラグ-n3
を使用します。
コンテナー内に RAID1 ストレージを作成します。
次のコマンドを実行して、実際の RAID1 ボリュームの前にダミーの RAID0 ボリュームを作成します。
mdadm -CR /dev/md/dummy -l0 -n2 /dev/md/imsm0 -z10M --assume-clean
$ mdadm -CR /dev/md/dummy -l0 -n2 /dev/md/imsm0 -z10M --assume-clean
Copy to Clipboard Copied! 次のコマンドを実行して、実際の RAID1 アレイを作成します。
mdadm -CR /dev/md/coreos -l1 -n2 /dev/md/imsm0
$ mdadm -CR /dev/md/coreos -l1 -n2 /dev/md/imsm0
Copy to Clipboard Copied! 次のコマンドを使用して、RAID0 と RAID1 のメンバーアレイを停止し、ダミーの RAID0 アレイを削除します。
mdadm -S /dev/md/dummy \ mdadm -S /dev/md/coreos \ mdadm --kill-subarray=0 /dev/md/imsm0
$ mdadm -S /dev/md/dummy \ mdadm -S /dev/md/coreos \ mdadm --kill-subarray=0 /dev/md/imsm0
Copy to Clipboard Copied! 次のコマンドを実行して RAID1 アレイを再起動します。
mdadm -A /dev/md/coreos /dev/md/imsm0
$ mdadm -A /dev/md/coreos /dev/md/imsm0
Copy to Clipboard Copied!
RAID1 デバイスに RHCOS をインストールします。
次のコマンドを実行して、IMSM コンテナーの UUID を取得します。
mdadm --detail --export /dev/md/imsm0
$ mdadm --detail --export /dev/md/imsm0
Copy to Clipboard Copied! 次のコマンドを実行して、RHCOS をインストールし、
rd.md.uuid
カーネル引数を含めます。coreos-installer install /dev/md/coreos \ --append-karg rd.md.uuid=<md_UUID>
$ coreos-installer install /dev/md/coreos \ --append-karg rd.md.uuid=<md_UUID>
1 ...
Copy to Clipboard Copied! - 1
- IMSM コンテナーの UUID。
RHCOS をインストールするために必要な追加の
coreos-installer
引数を含めます。