一種基於IPSAN的存儲器的通信方法和系統與流程
2023-06-11 18:30:51 1

本發明涉及信息技術領域,特別是涉及一種基於IPSAN的存儲器的通信方法和系統。
背景技術:
隨著社會的發展和PC的普及,產生了越來越多的數位化信息。信息量呈爆炸性增長,因而,引發了以存儲技術為中心的新一輪數據技術浪潮。
傳統的信息存儲方法已經不能滿足新的需要,存儲的網絡化成為IT技術的亮點。網絡存儲中的存儲區域網SAN技術在伺服器機器、存儲合併以及磁帶備份等方面均具有重要的應用價值,且得到了廣泛應用。在存儲領域,SCSI的重要性不言而喻,作為成熟的技術,其滿足了塊級數據快速傳輸的需求。IP技術特點在網絡開發性上有強大的優勢,將兩者的優勢相結合,實現了IPSAN,其具有廣闊的應用前景。
但是,在IPSAN通信的環境中,存儲端系統會花費大量的資源用於中斷開銷、數據複製開銷、系統調用開銷和協議處理開銷,當數據通過存儲端系統中的各個模塊複製時會嚴重影響存儲端的系統性能。
因此,如何在IPSAN通信的環境中,降低存儲端系統的開銷,以提升存儲端系統的性能,是本領域技術人員目前需要解決的技術問題。
技術實現要素:
本發明的目的是提供一種基於IPSAN的存儲器的通信方法和系統,可以在IPSAN通信的環境中,降低存儲端系統的開銷,以提升存儲端系統的性能。
為解決上述技術問題,本發明提供了如下技術方案:
一種基於IPSAN的存儲器的通信方法,包括:
通過IPSAN建立存儲器的物理內存和預設應用的地址空間之間的映射;
通過所述IPSAN獲取所述預設應用的交互數據;
解析所述交互數據對應映射內存的指針;
將所述指針傳遞至所述存儲器的目標功能模塊;
控制所述目標功能模塊從所述IPSAN中根據所述指針複製對應的交互數據並進行存儲。
優選地,所述通過IPSAN建立存儲器的物理內存和預設應用的地址空間之間的映射,包括:
選取存儲器的物理內存的設備文件作為映射對象;
調用預設的映射函數,將所述映射對象映射到所述預設應用的地址空間。
優選地,所述調用預設的映射函數,將所述映射對象映射到所述預設應用的地址空間,包括:
調用mmap函數將所述映射對象映射到所述預設應用的地址空間。
優選地,所述調用mmap函數將所述映射對象映射到所述預設應用的地址空間,包括:
調用所述mmap函數將所述映射對象映射到多個頁面上;
判斷所述映射對象的文件大小是否等於所有頁面的大小之和;
若否,則將最後一個頁面未被映射佔用的空間清零。
優選地,還包括:
判斷所述預設應用和所述存儲器的通信是否結束;
若是,則解除所述存儲器的物理內存和預設應用的地址空間之間的映射;
若否,則保持所述映射,直至所述預設應用和所述存儲器的通信結束。
一種基於IPSAN的存儲器的通信系統,包括:
映射建立模塊,用於通過IPSAN建立存儲器的物理內存和預設應用的地址空間之間的映射;
數據獲取模塊,用於通過所述IPSAN獲取所述預設應用的交互數據;
指針解析模塊,用於解析所述交互數據對應映射內存的指針;
指針傳遞模塊,用於將所述指針傳遞至所述存儲器的目標功能模塊;
拷貝模塊,用於控制所述目標功能模塊從所述IPSAN中根據所述指針複製對應的交互數據並進行存儲。
優選地,所述映射建立模塊包括:
映射對象選取單元,用於選取存儲器的物理內存的設備文件作為映射對象;
映射建立單元,用於調用預設的映射函數,將所述映射對象映射到所述預設應用的地址空間。
優選地,所述映射建立單元為mmap函數調用單元,用於調用mmap函數將所述映射對象映射到所述預設應用的地址空間。
優選地,所述mmap函數調用單元包括:
頁面映射子單元,用於調用所述mmap函數將所述映射對象映射到多個頁面上;
判斷子單元,用於判斷所述映射對象的文件大小是否等於所有頁面的大小之和;
執行子單元,用於在所述判斷子單元判定所述映射對象的文件大小不等於所有頁面的大小之和時,將最後一個頁面未被映射佔用的空間清零。
優選地,還包括:
判斷模塊,用於判斷所述預設應用和所述存儲器的通信是否結束;
映射解除模塊,用於在所述判斷模塊判定所述預設應用和所述存儲器的通信結束時,解除所述存儲器的物理內存和預設應用的地址空間之間的映射;
映射保持模塊,用於在所述判斷模塊判定所述預設應用和所述存儲器的通信未結束時,保持所述映射,直至所述預設應用和所述存儲器的通信結束。
與現有技術相比,上述技術方案具有以下優點:
本發明所提供的一種基於IPSAN的存儲器的通信方法,包括:通過IPSAN建立存儲器的物理內存和預設應用的地址空間之間的映射;通過IPSAN獲取預設應用的交互數據;解析交互數據對應映射內存的指針;將指針傳遞至存儲器的目標功能模塊;控制目標功能模塊從IPSAN中根據指針複製對應的交互數據並進行存儲。在本技術方案中,通過IPSAN建立存儲器和預設應用的映射,存儲器中的各功能模塊之間只需傳遞映射內存的指針即可,無需重複拷貝數據,從而避免了複雜的內核協議處理,減少了存儲系統調用開銷和內存拷貝開銷,大大提升了數據報文的傳輸能力,提升了存儲端系統的性能。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明一種具體實施方式所提供的基於IPSAN的存儲器的通信方法流程圖;
圖2為本發明一種具體實施方式所提供的基於IPSAN的存儲器的通信系統結構示意圖。
具體實施方式
本發明的核心是提供一種基於IPSAN的存儲器的通信方法和系統,可以在IPSAN通信的環境中,降低存儲端系統的開銷,以提升存儲端系統的性能。
為了使本發明的上述目的、特徵和優點能夠更為明顯易懂,下面結合附圖對本發明的具體實施方式做詳細的說明。
在以下描述中闡述了具體細節以便於充分理解本發明。但是本發明能夠以多種不同於在此描述的其它方式來實施,本領域技術人員可以在不違背本發明內涵的情況下做類似推廣。因此本發明不受下面公開的具體實施的限制。
請參考圖1,圖1為本發明一種具體實施方式所提供的基於IPSAN的存儲器的通信方法流程圖。
本發明的一種具體實施方式提供了一種基於IPSAN的存儲器的通信方法,包括:
S11:通過IPSAN建立存儲器的物理內存和預設應用的地址空間之間的映射。
在本發明的一種實施方式中,通過IPSAN建立存儲器的物理內存和預設應用的地址空間之間的映射,包括:選取存儲器的物理內存的設備文件作為映射對象;調用預設的映射函數,將映射對象映射到預設應用的地址空間。
優選調用mmap函數將映射對象映射到預設應用的地址空間。即調用mmap函數將映射對象映射到多個頁面上;判斷映射對象的文件大小是否等於所有頁面的大小之和;若否,則將最後一個頁面未被映射佔用的空間清零。
在本實施方式中,通過ISSAN將存儲器的物理內存映射到預設應用的地址空間中,此時,這些應用就可以直接使用輸入輸出的地址空間,從而提高讀寫的效率。其中,在本實施方式中,映射可以基於Linux,Linux提供了mmap函數,以用來映射物理內存。在存儲器的驅動程序中,應用程式以設備文件為對象,調用mmap函數,內核進行內存映射的準備工作,然後調用內存設備驅動程序中定義的mmap函數。
mmap函數將一根文件或其他對象映射到內存,實現用戶態和內核態之間共享用戶空間,其中,文件被映射到多個頁面上,如果文件的大小不是所有頁面的大小之和,最後一個頁面不被使用的空間將會被清零。
當使用mmap函數映射文件到應用程式後,用戶空間的應用程式就可以直接操作這段虛擬地址進行文件的讀寫等操作,不必再調用read、write等系統調用。但是直接對該段內存寫時不要寫入超過當前映射長度的內容。
S12:通過IPSAN獲取預設應用的交互數據。
S13:解析交互數據對應映射內存的指針。
S14:將指針傳遞至存儲器的目標功能模塊。
存儲器中除卻包括IPSAN模塊之外,還包括內存鏡像、控制管理、read等功能模塊。
S15:控制目標功能模塊從IPSAN中根據指針複製對應的交互數據並進行存儲。
在本實施方式中,內存映射是在內核與用戶的應用程式之間建立的,這樣用戶的應用程式就可以直接讀取linux核心的內存內容而不必進行數據的拷貝操作,這樣提高了數據的傳輸效率。即在本實施方式中在ipsan協議中採用內存零拷貝的策略,通過減少作業系統內核緩衝區和應用地址空間數據的拷貝次數,降低對文件讀取和寫入時帶給的CPU使用和帶寬的開銷。
通過IPSAN建立存儲器和預設應用的映射,當數據通過IPSAN傳輸到存儲器,存儲器中的各功能模塊之間只需傳遞映射內存的指針即可,無需重複拷貝數據,從而避免了複雜的內核協議處理,減少了存儲系統調用開銷和內存拷貝開銷,大大提升了數據報文的傳輸能力,提升了存儲端系統的性能。
在本發明的一種實施方式中,該方法還包括:判斷預設應用和存儲器的通信是否結束;若是,則解除存儲器的物理內存和預設應用的地址空間之間的映射;若否,則保持映射,直至預設應用和存儲器的通信結束。
在本實施方式中,在通信進程中,保持共享區域,直到通信完畢,這樣交互數據內容一直保存在共享內存中,並沒有寫回文件,共享內存中的內容往往是在解除映射時才會寫回文件的。因此,保持映射直至預設應用和存儲器的通信結束,極大地提高了通信效率。
請參考圖2,圖2為本發明一種具體實施方式所提供的基於IPSAN的存儲器的通信系統結構示意圖。
相應地,本發明還提供了一種基於IPSAN的存儲器的通信系統,包括:
映射建立模塊1,用於通過IPSAN建立存儲器的物理內存和預設應用的地址空間之間的映射;
數據獲取模塊2,用於通過IPSAN獲取預設應用的交互數據;
指針解析模塊3,用於解析交互數據對應映射內存的指針;
指針傳遞模塊4,用於將指針傳遞至存儲器的目標功能模塊;
拷貝模塊5,用於控制目標功能模塊從IPSAN中根據指針複製對應的交互數據並進行存儲。
進一步地,映射建立模塊包括:映射對象選取單元,用於選取存儲器的物理內存的設備文件作為映射對象;映射建立單元,用於調用預設的映射函數,將映射對象映射到預設應用的地址空間。更進一步地,映射建立單元為mmap函數調用單元,用於調用mmap函數將映射對象映射到預設應用的地址空間。mmap函數調用單元包括:頁面映射子單元,用於調用mmap函數將映射對象映射到多個頁面上;判斷子單元,用於判斷映射對象的文件大小是否等於所有頁面的大小之和;執行子單元,用於在判斷子單元判定映射對象的文件大小不等於所有頁面的大小之和時,將最後一個頁面未被映射佔用的空間清零。
在本實施方式中,通過ISSAN將存儲器的物理內存映射到預設應用的地址空間中,此時,這些應用就可以直接使用輸入輸出的地址空間,從而提高讀寫的效率。其中,在本實施方式中,映射可以基於Linux,Linux提供了mmap函數,以用來映射物理內存。在存儲器的驅動程序中,應用程式以設備文件為對象,調用mmap函數,內核進行內存映射的準備工作,然後調用內存設備驅動程序中定義的mmap函數。通過IPSAN建立存儲器和預設應用的映射,當數據通過IPSAN傳輸到存儲器,存儲器中的各功能模塊之間只需傳遞映射內存的指針即可,無需重複拷貝數據,從而避免了複雜的內核協議處理,減少了存儲系統調用開銷和內存拷貝開銷,大大提升了數據報文的傳輸能力,提升了存儲端系統的性能。
在本發明的一種實施方式中,還包括:判斷模塊,用於判斷預設應用和存儲器的通信是否結束;映射解除模塊,用於在判斷模塊判定預設應用和存儲器的通信結束時,解除存儲器的物理內存和預設應用的地址空間之間的映射;映射保持模塊,用於在判斷模塊判定預設應用和存儲器的通信未結束時,保持映射,直至預設應用和存儲器的通信結束。
在本實施方式中,在通信進程中,保持共享區域,直到通信完畢,這樣交互數據內容一直保存在共享內存中,並沒有寫回文件,共享內存中的內容往往是在解除映射時才會寫回文件的。因此,保持映射直至預設應用和存儲器的通信結束,極大地提高了通信效率。
綜上所述,本發明所提供的基於IPSAN的存儲器的通信方法和系統,通過IPSAN建立存儲器和預設應用的映射,存儲器中的各功能模塊之間只需傳遞映射內存的指針即可,無需重複拷貝數據,從而避免了複雜的內核協議處理,減少了存儲系統調用開銷和內存拷貝開銷,大大提升了數據報文的傳輸能力,提升了存儲端系統的性能。
以上對本發明所提供的一種基於IPSAN的存儲器的通信方法和系統進行了詳細介紹。本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想。應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以對本發明進行若干改進和修飾,這些改進和修飾也落入本發明權利要求的保護範圍內。