coLinuxでNFSを使う

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のホスト名を「colinux」、LAN上のLinuxのホスト名を「linux」とします。(ルータ接続でもNFSは問題なく動きます)

Amazonのベストセラー
(ジャンル: TCP/IP)

ここで紹介する内容

NFSでファイル共有するといってもcoLinxをサーバとするか、 クライアントにするかで2パターンかあります。

  1. LAN上のLinuxマシンをNFSサーバにして、 coLinuxをNFSクライアントにする。 これが私の利用しているパターンです。
  2. 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」を 選択すること。

menuconfig

もう一つは、「File systems → Network File Systems」で、 「NFS server support」と「Provide NFS server over TCP support」を 選択することです。

menuconfig
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を一致させておきましょう。 それが一番楽です。

SEO 仕事 掲示板 レンタルサーバー プロフ SEO