月別アーカイブ: 2016年3月

自宅のホームサーバ(NAS)を更新する(4) NASとしての設定

自宅のNASを更新するにあたって、パソコンを利用してNASを構成することとし、Arch Linuxのインストールまでが完了した。その続き。

要件

  • SMBでファイル共有を行う。
  • パスワード認証を行う個人用フォルダと、認証を行わない共有フォルダを作成する。
  • 特定のフォルダに入れられたメディアファイルは、DLNAにより家庭内でストリーミング配信される。
  • 一部のフォルダは定期的にバックアップを行う。(この件の設定は次回)

というわけでさっそくデータ用HDDにパーティションを作成し、ext4でフォーマットする。
/etc/fstabに登録して再起動。

sambaをインストールして設定する

# pacman -S samba

設定ファイルのベースが作成されるので、コピー。

# cp /etc/samba/smb.conf.default /etc/samba/smb.conf

設定を記入していく。
各Linuxユーザのホームディレクトリを公開する[homes]は無効にし、個別に設定した。
ここでは省略したが、共有フォルダは用途別に複数作った。
個人フォルダも必要数分作った。

[global]
deadtime = 15
disable netbios = yes
dns proxy = no
hosts allow = 192.168.0. 127. 10.
invalid users = root
load printers = no
guest account = nobody
map to guest = Bad User
max connections = 10
printing = bsd
printcap name = /dev/null
security = user
server string = Home Server
workgroup = CRFNET
unix charset = UTF-8
dos charset = CP932
disable spoolss = yes
create mask = 0755
directory mask = 0755
force create mode = 0755
force directory mode = 0755

#[homes]
#   comment = Home Directories
#   browseable = no
#   writable = yes

[public]
comment = Public Data
path = /path/to/public
browseable = yes
writable = yes
guest ok = yes
only guest = yes
create mode = 0777
directory mode = 0777

[ユーザ名]
path = /path/to/user
browseable = yes
writable = yes
valid users = [ユーザ名]

認証に使用するIDとパスワードは、Linuxユーザとして作成し、以下のコマンドでsambaに登録する。

# pdbedit -a -u [ユーザ名]

設定できたら、有効化。

# systemctl enable smbd
# systemctl enable nmbd

ReadyMedia(MiniDLNA)をインストールして設定する

ここではトランスコードにも対応した版をAURからインストールした。

$ yaourt -S readymedia-transcode-git

設定は /ect/minidlna.confを編集する。
ここではmedia_dirのみ修正した。
設定したら有効化。

systemctl enable minidlna

比較のためMediaTombもインストールして設定してみた

$ yaoult -S mediatomb

インストールできたら、いったん起動すると設定ファイルが生成される。

# systemctl start mediatomb
# systemctl stop mediatomb

設定ファィルは/var/lib/mediatomb/.mediatomb/config.xml

設定したら有効化。

# systemctl enable mediatomb

ブラウザで

http://[サーバのIP]:50500/

にアクセスすると、共有するファイルを選択する画面がでた。

 

 

 

 

 

自宅のホームサーバ(NAS)を更新する(3) ArchLinuxのインストール

自宅のNASを更新するにあたって、今回はパソコンを利用してNASを構成することとし、そのための機械が組み上がった。

OSの選定

順当に考えれば、以前使ったことのあるCentOSの最新版である7系になるが、なんだか魅力的に感じなかった。
世間で簡単LInuxとして人気のUbuntuは、なんか負けた気がするから嫌。

ここは一般にサーバ向きといわれないArch Linuxを攻めてみる。
サーバに不向きといわれる理由は、長期サポートが無いこと、サーバ向け構成で一発インストールするオプションが無いこと、頻繁にアップデートされることによりときどき設定の変更に迫られること、常に最新版をインストールするしかないためインストールする時期が違えば設定内容が変わってくること、といったところであろう。
だが、最小インストールから一つずつ自分で追加していくというスタイルは、隅々まで構成を把握したいとか、必要ないものは入れたくないとか、そういうことが可能になり、これはこれでサーバとして利用する際の利点にもなると思う。

とにかく起動できるようになるまで

公式の解説通り複数のインストール方法があるが、ここではすでに稼働しているArch Linuxのシステムがあるので、インストールメディアを作成せず、この環境を利用してインストールを行う。

まずは、既存の環境に新規インストール用スクリプトをインストール。

# pacman -S arch-install-scripts

パーティションの作成

まず、既存のシステムに新しいSSDを接続し、cgdiskなどでパーティションを作成する。
ここでは、GPTディスクでUEFIブートすることとし、sdb1として/bootに1GB(パーティションタイプをef00としてEFI System Partationに指定)、sdb2として/に50GB割り振った。
swapについては後でswapfileを作成することにし、パーティションにはしなかった。
将来SSDを他のことに使うかもしれないので、領域を半分残した。
cgdiskが勝手に先頭に約1MBの領域を残したが、これはGRUB2でBIOSブートする際のためのもの。つぶしてもよかったが、ここでは残しておいた。

作成したパーティションをフォーマットしてマウントする

# mkfs.ext4 /dev/sdb2
# mkfs.vfat -F32 /dev/sdb1
# mount /dev/sdb2 /mnt
# mkdir -p /mnt/boot
# mount /dev/sdb1 /mnt/boot

ベースシステムのインストール

 # pacstrap -i /mnt base base-devel

fstabの作成

# genfstab -U /mnt >> /mnt/etc/fstab

新しいシステムにchroot

# arch-chroot /mnt /bin/bash

ロケールの設定

ここではシステム全体を英語に設定。
後で作業を行うユーザを作成し、そのユーザのみ日本語にする。

nanoなどを用いて、/etc/locale.genの2カ所をコメント解除。

#en_SG ISO-8859-1
en_US.UTF-8 UTF-8
#en_US ISO-8859-1
...
#ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8
#ka_GE.UTF-8 UTF-8

完了したら、

# locale-gen

/etc/locale.confを作成して、内容を記入。

LANG=en_US.UTF-8

同様に/etc/vconsole.confを作成して、内容を記入。

KEYMAP=jp106
FONT=lat9w-16

最後に、

# export LANG=en_US.UTF-8
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

また、この機械はLinuxしか使わない予定なので、ハードウェア時計をUTCにしてしまう。

# hwclock --systohc --utc

ホスト名を指定

好きな名前をホスト名として考え、/etc/hostnameを作成して記入。
/etc/hostsのlocalhostの後ろ(2カ所)にも記入。

とりあえずのネットワーク設定

ネットワークはいったんDHCPで設定するが、GUI環境にしてから固定IPに修正する。

まず

# ip link

を実行し、その結果から使用したいネットワークカードのデバイス名を確認。 ここではenp1s0であった。 この値を用いて、

# systemctl enable dhcpcd@enp1s0.service

rootパスワードを設定

passwd

ブートローダーのインストール

ここではsystemd-bootなどという名前に変わったgummibootを利用する。
とにかくシンプルなUEFIブートができるのが特徴。

# pacman -S dosfstools
# bootctl --path=/boot install

この段階で”Linux Boot Manager”という名前でUEFIに登録される。
しかし設定はまだ終わっていない。

blkidなどで/パーティションのPARTUUIDを確認した後、/boot/loader/entries/arch.confを作成して内容を記入。

title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=PARTUUID=[確認したPARTUUID] rw

また、/boot/loader/loader.confを編集

timeout 5
default arch

後はchrootを抜けて

# exit

再起動

正しく設定できていれば、UEFIのブートエントリに”Linux Boot Manager”が追加されており、それを選択するとCUIの画面が表示されるところまで行くはず。

先ほど作成したパスワードでrootでログインし、管理権限のある一般ユーザを作成しておく。

# useradd -m -G wheel -s /bin/bash [ユーザ名]
# passwd [ユーザ名]

とにかくGUIに(GDM+Cinnamon)

サーバなんだからCUIだけで充分だしその方が動作が速いという考えもあるが、おそらく目的よりもかなり高いスペックがあるはずなので、その余裕分を楽をすることにあてる。
どうせなら、Linuxデスクトップの実機を1台確保したといえる程度を目指す。

とにかく関連ソフトをインストールしまくる。
この段階でGUI用のターミナルエミュレータを入れておかないと後で面倒なことになる。
ここではSakuraを選択。

# pacman -S xf86-video-ati
# pacman -S gdm
# pacman -S cinnamon
# pacman -S sakura

これでそろったはずなので、GUIを動かしてみる。

# systemctl start gdm

無事に画面がでたら、先ほど作成した一般ユーザでログインしてみる。
デスクトップ環境を選ぶことができるので、cinnamonを選択。

問題なければ再起動。

最後のCUIで、GUIが自動起動するように設定。

# systemctl enable gdm

今後、起動すればすぐにGUIとご対面できるようになる。一安心。

この先の作業はGUI環境からターミナルエミュレータを起動して行う。

日本語化

まずは日本語のフォントをインストールする。

# pacman -S ttf-sazanami
# pacman -S otf-ipafont

~/.xprofileを作成し、内容を記入。

export LANG=ja_JP.UTF-8

これで再起動すると日本語表示になる。
かなり安心。

次に日本語入力ができるようにする。
ここではfcitx+mozcとした。
mozcはGoogle日本語入力のLInux版であり、かなりWindowsに近い感覚で入力できる。

# pacman -S fcitx-mozc
# pacman -S fcitx-configtool

fcitxを起動するための設定を~/.xprofileに追記。

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

再起動で日本語入力が可能に。

その他よく使うソフトをインストール

firefoxの日本語版。
インストール直後はCinnamonのメニューに出なくて焦るが、再起動したらでる。

# pacman -S firefox-i18n-ja

テキストエディタ

# pacman -S leafpad

OwnCloudのクライアント。
keyringを入れないと毎回パスワードを聞かれてしまう。

# pacman -S owncloud-client
# pacman -S gnome-keyring

Cinnamon(Nemo)のGUIからSMBの共有を見ることができるように

# pacman -S smbclient
# pacman -S gvfs-smb

その他ユーティリティ。

# pacman -S gnome-system-monitor
# pacman -S acpid
# pacman -S cpupower
# pacman -S lm_sensors
# pacman -S xfce4-goodies
(xfce4を使うのではないが、いろんなユーティリティが入って便利)

その他Linuxデスクトップとして使用するために必要であろう設定

ネットワーク設定

インストール時に作成した仮の設定を止め、CinnamonのGUIで設定できるようにする。
np1s0の部分は環境によって変わる。

# systemctl disable dhcpcd@enp1s0.service
# systemctl enable NetworkManager

ここでは、最終的にサーバにするので固定ローカルIPを設定した。

AURを使えるように

Arch Linuxでよく使われる非公式レポジトリ。

/etc/pacman.confに追記してコマンドを実行。

[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
# pacman --sync --refresh yaourt

swapfileを作成し、休止状態になれるように

# fallocate -l 4G /swapfile
# chmod 600 /swapfile 
# mkswap /swapfile

/etc/fstabにも設定する必要があるが、ここでは自動で行われていた。

ここでスワップ領域を作成したのは、あくまで休止状態になれるようにするのが目的であって、物理メモリは潤沢に搭載していてスワップの必要が無い環境なので、通常のスワップが起こらないようにする。

/etc/sysctl.d/99-sysctl.confを作成して、以下を記入。

vm.swappiness=0

swapfileを使って休止状態になるために必要なoffset値を確認する。

# filefrag -v /swapfile 
Filesystem type is: ef53
File size of /swapfile is 4294967296 (1048576 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       0:     348160..    348160:      1:            
   1:        1..   30719:     348161..    378879:  30719:             unwritten

この場合、offsetは348160になる。

/boot/loader/entries/arch.confのoptionsに以下を追記。

resume=/dev/disk/by-uuid/[blkidなどで確認した/パーティションのUUID] resume_offset=[さきほど確認したoffset]

/etc/mkinitcpio.confを編集。
HOOKS行、blockおよびlvm2のあと、filesystemsの前にresumeを追加。

# mkinitcpio -p linux

これで休止状態になれるようになった。

SSDに最適化し、Trimが行われるように

/etc/fstabを編集。

relatimeをnoatimeにしdiscardを追加。

# systemctl enable fstrim

ここまで、swapfileを除く使用量は5GB程度。
速度を気にしなければUSBメモリとかでも運用できそう。

続く

自宅のホームサーバ(NAS)を更新する(2) 本体の準備

自宅のNASを更新するにあたって、今回はパソコンを利用してNASを構成することに決めた。

希望

  • ある程度の省電力。電気代で月500円(1日17円)を目標にすると、消費電力は40w程度におさまってほしい
  • ある程度の処理速度
  • ある程度の省スペース
  • 物理的に独立した2台のHDD。(2台目はバックアップ用。RAIDを組まずにファイルコピーなどを用いる。)現状は2TBなので、同程度ほしい。片方は外付けでもいいが、できれば両方内蔵したい。
  • 欲を言えば、システム用にSSD。速さの都合もあるが、障害発生時にシステムとデータが別々になっている方が対応しやすい気がする。
  • 3~5年程度使うつもりで、必要なところには新品を使うが、それ以外は手持ちをできる限り流用し、安く仕上げる

というわけで、以前作成したがあまり活躍の場を設定できていないAM1I-A+Athlon 5350+ISK-110 VESAをベースにする。
CPUのTDPが25w、HDDは最大10w程度と見積もり、最大で60w程度、実際にはほとんどアイドルだからもっと低いだろうと考えると、省電力はOK。
処理速度は、一般的なNAS専用機よりはるかに高いが、専用機より重いOSをほ積ませたことによる差し引きがどうでるか。
省スペースについては、ISK-110 VESAを使う限りは一般的なNAS専用機とほぼ同等サイズ。

脳内会議

  • AM1I-AはSATAが2ポートのため、SSD+HDD+HDDという構成にできない。(PCIeのSATAカードを追加、という選択肢は考えない)
  • ISK-110 VESAには3.5インチのストレージが搭載できない。2.5インチのHDDで2TBのものは少なく、高価で、そして通常より厚くこのケースに搭載不可なものもある。
  • ISK-110 VESAには2.5インチ×2までしか搭載できず、内蔵ストレージ3台の構成ができない。
  • それならばケースを手持ちのSG05に変更…したいが、この機械は絶賛使用中。
  • 新しいケースを買うならECB1010がいいなぁ。フルサイズの光学ドライブが搭載可能なので、その位置に3.5インチHDDを搭載すれば、ストレージを希望の構成にできる。ただし、そういえばマザーボードのSATAポートが足りない。あと、部屋に本体を置く場所がない。

結論

最も安くあがることから、ケースを新調せず、SSD+2.5インチHDD(1TB)+USBHDDとする。
内蔵HDDの容量が気になるが、現状ではNASの容量は600GB程度しか使っていないので、大丈夫だということになる。
とりあえず運用してみて、不足なら構成を変更すればよい。

組み立てはストレージの組み替えだけなのであっさり終了。

今回買ったもの

自宅のホームサーバ(NAS)を更新する(1) 専用機とホームサーバの比較

経緯

現在使用しているNAS専用機HDL-A2.0が不調になってきた。
ときどき勝手に電源が落ちていて、電源ケーブルを挿し直したりなどしているとそのうち直る。
だましだまし使いつつ、新しい機械に変更するきっかけを探していた。
そこに、古い液晶テレビKDL-22EX300にDLNAでネットワーク上の動画を再生する機能があったことに気づき、それを使いたいという家族からの要請があったが、なぜかNAS内のファイルが表示されないという問題が発生。(別のDLNAサーバに同じファイルを配置した場合は表示され、選択可能で、トランスコードなしで再生できる。)
この問題への対応を考えるという選択肢もあったが、ここではNASを交換するふんぎりがついた、ととらえることにした。

NASに求めるもの

必須

  • SMB対応。クラウドで管理しないファイル(使用頻度の低いもの、重要な個人情報、容量が大きいもの)のバックアップと、家庭内での共有
  • DLNA対応。家庭内における通常動画の共有やストリーミング
  • バックアップ機能。RAIDという方法もあるが、RAIDコントローラーが壊れた場合の復旧が心配なので、物理的にも論理的にも独立した別のディスクに定期バックアップしたい

あった方がいい

  • DTCP-IP対応。デジタル放送を録画したものの家庭内配信(デジタル放送のコピーガードを外す方法は検討に含めない)
  • 何らかの方法で、NAS内のファイルをインターネット経由で家の外から参照できる機能

NAS専用機とホームサーバの比較

この記事では、パソコンとして利用可能な機械をNASとして利用することを「ホームサーバ」と呼ぶことにする。

これまで、Mac OS X機 → CRNS35NAS → E35M1-I DELUXE+Cent OS 6 → HDL-A2.0と使ってきた感想と、最近の機械を軽く調べた感じをまとめてみる。

専用機 ホームサーバ
SMB 普通は対応。簡単な設定でそこそこいい感じになる機械が多い。 sambaなどをインストールする。自分で細かく設定できる、する必要がある。
DLNA 対応する機種が多い。簡単な設定でそこそこいい感じになる機械が多い。トランスコードが行えるか、およびその形式は機種による。速度も機種によるが、たいてい遅い。 MediaTombやMiniDLNA、PS3Mediaserverなどをインストールする。ソフトによるがたいていは自分で細かく設定できる、する必要がある。トランスコードが行えるか、およびその形式はソフトによる。速度はスペックによるがたいてい速い。
バックアップ 対応する機種が多いが、あまり好きなように設定できない印象。 いろんな方法あり。自分で細かく設定できる、する必要がある。
DTCP-IP 高級な機種は対応 対応できる見込みなし
ネット経由で参照 対応する機種もあるが、メーカーが提供するdDNSを使う前提だったりなど、あまり好きな内容じゃない印象 いろんな方法あり。自前サーバをネットに公開することになるので、セキュリティに気を遣う必要がある。
消費電力 最大30w程度 構成による

大きな差は、DTCP-IPの対応になる。
HDL-A2.0にはこの機能があったが、自分の場合はあまり使わなかった。

NAS専用機を選ぶ場合、候補はTS-231+を考えている。

ここで、これまでの経緯を見ると、ホームサーバとNAS専用機を交互に使っており、この順番だと次はホームサーバとなる。
こういう安直な理由により、次はホームサーバに決定。