スポンサードリンク

2013年8月14日水曜日

[完成版]AMD C-60を用いた低消費電力で静かなNASを構築する:ソフト編

PC-Q07A-U3

資金が潤沢でない貧乏学生にとって、OSの費用は非常に痛い。少しでもケチる・・・もとい節約するためにLinuxを用いた。今回はUbuntu server 12.04.2 + samba環境で構築する。
※Linuxはよく知らないため誤りがあるかと思います。後学のためにも、報告していただけるとうれしいです。


この記事は「ソフト編」である。前編扱いの「ハード編」もご覧いただけるとありがたい。


Ubuntuのインストール

基本設定

ホスト名:NAS
ユーザ:adm
パスワード:abcd

パーティション

HDDを丸ごとデータ領域に使いたいので、OSはUSBメモリにインストールした。HDDには /share というマウントポイントを作成し、全領域を共有に使う。
※partedの結果

Model: ATA WDC WD30EFRX-68A (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name             Flags
 1      1049kB  3001GB  3001GB  ext4         Samba-directory


Model: BUFFALO USB Flash Disk (scsi)
Disk /dev/sdb: 8167MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  99.6MB  98.6MB  fat32                 boot
 2      99.6MB  6440MB  6341MB  ext4
 3      6440MB  8166MB  1726MB  linux-swap(v1)

その他

鬼門であるNICも認識されたようでDHCPでインストールが進んだ。
CDドライブを本体より抜いて完了。


DHCPから固定IPに変更する

$ sudo nano /etc/network/interfaces

例
auto eth0
iface eth0 inet static
address 192.168.11.100
netmask 255.255.255.0
gateway 192.168.11.1
dns-nameservers 192.168.11.1

$ sudo /etc/init.d/networking restart
例として192.168.11.xとしているが、Buffalo製のルータは使用していない。

余談
これで設定も終わり、アップデートをしようとしたらFailed to fetchというエラーが出た。調べるとどうもDNS関連でエラーがでてることがわかった。interfacesの設定を見返すと、dns-nameserversのところがdns-serverになっていた。これを修正したら無事にパスした。

パッケージの更新

$ sudo apt-get update
$ sudo apt-get upgrade


Realtek NICの固有問題

ASUS C60M1-IはRealtek 8111FなるNICが採用されている。このNICだと誤ったドライバがロードされてしまい、gigabit通信が出来ない場合があるそうだ。NASに使うには大きな問題である。ただ誤ったドライバでも動くには動く。
正しいドライバはr8168である。r8169のままでは性能が引き出せない。両者の違いはPCIかPCIe用かであるそうだ。

NICの確認

$ lspci | grep Ether
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 09)
Realtek 8111Fであることがわかる。

ドライバの確認

$ lsmod | grep r81
r8169      62766  0
r8169であることがわかり、誤ったドライバがロードされていることがわかる。

ドライバのダウンロード

あらかじめUSBメモリにRealtek公式サイトからドライバをダウンロードしておく。
執筆時点では r8168-8.036.00.tar が最新であった。

ビルド環境のインストール

$ sudo apt-get install build-essential
これがないとドライバのビルドができない。

USBメモリのマウント

$ sudo mkdir /mnt/usb
$ sudo mount -t vfat /dev/sdc1 /mnt/usb
sdc1の部分は環境により異なる。

ドライバのインストール

Readmeファイルに沿って行う。
$ cd /mnt/usb
$ sudo tar vjxf r8168-8.036.00.tar.bz2
$ cd r8168-8.036.00
$ sudo ./autorun.sh
Completed.

ドライバの確認

$ lsmod | grep r81
r8168      257174  0
r8168になった。

USBメモリのアンマウント

$ sudo umount /dev/sdc1


Samba

見られたくないデータをたんまり突っ込むので、共有ディレクトリに制限をかける。

やること
  • /share/privateを共有
  • ユーザとしてyutormを作成
  • privateグループに属するユーザのみアクセス可
    ※特定のユーザのみアクセス可でもよいが、拡張性を設けておく

sambaのインストール

$ sudo apt-get install samba
$ smbd --version
Version 3.6.3
3.6.3がインストールされた。

グループの作成

$ sudo groupadd private

共有ディレクトリの作成と設定

$ sudo mkdir /share/private
$ sudo chmod -R 770 /share/private    ←パーミッションを770にする
$ sudo chgrp -R private /share/private    ←privateグループに属させる

Sambaユーザの作成と設定

$ sudo useradd yutorm
$ sudo pdbedit -a yutorm    ←Sambaにyutormを追加
$ sudo gpasswd -a yutorm private    ←privateグループに属させる

Sambaの設定

$ sudo nano /etc/samba/smb.conf

[global]
security = user    ←アンコメント

max protocol = SMB2    ←SMB2を有効にする^1
display charset = UTF-8    ←文字化けを防ぐ
unix charset = UTF-8
dos charset = cp932

[private]    ←ページ下部に全部追記
path = /share/private
brwoseable = yes
writable = yes
create mode = 0770
directory mode = 0770
share modes = yes
guest ok = no
valid users = @private

$ sudo restart smbd
^1:Linuxレポート - Samba新版3.6は新プロトコルSMB2.0に対応、Windowsから高速にアクセス

クライアントからアクセス

クライアントからアクセスし動作を確かめる。

・Windowsからアクセス
  1. [Winodowsキー] + [R]で「ファイル名を指定して実行」を開く
  2. 構築したサーバのアドレスを入力する(例.\\192.168.11.100\private)
  3. 「Windowsセキュリティ」が開くので、ユーザ名とパスワードを入力する
    (例.ユーザ:yutorm, パスワード:abcd1234)
  4. 「privateディレクトリ」が参照でき、読み書きが確認できれば完成

・Androidからアクセス
ネットワーク越しにファイルを参照できるファイルマネージャが必要。
説明は省くので、各サイト参照されたし。


ファイアウォールの設定

$ sudo ufw status
Status: inactive

$ sudo ufw default deny    ←全部閉じる
$ sudo ufw allow samba    ←Sambaを許可する
$ sudo ufw enable    ←ufwを有効にする
Firewall is active and enabled on system startup

$ sudo ufw status
Samba      ALLOW    Anywhere


指定した時間にシャットダウン

つけっぱなしはもったいない。もし切り忘れても、夜中の2時になったら勝手に切れるようにしておく。
$ sudo crontab -e

エディタを選ぶように言われる
[2]の/sbin/nanoを選んだ

以下を最下行に記述
00 02 * * * /sbin/shutdown -h now

エディタを終了すると以下のメッセージがでる
crontab: installing new crontab
参考
How to use crontab in Ubuntu


ベンチマーク

条件

計測にはCrystalDiskMarkを用いる。
\\192.168.11.100\privateを、テストマシンのネットワークドライブに割り当てる。
テストマシンとNASの間にはギガビットハブ(GS105v3)がある。
NICの設定は初期設定のまま。

テストマシンのスペック
CPUCore i5 3470S 2.9GHz
MEMDDR3-1600 8GB*2
StrPlextor PX-256M5S 256GB
NICBroadcom BCM57781
OSWindows 7 Professional SP1 64bit

結果

NAS benchmark
必要にして十分であるが、もう少し速度が出てほしい。


総評

先達のお陰で、ド素人でも構築が出来た。ハードの費用と構築の手間と時間を考えると、既製品の方に分があるといえる。しかし自分の手で構築する「プラモデル的な楽しみ」は既製品にはない部分だ。またOSがUbuntuなのでいくらでも拡張性がある。そこをいかに捉えるかで判断は分れるだろう。

0 件のコメント:

コメントを投稿