エクスポート(NFS経由)ルート(/)FS

エクスポート(NFS経由)ルート(/)FS

イーサネット経由で接続されたLinux 2.6.37を実行する3つの組み込みCPUシステムがあります。各CPUには独自のNANDフラッシュメモリがあります。そのうちの1つは「メイン」CPU番号0で、残りの2つは彼の同僚です。 RootFSファイルで可能な更新/変更回数が3倍になるのを防ぐために、CPU0にある同じルートファイルシステムで3つのファイルをすべて実行したいと思います。

これを行うには、CPU0のNFSを介して "/"(ルートファイルシステム)をエクスポートし、CPU1とCPU2はNFS(nfsroot)を介してCPU0から起動しようとします。

しかし、これはうまくいかないようです。 "/"エクスポートしようとすると、次のメッセージで失敗します。importfs:/はNFSエクスポートをサポートしません。

「/」エクスポートに制限がありますか?それでは、目標を達成するために何ができるかというアイデアはありますか?とても感謝しています。

追加/更新:

  1. 各CPUはその番号を知っており、ブートローダ(u-boot)はNAND(CPU0)またはNFS(CPU1-2)から起動するためにLinuxコマンドラインに正しいパラメータを入力します。同じトークンで CPU0 は NFS サーバーを起動しますが、CPU1-2 は起動しません。

  2. これで、ルートファイルシステムが読み取り専用でマウントされているため、「プライベート」ファイルは必要ありません。単に各CPUxに独自の専用NANDがあるということですが、私はそれを削除したいと思います。

  3. これは「ディスクなし」の場合とは異なります。ディスクがない場合は、一部のサブディレクトリをルートファイルシステムにエクスポートしますが、私の場合はすべてのルートファイルシステムをエクスポートする必要があるためです。

  4. NANDからサブディレクトリをエクスポートするとうまく機能することに注意してください(少なくともいくつか試してみました)。 「/」のみエクスポートすると失敗します。

答え1

たとえば、CPU がルートファイルシステム全体を共有する場合、これには nfs 構成を含むすべての構成が含まれます。彼らが基本なのか仲間なのか、どうすればわかりますか?

1つのアプローチは、最大のディレクトリのためにフラッシュにパーティションを作成し(seekを使用du -sm /*|sort -n)、可能であればそれを同伴アイテムからマウントすることです(使用または/home実行できます/usrが使用できません/etc)。

ただし、システムがまだ開発されている場合は、各パーティションにどれだけのスペースが必要かわからないため、小さなパーティションとマウントできるような大きな異なる/rootパーティションを持つことをお勧めします。/sharedその後、シンボリックリンク(たとえば)を作成する必要がありますln -s /shared/home /home。しかし、システムがブロックされないようにしてください!/bin共有パーティションに移動しようとすると、/bin/mount起動時に見つかりません。

答え2

ルートディレクトリを他の場所に非再帰的にバインドします/srv/nfs/root。たとえば、次のようになります。

mount --bind / /srv/nfs/root

それから/srv/nfs/root

再帰的にバインドしないでください(--rbind)。それ以外の場合は、/proc、/sys、/dev などのディレクトリもエクスポートされます。

関連情報