※ [本文轉錄自 Soft_Job 看板 #1Inx8URa ]
作者: TonyQ (自立而後立人) 看板: Soft_Job
標題: [閒聊] NAS
時間: Sat Jan 4 15:02:52 2014
昨天看到公司發布新產品,又離我們的理想近了一步,覺得心情非常好。
http://www.techbang.com/posts/16364
---------------------------------
既然這裡是軟體版,那就趁這心情來講講自己公司在做的事情吧。XD
NAS = Network-attached storage ,
說穿了,就是有接網路的 storage 。
本來這是沒什麼了不起的,不過就是個網芳,我以前也是這麼想。
後來才知道 storage 中間有許多學問,network 也是,
這學問就像是說文解字,不講不知道,一講嚇一跳。
@ 先從網路開始:
---------------------------------
要有網路,表示要能夠作傳輸,至少要有網路卡,要有 server,
所以變成是一台有 cpu、有主機板、有記憶體、有網路卡的嵌入式系統。
下一步,有些 NAS 是低階 cpu 、少量記憶體,純粹就是當 file server 用。
---------------------------------
接下來,使用者開始抱怨 NAS 不知道該怎麼用,網芳只能在家裡區網用,
如果出去就不能用感覺很不方便,反正都接網路了,就讓我在外面也能存取吧,
然後廠商開始寫 application ,windows/mac application 。
只要告訴我他的 ip 跟帳號密碼,我就能從任何地方存取我的檔案。
接下來,使用者又發現其實裝 application 很麻煩,
他們想要 web access ,於是廠商就做了 web access 介面。
免安裝,連上就能用。
最近這年頭流行智慧型手機,廠商就費盡心機的去整合智慧型手機,
出 app 同步手機跟 NAS 的資料夾,出 app 讓手機可以隨時存取 NAS。
最後,因為絕大多數的 NAS 都在區網內,對外得開 NAT ,
所以去研究整合 router 自動設定 NAT 或 NAT 穿透的技術。
(雖然現在所謂 NAT 穿透還是有點半調子,但那就是現行技術的瓶頸。)
然後既然有些 NAS 系統是 linux ,
開放 ssh 給一些 geek 級如我的玩家去自由運用也是很合理的。
當然,ftp/sftp 這種基本傳輸工具也是不可少的。
然後因為很多人會是浮動 ip ,所以廠商內建作個 DDNS 的服務也是很合理的。
除了這個以外,有使用者有連接電視、電腦螢幕並播放檔案的需求,
所以作個 HDMI 輸出到任何支援 HDMI 的裝置,也是很有道理的。
---------------------------------
這裡的網路並不只是字面上的定義,網路其實包含著平台、包含著裝置。
網路意味著你的使用者"從哪裡"、"如何"存取到這個節點,
而這就是許多裝置目前的主要戰場。
---------------------------------
@ 再來談 storage
我們認知中的 storage 大多停留在存、取,也就是 file in/file out。
我們會習慣把 NAS 當成一顆網芳上的大硬碟看待,基本上這個方向是沒錯,
但 storage 要解決的問題,本身並沒有這麼狹隘。
硬碟層本身要解決的問題,當然就是磁碟陣列,
所以現在各家廠商幾乎都支援各種磁碟陣列組合( 0,1,5,0+1,1+0 ..etc)。
有 storage 一定會跟來的問題就是備份(backup),這是我們要處理的。
備份還有時間軸的問題,不是單純把檔案存一份就好,
你得要知道這是一天前的備份,那是兩天前的備份,有備份當然還要能還原。
上面是最最基本要解決問題。
假設我們把檔案進來的流程拆解,你會得到一個這樣的流程:
檔案置入 => 處理 => 存檔完成 => 連接裝置 => 取出檔案 => 應用檔案
綠色是輸入,藍色是歸檔,黃色是輸出,
這裡面學問就多了,可以玩的東西也變多了。
---------------------------------
讓我們從一般硬碟的角度來想,這個流程會變成
複製檔案 => 存檔完成 => 透過網芳存取 => 複製檔案 => 用電腦軟體打開
這流程我想正常會買 NAS 的人都知道,我就不多說。
---------------------------------
接下來我們要把事情切成輸入跟輸出兩邊,
那輸入難道沒有別的角度嗎?
當然有,最常見的就是 bt 下載。
這裡改變的是輸入面:
放入BT種子 => P2P 下載 => 存檔完成 =>
透過網芳存取 => 複製檔案 => 用電腦軟體打開
看起來很合理吧。
---------------------------------
那如果再來點有趣的東西,現在很多人都用 dropbox 管檔案,
如果我想再 NAS 上也放一份?
登入 dropbox 帳號 => dropbox 同步 => 存檔完成 =>
透過網芳存取 => 複製檔案 => 用電腦軟體打開
聽起來很有道理對吧。
---------------------------------
我想要跟一整群朋友分享檔案,他們可以自由提交新的檔案,我也能收檔,
而且我不想要外人看到,我能有什麼樣的輸入工具 ?
BTSync 設定 => P2P 同步 => 存檔完成 =>
透過網芳存取 => 複製檔案 => 用電腦軟體打開
這扎實落實區域 P2P 概念。
---------------------------------
從 content provider 直接拉東西過來如何?
給入 url => 系統透過 http 下載遠端資料 => 存檔完成 =>
透過網芳存取 => 複製檔案 => 用電腦軟體打開
還能有變形
給入 youtube url => 系統透過 http 下載影片 => 存檔完成 =>
透過網芳存取 => 複製檔案 => 用電腦軟體打開
給入 FB 相簿 url => 系統透過 http 下載影片 => 存檔完成 =>
透過網芳存取 => 複製檔案 => 用電腦軟體打開
/* 下略幾十個 content provider */
---------------------------------
光 input 其實就有非常多來源,而對使用者來講整合這些來源是辛苦的,
相信大家都沒興去裝一堆軟體來自己手動搞上面這些東西,
但對廠商來講這就是能操作的空間。
input 大概只佔一半的重要性, output 也是個兵家必爭之地,
可能很多人不太理解輸出這件事情背後的脈絡在哪,我們可以來梳理一下。
輸出最最基本的就是檔案 one by one 的輸出,
就像 ftp 或網芳那樣,連進去各自透過自己的電腦或程式處理。
如果你的需求只到這裡,那的確沒什麼問題, output 很單純,
但有很多進階的有趣需求是我們正在挑戰的。
---------------------------------
NAS 上的檔案反正我們大概就可以簡易的分類,文件檔、影音檔、執行檔等等。
其中通常最多的會是影音檔,影片跟照片,因為這東西最佔空間最需要 NAS。
最最基本的需求大概就是「打包下載」,把多個被指定的檔案打成 zip 下載。
我概略寫一下就好了,發現要認真寫這邊寫不完。
文件檔的挑戰在於預覽,特別是投影片類或文件類,
可以在各種 client (ex.手機) 瀏覽、預覽是一個很大的挑戰。
照片的問題在於要讓使用者好分類,歸檔的那一塊會需要花很多力氣。
影音檔預覽會是問題,其中最大的問題就是轉檔這回事。
另一方面,除了純粹的檔案輸出以外,這年頭由於各種通訊協定的設立,
我們也能透過網路將資料打到支援 DLNA 或 Airplay 的裝置上,
(ex.智慧型電視)
每個平台對於影片 codec 相容的程度不一,
所以各家廠商都花非常大力氣在支援影片轉檔。
很多時候我們甚至得作即時轉檔也就是邊播邊轉,
不然不是目標平台根本不支援,就是你播 1080P 的時候會跑不動。
而輸出到行動裝置端,能不能有對應的播放跟處理也是個需要考慮的問題。
上面講得都還算是基本該做的。
而各種執行檔,ex. java application , binary ,
如果你想運用系統的資源跑一些程式運算,這也是一種輸出的方式。
通常 linux based 的系統只要有開 ssh,基本能做的程式運算都能作。
像我就常在上面跑 java application 。
像這篇最一開始新聞摘的,如果是 image 還可以直接用機器跑 vm 。A_Ay
---------------------------------
* 那如果我們不講檔案的輸入輸出,我們來聊圖文文件?
像我們會在各 blog 平台發表的那些文章,
難道只要把純文字 dump 回來,就算是有紀錄了嗎 :P
他們通常是有 html,有圖,有字的。
所以我們也做了屬於我們的筆記系統
http://www.qnap.com/i/station/zh-tw/notes.php
讓你的輸入是來自你腦袋靈感的 web 編輯,輸出還是 web page 。
* 那如果我們不講檔案的輸入輸出,我們來聊資料庫?
在 NAS 上架個 mysql 或 mongo ,很瘋狂嗎? 我用起來很自然。:)
* 那如果我們不講檔案的輸入輸出,我們來聊專案管理?
在 NAS 上架 redmine、架 mantis、架 bugzilla ,不管附檔再大都不怕。:P
---------------------------------
而且最讚也最棒的事情就是:
放在自己家裡的服務,不用擔心這些服務被關掉或換掉,
即使有一天這些系統因故被放到記得,有天你回來看看這些紀錄都還在。
像我在無名 bbs、在系站 bbs 寫了一堆文章,最後這些 bbs 都關光光了,
最後只有我自己架的 bbs 還活著。-_-#
當然你得擔心自己機器沒搞定產生的人禍,
但至少這是你自己可以負責可以處理的。廠商也會盡力幫你搞定這問題。
不是說網路服務不好,只是讓這些資料,
在有個萬一時有地方去,這也是很重要的事情。
很多人會覺得硬體廠做的事情都是靠硬體解決,
但其實這個年代幾乎沒有不連接裝置的硬體,
而跟裝置打交道則主要是軟體的工作。
我們可以看看上面,有多少東西可以靠軟體解決或做得更好,
那些就是我們軟體人能在軟硬整合這個脈絡下,能去思考或切入的點。
把硬體當平台,把軟體當產品、服務,是軟硬整合的脈絡。
最近一直在思考軟硬整合的事情,
發現這東西裡面的樂趣跟有趣的東西真的是還不少。:P
--
網頁上拉近距離的幫手 實現 GMail豐富應用的功臣
數也數不清的友善使用者體驗 這就是javascript
歡迎同好到 AJAX 板一同討論。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.68.19
※ 編輯: TonyQ 來自: 58.115.68.19 (01/04 15:03)
→ freeunixer:這不知道是由多少人加班加到哭不出來的血淚堆疊而成... 01/04 15:10
→ TonyQ:你這推文就跟"你吃的飯不知道是壓榨多少農民才來的"一樣 XD 01/04 15:12
→ TonyQ:我是裡面的一員啊,我很少加班、而且作得很開心。:P 01/04 15:13
→ TonyQ:或許有些地方是加班到很自虐,是有聽過有些廠商要 oncall 的 01/04 15:14
→ TonyQ:,但那跟原題沒什麼關係吧。 01/04 15:14
→ neoyori:至少台灣兩家NAS龍頭的薪水工時CP值還是不錯的.. 01/04 15:18
推 andy2151:借問一下NAS 拿來架網頁+SQL 大概能應付多少人數&流量~~ 01/04 15:19
→ andy2151:以目前四萬塊左右等級的NAS來說 01/04 15:20
→ freeunixer:這就要問那些單位人一直換,補還補不滿是為什麼了...XD 01/04 15:20
→ freeunixer:好啦,我只是來亂入一下的~ 01/04 15:21
→ andy2151:因為目前預算不多 想說能不能先用NAS頂著用XD 01/04 15:21
推 lovdkkkk:推 01/04 15:27
→ TonyQ:@andy2151 這問題看系統吃多重,要看預計跑什麼。 01/04 15:32
→ TonyQ:@andy2151 你把它當同級的桌機來看就差不多那個意思了 01/04 15:34
推 andy2151:好的 了解~ 01/04 15:40
推 summerleaves:專業推 01/04 15:41
推 ntddt:推Qnap NAS 01/04 15:42
→ sing10407:推! 01/04 16:13
推 Hyww13:好酷~ 01/04 16:31
→ Hyww13:跳脫低階硬體純file server的框架後能做什麼都不意外了XD 01/04 16:32
推 trumpete:借轉隔壁板MIS 01/04 17:02
推 goodga:可以問一下VM是用哪種? KVM ? Xen ? 01/04 17:29
→ TonyQ:@goodga 那塊我沒研究 如果我聽到後續消息再說~ XD 01/04 17:36
※ 發信站: 批踢踢實業坊(ptt.cc)
留言