markdown [linux:NFS] Linux上的网络文件系统。 #linux

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown [linux:NFS] Linux上的网络文件系统。 #linux相关的知识,希望对你有一定的参考价值。

## Overview
OS のファイルシステム上の任意のディレクトリについて、複数ホストと共有することができる拡散ファイルシステム。30 年近く使われていて歴史も古いらしい。

### Refs
- [CentOS6.5 ファイルサーバ構築](https://www.mk-mode.com/octopress/2013/12/23/centos-6-5-nfs-installation/)
- [NFS サーバの設定](https://www.server-world.info/query?os=CentOS_6&p=nfs)
- [NFSサーバを設定(CentOS6)シンプルで簡単なファイル共有をする](https://genchan.net/it/server/11887/)

-----

## How to use ?
### Install
```sh
$ yum -y install nfs-utils 
# AWS や普段使っている Vagrant 環境だと既に入ってることも
# NFS サーバ側・クライアントサーバ側ともにインストールしておく
```

### Settings
#### NFS Server
```sh
# 1. ドメイン名を設定
$ vi /etc/idmapd.conf
> #Verbosity = 0
> # The following should be set to the local NFSv4 domain name
> # The default is the host's DNS domain name.
> Domain = your.domain.here  # コメントを外して自身ドメイン名に

# 2. 共有ディレクトリ作成
# - 慣習的に export / import が利用されるみたい
# - 暗号化されていたりルート直下じゃないと外だしできないみたい
$ mkdir -p /export

# 3. マウント設定の記述
$ vi /etc/exports
> /export {IP_ADDRESS}(rw,all_squash)
# 上記で export ディレクトリを {IP_ADDRESS} に開放して共有している

# 4. 実行と再起動時有効化
$ /etc/rc.d/init.d/rpcbind start
$ /etc/rc.d/init.d/nfs start
$ chkconfig rpcbind on 
$ chkconfig nfs on 
```

#### Client server
```sh
# 1. マウントポイント作成
$ mkdir /import

# 2. マウントの割当て設定 (末尾追加)
$ vim /etc/fstab
> {IP_ADDRESS}:/export /import nfs defaults 0 0
# 上記の {IP_ADDRESS} および ディレクトリは NFS サーバで設定したモノを指定

# 3. マウント開始
$ mount /import

# 4. マウント状況の確認
$ nfsstat -m  # クライアント上の NFS マウント一覧
$ nfsstat -c  # クライアント統計情報の確認
$ nfsstat -s  # サーバー統計情報の確認
```

------

## TIPS 

### Case of to enable IPTables
NFS は動的にポートを割り当てる仕様。IPTables が有効の際はポートを固定し、そのポートを IPTables で許可してやる必要がある。

```
$ vi /etc/sysconfig/nfs
# 20,22行目:コメント解除
> LOCKD_TCPPORT=32803
> LOCKD_UDPPORT=32769
# 57行目:コメント解除
> MOUNTD_PORT=892
# 63行目:コメント解除
> STATD_PORT=662
$ /etc/rc.d/init.d/rpcbind restart 
$ /etc/rc.d/init.d/nfs restart
# 111, 2049 および固定設定したポートを許可
$ for port in 111 662 892 2049 32803; do iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport $port -j ACCEPT; done 
$ for port in 111 662 892 2049 32769; do iptables -I INPUT 6 -p udp -m state --state NEW -m udp --dport $port -j ACCEPT; done 
```

### Options of /etc/exports
|オプション|説明|
| ------- | -- |
|rw|読み込みと書き込みの両方を許可する|
|ro|読み込みを許可する|
|ro| 読み込みを許可する|
|sync|  同期書き込みを有効にする (デフォルト)|
|async| 非同期書き込みを有効にする|
|secure|  1024番ポートより小さいポートからのリクエストのみ受け付ける (デフォルト)|
|insecure|  1024番ポート以降のポートからのリクエストも受け付ける|
|wdelay|  別の書き込み要求が実行中/発生予定の場合、書き込みを遅らせる (デフォルト)|
|no_wdelay| wdelay を無効にする。async と合わせて設定する|
|subtree_check| サブツリーのチェックを行う(デフォルト)。一般的な指針として、多くは読み込みのみでファイル名の変更があまり行われないようなディレクトリをエクスポートする場合は、サブツリーチェック有効の方がよいとされる。|
|no_subtree_check|  サブツリーのチェックを無効にする。一般的な指針として、ホームディレクトリのような細かなファイルが多く、変更も多いディレクトリをエクスポートする場合は、 サブツリーのチェックを無効にした方がよいとされる。|
|root_squash | root UID/GID を anonymous UID/GID にマッピングする|
|no_root_squash | root を anonymous UID/GID にマッピングしない|
|all_squash | 全 UID/GID を anonymous UID/GID にマッピングする|
|no_all_squash | 全 UID/GID を anonymous UID/GID にマッピングしない (デフォルト)|
|anonuid=UID | 指定の UID を anonymous UID にマッピングする|
|anongid=GID | 指定の GID を anonymous GID にマッピングする|

以上是关于markdown [linux:NFS] Linux上的网络文件系统。 #linux的主要内容,如果未能解决你的问题,请参考以下文章

NFS 源代码

NFS共享目录

markdown NFS攻击和防御

markdown 使用Docker Swarm的NFS卷

Linu之linux系统基础优化和基本命令

linu运维:一次linux重启时间过长的排查