ファイルサーバを作る

#ファイルサーバとは？
ネットワーク経由で、ファイルを共有するサーバ

クライアント　　→→　「ファイル見せて」　　　　　　→→　サーバ
　　　　　　　　←←　「いいよ、ファイルあげるよ」　←←　


クライアント　　→→　「ファイル更新させて」　　　　→→　サーバ
　　　　　　　　←←　「いいよ、更新したよ」　　　　←←　

ファイル共有プロトコルには主にSMB/CIFS(Windows)、NFS（Unix系OS）がある。
以下、それぞれのファイルサーバ構築手順について書く。

#SMB、CIFS
Windowsネットワークにおけるファイル共有プロトコル。
Windowsのファイル共有は、SMBか、SMBを拡張したCIFSが使われている。


##Sambaでのサーバ構築手順
SambaとはUnix系OSに、
Windowsネットワークの接続のための機能を持たせるためのソフトウェア。
ファイル共有プロトコルはCIFSを利用する。


###サーバ側設定
1.Sambaのインストール   
  
```    
#sudo su    
#yum -y install samba    
```    


2.共有ディレクトリを作成

```
#mkdir /home/test --共有するディレクトリの作成
#chmod 777 /home/test --アクセス権（全ユーザフルコントロール）の追加
#touch /home/test/testfile　--テスト用ファイルの作成
```

3.設定ファイルの変更

```
#vi /etc/samba/smb.conf
設定ファイルに以下を追記
[test]
      comment = TEST file share
      writable = yes --書き込み許可（デフォルトは読み出し遠洋）
      guest = no --ゲストアクセス禁止
      guest only = no　--ゲスト以外のアクセス許可
      path = /home/test --共有ディレクトリのパス
```

4.Sambaの起動

```
#systemctl start smb.service  --サービス起動
#systemctl status smb.service　--active(running)であることを確認
#systemctl enable smb.service  --自動起動設定
#systemctl list-unit-files smb.service  --自動起動設定がenableであることを確認
```
5.Sambaユーザとパスワードの登録

```
#pdbedit -a -u test-root  --「-a」で登録、「-u」でユーザ名を指定
new password:****** --パスワードを入力(非表示)
Retype new password:******  --再びパスワードを入力(非表示)

#pdbedit -L  --ユーザが作成されたことを確認
```


###クライアント側設定
以下、上記で登録したユーザで作業をする

```
#yum -y install samba-client　
$smbclient -L localhost
Enter SAMBA¥test-root's password:******　--パスワードを入力(非表示)
```

TEST file share が見えることを確認する

2．共有への接続

```
$smbclient //localhost/tech
Enter SAMBA¥test-root's password:******　--パスワードを入力(非表示)
Domain= ~~~~~
smb:¥>ls  --通常のコマンドライン同様、lsコマンドでファイル一覧を表示する
.
..
testfile　--作成した「testfile」があることを確認できる
```

※sambaで利用できるコマンド一覧は?で確認可能

```
smb:¥>?
```

3．Windowsマシンから共有への接続
Windowsスタートメニュー横の検索画面から「run」を選択(ファイル名を指定して実行)。
入力欄に、「\\サーバのIPアドレス\test」を入力し、OK。

IDとパスワードを問われるので、
5で登録したユーザとパスワードを入力し、OK。

エクスプローラが開き、「testfile」があることを確認できる。


#NFS
主にUNIX系で使われるファイル共有プロトコル。
リモートサーバ上のファイルやディレクトリにアクセスし、それらのファイルやディレクトリをローカルファイルやローカルディレクトリと同様に扱うことができる。
マウントポイントにリモートサーバのディレクトリをNFSマウントする。

##NFSでのサーバ構築手順
###サーバ側設定
1.NFSのインストール

```
#sudo su
#yum -y install nfs-utils
```

2.NFSの起動

```
#systemctl start nfs.service  --サービス起動
#systemctl status nfs.service　--active(running)であることを確認
#systemctl enable nfs.service  --自動起動設定
#systemctl list-unit-files nfs.service  --自動起動設定がenableであることを確認
```

3．ディレクトリの作成

```
#mkdir /export　--NFSで共有するためのディレクトリを作成
```

4．設定ファイルの変更

```
#vi /etc/exports
以下を追記

/export      ***.**.**.**/255.***.***.***(rw,no_root_squash,sync)
             ※IPアドレス/サブネットマスク
　　　　　　　--読み取り/書き込み許可、root権限付与、書き込まれたデータを即ディスクに反映
```

5．作成したディレクトリをエクスポート

```
#exportfs -av
```

6．エクスポートされていることを確認

```
#showmount -e
Export list for ***.**.**.**:
/export ***.**.**.**/255.***.***.*** --/exportがあることが確認できる
```

7．NFSマウントの確認

```
#mount -t nfs ***.**.**.**:/export /mnt  --mntディレクトリにNFSマウント
　　　　　　　※IPアドレス
#df -h  --マウントされていることを確認
***.**.**.**:/export   30G   1.3G   29G    5%   /mnt
```

※アンマウント

```
#umount /mnt
#df -h  --消えたことを確認
```

###クライアント側設定
1．NFSクライアントの設定

```
#sudo su
#yum -y install nfs-utils
```

2.マウントポイントの作成

```
#mkdir /home/data  
```

3.NFSマウントの実行と確認

```
#mount -t nfs4 ***.**.**.**:/export /home/data --/home/dataにNFSサーバの/exportsをマウント
#df -h  --マウントを確認
***.**.**.**:/export   30G   1.3G   29G    5%   /home/data
```

4.ファイル作成の確認

```
#cd /home/data
#touch testfile
#ls -l
-rw -r--r-- 1 root 5 Dec 6 08:12 testfile  --「testfile」があることを確認
```

###サーバ側で確認
上記クライアントが作成したファイルを、サーバ側で確認する

```
ls -l /export
-rw -r--r-- 1 root 5 Dec 6 08:12 testfile  --「testfile」があることを確認
```

おわり。

#最後に
ファイルサーバはサーバという感覚が、新人のころはなかったです。
自分のところにあるファイルかのように使えるのは、ファイルサーバのおかげなんですね。
今回作ってみてより実感しました。

あとは、Markdownでナンバリングする方法が分からない。。
1.(半角スペース)をしても、ナンバリングとナンバリングの間に文字を入力すると、全部1.でナンバリングされてしまいます。