19.4. ディスクレスクライアントのエクスポートしたファイルシステムの設定
環境にリモートディスクレスシステムを設定する一環として、ディスクレスクライアント用にエクスポートしたファイルシステムを設定する必要があります。
前提条件
-
ディスクレスクライアントの
tftp
サービスが設定されている。ディスクレスクライアントの TFTP サービスの設定 セクションを参照してください。 - Dynamic Host Configuration Protocol (DHCP) サーバーが設定されている。ディスクレスクライアントの DHCP サーバーの設定 セクションを参照してください。
手順
-
/etc/exports
ディレクトリーにルートディレクトリーを追加して、ルートディレクトリーをエクスポートするようにネットワークファイルシステム (NFS) サーバーを設定します。手順の詳細は、NFS サーバーのデプロイ を参照してください。 完全にディスクレスのクライアントに対応できるように、Red Hat Enterprise Linux の完全なバージョンをルートディレクトリーにインストールします。これを行うには、新しいベースシステムをインストールするか、既存のインストールのクローンを作成します。
exported-root-directory をエクスポートしたファイルシステムへのパスに置き換えて、エクスポートした場所に Red Hat Enterprise Linux をインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install @Base kernel dracut-network nfs-utils --installroot=exported-root-directory --releasever=/
# yum install @Base kernel dracut-network nfs-utils --installroot=exported-root-directory --releasever=/
releasever
オプションを/
に設定すると、releasever がホスト (/
) システムから検出されます。rsync
ユーティリティーを使用して、実行中のシステムと同期します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow rsync -a -e ssh --exclude='/proc/' --exclude='/sys/' example.com:/ exported-root-directory
# rsync -a -e ssh --exclude='/proc/' --exclude='/sys/' example.com:/ exported-root-directory
-
example.com は、
rsync
ユーティリティーで同期する実行中のシステムのホスト名に置き換えます。 exported-root-directory を、エクスポートしたファイルシステムへのパスに置き換えます。
このオプションには、実行中の別のシステムが必要です。これは、このコマンドでサーバーにクローンを作成します。
-
example.com は、
ファイルシステムをディスクレスクライアントで使用する前に、エクスポートの準備が完了しているファイルシステムを設定します。
ディスクレスクライアントがサポートするカーネル (
vmlinuz-_kernel-version_pass:attributes
) をtftp
ブートディレクトリーにコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /exported-root-directory/boot/vmlinuz-kernel-version /var/lib/tftpboot/pxelinux/
# cp /exported-root-directory/boot/vmlinuz-kernel-version /var/lib/tftpboot/pxelinux/
initramfs-kernel-version.img
ファイルをローカルに作成し、NFS をサポートするエクスポートされたルートディレクトリーに移動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow dracut --add nfs initramfs-kernel-version.img kernel-version
# dracut --add nfs initramfs-kernel-version.img kernel-version
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dracut --add nfs /exports/root/boot/initramfs-5.14.0-202.el9.x86_64.img 5.14.0-202.el9.x86_64
# dracut --add nfs /exports/root/boot/initramfs-5.14.0-202.el9.x86_64.img 5.14.0-202.el9.x86_64
現在実行中のカーネルバージョンを使用し、既存のイメージを上書きして initrd を作成する例を以下に示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dracut -f --add nfs "boot/initramfs-$(uname -r).img" "$(uname -r)"
# dracut -f --add nfs "boot/initramfs-$(uname -r).img" "$(uname -r)"
initrd
のファイル権限を0644
に変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 0644 /exported-root-directory/boot/initramfs-kernel-version.img
# chmod 0644 /exported-root-directory/boot/initramfs-kernel-version.img
警告initrd
のファイル権限を変更しないと、pxelinux.0
ブートローダーが "file not found" エラーを表示して失敗します。作成された
initramfs-kernel-version.img
ファイルをtftp
ブートディレクトリーにコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /exported-root-directory/boot/initramfs-kernel-version.img /var/lib/tftpboot/pxelinux/
# cp /exported-root-directory/boot/initramfs-kernel-version.img /var/lib/tftpboot/pxelinux/
/var/lib/tftpboot/pxelinux/pxelinux.cfg/default
ファイルに次の設定を追加して、initrd
とカーネルを使用するためのデフォルトのブート設定を編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow default menu.c32 prompt 0 menu title PXE Boot Menu ontimeout rhel8-over-nfsv4.2 timeout 120 label rhel8-over-nfsv4.2 menu label Install diskless rhel8{} nfsv4.2{} kernel $vmlinuz append initrd=$initramfs root=nfs4:$nfsserv:/:vers=4.2,rw rw panic=60 ipv6.disable=1 console=tty0 console=ttyS0,115200n8 label rhel8-over-nfsv3 menu label Install diskless rhel8{} nfsv3{} kernel $vmlinuz append initrd=$initramfs root=nfs:$nfsserv:$nfsroot:vers=3,rw rw panic=60 ipv6.disable=1 console=tty0 console=ttyS0,115200n8
default menu.c32 prompt 0 menu title PXE Boot Menu ontimeout rhel8-over-nfsv4.2 timeout 120 label rhel8-over-nfsv4.2 menu label Install diskless rhel8{} nfsv4.2{} kernel $vmlinuz append initrd=$initramfs root=nfs4:$nfsserv:/:vers=4.2,rw rw panic=60 ipv6.disable=1 console=tty0 console=ttyS0,115200n8 label rhel8-over-nfsv3 menu label Install diskless rhel8{} nfsv3{} kernel $vmlinuz append initrd=$initramfs root=nfs:$nfsserv:$nfsroot:vers=3,rw rw panic=60 ipv6.disable=1 console=tty0 console=ttyS0,115200n8
この設定は、ディスクレスクライアントのルートに、
/exported-root-directory
エクスポートファイルシステムを読み取り/書き込み形式でマウントするように指示します。オプション:
/var/lib/tftpboot/pxelinux/pxelinux.cfg/default
ファイルを次の設定で編集して、ファイルシステムをread-only
形式でマウントします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow default rhel8 label rhel8 kernel vmlinuz-kernel-version append initrd=initramfs-kernel-version.img root=nfs:server-ip:/exported-root-directory ro
default rhel8 label rhel8 kernel vmlinuz-kernel-version append initrd=initramfs-kernel-version.img root=nfs:server-ip:/exported-root-directory ro
NFS サーバーを再起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart nfs-server.service
# systemctl restart nfs-server.service
これで、NFS 共有をディスクレスクライアントにエクスポートできるようになりました。これらのクライアントは、Preboot Execution Environment (PXE) 経由でネットワーク経由で起動できます。