# 18.1 網絡文件系統還是網絡驅動器
## 18.1 網絡文件系統還是網絡驅動器
做為服務器的系統通常是需要儲存設備的,而儲存設備除了可以使用系統內建的磁盤之外,如果內建的磁盤容量不夠大, 而且也沒有額外的磁盤插槽 (SATA 或 IDE) 可用時,那么常見解決的方案就是增加 NAS (網絡附加儲存服務器) 或外接式儲存設備。再高檔一點的系統,可能就會用到 SAN (儲存局域網絡) 這個高貴的玩意兒 ([注1](#ps1))。
不過,不論是哪一種架構,基本上,它們的內部硬盤通常是以磁盤陣列 (RAID) 作為基礎的。磁盤陣列我們在基礎篇第三版的[第十五章](http://linux.vbird.org/linux_basic/0420quota.php)談過了,這里就不再啰唆。這里想要了解的是,啥是 NAS 又啥是 SAN ? 這兩者有何不同?與本章主題有關的 iSCSI 又是啥呢?底下就讓我們來談一談。
- - - - - -
### 18.1.1 NAS 與 SAN
由于企業的數據量越來越大,而且重要性與保密性越來越高,尤其類似數據庫的內容,常常容量單位是以 TB (1TB = 1024GB) 在進行計算的。哇!真可怕!所以啰,磁盤陣列的應用就很重要了。那么磁盤陣列通常是在哪里呢? 磁盤陣列通常是 (1)主機內部有磁盤陣列控制卡,可以自行管理磁盤陣列。不過想要提供磁盤陣列的容量, 得要透過額外的網絡服務才行; (2)外接式磁盤陣列設備,就是單純的磁盤陣列設備,必須透過某些接口鏈接到主機上, 主機也要安裝適當的驅動程序后,才能捉到這個設備所提供的磁盤容量。
不過,以目前的信息社會來說,你應該很少聽到內建或外接的 RAID 了,常常聽到的應該是 NAS 與 SAN ,那這是啥咚咚? 讓我們簡單的來說說:
- NAS (Network Attached Storage, 網絡附加儲存服務器)
基本上,NAS 其實就是一部客制化好的主機了,只要將 NAS 連接上網絡,那么在網絡上面的其他主機就能夠存取 NAS 上頭的資料了。簡單的說,NAS 就是一部 file server 啰~不過,NAS 由于也是接在網絡上面,所以,如果網絡上有某個用戶大量存取 NAS 上頭的數據時,是很容易造成網絡停頓的問題的,這個比較麻煩點~低階的 NAS 通常會使用 Linux 系統搭配軟件磁盤陣列來提供大容量文件系統。不過效能嘛就有待加強啦!此外,NAS 也通常支持 TCP/IP ,并會提供 NFS, SAMBA, FTP 等常見的通訊協議來提供客戶端取得文件系統。
那為什么不要直接使用個人計算機安裝 Linux 再搭配相關的服務,即可提供 NAS 預計要提供的大容量空間啦!干嘛需要 NAS 呢? 因為,通常 NAS 還會包括很多組態的接口,通常是利用 Web 接口來控制磁盤陣列的設定狀況、提供 IP 或其他相關網絡設定, 以及是否提供某些特定的服務等等。因為具有較為親和的操作與控制接口,對于非 IT 的人員來說,控管較為容易啦。 這也是 NAS 存在的目的。
不過,目前倒是有類似 FreeNAS 的軟件開發項目 (<http://sourceforge.net/projects/freenas/>, [注2](#ps2)),可以讓你的 Linux PC 變成一部可透過 Web 控管的 NAS 哩!不過不是本章的重點,有興趣的朋友可以自行前往下載與安裝該軟件來玩玩~
- SAN (Storage Area Networks, 儲存局域網絡)
從上面的說明來看,其實那個 NAS 就是一部可以提供大容量文件系統的主機嘛! 那我們知道單部主機能夠提供的插槽再怎么說也是有限的! 所以并不能無限制的安插磁盤在同一部實體主機上面。但是如果偏偏你就是有大量磁盤使用的需求,那時該如何是好? 這時就得要使用到 SAN 這玩意兒啦!
最簡單的看法,就是將 SAN 視為一個外接式的儲存設備。只是單純的外接式儲存設備僅能透過某些接口 (如 SCSI 或 eSATA) 提供單一部主機使用,而 SAN 卻可以透過某些特殊的接口或信道來提供局域網絡內的所有機器進行磁盤存取。要注意喔,SAN 是提供『磁盤 (block device)』給主機用,而不是像 NAS 提供的是『網絡協議的文件系統 (NFS, SMB...)』!這兩者的差異挺大的喔!因此,掛載使用 SAN 的主機會多出一個大磁盤,并可針對 SAN 提供的磁盤進行分割與格式化等動作。想想看,你能對 NAS 提供的文件系統格式化嗎?不行吧!這樣了解差異否?
另外,既然 SAN 可以提供磁盤,而 NAS 則是提供相關的網絡文件系統,那么 NAS 能不能透過網絡去使用 SAN 所提供的磁盤呢?答案當然是可以啊!因為 SAN 最大的目的就是在提供磁盤給服務器主機使用,NAS 也是一部完整的服務器, 所以 NAS 當然可以使用 SAN 啦!同時其他的網絡服務器也能夠使用這個 SAN 來進行數據存取。
此外,既然 SAN 開發的目的是要提供大量的磁盤給用戶,那么傳輸的速度當然是非常重要的。因此,早期的 SAN 大多配合光纖信道 (Fibre Channel) 來提供高速的數據傳輸。目前標準的光纖信道是速度是 2GB ,未來還可能到達 10GB 以上呢~不過,使用光纖等技術較高的設備,當然就比較貴一些。
拜以太網絡盛行,加上技術成熟之賜,現今的以太網絡媒體 (網絡卡、交換器、路由器等等設備) 已經可以達到 GB 的速度了,離 SAN 的光纖信道速度其實差異已經縮小很多啦~那么是否我們可以透過這個 GB 的以太網絡接口來連接到 SAN 的設備呢?這就是我們接下來要提到的 iSCSI 架構啦! ^\_^
- - - - - -
### 18.1.2 iSCSI 界面
早期的企業使用的服務器若有大容量磁盤的需求時,通常是透過 SCSI 來串接 SCSI 磁盤,因此服務器上面必須要加裝 SCSI 適配卡,而且這個 SCSI 是專屬于該服務器的。后來這個外接式的 SCSI 設備被上述提到的 SAN 的架構所取代, 在 SAN 的標準架構下,雖然有很多的服務器可以對同一個 SAN 進行存取的動作,不過為了速度需求,通常使用的是光纖信道。 但是光纖信道就是貴嘛!不但設備貴,服務器上面也要有光纖接口,很麻煩~所以光纖的 SAN 在中小企業很難普及啊~
后來網絡實在太普及,尤其是以 IP 封包為基礎的 LAN 技術已經很成熟,再加上以太網絡的速度越來越快, 所以就有廠商將 SAN 的連接方式改為利用 IP 技術來處理。然后再透過一些標準的訂定,最后就得到 Internet SCSI (iSCSI) 這玩意的產生啦!iSCSI 主要是透過 TCP/IP 的技術,將儲存設備端透過 iSCSI target (iSCSI 目標) 功能,做成可以提供磁盤的服務器端,再透過 iSCSI initiator (iSCSI 初始化用戶) 功能,做成能夠掛載使用 iSCSI target 的客戶端,如此便能透過 iSCSI 協議來進行磁盤的應用了 ([注3](#ps3))。
也就是說,iSCSI 這個架構主要將儲存裝置與使用的主機分為兩個部分,分別是:
- iSCSI target:就是儲存設備端,存放磁盤或 RAID 的設備,目前也能夠將 Linux 主機仿真成 iSCSI target 了!目的在提供其他主機使用的『磁盤』;
- iSCSI initiator:就是能夠使用 target 的客戶端,通常是服務器。 也就是說,想要連接到 iSCSI target 的服務器,也必須要安裝 iSCSI initiator 的相關功能后才能夠使用 iSCSI target 提供的磁盤就是了。
如下圖所示,iSCSI 是在 TCP/IP 上面所開發出來的一套應用,所以得要有網絡才行啊!

圖 18.1-1、iSCSI 與 TCP/IP 相關性
- - - - - -
### 18.1.3 各組件相關性
由上面的說明中,我們可以知道一部服務器如何取得磁盤或者是文件系統來利用呢?基本上就是:
- 直接存取 (direct-attached storage):例如本機上面的磁盤,就是直接存取設備;
- 透過儲存局域網絡 (SAN):來自區網內的其他儲存設備提供的磁盤;
- 網絡文件系統 (NAS):來自 NAS 提供的文件系統,只能立即使用,不可進行格式化。
這三個東西與服務器主機能用的文件系統之間可以用維基百科的圖示來展示:

圖 18.1-2、服務器取得文件系統的三個來源 (數據源為[注1](#ps1))
從上圖中,我們可以發現在一般的主機環境下,磁盤裝置 (SATA, SAS, FC) 可以透過主機的接口 (DAS) 來直接進行文件系統的建立 (mkfs 進行格式化),如果想要使用外部的磁盤,那可以透過 SAN (內含多個磁盤的設備),然后透過 iSCSI 等接口來聯機, 當然,還是得要進行格式化等動作 (假設這個 SAN 尚未被使用時)。最后,如果是 NAS 的條件下,那么 NAS 必須要先透過自己的操作系統將磁盤裝置進行文件系統的建立后,再以 NFS/CIFS 等方式來提供其他主機掛載使用。
接下來,網絡服務器、客戶端系統、NAS 與 SAN 的角色在區網里面又是如何呢?我們依舊使用維基百科的圖示來說明一下 (DAS 是每部主機內部的磁盤,即底下圖標中的圓柱體):

圖 18.1-3、各組件之間的相關性 (數據源為[注1](#ps1))
NAS 可以使用自己的磁盤,也能夠透過光纖或以太網絡取得 SAN 所提供的磁盤來制作成為網絡文件系統,提供其他人的使用。 Server 可以透過 NFS/CIFS 等方式取得 NAS 的文件系統,當然也能夠直接存取 SAN 的磁盤。客戶端主要則是透過網絡文件系統, 并且直接使用 Server 提供的網絡資源 (如 FTP, WWW, mail 等等)。
- - - - - -
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀