(ジャンル: TCP/IP)
ここで紹介する内容
NFSでファイル共有するといってもcoLinxをサーバとするか、 クライアントにするかで2パターンかあります。
- LAN上のLinuxマシンをNFSサーバにして、 coLinuxをNFSクライアントにする。 これが私の利用しているパターンです。
- coLinuxをNFSサーバにして、 LAN上のLinuxマシンをNFSクライアントにする。 coLinuxに大きなサイズのディスクイメージを割り当てている場合などに 良いかもしれません。
以下では、それぞのパターンについて説明していきます。 サブタイトルの「XXXX→YYYY」は、 XXXXがNFSサーバとなってYYYYがクライアントになることを表します。
Linux→coLinuxの場合
この場合の注意点は、以下の3点です。それぞれ説明します。
- NFSサーバになるLinuxのカーネルを「CONFIG_NFSD_TCP=y」として 構築する(もちろん「CONFIG_NFSD=y or m」です)。
- coLinuxでNFSのマウントをするときに「tcp」をつける。
- NFSサーバのユーザIDとcoLinuxのユーザIDを揃える。
NFSサーバの構築
ここはLAN上のLinuxでの設定です。
カーネルの設定確認
とりあえず、今動いているカーネルの設定を調べて見ましょう。 カーネルの設定情報は/bootディレクトリにconfigあるいは config-2.x.x (2.x.xはカーネルのバージョン番号)という名前で 保存されています(と思います)。 私の場合は、config-2.6.7でした。これをgrepしてみましょう。
root@linux# cd /boot root@linux# grep NFS config-2.6.7 CONFIG_NFS_FS=m CONFIG_NFS_V3=y CONFIG_NFS_V4=y # CONFIG_NFS_DIRECTIO is not set CONFIG_NFSD=m CONFIG_NFSD_V3=y CONFIG_NFSD_V4=y CONFIG_NFSD_TCP=y
この場合、「CONFIG_NFSD=m」「CONFIG_NFSD_TCP=y」と なっているのでOKです。 もしこれらが「is not set」となっていたらカーネルを再構築しましょう。
カーネルの再構築に関しては、説明が長くなってしまいますので、 詳しくは他のサイトを参照してください。
ポイントとしては「Code maturity level options」で 「Prompt for development and/or imcomplete code/drivers」を 選択すること。
もう一つは、「File systems → Network File Systems」で、 「NFS server support」と「Provide NFS server over TCP support」を 選択することです。
NFSサーバの設定
NFSサーバ機能をサポートしたカーネルが動いたら、 NFSサーバの設定をしましょう。 まずは、必要に応じてNFSサーバ機能を有効にするための サポートパッケージをインストールします。 /usr/sbin/rpc.nfsdというファイルが存在していたら、 既にインストールされているかもしれません。 Debianの場合は、nfs-kernel-serverというパッケージを入れればOKです。
次に、NFSで外部に公開する(exportする)ディレクトリや、 接続を許可するホストを設定します。 これは、/etc/exportsというファイルで指定します。 NFSサーバの/homeディレクトリと/cdromディレクトリを 公開する場合は以下のようになります。 このファイルの192.168.10.0/255.255.255.0というのは、 接続を許可するIPアドレスの範囲です。 私は、LAN内のIPアドレスを192.168.10.1〜で割り振っているのでこ のようになります(coLinuxもブリッジ接続なので192.168.10.xとなります)。
root@linux# cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
/cdrom 192.168.10.0/255.255.255.0(rw)
/home 192.168.10.0/255.255.255.0(rw)
もし、coLinuxをルータ接続としている場合には、 ホストPC・coLinux間のネットワークアドレスも公開アドレスとして 追記する必要もあります。
NFSサーバの起動
設定が完了したらNFSサーバを起動しましょう。 これは各ディストリビューションの流儀に従ってください。 Debianの場合は以下のコマンドでOKです。
root@linux# /etc/init.d/nfs-kernel-server restart
NFSクライアントの構築
これはcoLinuxでの設定です。
まず、NFSクライアントのサポート機能を入れます。 これはnfs-commonパッケージに入っているので、インストールします。
root@colinux# apt-get update root@colinux# apt-get install nfs-common
あとはマウントするだけです。 以下のコマンドでマウントします。 ここで「-o tcp」と付けることがポイントです。 これにより「NFS over TCP」が有効となります。
root@colinux# mount -t nfs -o tcp linux:/home /mnt
うまくいったら、必要に応じて/etc/fstabに書き込んで、 次回起動時に自動的にマウントされるようにしておきましょう。
root@colinux# cat /etc/fstab
/dev/cobd0 / ext3 defaults 0 1
proc /proc proc defaults 0 0
/dev/codb1 none swap sw 0 0
linux:/home /home nfs defaults,tcp 0 0
ユーザIDの管理
正しくはネットワーク内でNISサーバを動かすべきなのですが、 coLinuxで新しくユーザを追加するときに、 NFSサーバでのそのユーザのユーザIDと一致するようなユーザIDで追加しています。 グループを追加するときも、 NFSサーバとグループIDが一致するようにして追加しています。
こうしないと、特に/homeディレクトリをNFSでマウントしたときに 面倒なことになります。
coLinux→Linuxの場合
この場合はほとんど上記の「Linux→coLinux」のパターンと一緒です。 NFSクライアントとなるLinuxの方でマウントするときに 「-o tcp」をつけるのを忘れないようにしましょう。
NFSサーバの構築
これはcoLinux上での設定です。
最近のcoLinuxは標準のカーネルでNFS機能と NFS over TCP機能がサポートされているので、 カーネルのコンパイルをする必要はありません。 サポートパッケージをインストールしてしましょう。
root@colinux# apt-get update root@colinux# apt-get install nfs-kernel-server
次に、/etc/exportsを編集して外部に公開するディレクトリを指定します。 /homeディレクトリをIPアドレスが192.168.10.xのホストに公開するならば以下のようになります。
root@colinux# cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
/home 192.168.10.0/255.255.255.0(rw)
NFSクライアントの構築
これはLAN上のLinuxの設定です。
Linuxのディストリビューションの流儀に従って、 NFSクライアントのサポート機能をインストールしてください。 Debianなら以下の様な感じです。
root@colinux# apt-get update root@colinux# apt-get install nfs-common
あとは以下のようにマウントするだけです。 ここでも「-o tcp」をつけることにより 「NFS over TCP」が有効としています。
root@linux# mount -t nfs -o tcp colinux:/home /mnt
ユーザIDの管理
この場合も、 coLinuxとLAN上のLinuxでのユーザIDを一致させておきましょう。 それが一番楽です。
Copyright © 2004-2008 scratchpad All rights reserved.