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