组建家用NAS

[TOC]

说是家用NAS,其实有些名不副实,因为除了最基本的存储外,还期望它偶尔担任VOD点播或HTPC之类的工作,其实就是一个家用服务器,但是需要省电、静音。

硬件篇

选择机箱

家里的地方寸土寸金,这个你懂的,优先考虑小机箱,有几点需求:

  • 根据要摆放机箱的橱柜位置,确定机箱的长宽高;
  • 优先选择符合mini-itx主板规格的小机箱;
  • 担任存储工作,期待4个以上的3.5寸盘位。

本来最中意的是联力PC-Q08,可惜家里橱柜的高度限制是25cm,最终选择了台湾的一款 4-Bay小机箱,箱体内部设计和 联想D400 有些类似,有4个热拔插3.5寸盘位,三围32x20x21cm,还算满意。

选择平台

确定机箱之后,就可以选择平台了。目前较流行的省电静音的选择一般有两种:

  • Intel的ATOM平台,基本是废柴;
  • AMD的APU平台,省电,能硬解绝大多数的高清视频,适合HTPC。

这两者的共同缺陷是CPU很弱,无论Atom D525还是Zacate E350之流都没法担任转码工作。

Intel的不少新款CPU未在国内发布,省电,性能又足够强劲的,挑来选去只有 Intel Core i3 2100T 这一款符合功耗需求了。TDP 35w,性能足够软解高清。FCLGA1155封装,H61或H67主板都能用。

而主板更难选择,由于机箱有4个热拔插硬盘接口,而作为服务器最好再外接一块额外的SSD用来单独安装操作系统,这意味着主板应该至少有5个SATA口。

一般的m-itx主板都只有2个或者4个SATA口,一种解决办法是使用RAID多功能阵列卡,从PCI-E接口转出5个SATA口。如果选择多于4个SATA口的主板,只能选择索泰的板子,比如这款 ZOTAC H67-ITX WIFI ,硬件指标很强劲,板载4个SATA口和2个SATA2口,支持RAID、WIFI、HDMI输出等等,只是BIOS设置稍逊色,但不超频使用也无所谓。

Update@2011-10-07:发现索泰主板的缺憾了,我打算把原机箱的风扇换成一颗PWM针脚的风扇,以便控制风扇转速,可以节能静音。结果BIOS里居然无法设置系统风扇的转速,而且fancontrol也不支持索泰主板,lm-sensors的支持也不佳。

其他配件

CPU和主板确定了,其他附件就容易选择了:

  • Intel 320系列SSD 40GB x1
  • WD 绿盘 2TB x4
  • Kingston DDR3 1333 4GB x2

额外的一颗SSD发热量很小,而且很轻便,直接在机箱内部的隔板上钻了两个孔完美固定住。

功耗和噪音

开机硬盘的瞬时功耗20w x4=80w,外加CPU、主板的功耗,190W的随机电源刚好能够胜任;硬盘运行功耗大约5w,使用功率计量仪测量,待机时整机功耗能够控制在35w以内,基本满意。此外,由于家用服务器,占大头的数据是电影音乐之类的,并不重要,所以没有组RAID。设置硬盘定时停转,比较省电。

DEL进入主板BIOS界面,不得不说Zotac的BIOS设置项的说明都好简陋,在H/W Monitor里可以查看和设置CPU风扇的转速。

  • start fan temperature:启动风扇的温度,建议设置为40°C
  • start fan duty:猜测是风扇转速的步进值,越低转速提升越慢,建议设置为20%
  • highest fan duty: 猜测是风扇全速转动的上限值,越低转速上限也越低,建议设置为70%

这样设置完毕后,正常CPU风扇转速在1250RPM左右。

机箱自带一颗12cm风扇用于整箱散热,默认转速稍高,风噪稍大。由于随机风扇并非PMW接口,花2¥买了一根降速线,接上后机箱风扇转速降到800RPM左右,风噪几不可闻,把耳朵贴到机箱才能感觉到风扇在转。此时,正常待机CPU温度40°C以内,基本满意。

软件篇

安装系统

基础系统采用了ubuntu server。之所以没装desktop版,只因为不想用gnome,自带的一堆什么蓝牙、音频、视频、文档、游戏乱七八糟的多达700多个额外软件包对家用服务器来说完全没用处。其实这俩版本除了内核编译参数外,应该没有任何区别。

登录管理器使用slim,窗口管理器使用icewm,文件管理器使用rox-filer,TERM使用xterm。

禁止自动黑屏

黑屏一般因为两个原因:Screen Saver和DPMS,可以通过 xset 命令查询相关信息:

$ xset q

编辑 ~/.xsessionrc,一般阻止Screen Saver就可以禁止自动黑屏了:

xset s noblank s off
setterm -blank 0 -powersave off -powerdown 0

如果还是不行,可以考虑关闭DPMS节能管理:

xset -dpms

自动关闭硬盘

自动关闭硬盘有很多方法。

一、设置 hdparam.conf,但有人说ext3下无法正常工作:

/dev/sdb {
    spindown_time = 340 # 2 hours
}

二、安装 noflushd,但ext3无法工作。

三、安装 laptop-mode-tools,参考 设置。laptop-mode的原理是先写到cache,当超过容量后,再写到硬盘上;危险是突然断电可能导致数据丢失。

  • 设置在电源下也能工作

      ENABLE_LAPTOP_MODE_ON_AC=1
      ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1
    
  • 指定期望spin down的硬盘

      HD="/dev/sdb"
    
  • 设置每3小时必须写一次cache到硬盘

      LM_BATT_MAX_LOST_WORK_SECONDS=10800
      LM_AC_MAX_LOST_WORK_SECONDS=10800
    
  • 也许有用

      CONTROL_NOATIME=1
    
  • 超时5秒后即休眠(有些激进,调整成半小时也可以)

      LM_AC_HD_IDLE_TIMEOUT_SECONDS=5
      LM_BATT_HD_IDLE_TIMEOUT_SECONDS=5
      NOLM_HD_IDLE_TIMEOUT_SECONDS=5
    
  • 脏页比率

      LM_DIRTY_RATIO=30
    

查看 /proc/sys/vm/laptop_mode 是否laptop-mode已经激活。

通过如下命令检查当前硬盘的状态:

$ sudo hdparm -C /dev/sda

自动登录

编辑slim的配置文件 /etc/slim.conf,设置 default_userauto_login 即可。

音频输出

Linux下边的音频解决方案一直很乱,先后有oss、alsa、pulseaudio一堆,默认使用alsa就可以了:

$ sudo apt-get install alsa-base alsa-utils

然后把用户加到 audio 用户组。如果遇到音量偏小的问题,也可以考虑最新的oss4,据说有改善:

$ sudo apt-get install oss4-base oss4-dkms

可以使用如下命令调整默认的音频系统:

$ sudo dpkg-reconfigure linux-sound-base

此外,ZOTAC这块板子支持8声道输出,如果只需要双声道音频输出的话,应该驳接绿色的音频插孔,具体内容可以翻阅主板说明书。

安装mplayer

建议使用 Medibuntu源 的版本。

可能需要设置一下字幕,以及视频和音频输出,编辑 ~/.mplayer/config

subcp=cp936
font=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc
vo=xv
af=volume=20:1,channels=2
softvol=yes
softvol-max=1000

安装PS3 media server

uPnP的视频服务非常多,但是支持全格式转码,且支持字幕的,似乎只有 PS3 media server 一个。可以顺利的把视频输出到Xbox360和Apple TV。

安装Airvideo server

AVS也有 linux版 了,专门用于iOS设备视频分享。

安装flashplayer

如果直接安装flashplayer-installer这个软件包,默认将会安装32-bit的flashplayer,速度要慢不少;建议从 Adobe官网 下载64-bit的flashplayer软件包,解压得到 libflashplayer.so,然后手工安装:

$ sudo mkdir /opt/google/chrome/plugins/
$ sudo cp libflashplayer.so /opt/google/chrome/plugins/
$ google-chrome --enable-plugins

音乐播放器

安装 mpd,可以播放ape格式。编辑 /etc/mpd.conf,稍微配置一下,保证用户 mpd 属于用户组 audio

music_directory         "/store1/Music"
bind_to_address         "0.0.0.0"
user                    "mpd"
mixer_type              "software"

audio_output {
    type        "pulse"
    name        "My Pulse Output"
}

audio_output {
    type        "alsa"
    name        "My Alsa Output"
}

Linux的客户端可以使用sonata或gmpc;Mac的客户端可以使用 Theremin;iOS设备上的客户端可以使用mPod和mPad。

自动挂载U盘

安装 usbmount

Wake on LAN

可以从笔记本、移动设备(iPhone或iPad),甚至外网唤醒家用服务器。

远程播放

ssh到服务器,指定显示设备即可,例如:

$ DISPLAY=:0 mplayer /path/to/video

这样服务器能临时充当HTPC了。

远程登录

x11vnc 是个小巧的VNC Server,它的最大优点是可以共享真实的显示设备(一般即DISPLAY 0),而不是虚拟出一个新的显示设备。这样如果你把电脑接到电视机上,那么你就可以远程共享这台电视机,用mplayer播放视频,还是用浏览器播放网络视频,那都随你了。

注意需要设置正确的xauth权限,这里是搭配登录管理器slim使用,可以把如下命令加入到 ~/.icewm/startup 中,随登录启动。

$ x11vnc -bg -nopw -many -geometry 1024x576 -display :0 -auth /var/run/slim.auth -o /var/log/x11vnc.log

使用VNC Viewer远程登录,即端口5900。

$ vncviewer nas-ip:0

ubuntu11.10开始使用lightdm作为默认的登陆管理器了,参考 这里 新建 /etc/init/x11vnc.conf

start on login-session-start
script
/usr/bin/x11vnc -nopw -bg -many -geometry 1280x768 -display :0 -auth /var/run/lightdm/root/:0 -o /var/log/x11vnc.log
end script

迅雷下载

使用kvm虚拟一个Windows XP。


Update@2011-12-20: 使用几个月后,如果再给我一次选择的机会,我会选择一个专用nas + 专门的播放器,或者直接买一台mac mini,价格也基本相当,把存储和娱乐功能整合到一台机器上不是个很好的选择 :(

Update@2013-12-24: 已入群晖DS214,作为家用nas非常满意。