coLinuxと他のマシンでデータを共有する方法として、 私はsmbfsではなくNFSを使っています。 それは私はLAN上にファイルサーバとしてLinuxを立ち上げており、 Linux間でのファイル共有はやはりNFSが適当だと思うからです (このFile ServerではSambaが動いているので、 smbfsでファイルを読み書きすることも可能です)。
以前は、colinuxがNFS機能をサポートしていなかったり(0.6.0以前)、 UDPでまともに通信できなかったりしたのですが、 最近のcolinuxではそういうこともありません。
なので、ここではごく普通のNFS接続の方法を説明することになります (しかし歴史的な事情によりNFS over TCPという方法を説明します)。
なお、NFSサーバはLinuxカーネルのNFSサーバ機能(Kernel NFS Server) を使うこととします。 User space NFS serverというのもあるのですが、 私は使っていないのでなんともいえません。
このページの説明中では、 coLinuxとホストPCはブリッジ接続している状況を前提にしています (ネットワーク的には「coLinuxのイストール WinPCapを使ったブリッジ接続」の状況です)。 また、coLinuxのホスト名を「colinux」、 LAN上のLinuxのホスト名を「linux」とします。(ルータ接続でもNFSは問題なく動きます)
ここで紹介する内容
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を一致させておきましょう。 それが一番楽です。
コメント