前邊說過的cifs以及nfs這個文件共享系統雖然已經是比較成熟的了,但是在客戶機端連接到服務器端上傳文件時,先會將文件轉換爲2進制文件,在接受端接受到2進制文件後在轉化爲相應的格式顯示出來,然後在服務器端把這個文件轉化爲2進制文件,然後存儲在磁盤中。既然是要將文件存儲在服務器端,那麼爲什麼不能直接保存到磁盤中呢?在這個過程中,無疑出現了很多沒有必要的部分,所以我們現在來看看這個磁盤共享問題--------iscsi(Internet Small Computer System Interface)。
iscsi是一個供硬件設備使用的、可在IP協議上層運行的SCSI指令集,是一種開放的基於IP協議的工業技術標準。該協議可以用TCP/IP對SCSI指令進行 封裝,使得這些指令能夠通過基於P網絡進行傳輸,從而實現SCSI 和TCP/IP協議的連接。對於局域網環境中的用戶來說,採用該標準只需要不多的投資就可以方便、快捷地對信息和數據進行交互式傳輸及管理。
首先通過fdisk 創建出來一塊要做實驗的硬盤
pvcreate /dev/vdb1
vgcreate iscsi_vg0 /dev/vdb1
lvcreate -L 2.2G-n iscsi_lv0 iscsi_vg0 ---------------磁盤滿了,這塊暫時忽略
開始使用targetcli共享
targetcli
/backstores/block create westos:storage1 /dev/vdb1 ---------------先將要共享的磁盤塊化,名字自定義。
/iscsi create iqn.2017-12.com.example:storage1 ----------------創建要共享的磁盤,這個名字必須以iqn.開頭。
/iscsi/iqn.2017-12.com.example:storage1/tpg1/acls create iqn.2017-12.com.example:westoskey ---------------創建要給客戶端主機使用的鑰匙
/iscsi/iqn.2017-12.com.example:storage1/tpg1/luns create /backstores/block/westos:storage1 --------------創建要啊共享出去的邏輯單元。
iscsi/iqn.2017-12.com.example:storage1/tpg1/portals create 172.25.254.220 ----------------t提供共享硬盤的主機ip
通過ls查看。可以得到創建的所有信息。
firewall-cmd --permanent --add-port=3260/tcp ---------------------------添加3260端口到防火牆。
然後在客戶端:
yum install iscsi-initiator-utils.x86_64 -y --------------------安裝iscsi軟件
vim /etc/iscsi/initiatorname.iscs
InitiatorName=iqn.2017-12.com.example:westoskey 將服務器端的鑰匙拿到
沒有獲得共享硬盤之前:
iscsiadm -m discovery -t st -p172.25.254.230
iscsiadm -m node -Tiqn.2016-12.com.example:storage1 -p 172.25.254.230 -l 登陸到172.25.254.220
然後fdisk -l
/dev/sda就是共享到的硬盤.
fdisk /dev/sda
partprobe
mkfs.xfs /dev/sda1
mount /dev/sda1 /mnt/
成功獲取到分區/dev/sda1
然後mount /dev/sda1 /mnt 就可以用了!
開機要自動啓動:vim /etc/fstab
因爲開機時候系統會自動掃描這個文件,如果用/dev/sda1有可能會使名稱發生“漂移“現象,會出現讀取不準確,所以在這裏使用它的uid還是比較好的,使用_netdev 是因爲要從服務器端獲取這個硬盤資源。
要刪除時候:客戶主機端:
iscsiadm -m node -T iqn.2017-12.com.example:storage1 -u ---------------暫時刪除
iscsiadm -m node -T iqn.2017-12.com.example:storage1 -o delete --------------永久刪除
從服務器獲取到的node信息存放在 /etc/iscsi/nodes/這個目錄下
從哪臺服務器端獲取到的信息存放在 /var/lib/iscsi/send_tarages/這個目錄下邊
通過rm -rf /etc/iscsi/nodes/可以清空登陸服務器信息
服務器端刪除:
clearconfig confirm=true