NAS PN401的試用過程
重新回想為什要開始觀注NAS?
其實是想要解決長久以來的困擾,硬碟掛掉資料漏失的問題,所以開始找尋各家NAS。
為什麼當初會聯繫詮力科技?最重要的就是她們發表了一篇實做ITE2
NAS 建置Mail
Server的文章,因為我個人用的是Linux,它讓我有解放的感覺。
在查看各家NAS功能的同時,發現各家幾乎都有各自客製化的OS,各種功能完善的同時,也代表二件事:
-
購買者必須為NAS客製化的OS買單
-
一般的Linux用戶(如我),想要安裝Linux的額外的功能,不知道會不會受到限制
從第一點來說,客製化的OS不是不好,如果你缺的就是他所提供的功能,那就是物有所值,如果買的是一堆用不上的功能,那就是在資助她們研究更多包山包海的功能-您可能用不到。
第二點是當我買了一台機器,我想要如何利用這臺機器?
首先我確定一點,買NAS的人,這台NAS不會是購買者的唯一電腦,所以我幾方面來思考不同的需求:
個人與家庭:
說穿了,就是拿來儲存許多的音樂或是影片,所以至少要有Torrent與串流的功能。
以Torrent最好能透過遠端管理(人不在家,照樣下載),以在Github上面隨便一找,web-based就有像transmission-web-control或是WebTorrent這類的工具,可惜在她的ubuntumate有看到
transmission,但是沒有提供遠端管理的整合功能。
另外一個就是串流的功能了,最早一開機執行的就是XBMC,從網路上找到的資訊來看,Android/IOS
上
App的功能好像只是拿來作遙控器用的,不知道能不能用KODI直接連上去看?畢竟xbmc/kodi都是同一家基金會出的,如果詮力能夠整合一下,並來個教學會更好。
小企業:
說這個之前,必須再想一下,為什小企業需要NAS?segate是這樣說的:
-
容易操作,通常不需要專門的 IT 專業人員
-
成本更低(我最認可這一點了,大量的OpenSource降低了售價)
-
可輕易用於備份資料,方便您在有需要時隨時可以存取
-
擅長以安全可靠的方式集中儲存資料
可以說PN401基本上都滿足了上述所需的功能,但我不得不小小抱怨2下:
-
硬碟壞了誰知道
-
為什Linux不裝minimal版本,要裝Desktop版本,SSD裝置的空間幾無剩下
就第1點來說,大部分公司買了大概就不會有人天天去看這臺機器了(一般是丟到腳落看不到的地方),硬碟壞了會不會叫我不知道,但您至少寄封信到Gmail或是Yahoo告訴我一下吧?這邊有個簡單的解決方式,但是可惜詮力並沒有把這個簡單的功能做進來(我手動設定,還不斷地把mdadm.conf刷新蓋掉)。
第2點就是系統沒有足夠的更新空間更新Linux,不能純粹地Linux
Server+Web
Manage就好了?Linux雖說不容易被駭客入侵,但最好還是能更新就更新。能要求小企業進UbuntuMate自已搞嗎?對Linux熟練者來說,也只要有個ssh
console就夠了,實在想不通Desktop存在的理由。
中型企業以上:
我的想法,中型以上就是有人能夠自建與設定Server,回到一開頭的說明,我困擾的就是硬碟無預警的掛點.雖然每台主機都加裝了smarttools,每天每週定時的檢查與寄信通知(跟上述寄信一樣,非mail主機我也是用msmtp),但是還是不能避免硬碟壞了要處理,而傳統處理就是關機換硬碟,對線上服務來說停機真的是很麻煩(如果是對外的Web服務,還可以用nginx
load balancing來解決這個問題),所以Raid幾乎就是唯一的解決方案了。
Raid
不外乎硬體與軟體(還分為純軟與firmware)。
Hardware
Raid 想當然爾,有專屬的硬體(處理器、硬碟控制器、BIOS與快取),無論是sync或是rebuild速度都遠高於Software
Raid,所以才有另外一種處理方式,就是把軟體寫到BIOS裡,透過晶片組的幫助來加速,這裡有一篇組電腦的問題,裡面有詳細的回答。
但是硬體Raid,有一點必須要注意的是,大部份的錯誤控制採用time-limited
error recovery
(TLER),一般磁碟陣列控制卡允許修復的時間僅為7~15秒,超出則視為故障,所以硬碟的錯誤recovery時間不可超出這個時間,所以才常常發生在
rebuild
新硬碟時,老舊的那顆受不了,發生錯bits時來不及處理,連帶造成第二顆掛掉,所以硬碟的好壞在採用Hardware
raid也是要加以考量的。
既然硬體Raid好處這麼多,當然價格也不便宜,前陣子看了一下HP
ProLiant DL360 G5,動輒報價逼近40w,幾乎不是中小型企業可以承受。
另外一種考慮就是firmware
raid,像Intel@RST,就是PN401採用的方式(市面上有些用Intel主機直接支援Raid大多是這種)。
最後是最近才發現的另外一種解法,Raid硬碟外接盒,從字面上的意義來看就是一個硬碟外接裝置,盒子本身就有Raid控制器,透過esata、thunderbolt3或是usb3的連線方式來達成Raid,優點是不貴,缺點佔用空間,還要用一條線連到主機,像是早期的Linux不支援mount
usb3外接碟也是要注意的。
而且硬體Raid不是怕硬碟壞掉,而是怕控制器壞了,所以平時還是要備份,而且硬碟拔到另一台新的機器也不知是是否有辦法重建回來。
在電腦王有三篇文章可以閱讀相關資訊:動手組裝多碟
RAID
外接盒 (上)、動手組裝多碟
RAID
外接盒 (中)、動手組裝多碟
RAID
外接盒 (下)。
對像我們這種中型公司(自已有人)來說,老實說NAS不是那麼重要,重要的是要它的Raid儲存功能,所以只直用掛載了4顆WD
紅標2TB進行測試。
開始測試
基本上Linux的SoftRaid是使用mdadm
這支程式去做,網路的教學很多,可以自行去看。只是配合Intel®RST,使用外部管理硬碟的metadata,所以指令稍稍有點不同。
外部管理metadata使用container的管理方式,也就是說先把硬碟集合成一個管理集團,再由這個container來建立raid。
可以先用指令lsblk看看有那些硬碟代號(一般會是
sdb,sdc,sdd,sde四顆),我們先用前3顆建Raid5,然後第4顆做為
spare
disk。
因為我的目標是在硬碟年限到時可以抽換硬碟,所以要想辦法先辨識卡匣對應的硬碟代號,從測試結果來看,PN401從上而下的硬碟對應為
1:/dev/sde、2:/dev/sdd、3:/dev/sdc、4:/dev/sdb
#在硬碟沒有工作時,想辦法從硬碟讀取資料,讓硬碟燈一直亮個不停來判斷對應硬碟 $dd if=/dev/sdb of=/dev/null bs=1M count=1024 |
我們要將Raid讓其它的機器所掛載可以考慮的有
方式有NFS或是iScsi,我比較傾向採用iScsi,NFS只是一種檔案分享協定,背後要有主機存在;而iscsi直接將scsi
over internet,讓掛載的機器直接以為掛載的就是真實硬碟,也許那天老X有錢直接把iscsi換成sandisk。
現在我們要將Raid
以iScsi讓這個Raid變成target以便讓其它機器所掛載(記得防火牆開放TCP/3260),PN401預先裝的是tgt,因為CentOS7以後改用
targetcli,所以我把原先的tgt停用,改上targetcli,但是因為不熟ubuntumate的Service機制,發現它無法在mdadm的Service之後啟動,以致於開完機後我得重上一次targetcli的服務才有辦法將Raid變成iscsi的target,在使用時要特別注意服務啟動之相依性。
我的機器組成架構如下(兩台VM都在不同的Host):
在CentOS7變成initiator後,立馬多了一顆硬碟
/dev/sdb
,趁著尚未格式化硬碟之前先試一下寫入/讀出速度如何
#寫入測試 CentOS$dd if=/dev/zero of=/dev/sdb bs=128k count=8192 1073741824 bytes (1.1 GB) copied, 94.4693 s, 11.4 MB/s #讀出測試(在此用了hdparam,如果沒有就用 dd 也可以,參考之前讓硬碟指示燈亮的方式) CentOS$hdparm -t --direct /dev/sdb Timing O_DIRECT disk reads: ^[z 34 MB in 3.08 seconds = 11.06 MB/sec |
每秒約11M的速度有點差強人意,我們把/dev/sdb格式化後掛載上來
CentOS$msfs.xfs /dev/sdb && mkdir /data && mount -o noatime,_netdev,sync /dev/sdb /data |
再來準備直接在CentOS建PostgreSQL資料庫,
#安裝資料庫 CentOS$yum -y install postgresql postgresql-server postgresql-contrib #修改目錄屬性 CentOS$chown postgres:postgres /data && chcon -t postgresql_db_t /data #建立Symbol Link CentOS$rmdir /var/lib/pgsql/data/ && su - postgres -c "ln -s /data /var/lib/pgsql/data" #切換用戶 CentOS$su - postgres #初始化資料庫 CentOS$initdb -D ./data #修改資料庫密碼與設定後回到root 開放防火牆 CentOS$…. #修改postgresql service 在遠端硬碟掛載後(在[Unit]段落內加入二行)才能啟動服務 CentOS$cat database /lib/systemd/system/postgresql.service [Unit] Wants=iscsid.service RequiresMountsFor=/data … #變動設定 CentOS$systemctl daemon-reload #啟動資料庫 CentOS$service postgresql start |
這段過程中發現:原本初始化約1秒的動作(這把這臺CentOS
Mount 另外一個VM
Raid(沒有出現在上圖架構內)測的結果),在這裡居然花了
5
分5秒(一
9月
25
13:25:02 CST 2017 ~ 一 9月
25
13:30:07 CST 2017),原本PN401上本來就有許多服務,因為是借的機器,我也沒有重新整機做Minimal
安裝,不知道最小安裝能否優化她的速度。
#每分鐘達成307交易,128新訂單 $Vuser 1:TEST RESULT : System achieved 307 PostgreSQL TPM at 128 NOPM |
同樣地我也對另外一台虛擬機(要強調環境無法造成對比,只是因數量差距大拿出來一觀)
$Vuser 1:TEST RESULT : System achieved 1363 PostgreSQL TPM at 775 NOPM |
再來也對了我的本機(Manjaro的Host,i7-3770K
CPU @ 3.50GHz 8cores,8GRam)做了同樣測試
$Vuser 1:TEST RESULT : System achieved 4171 PostgreSQL TPM at 2001 NOPM |
據詮力的工程師告訴我,10月底會會出一款硬體更強悍的NAS,希望能達到中型企業所需要的標準。
留言
張貼留言