NASを作った話

#やること
* 2TBのHDDを4基使用してRAID10を構築して
* Sambaを使ってネットワークアクセスできるようにして
* NASとして運用する

#RAIDってなに
Wikipediaへどうぞ→[RAID](http://ja.wikipedia.org/wiki/RAID)

* 複数のストレージを組み合わせて、大容量を目指したり速度や冗長さを向上させようというもの
* 今回使用するのはRAID10という構成
* RAID1とRAID0の組み合わせ
* RAID0はストライピング（分散書き込み）
→速度向上と大容量化が期待できる
* RAID1はミラーリング（全く同じ物を書き込む）
→分散して読み込みをするようにすれば速度向上、ストレージが片方ぶっ壊れてももう片方から修復可
* RAID10はRAID1の構成をRAID0する
→分散書き込みするストレージでそれぞれ独自にミラーリング


#構成

|||
|--------|--------|
|CPU|Intel Celeron G550|
|M/B|GA-H77-DS3H|
|RAID|[AREA TTH QUATTRO SD-PE4SA3ES4L](http://www.area-powers.jp/product/pcie/4580127693782/)|
|HDD|WD20EZRX x4|

M/Bには別途SSDとHDDが各1基ずつ接続されている。それぞれシステム用とデータ庫用として運用。


#RAIDを構築する
説明書を見ながら素直に接続。[説明書](http://www.area-powers.jp/product/pcie/4580127693782/SD-PE4SA3ES4L%E8%AA%AC%E6%98%8E%E6%9B%B8.pdf)はネットでも見れる。便利。使うポートがどこなのかをジャンパーピンで設定する。

説明書通りに、OS起動前にCtrl+Mで設定画面を呼び出して構成する。説明書ではHDDを2つ選択した画面しか例示がないが、RAIDを構成するHDDを選択する時に、4つ全部選択すればRAID10を構成できた

#アレイがどのデバイスとして認識されたか確認する
方法はいくつかあるのでてきとうに

##dmesgを眺める
めんどいので`dmesg`をそれっぽい文字で`grep`してみた（以下は更に必要そうな部分のみ抜粋）

```bash:dmesg|grepからさらに抜粋
$ dmesg | grep sd
[    1.528286] sd 6:0:0:0: [sdc] 7813730560 512-byte logical blocks: (4.00 TB/3.63 TiB)
[    1.528324] sd 6:0:0:0: [sdc] Write Protect is off
[    1.528326] sd 6:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[    1.528340] sd 6:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.528464] sd 6:0:0:0: Attached scsi generic sg3 type 0
[    1.536928]  sdc: unknown partition table
[    1.537083] sd 6:0:0:0: [sdc] Attached SCSI disk
```

煩雑、見にくい。`dmesg`が今必要じゃないような情報もわんさか出してくれるので、目的の情報を見つけ出すのが多少面倒。

##fdiskで確認

```bash:fdiskで確認（必要部分のみ抜き出し）
$ sudo fdisk -l
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

Disk /dev/sdc: 4000.6 GB, 4000630046720 bytes
255 heads, 63 sectors/track, 486382 cylinders, total 7813730560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table
```

こっちの方がデバイスごとに分かれて表示されるので見やすい。

##アレイは`sdc`として認識されたっぽい。

#exFATを使えるようにする

```bash:exFATを使えるように
$ sudo apt-get install fuse-exfat exfat-utils
[sudo] password for tea: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package fuse-exfat
```

標準では含まれていないのでリポジトリを追加して再度実行

```bash:exFATを使えるように
$ sudo add-apt-repository ppa:relan/exfat
$ sudo apt-get update
$ sudo apt-get install fuse-exfat exfat-utils
```

#HDDをフォーマットする
まずはパーティションを切る

```bash
$ sudo parted /dev/sdc
(parted) print
Error: /dev/sdc: unrecognised disk label
(parted) mklabel gpt
(parted) unit TB
(parted) mkpart primary 0.00TB 4.00TB
(parted) print
Model: ATA MARVELL Raid VD (scsi)
Disk /dev/sdc: 4.00TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      0.00TB  4.00TB  4.00TB               primary

(parted) quit
Information: You may need to update /etc/fstab.
```

exFATでフォーマット

```bash:exFATでフォーマット
$ sudo mkfs.exfat /dev/sdc
mkexfatfs 1.0.1
Creating... done.
Flushing... done.
File system created successfully.
```

#マウントする
##UUIDを調べる

```bash:抜粋
$ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root  9  4月  3 11:32 8580-9D7B -> ../../sdc
```

##fstabに追記

```bash:/etc/fstab
UUID=8580-9D7B /mnt/r_array exfat async,auto,dev,exec,gid=65534,rw,uid=65534 0 0
```
マウントしてからは権限の変更等ができないのでマウント時に指定
これをしないで`chown`とかすると`Function not implemented`とか言われる。

##マウントポイントの作成

```bash
$ mkdir /mnt/r_array
```

##fstabを反映させる

```bash
$ sudo mount -a
```

てきとうにファイルを作ったり書き込んだりして正常に動作しているっぽいことを確認する

#Sambaを使ってアクセスできるようにする
##共有するフォルダを作る

```bash
$ mkdir /mnt/r_array/share
```

##Sambaの設定をする
まぁ適宜、といった感じで。

```bash:/etc/samba/smb.conf
[global]
   workgroup = WORKGROUP

dos charset = CP932
unix charset = UTF-8
display charset = UTF-8

map to guest = Bad User


[r_array_share]
path = /mnt/r_array/share
writeable = yes
force create mode = 0666
force directory mode = 0777
guest ok = yes
guest only = yes
```

##Sambaを再起動

```bash
$ sudo service smbd restart
smbd stop/waiting
smbd start/running, process 3847
```

#他のマシンからアクセスして動作チェック
てきとうにファイルやフォルダを作ったりデータをコピーしたり

#ベンチマーク
未計測

#NICチーミング
ベンチマークの数値を見てから、やるか判断します