ユーザ用ツール

サイト用ツール


ja:centos:nfsサーバ設定

文書の過去の版を表示しています。


CentOS-NFSサーバ設定

LinuxではおなじみのNFS(Network File System)サーバの構築方法について

サーバのインストール

まずはNFSサーバ(NFSD)がインストールされているか、確認する

# yum list | grep nfs-utils
nfs-utils.i386          1:1.0.9-47.el5_5      installed
nfs-utils-lib.i386      1.0.8-7.6.el5         installed
 ・・・以下省略・・・

nfs-utilsinstalledになっていればOK
baseなどになっている場合はインストールを指示する。

# yum -y install nfs-utils*

サーバの設定

  1. NFSで公開するディレクトリを作成する
    # cd /
    # mkdir nfs
  2. 公開の設定を行う
    # vi /etc/exports
     /nfs     *(rw,no_root_squash,sync)
    • /etc/exportsでNFSサーバでの公開ルールを設定する。
      • rwは読み書き許可を示す。読み込みのみでのアクセスを許可する場合はroとする。
      • no_root_squashはNFSクライアントが公開ディレクトリに対してroot権限にてアクセスできるようにする為のオプション。指定がなければnobodyなどにマッピングされる。
      1. syncは遅延書き込みの拒否を指定する。パフォーマンスは落ちる。asyncにすると遅延書き込みが有効になり、パフォーマンスは向上するが、nfsサーバを停止した際にアクセスされていたデータは欠損する恐れがある。
  3. サーバを起動する
    CentOS 6.xの場合
    # /etc/rc.d/init.d/nfs start
    CentOS 7.xの場合
    # systemctl start rpcbind nfs-server
  4. OS起動時に自動起動するようにする
    CentOS 6.xの場合
    # chkconfig --list nfs
    nfs     0:off   1:off   2:off   3:off   4:off   5:off   6:off
    # chkconfig nfs on
    # chkconfig --list nfs
    nfs     0:off   1:off   2:on   3:on   4:on   5:on   6:off
    CentOS 7.xの場合
    # systemctl enable rpcbind nfs-server

補足-ファイルシステム毎のエクスポート可否

エクスポートできるローカルファイルシステムは?

  • ext2
  • ext3
  • ext4
  • JFS
  • ReiserFS
  • XFS

気をつけるべきローカルファイルシステムは?

  • iso9660
  • NTFS
  • Reiser4
  • UDF

これらは多少マイナーな挙動があるとかなんとかゴニョゴニョ書かれていた。
英語ドキュメントから読んだので、あやふやですが。
ちゃんとテストしてから使おう。

エクスポートできない、または難しいローカルファイルシステムは?

  • procfs
  • sysfs
  • tmpfs
  • FAT

恒久的なinode番号を提供する能力を持っていないファイルシステム等はエクスポートできないとかなんとか。

tmpfsをNFSでエクスポートする方法

通常、上にもあるように、tmpfsはNFSサーバでエクスポートできない(一見できているようには見えるが、NFSクライアントからアクセスすると拒否される)が、次に示す方法で擬似的にエクスポートできる。

  1. tmpfsの領域を作る。または既にあるtmpfsの領域を使う。
    (CentOSの場合は、/dev/shmにtmpfsの領域がマウントされている。本手順でもここを使う事とする。)
  2. ddコマンドで任意のサイズのファイルを作成する。
    下の例は1GBの領域を作成する場合。
    # dd if=/dev/zero of=/dev/shm/export bs=1M count=1000
  3. ddコマンドで作成したファイル上にファイルシステムを構成する
    下の例はext3で構成する場合。
    # mke2fs -j /dev/shm/export
  4. 作成したファイルシステムを任意の場所にマウントする。
    # mount -o loop /dev/shm/export /mnt
  5. 上でマウントした場所をNFSでエクスポートする

と、簡単に書くとこんな感じ。
とりあえず、tmpfsで作成した領域上にブロックデバイスを作成し、そのブロックデバイスをマウントした上でNFSに公開させる。という形です。
やる意味としては、tmpfsが物理メモリ内にちゃんと収まるのであれば、パフォーマンスが上がるかも?って事になりますが、実際パフォーマンスの計測は行なっていませんので、なんとも言えません。
さらに言うと、tmpfs上にある以上、サーバを再起動するとデータは消えてしまいますので、恒常的に利用する事は出来ません。
OSの起動時、シャットダウン時に、それぞれ安全に利用できるようにいろいろ仕込んでやる必要がありそうです。

ja/centos/nfsサーバ設定.1469607257.txt.gz · 最終更新: 2016/07/27 08:14 by makoto