web-dev-qa-db-ja.com

複数のコンピューター用のNFSホーム

私は私に多くの時間を費やしている何かを尋ねるためにここにいます、そして今私はどのように続けるべきかわかりません、そしてこれは本当に大きな(そして素晴らしい)コミュニティです。

問題は、学校や大学向けの分散Linuxシステムを実行しようとしていることです。SquashFSをApacheサーバーから取得し、initrdとカーネルをTFTP経由でロードし、起動すると、すべてのシステムをRAMにロードします。 。アイデアは可能な限り安全にすることであり、コンピュータの電源を切ると、システムのすべてのデータはクリーンになりますが、問題はホームフォルダにあります...

ホームフォルダはNFSサーバーにあり、コンピュータのMACアドレスを使用してNFSサーバーにフォルダを作成して接続し、ユーザーごとに異なるフォルダを作成しようとしていますが、方法がわかりません。起動時にMACアドレスを渡して、最初にフォルダーを作成します。このMACのホームフォルダーが存在する場合は、ユーザープルーフフォルダーで今のようにfstabを使用して接続します。

前もって感謝します!

2
Brokes

私はMythTVシステムに対して非常によく似たことをしました。各ディスクレスフロントエンドマシンは、DHCPPXEとTFTPを使用してネットブートします。システムはUbuntu16.04LTSを実行しています。 (IP 1.1.1.1はクライアントマシンで、2.2.2.2はサーバーです)

/etc/dhcp/dhcpd.confでは、IPとホスト名はMACに基づいて割り当てられます。

group {
    use-Host-decl-names on;  #forces hostname to Host
    Host bedroom {
        hardware ethernet 00:00:00:00:00:00;
        fixed-address 1.1.1.1;
    }
}

TFTPは、ブート初期化時にマウントスクリプトを呼び出し、ホスト名に基づいてNFSホームをマウントします。フォルダ構造を参照するときに読みやすくするためにホスト名を使用しました。 MACを解析して、フォルダー名に使用できます。 TFTP pxelinux.cfgデフォルトファイル:

LABEL linux
  DEFAULT vmlinuz-4.4.0-53-generic root=/dev/nfs initrd=initrd.img-4.4.0-53-generic nfsroot=2.2.2.2:/pxeroot init=/boot/mountscript.sh ip=dhcp rw

mountscript.sh:

#!/bin/bash
HOSTNAME=`hostname`
MOUNT_OPTS="rw,intr,async,bg,tcp"
mount -t nfs 2.2.2.2:/path/to/homes/home-${HOSTNAME} /home -O MOUNT_OPTS

exec /sbin/init </dev/console >/dev/console 2>&1

また、/ etc/exportsには、必要なホームフォルダを一意の静的IPアドレスにマップするNFSエクスポート設定があります。

/path/to/homes/home-bedroom 1.1.1.1(rw,async,insecure)

新しいホームフォルダと各新しいマシンのNFSエクスポートエントリは手動で追加する必要があります。

注意:この例は、いくつかの一意の構成情報(主に接続されているテレビのIRコマンド)をホームフォルダーに保存するシングルユースのシングルユーザーマシンに適用されます。 MACごとのホームフォルダというあなたの述べた目標を達成しますが、joeqwertyが言及しているように、ユーザーごとのホームフォルダが実際に探しているものだと思います。このソリューションユーザーが任意のマシンにログインすることを許可せず、 )ユーザーごと、マシンごとにホームフォルダを作成する必要があります。これは、シンボリックリンクの乱雑なWebがなければ、異なるコンピューター上の同じファイルにアクセスする簡単な方法がないことも意味します。

3
Calmor