今天咱們繼續聊共享存儲,說一個大家不常接觸的內容:iSCSI。
這個東西不屬于NAS的范疇,屬于咱們之前提到的SAN(Storage Area Network,存儲區域網絡)。說實話,在普通用戶家里搞一個SAN沒太大必要,而且大多數普通用戶往往連網線還玩不明白呢,再弄個光纖通道交換機成本上劃不來,維護起來也比較麻煩。
但有的東西你家里可以沒有,卻需要了解一下,畢竟這些東西都是技術領域的天花板,保不齊哪些愛折騰的用戶還會搞那么一搞。
當很多人在討論萬兆網絡的時候,現在SAN的FC通道已經達到了256G,即便是走較慢的以太網SAN的通道也可以達到100Gbps,也就是十萬兆,在這個領域中只要你投的起設備,你就可以得到幾乎逆天的存儲速度。
對比大家的NvME SSD只能說這東西是民用產品,畢竟在讀取速度過3000,商家就可以標記上“讀速高達”多少多少的宣傳語
很多人就會認為SSD的速度快到無邊。當然了,現在貌似最快的SSD驅動器讀速已經破萬。似乎給普通用戶一個感覺SSD真快。
是這樣嗎?如果不考慮成本上一個SAN結果是不一樣的。在今年最新的SAN上已經可以為每個端口提供49700MB/S的數據流量了這就是SAN的一個帶寬優勢。
今天咱們來搭一個特別簡單的SAN服務器,連計算機上,看一下和NAS的共享到底有什么不同。
用的系統比較小眾:ESOS,叫做“企業級存儲系統(Enterprise Storage OS)”。2012年由當年的存儲巨頭昆騰開發。現在也由昆騰的團隊維護,最新的更新版本是在2023年5月發布。目前地球上一共也沒跑夠幾百套ESOS系統,這點可以到ESOS站點上的使用狀態上去查下,大家也可以圖個新鮮來玩玩看。
先說怎么部署:
部署的準備要求你有一個獨立的電腦,電腦上有硬盤有網卡即可,當然了,如果想真的玩SAN,那么陣列卡、HBA卡在這套系統上都有支持。雖然ESOS用的人少,但硬件上的支持算是來者不懼。
其次,有一個閑置的4G以上的U盤,ESOS和UNraid一樣,都是U盤啟動安裝部署的。
電腦、硬盤、網卡、U盤,準備好之后,我們就可以開始部署ESOS了。
第一步:下載一套ESOS的安裝包。
這里得說一下,似乎ESOS 4.X的windows安裝程序是有問題的,iN這邊有linux的機器,因此就沒過份的去強求非得在Windows上把這個安裝包生成了。直接在linux里搞就可以了
在linux中輸入命令
wget https://download.esos-project.com/packages/4.x.x/esos-4.2.1_z.zip --content-disposition
下載最新的ESOS安裝包
下載后unzip 解壓到當前目錄
第二步:生成ESOS引導u盤
進入ESOS目錄后,在目錄中有install.sh和install.vbs兩個安裝命令,可以分別用來在Linux和windows中利用命令行進行安裝。
說是安裝,其實是利用這個命令生成一個引導U盤。
在此之前我們需要利用lsscsi命令確定一下U盤的路徑例如iN的這個機器,沒插入U盤時候利用lsscsi命令來看就是兩個盤符/dev/sda和/dev/sr0。
插入U盤后再去鍵入lsscsi命令后,會發現出現了一個/dev/sdb的盤符路徑,這就是一個U盤,記住這個路徑。在命令行中輸入“sudo ./install.sh”
稍等一下,你就可以看到輸入U盤路徑的提示,這一步按輸入“/dev/sdb”,剩下的就是等待引導U盤的建立完成。
第三步:設置ESOS系統
當ESOS的引導U盤生成后,用這個U盤來引導啟動一臺計算機。
iN的建議是你要有一臺閑置的計算機,這臺計算機內的資料全部備份完畢,硬盤最好做個初始化。原因是ESOS是一個存儲系統,會重置這個系統管理下的所有硬盤信息。
引導成功后利用默認用戶名"root",密碼"esos"可以登陸進入系統
這是一個基于TUI界面的系統,不同于GUI,所有的系統界面完全是由字符終端生成的用戶界面。有點類似于Bios的感覺。但這也就是ESOS的全部了。基本上對于ESOS的設置管理很久也未必會做一次,因此這個界面咱們可以將就。
進入界面的第一步就是做一下系統的網絡設置,按s進入系統設置菜單,選擇網絡設置:
第一項設置一下整體的網絡配置:
這里就根據個人的實際情況將ESOS的主機名、子域、網關和DNS地址設置一下,例如:
OK之后系統對網絡做一個基本設置:
然后再設置一下網卡的IP地址:還是S進入系統設置,選擇網絡設置:
這時候在本地的網卡都會列在界面中。選擇一塊網卡進入:
設置靜態地址,這里有一個要說明的點就是廣播地址“Broadcast”,在IP網絡中廣播地址是一個子網主機ID全為1的特殊地址
打個比方,如果你的網絡地址是192.168.10.100,子網掩碼是255.255.255.0,那么你的網絡地址的前三個數字就是網絡ID也叫子網ID,因此就是192.168.10.0,如果計算廣播地址就可以計算為最后的一個數字0全部為二進制1,也就是11111111,換算成10進制就是255,因此你的廣播地址是192.168.10.255.
在這個iN的安裝范例里面,由于iN家里的網絡設置為了16位子網掩碼(255.255.0.0),因此后兩個數字都是主機ID,要計算廣播地址就成了172.16.255.255。
其次,注意到右上角的MTU了嗎?默認值是1500,其實如果要獲得更高的性能,并且交換機支持的話,可以在這里設置巨型幀——例如9000。但是這就牽扯到帶外管理(用另一套網絡來管理設備)的事情了,因此咱們還保留一下1500。這樣做性能會打那么一點點折扣。
在設置好網絡參數之后,ESOS就可以遠端訪問和遠端管理了。
直接可以SSH登陸,和直接接入鍵盤顯示器沒有任何區別。所以,顯示器、鍵盤什么的都可以從這臺“存儲服務器”上拆掉了。
第四步:設置ESOS存儲
當你從遠端登陸了ESOS后你會發現——這個系統依舊“空空如也”似乎什么東西都沒有的感覺。
目前我們能看到的界面主要有兩個區域,第一個Taget(目標)概覽,第二個會話(session)概覽
Taget是ESOS可以對外提供的存儲目標,Session則是接入到ESOS系統中的客戶連接。
在頂部菜單中 Hardware RAID 、Software RAID 、LVM 、File Systems對應了一個存儲服務器所需要規劃的四個大的功能點、硬件的RAID、軟件的RAID、邏輯卷管理和文件系統管理。
在這臺機器上iN就只掛了一個SSD硬盤,因此更深的東西咱們就在以后找機會再來講,今天的目標是讓這個系統跑起來。
簡要說說,如果你打開文件系統的菜單,你可以利用文件系統的功能建立基于磁盤文件的虛擬盤。
這時候在系統中接入的硬盤可以被暴露出來了:
在設置文件系統的時候,ESOS可以支持四種文件系統:
其實還可以下載其他的ESOS子版本對類似于ZFS這樣的系統進行支持。在今天的例子里面我們選擇Btrfs,這是一種基于二叉樹的支持寫入復制的高性能塊文件系統。
定義完畢文件系統之后,系統掛載的整塊硬盤就可以承載虛擬磁盤的文件了
我們還需要建立虛擬磁盤:
選擇剛剛建立的文件系統:
定義虛擬磁盤的名稱和尺寸
在這個例子里面我們先建立2個40G的虛擬磁盤。
現在在文件系統-虛擬磁盤文件列表中我們可以查看到這兩塊虛擬磁盤。
這里要注意的是,這是虛擬磁盤文件,雖然已經存在在系統中,但是還不能被外界所直接使用。如果我們在命令行上查看,我們會發現,這兩個“磁盤”僅僅是/mnt下的兩個文件。
但建立了虛擬磁盤之后,我們就可以開始建立虛擬驅動器了。也就是菜單的第二行Devices部分。
驅動器(Device)是ESOS真正可以作為目標的系統對象,咱們來仔細說一下:
在建立驅動器的過程中,我們可選的項目很多,其中包括
- dev_disk
- dev_disk_perf
- vcdrom
- vdisk_blockio
- vdisk_fileio
- vdisk_nullio
- dev_changer
- dev_tape
- dev_tape_perf
其中,dev_disk和dev_disk_perf 是指系統掛載的物理盤直接連接;
vcdrom是以iso文件模擬光盤驅動器,光盤的ISO文件我們可以在ESOS的命令行界面直接拉取:
vdisk_blockio和vdisk_fileio是以“塊I/O”或者“文件I/O”掛載虛擬磁盤文件
vdisk_nullio是進行性能測試使用的非存儲目標
dev_changer,dev_tape和dev_tape_perf是ESOS掛載備份用磁帶庫(changer)和磁帶機(tape)的設備入口。
剛剛我們建立了兩個虛擬磁碟機文件,所以可以選擇vdisk_fileio將磁盤文件掛載為虛擬驅動器。
這里面有幾個設置項
Block Size,這是文件系統與存儲設備交互時使用的基本數據單元的大小。
NV Cache,表示是否使用非易失性緩存
Removable,是否為可移動介質,也就是說是否可以從系統里面像U盤一樣彈出
Write Through,直接寫入標志,直寫入意味著數據將直接寫入磁盤,而非直寫入可以獲得最大的寫入性能優化,但如果在寫入過程中斷電有可能丟失數據。
Read Only,這是只讀標記,開啟后磁盤數據被保護,不能寫入
Rotational,“旋轉”,這個選項比較有意思,是定義你的存儲介質是否是一個旋轉的機械盤。按照誠實的方法來做,固態盤選No,機械盤選Yes。
結合現在演示機器的情況,我們就設置成這樣:
設置完畢之后,我們就可以在驅動器信息中看到剛剛設置的兩個驅動器。
現在存儲器一層的事情做好了。
如果是要做iscsi,我們就要開始定義這個存儲服務器上的target。
第五步:設置ESOS存儲目標,“目標”這個詞匯是咱們IT圈子直接翻譯人家原文“Target”的,更貼切的翻譯其實是“靶子”
“目標”和“靶子”在英文里面都是一個詞匯。咱們就不深究翻譯問題了。在一個SAN級別的存儲服務器中,所有的存儲資源都是以“靶標”的形式暴露出來的,遠端的主機(Host)去將數據投射到“靶標”上。
如果不設置“靶標”,那么一個存儲服務器中插入再多的硬盤也沒有任何意義——只是一堆硬盤而已。
所以在讓其他主機能夠接入到存儲之前需要我們先設置“靶子”。
“靶子”很簡單設置,給個名字就可以了,一般的規則是寫明這是一個IQN(iSCSI Qualified Name,ISCSI全局名稱)。
IQN力求要做到全球唯一,所以基本上大家的規則是以“IQN”開頭,后面接年份-月.反向域名:唯一標識符這樣的寫法。寫法是一個非強制標準,如果愿意遵守可以避免很多潛在的撞名問題,在小區域內使用不愿意遵守其實也沒太大的事情。
因此我們的IQN寫為:iqn.2024-04.esos.esosHost:w25011
靶子立起來了,誰來開槍呢?
第六步,設置發起器
發起器(Initiator)這個概念有點反常識的感覺,不過我們順著來解釋,一般人都可以理解發起器到底是怎么回事。
存儲本身是依托于計算機設備的。
按照計算機的架構來說計算機是分為輸入設備、輸出設備、運算器、控制器和存儲器五個部分的。但是這里的“存儲器”是指“內存”。當然了計算機的輸入設備也不是鍵盤、鼠標、觸摸屏、輸出設備也并不是指顯示器和音箱。除了這五個設備之外,計算機上所有的設備不論是不是在機箱里面實際上都叫做外設。
各自外設通過總線連接到計算機中完成各自的功能。
雖然一個SAN存儲是帶有CPU、內存且有操作系統的,但對于計算機而言,存儲本身是一個外設,和插在USB接口上的移動硬盤沒什么區別。因此我們講了這么半天的ESOS存儲服務器本身對計算機而言是一個輔助設備。雖然它可以立起來“靶子”,但還得讓“槍”來打,這就是“發起器”的概念了,主動權在計算機這桿“槍”上而不是在“靶子”上。
所以我們先要建立一個發起器。切換到Windows上,在服務器管理器程序中選擇“iscsi發起程序”
windows系統使用iscsi發起程序來建立自己的發起程序。
打開后,可以開啟配置窗口:
我們進入到配置選項卡,可以看到發起程序的默認設置:
這里面有一個發起程序的默認名稱,建議點擊“更改”按鈕修改一下:
現在windows界面中的“iqn.2024-04.rihome:win25”就是在存儲網絡中Windows這桿槍的IQN名字了。
在ESOS中添加一個組:
選擇這個組內要包含的target,一個存儲組可以容納大量target。
為組命名:
命名后添加發起器:
選擇target:
關聯到組:
然后填入剛剛在Windows中設置的發起器IQN:
至此,我們將靶子(Target)立起放在了比賽通道(Group)中,也為這個通道注冊了一名比賽的槍手(Initiator)。
槍手舉起槍了,你卻發現……并沒有剛剛的虛擬驅動器什么事情。
嗯,沒錯,靶子只是一個精神象征而已,我們還需要把驅動器關聯到target上。
這里“Map to Host Group”要把磁盤也放在比賽的通道里面去。它才是實質的東西。
先選擇已經存在的磁盤
再選擇taget
再選擇剛剛設置好的組
為這個磁盤在Target中設置一個邏輯單元號,默認是0,但iN一般從1開始設置。同時確定這是不是一個只讀盤,這里設置為No。
這時候磁盤就和Target以及主機的訪問組進行了關聯。
再進入target菜單中將tagert打開:
從列表中選擇要打開的target:
選擇Enable(允許)后按下OK:
最后確認一下target列表中狀態(state)被改變為Enable
這時候,ESOS的設置就已經完畢,回到Windows的ISCSI發起程序,你會發現剛剛在ESOS中設置好的target已經出現在窗口中(這就是最前提到的廣播的功效)。
如果沒有的話,在目標中輸入ESOS服務器的IP地址
然后選擇快速連接,我們就可以直接連接到ESOS的目標中
至此,ESOS建立的ISCSI就被成功的接入到Windows系統中。
但是,此刻你如果去看“我的電腦”中是不會包括剛剛接入的磁盤的。
原因是這個磁盤好比你剛買的接入到windows系統中的新驅動器一樣。
我們還需要做 最后一步 掛載iscsi驅動器。
打開計算機管理:
在磁盤管理菜單中我們可以看到這塊我們規劃好的40G磁盤。目前屬于脫機狀態。
有鍵點擊磁盤,選擇聯機
聯機后,再右鍵點擊初始化磁盤
選擇一個分區表格式,點確定。
在磁盤分區上點一下右鍵選擇建立卷,這里建立的是簡單卷
然后格式化硬盤,最終這塊Iscsi硬盤就以E盤的面目被掛載在了Windows中。
而在Esos端我們也可以看到“會話”(Session)區域已經出現了一個會話。
至此,這塊遠端的硬盤就可以使用了。
看起來頗費周章的操作,只給Windows 添加了一個來自于遠端的虛擬硬盤。這樣做有什么好處呢?
其實這就是生產力。我們來做個測試:
現在D盤中有一個Ubuntu的安裝包:
如果我們將之拷貝到一個SMB共享目標中:
我們會發現在千兆網絡中,文件的傳輸操作是基本跑滿千兆的,90~110MB左右的傳輸速率。
但是如果我們將文件往iscsi的E盤拷貝呢???
是這樣!
原因很簡單。SMB是以文件封裝的方式進行數據傳輸。系統傳輸開銷很大效率較低。
而在iscsi下,是通過網絡直接發送磁盤的操作命令和磁盤數據塊進行文件傳輸。即便是很小的帶寬(1Gbps),在系統級別上仍然可以高速的運作。
這個掛載硬盤是不是比大家想象的速度要快得多呢?做為生產力工具來掛載的iscsi在同等配置水平上基本上速度是可以超過NAS共享文件夾幾倍的,NAS是不是弱爆了?
當然了,在一般情況下一個iscsi只可以為一個主機所使用,這是iscsi的硬傷,但是,真正的生產力環境下我們可以通過后臺復制的方式讓幾個不同的iscsi驅動器之間的數據完全同步,這樣就可以解決所謂的共享問題。那么問題來了,會不會讓存儲服務器上的空間需求爆炸性的增長呢?實際上也不會,存儲服務器上使用的Btrfs或者ZFS文件系統本身就是塊級存儲,相同的數據不會二次占用額外的空間。因此即便是有幾百個iscsi目標放在一個存儲服務器里面,存放了幾百份相同的文件,實際上也僅僅占用一份文件的空間。
具體的iscsi同步的事情,我們找時間再詳細聊,今天就到這里吧。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.