やること
- 2TBのHDDを4基使用してRAID10を構築して
- Sambaを使ってネットワークアクセスできるようにして
- NASとして運用する
RAIDってなに
Wikipediaへどうぞ→RAID
- 複数のストレージを組み合わせて、大容量を目指したり速度や冗長さを向上させようというもの
- 今回使用するのはRAID10という構成
- RAID1とRAID0の組み合わせ
- RAID0はストライピング(分散書き込み)
→速度向上と大容量化が期待できる - RAID1はミラーリング(全く同じ物を書き込む)
→分散して読み込みをするようにすれば速度向上、ストレージが片方ぶっ壊れてももう片方から修復可 - RAID10はRAID1の構成をRAID0する
→分散書き込みするストレージでそれぞれ独自にミラーリング
構成
CPU | Intel Celeron G550 |
M/B | GA-H77-DS3H |
RAID | AREA TTH QUATTRO SD-PE4SA3ES4L |
HDD | WD20EZRX x4 |
M/Bには別途SSDとHDDが各1基ずつ接続されている。それぞれシステム用とデータ庫用として運用。
RAIDを構築する
説明書を見ながら素直に接続。説明書はネットでも見れる。便利。使うポートがどこなのかをジャンパーピンで設定する。
説明書通りに、OS起動前にCtrl+Mで設定画面を呼び出して構成する。説明書ではHDDを2つ選択した画面しか例示がないが、RAIDを構成するHDDを選択する時に、4つ全部選択すればRAID10を構成できた
アレイがどのデバイスとして認識されたか確認する
方法はいくつかあるのでてきとうに
dmesgを眺める
めんどいので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で確認
$ 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を使えるようにする
$ 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
標準では含まれていないのでリポジトリを追加して再度実行
$ sudo add-apt-repository ppa:relan/exfat
$ sudo apt-get update
$ sudo apt-get install fuse-exfat exfat-utils
HDDをフォーマットする
まずはパーティションを切る
$ 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でフォーマット
$ sudo mkfs.exfat /dev/sdc
mkexfatfs 1.0.1
Creating... done.
Flushing... done.
File system created successfully.
マウントする
UUIDを調べる
$ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 9 4月 3 11:32 8580-9D7B -> ../../sdc
fstabに追記
UUID=8580-9D7B /mnt/r_array exfat async,auto,dev,exec,gid=65534,rw,uid=65534 0 0
マウントしてからは権限の変更等ができないのでマウント時に指定
これをしないでchown
とかするとFunction not implemented
とか言われる。
マウントポイントの作成
$ mkdir /mnt/r_array
fstabを反映させる
$ sudo mount -a
てきとうにファイルを作ったり書き込んだりして正常に動作しているっぽいことを確認する
Sambaを使ってアクセスできるようにする
共有するフォルダを作る
$ mkdir /mnt/r_array/share
Sambaの設定をする
まぁ適宜、といった感じで。
[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を再起動
$ sudo service smbd restart
smbd stop/waiting
smbd start/running, process 3847
他のマシンからアクセスして動作チェック
てきとうにファイルやフォルダを作ったりデータをコピーしたり
ベンチマーク
未計測
NICチーミング
ベンチマークの数値を見てから、やるか判断します