【存储知识学习】第十章- NAS和SAN《大话存储》阅读笔记
10.1 NAS?
10.1.1 兩種訪問方式的后端存儲網絡
10.1.2 網絡文件系統
LINU和UNIX系統使用NFS協議,上層協議利用TCP/IP協議進行傳輸的。這種文件系統不是運行在本地,而是網絡中的其他節點運行,使用者通過外部網絡將讀寫文件的信息傳遞給運行在遠端的文件系統,也就是調用遠程的文件系統模塊,而不是在本地內存中調用文件系統API來進行,所以網絡文件系統,又稱為遠程調用文件系統,也就是RPC FS
10.1.3 NFS包分析
以創建文件為例,在掛載之后,在共享目錄創建一個文件。
(1)LOOKUP
查看該文件是否已經存在。
(2)CREATE
創建文件
(3)GETACL
查看文件屬性,用于檢測文件是否創建成功
(4)SETATTR
設置文件屬性,將服務端的文件時間,設定為當前文件系統的時間。
可以對比前后的時間,就可以看出時間的差別。
10.2 NAS 與SAN
SAN是網絡中的一塊磁盤,NAS是網絡中的一個文件系統
SAN的路徑圖
NAS路徑圖
10.2.2 SAN好還是NAS好
一般情況下,NAS不會比SAN快。但NAS的成本比SAN低很多。前端只要使用以太網接口即可。
NAS可以解放主機服務器上的CPU和內存資源。因為文件系統的邏輯是要靠CPU的運算來完成的,同時,文件系統還要占用大量主機內存用作緩存,所以NAS適用于CPU密集型的應用環境。
由于基于以太網傳輸,NAS的可擴展性很強。只要有IP的地方NAS就可以提供服務,且容易部署和配置。
NAS設備一般都可以提供多種協議訪問數據,網絡文件系統只是提供一種接口而已,還有諸如HTTP、FTP等協議方式。而SAN只能使用SCSI協議訪問。
NAS可以直接在一臺盤陣上實現多客戶端的共享訪問,包括同時訪問某個目錄或文件。而SAN的方式下除非所有的客戶端都安裝了專門的集群管理系統或集群文件系統模塊,否則不能將某個LUN共享,強制共享會摧毀數據。
顯然NAS對于大塊連續IO密集的環境,要比SAN慢一大截,原因是累計效應。經過大量IO積累之后,總體的差別就體現出來了。不過要使用10Gb/s的以太網跨甩出要選用NAS,因為底層的鏈路速度,畢竟是目前NAS的根瓶頸。
此外如果是高并發隨機小塊IO環境或者共享訪問文件的環境,NAS會表現出很強的相對性能。
10.2.3 與SAN設備通信
應用程序向本機文件系統,把文件a.txt傳到我的緩沖區。文件系統開始計算a.txt的扇區地址LBA地址,計算好之后,用SCSI語言,向磁盤陣列說,把LBA10000開始之后的128個扇區全部傳送給我.
磁盤陣列接收到請求之后, 從自身提取數據,通過FC網絡,傳送給運行著文件系統的節點.文件系統收到扇區內容后,減裁掉多余部分.
10.2.4 與NAS設備通信過程
應用程序通過操作系統的虛擬目錄層直接與NAS設備對話:“嗨,兄弟,幫我把/mnt/NAS目錄下的NAS.txt文件傳過來。”或 “嗨,兄弟,幫我把/mnt/NAS目錄下的NAS.txt文件的前1024字節傳遞過來。”這些話被封裝成TCP/IP數據包,通過以太網傳遞到NAS設備上。NAS接到這個請求之后,立即用自己的文件系統(NTFS、JFS2、EXT2、EXT3等)計算NAS.txt文件都占用了磁盤的哪些扇區,然后從自己的磁盤上用ATA語言或者SCSI語言向對應的磁盤存取數據(或自己安裝FC適配卡,從SAN存儲設備上存取數據)。
顯然,NAS將文件系統邏輯搬出了主機服務器,成為了一個單獨的文件系統邏輯運行者。
(1) 首先,主機客戶端通過NFS Client對NAS上的一個輸出目錄/nas/export進行Mount操作,將其Mount到了本地的/mnt/nas路徑下。
(2)之后,主機客戶端上某應用程序發起了對/mnt/nas/nas.txt文件的讀取操作,讀取從偏移量0字節開始往后的1024字節,也就是這個文件的前1024字節。這個動作是通過調用操作系統提供的文件操作API執行的,比如Read()。
(3)這個IO請求被傳送到了NFS Client處,NFS Client知道/mnt/nas路徑對應的其實是NAS服務端的/nas/export這個輸出目錄,所以NFS Client將上層下發的這個讀取請求封裝成NFS協議規定的標準格式通過網絡傳送到NAS服務端。
(4)NAS服務端接收到這個讀請求之后,將請求通過操作系統API傳送給文件系統模塊處理。
(5)文件系統模塊接收到針對/nas/export/nas.txt文件的讀請求之后,首先查詢緩存內是否有對應的數據,如果有,則直接返回結果;如果沒有,則需要將這段字節所落入的底層存儲空間的塊信息取回,這個動作通過查詢inode表等元數據獲得。當得到底層塊地址之后,文件系統通過調用OS提供的API將對這些塊的讀請求發送給下游模塊,也就是卷管理層。
(6)卷管理層是將底層物理磁盤設備進行虛擬化封裝的層次。當卷管理層收到針對某個卷某段LBA地址的請求之后,它要進行翻譯,將目標虛擬卷的地址翻譯為對應著底層物理磁盤塊設備的地址;翻譯完后,卷管理層將對應目標地址的請求再次通過調用OS API的方式發送給下游,也就是驅動程序層了。
(7)塊設備驅動是負責對相應塊設備進行IO的角色,它將這些IO發送給SCSI CDB Generator,也就是SCSI指令的翻譯中心。
(8)SCSI CDB Generator的職責是將對應的IO請求描述為SCSI協議的標準格式。之后,這些指令被發送到SCSI/FC適配器的驅動程序處。
(9)設備驅動程序接收到這些SCSI指令之后,將其封裝到對應的鏈路幀中通過內部總線網絡或者外部包交換網絡傳送到目標。
(10)SCSI指令傳送到目標設備,目標設備執行相應指令并返回結果。
NAS本質:
NFS和CIFS又被稱為“網絡文件系統”,其實它們只是一種規定如何將文件操作指令及結果在雙方之間傳送和控制的協議。網絡上只有協議,沒有文件系統,文件系統都在本地。“通過外部網絡而不是計算機內部總線來傳遞文件讀寫指令的系統“是對網絡文件系統最準確和最本質的描述。
?
總結
以上是生活随笔為你收集整理的【存储知识学习】第十章- NAS和SAN《大话存储》阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visual Studio 2019设置
- 下一篇: 【存储知识学习】第十章- 存储架构演进过