伺服器的空間使用情景,最早就是機器可以放多少顆硬碟,就是多少的空間(做raid的部份先不看),萬一伺服器裡面擺不下,那就是擺伺服器外面,再用傳輸線連起來,這樣子的方案叫DAS (Direct-attached storage),某一台伺服器的儲存空間比較多,有能力透過網路分享給別人使用,這樣叫NAS(Network-attached storage,參考網路檔案系統 – NFS),想要專門的網路儲存區,做多台伺服器對多台儲存伺服器的環境,最先是使用光纖方案叫SAN( storage area network),可這個方案貴,要有HBA/SAN Switch等設備的投資,剛說了SAN的傳輸是透過光纖,如果改架構變成一般網路,儲存空間用比較大容量的伺服器,再配上ubuntu與open-iscsi,這樣也不失為一種好的解決方案(IP SAN)。
▲ 圖一、由儲存伺服器中要空間當本機的硬碟
測試環境是二台主機,第一台IP在192.168.11.31,只有系統槽(/dev/sda),可他想要再有一顆硬碟來做資料存放用,所以出現了第二台空間比較多的伺服器,IP在192.168.11.32,11.32分享出來的一顆hd叫diskb,11.31如何將11.32的diskb拿回來當本機sdb使用,就是下述教學要說明的囉。
補充一下在iscsi架構中,要連線別人的伺服器叫initiator(發起要儲存空間),要被別人連線伺服器的叫target(目標,有空間給別人用)。
首先我們連到192.168.11.32這一台做target的設定
● sudo apt-get install open-iscsi iscsitarget #進行iscsi與iscsitarget安裝
▲ 圖二、安裝iscsi與iscsitarget
● sudo vi /etc/default/iscsitarget # 編修設定檔啟用iscsitarget
ISCSITARGET_ENABLE=true
▲ 圖三、iscsitarget簡單設定,就只是做啟用target功能
● sudo /etc/iet/ietd.conf # 編修iet (iSCSI Enterprise Target)設定檔
Target iqn.192.168.1.94:diskb # 說明iscsi分享出去的target識別碼叫什麼
Lun 0 Path=/dev/sdb,Type=blockio # 分享出去的來源是什麼,這裡是用/dev/sdb,使用的io方式是blockio
● sudo service iscsitarget restart # 到此iscsitarget的設定完成,我們重啟服務以讓設定生效
● cat /proc/net/iet/volume #看一下系統中分享的iet volume,非常棒,有一個分享的volume了
▲ 圖四、分享出來的iet volume
回到有需要增加空間的伺服器192.168.11.31中,他需要有連線到target的能力,所以也要安裝程式
● sudo apt-get install open-iscsi
▲ 圖五、initiator只需要安裝open-iscsi
● sudo iscsiadm -m discovery -t st -p 192.168.11.32 #找出(discovery)指定ip下分享的磁碟,他會記成一個note資料,有需要可以透過sudo iscsiadm -m node -o show指令來查看
● sudo iscsiadm -m node –login #將node做掛載
● cat /proc/partition #看到有一顆新的sdb如<<圖六>>所示
▲ 圖六、發現並掛載iscsi target提供的磁碟
掛載完成後,這個磁碟就可以像本機硬碟一樣的進行操作,使用fdisk做分割表,使用mkfs做格式化
▲ 圖七、新硬碟的分割與格式化
想要大空間,又覺得glusterfs類的方案很麻煩,把數台提供有大空間的伺服器,改裝ubuntu與open-iscsi,再掛載在第一台中來使用,這應該是個簡單易用的方案;如果心臟很強,又覺得不同的iscsi target掛成不同的目錄,這樣用起來很麻煩,也許還可以試試lvm,或是linux softraid方案,理論上可以把數個空間拼在一起,不過這些伺服器開關機的順序、系統可靠與環境(電力、溫度…)就要多留意,要是一台儲存成員跳脫,對整個拼出來的大儲存架構來說,應該是場大災難。
留言