搭建iscsi
我們就拿兩台linux服務器來做吧,
服務器系統均為CentOs6.6 64位的,信息如下
IP | 安裝的軟件 |
---|---|
192.168.22.142 | iscsi target端:scsi-target-utils.x86_64 |
192.168.160.191 | iscsi客戶端:iscsi-initiator-utils |
在172.16.22.142安裝iscsi-target
采用yum安裝
[root@salt ~]# yum -y install scsi-target-utils
[root@salt ~]# rpm -ql scsi-target-utils
/etc/rc.d/init.d/tgtd #啟動腳本
/etc/sysconfig/tgtd
/etc/tgt/targets.conf #配置文件
/usr/sbin/tgt-admin
/usr/sbin/tgt-setup-lun
/usr/sbin/tgtadm
/usr/sbin/tgtd
/usr/sbin/tgtimg
/usr/share/doc/scsi-target-utils-1.0.24
/usr/share/doc/scsi-target-utils-1.0.24/README
/usr/share/doc/scsi-target-utils-1.0.24/README.iscsi
/usr/share/doc/scsi-target-utils-1.0.24/README.iser
/usr/share/doc/scsi-target-utils-1.0.24/README.lu_configuration
/usr/share/doc/scsi-target-utils-1.0.24/README.mmc
/usr/share/man/man5/targets.conf.5.gz
/usr/share/man/man8/tgt-admin.8.gz
/usr/share/man/man8/tgt-setup-lun.8.gz
/usr/share/man/man8/tgtadm.8.gz
編輯配置文件,置iscsi。
[root@salt ~]# vim /etc/tgt/targets.conf
'''
<target iqn.2016-11.com.ljf:server.target1>
backing-store /dev/sdb #/dev/sdb 新硬盤,沒有格式化和創建文件系統的
</target>
'''
參數解釋:
iqn.2016-11.com.ljf:\server.target1
notice: :\server這里的\是為了不讓有道markdown自動生成表情
target 后面跟着的名稱(也就是iqn.2016-11.com.ljf:\server.target1)在同一子網內應該是唯一的。標准命名方式是:
iqn.yyyy-mm.
參數含義如下:
- iqn iscsi Qualified name
- YYYY-MM 表示“年份-月份”
- reversed domain name 表示倒過來的域名
- identified 表示識別代碼。
backing-store /dev/sdb
關於backing-store,這里先解釋下共享的兩種store,
- backing-store : 任何Initiator可以訪問
- direct-store:可以設定acl進行限制哪些Initiator訪問
/dev/sdb 表示把/dev/sdb/作為iscsi盤共享出去。
啟動服務
確定配置沒有問題后,啟動
[root@salt ~]# service tgtd start
Starting SCSI target daemon: [ OK ]
[root@salt ~]# service tgtd status
tgtd (pid 4839 4837) is running...
[root@salt ~]# netstat -lnpt |grep tgtd
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 4837/tgtd
在172.16.160.191安裝iscsi-initiator-utils
命令如下
[root@localhost ~]# yum -y install iscsi-initiator-utils
[root@localhost ~]# rpm -ql iscsi-initiator-utils
/etc/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/04-iscsi
/etc/iscsi
/etc/iscsi/iscsid.conf
/etc/logrotate.d/iscsiuiolog
/etc/rc.d/init.d/iscsi
/etc/rc.d/init.d/iscsid
/sbin/brcm_iscsiuio
/sbin/iscsi-iname
/sbin/iscsiadm
/sbin/iscsid
/sbin/iscsistart
/sbin/iscsiuio
/usr/lib64/libiscsi.so.0
/usr/lib64/python2.6/site-packages/libiscsimodule.so
/usr/share/doc/iscsi-initiator-utils-6.2.0.873
/usr/share/doc/iscsi-initiator-utils-6.2.0.873/README
/usr/share/man/man8/iscsi-iname.8.gz
/usr/share/man/man8/iscsiadm.8.gz
/usr/share/man/man8/iscsid.8.gz
/usr/share/man/man8/iscsistart.8.gz
/usr/share/man/man8/iscsiuio.8.gz
/var/lib/iscsi
/var/lib/iscsi/ifaces
/var/lib/iscsi/isns
/var/lib/iscsi/nodes
/var/lib/iscsi/send_targets
/var/lib/iscsi/slp
/var/lib/iscsi/static
/var/lock/iscsi
安裝好iscsi-initiator-utils以后,我們可以使用它了,但是需要先了解下面三樣:
- iscsiadm
此命令用來管理(更新,刪除,插入,查詢)iscsi配置數據庫文件的命令行工具,用戶能夠用它對ISCSI nodes,sessions,connections 和discovery records進行以系列草走 - /var/lib/iscsi/send_targets/
在此目錄下,會生成一個或者多個以ISCSI存儲服務器的IP地址和端口號命名的文件夾,文件名“ISCSI Target ip,端口號”,例如我這里的顯示的:172.16.22.142,3260 - /var/lib/iscsi/nodes/
在這個目錄下會生成一個或者多個以ISCSI存儲服務器上的Target命名的文件夾,在該文件夾下有一個文件名為“iscsi portal IP,端口號”,例如:iqn.2016-11.com.ljf:\server.target1。該文件是ISCSI Initiator登陸ISCSI target使用的參數,而這些參數的設置從/etc/iscsi/iscsi.conf中的參數繼承而來,可以通過一個iscsiadm命令對這個參數進行更改的。
了解上面的以后,下面執行命令試試看
[root@localhost ~]# iscsiadm -m discovery --type sendtargets --portal 172.16.22.142
172.16.22.142:3260,1 iqn.2016-11.com.ljf:server.target1
或者下面這條
[root@localhost ~]# iscsiadm -m discovery --type sendtargets -p 172.16.22.142
172.16.22.142:3260,1 iqn.2016-11.com.ljf:server.target1
iqn.2016-11.com.ljf:\server.target1 是ISCSI target的名稱。由於在配置ISCSI target的時候,沒有做任何限制,所以允許所有的客戶端連接ISCSI target共享磁盤。
在第一次成功執行上面的命令后,ISCSI Initiator就會將查詢記錄寫到/var/lib/iscsi/send_targets對應的目錄下。
接下來登陸iscsi共享出來的磁盤
[root@localhost ~]# iscsiadm -m node -T iqn.2016-11.com.ljf:server.target1 -p 172.16.22.142 -l
參數解釋
- -l login,登陸
- -T name of target
- -p ip of HOST
登陸后,我們通過“fdisk -l”檢查下本地是否正常識別出來了,或者查看dmesg也可以看出來。
[root@localhost ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003a69b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 157 1048576 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 157 3917 30202880 8e Linux LVM
Disk /dev/mapper/VolGroup-LogVol00: 30.9 GB, 30924603392 bytes
255 heads, 63 sectors/track, 3759 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
# 看/dev/sdb已經在本地顯示了,說明掛載成功了,
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
或者通過iscsiadmin命令查看,命令如下:
[root@localhost ~]# iscsiadm -m session
tcp: [2] 172.16.22.142:3260,1 iqn.2016-11.com.ljf:server.target1 (non-flash) #[2]代表seesion id
[root@localhost ~]# iscsiadm -m session -r 2 # -r 指明session id即可。
# BEGIN RECORD 6.2.0-873.13.el6
node.name = iqn.2016-11.com.ljf:server.target1
node.tpgt = 1
node.startup = automatic
node.leading_login = No
此處省略一萬字
至此,我們可以像使用本地磁盤一樣的操作/dev/sdb這塊磁盤了.
Notice
關機之前或者不使用的時候切記一定要取消target的掛載,避免浪費資源,命令如下:
[root@localhost ~]# iscsiadm -m node -T iqn.2016-11.com.ljf:server.target1 -p 172.16.22.142 -u
Logging out of session [sid: 1, target: iqn.2016-11.com.ljf:server.target1, portal: 172.16.22.142,3260]
Logout of [sid: 1, target: iqn.2016-11.com.ljf:server.target1, portal: 172.16.22.142,3260] successful.
[root@localhost ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003a69b
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 157 1048576 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 157 3917 30202880 8e Linux LVM
Disk /dev/mapper/VolGroup-LogVol00: 30.9 GB, 30924603392 bytes
255 heads, 63 sectors/track, 3759 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
很明顯,/dev/sdb已經取消掛載了。