ネットワークファイルシステム - nisimura.info

3-4
ネットワークファイルシステム
ネットワーク経由でファイルを共有したい場合、
“NFS”というしくみを使用しま
す。
なお、Windows マシンとは、Samba(Windows からLinux へアクセス→P.109)また
は smbfs(Linux から Windows へアクセス→ P.116)を使うことで、互いのディスク領
域を利用できます。
資 料
【Linux NFS-HOWTO(JF)】http://www.linux.or.jp/JF/JFdocs/NFS-HOWTO/
NFS
NFS(Network File System)を使うと、ほかのLinux マシン(UNIX 系マシン)のデ
ィスクをマウントすることができます。
マウントされる側、すなわち、ディスクを提供する側は NFS サーバと呼ばれます。
これに対し、マウントする側は NFS クライアントと呼ばれることがあります。
▼NFS のしくみ
NFSクライアント
SV1
NFSサーバ
sv1の/sharedocを
/usr/shareとして
マウントできます
/
usr
share
home
var
/
usr
sharedoc
マウント
home
var
export
する
106
3-4 ネットワークファイルシステム
E サーバ側
● NFS を使うための準備
NFS サーバ側では、次の設定が必要です※。
(1) カーネルでNFS ファイルシステムサポートとNFS サーバサポートを有効にする設定
(2) NFS サービスデーモンを起動する設定
(3) NFS 用のポートを使用可能にする設定
関連項目
カーネルの設定: P.278
デーモンを自動起動にするには(rc スクリプト): P.54
付録 パッケージの扱い方: P.287
サービスとポート: P.218
●/etc/exports
マウントを許すディレクトリは、/etc/exports ファイルで設定します。
▼/etc/exports の書式
ディレクトリ名
マウントを許可するホスト名(オプション)
※ホスト名は IP アドレスでも可
ほかのマシンからは書き込めないように(リードオンリーに)したい場合は、ホス
ト名の後にオプションとして" ( ro ) "を付けます。たとえば、ホスト 192.168.1.92 に対
し、/sharedoc ディレクトリをリードオンリーでマウントすることを許可する場合は、
「/sharedoc 192.168.1.92 ( ro ) 」とします。
なお、スーパーユーザー(root)が NFS ディレクトリにアクセスした場合、アクセ
スしたユーザーの uid は nobody などに置き換えられます。root の uid(0)のままアク
セスさせたい場合は、no_root_squash を指定します。
▼サンプル:/etc/exports
/sharedoc 192.168.1.92(rw)
/sharedoc host1(rw,no_root_squash)
← 192.168.1.92 に読み書き可能で許可
/sharedoc host1(rw) host2(rw) host9(ro)
←host1 と host2 に読み書き可能で、host9 に
/sharedoc *(ro)
←すべてのホストにリードオンリーで許可
←host1 に読み書き可能およびルート権限が
可能な状態で許可
リードオンリーで許可
許可するディレクトリ
【NFS サービスデーモン】Red Hat 系は nfs - utils パッケージを使用する。Debian 系は nfs - kernel - server パッケ
ージ、または nfs - user - server パッケージを使用する。nfs - user - server パッケージの場合、カーネルの NFS サポ
ートが不要(ただし、パフォーマンスはやや落ちる)
。
107
/etc/exports ファイルを修正したら、exportfs コマンドで再読み込みを行います。な
お、exportfs コマンドでマウントを許すディレクトリを設定することも可能です。
# /usr/sbin/exportfs -ra
# /usr/sbin/exportfs -o ro host1:/tmp
←/etc/exports ファイルを再読み込み
$ /usr/sbin/exportfs
←現在許可しているディレクトリを一覧表示
←host1 に対し/tmp ディレクトリをリードオン
リーで許可する
E クライアント側
● NFS を使うための準備
NFS クライアント側では、カーネルで NFS ファイルシステムサポートを有効にする
設定が必要です。また Debian では、これに加えて nfs - common パッケージが必要です。
関連項目
カーネルの設定: P.278
付録 パッケージの扱い方: P.287
● mount コマンド
mount コマンドで「mount ホスト名:ディレクトリ名 マウントポイント」のように指
定することで、NFS サーバのディレクトリをマウントできます。
# mount sv1:/tmp /mnt/tmp
よく使うディレクトリの場合、/etc/fstab(→ P.96)に設定するか、オートマウント
の設定(→P.102)をしておくと便利です。
●/etc/fstab
/etc/fstab では、ファイルタイプに nfs を指定します。また、NFS 特有のオプション
もあります(次ページ)
。なお、NFS 用のオプションは「man nfs」で確認できます。
▼サンプル:/etc/fstab
sv1:/sharedoc
108
/usr/share
nfs
ro,hard,intr
0
0
3-4 ネットワークファイルシステム
▼NFS 用の主なマウントオプション
hard
サーバが応答しない場合、エラーメッセージを出して再試行する(intr オ
プションを併用することで再試行を中断できる)
soft
サーバが応答しない場合、ファイルアクセスを要求したプロセスにエラ
ーを通知する。※処理できないプログラムのほうが多いためhard オプシ
ョンの使用が推奨されている
port= 数値
NFS サーバに接続するときのポート番号
rsize= 数値
NFS サーバから読み込むときのバッファサイズ
wsize= 数値
NFS サーバへ書き込むときのバッファサイズ
timeo= 数値
タイムアウトの後、再送を行うまでの時間(0.1 秒単位)
retrans= 数値
リクエストの再送回数
Samba
W i n d o w s か ら L i n u x マ シ ン 上 の フ ァ イ ル に ア ク セ ス し た い 場 合 は 、L i n u x に
“Samba”を導入します※。
Samba は、TCP/IP 上で SMB(Server Message Block)プロトコルをサポートする
プログラム群です。SMB プロトコルは、Windows ネットワークで使われているプロ
トコルで、ファイルやプリンタの共有をする場合に必要となります。
ESamba のインストール
Samba を利用するには、Linux 側に Samba パッケージをインストールします ※ 。
2.0.x 系、2.2.x 系、3.x 系などいくつかの系統がありますが、通常は、各ディストリビ
ューションで採用しているものを使うのがよいでしょう。たとえば、apt(→ P.290)
が使える環境であれば、「apt - get install samba」で、それぞれの環境での最新版がイ
ンストールできます。
Windows から Linux への接続
Windows に NFS クライアントソフトをインストールするという手段もあります。NFS
クライアントは、たとえば、SFU(Windows Services for UNIX,3.5 から無償になりま
した)などに含まれているほか、市販ソフトもあります。
【SFU】 http://www.microsoft.com/japan/windows/sfu/
【Samba パッケージ】Samba のサイトにも最新版ソースのほか、各ディストリビューション向けのパッケージ
が用意されている。最新の機能が必要な場合はこちらを利用してみるとよいだろう。
日本 Samba ユーザー会 http://www.samba.gr.jp/
109
ESamba の起動
Samba のプログラムは nmbd と smbd ※で、単体で起動する方法と、inetd/xinetd 経由
で起動する方法とがあります。バイナリパッケージからインストールした場合は起動
まで設定されていることがほとんどで、変更する必要はあまりないでしょう。
起動方法はどちらを使ってもかまいませんが、inetd/xinetd 経由の場合クライアン
ト(Windows 側)から要求があったときのみ起動するので、メモリの節約になりま
す。一方、単体の場合はそのような処理が不要な分、パフォーマンスが上がります。
●単体の起動設定(rc スクリプト)
起動用のスクリプトは、通常、/etc/init.d/smb またはsamba となっています。
Red Hat 系システムは chkconfig コマンド、Debian 系システムは update - rc.d スクリ
プトを使うのが簡単です。
▼/etc/init.d/smb が起動時に自動実行されるようにする
● Red Hat 系
# chkconfig smb on
● Debian 系
# update-rc.d samba defaults
● inetd/xinetd 経由の起動
/etc/services に以下の行を追加します。さらに、inetd の場合は/etc/inetd.conf、
xinetd の場合は/etc/xinetd.d/ディレクトリ下に、netbios - ns と netbios - ssn というファ
イルを作成します。なお、nmbd と smbd を起動するためのファイルがすでにあるかど
うかは“grep nmbd /etc/xinetd.d/ * ”などで確認できます。
それぞれ編集できたら、「/etc/init.d/inetd restart」または「killall - HUP inetd」で
inetd を再起動します(xinetd の場合も同様)
。
また、接続を許可するホストを指定・変更する必要がある場合は、/etc/hosts.allow
を編集します(→ P.224)
。
▼サンプル:/etc/services
netbios-ns
netbios-ssn
137/udp
139/tcp
【nmbd と smbd】smbd は SMB サーバの、nmbd は NetBIOS のネームサーバのデーモンプログラム。
110
3-4 ネットワークファイルシステム
▼サンプル:/etc/inetd.conf
netbios-ns
netbios-ssn
dgram
stream
udp
tcp
wait
nowait
root
root
/usr/sbin/nmbd
/usr/sbin/smbd
nmbd
smbd
▼サンプル:/etc/xinetd.d/netbios-ns
service netbios-ns
{
disable
socket_type
protocol
wait
user
server
only_from
= no
= dgram
= udp
=
=
=
=
yes
root
/usr/sbin/nmbd
192.168.0
}
▼サンプル:/etc/xinetd.d/netbios-ssn
service netbios-ssn
{
disable
socket_type
protocol
wait
user
server
only_from
=
=
=
=
=
=
no
stream
tcp
no
root
/usr/sbin/smbd
= 192.168.0
}
関連項目
rc スクリプト: P.50
/etc/services : P.218
inetd : P.219
xinetd : P.221
hosts.deny/hosts.allow : P.224
111