IP-SAN的运行模式:C/S模式,工作端口3260
服务端:服务名-target 机器A(目标)
客户端:服务名-initator 机器B,机器C(发起人).
安装target
[root@机器A ~]# yum -y install epel-release
[root@机器A Desktop]# yum install -y scsi-target-utils
主配置文件:
[root@机器A ~]# ls /etc/tgt/targets.conf
启动服务:
[root@机器A ~]# /etc/init.d/tgtd start
[root@机器A ~]# netstat -antup | grep 3260
新建存储分区: sda4 大小5G
[root@机器A ~]# fdisk /dev/sda #划分出sda4分区
WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to
switch off the mode (command ‘c‘) and change display units to
sectors (command ‘u‘).
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x000b8b35
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 1301 10240000 83 Linux
/dev/sda3 1301 1428 1024000 82 Linux swap / Solaris
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (1428-2610, default 1428):
Using default value 1428
Last cylinder, +cylinders or +size{K,M,G} (1428-2610, default 2610): +5G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@thinkmo3 ~]#reboot 或者 partx -a /dev/sda #使分区生效,多执行几次即可
配置sda4共享
修改配置文件
[root@机器A ~]# vim /etc/tgt/targets.conf #写入以下内容
下面这段内容是参考模板
75 #<target iqn.2008-09.com.example:server.target4>
76 # direct-store /dev/sdb # Becomes LUN 1
77 # direct-store /dev/sdc # Becomes LUN 2
78 # direct-store /dev/sdd # Becomes LUN 3
79 # write-cache off
80 # vendor_id MyCompany Inc.
81 #</target>
在上面模版后面新增内容为:
<target iqn.2018-01.cn.thinkmo.www:target_san1>
backing-store /dev/sda4
initiator-address 192.168.1.64
vendor_id thinkmo
product_id target1
</target>
注释:
default-driver iscsi #此配置文件默认全部注释,使用iscsi驱动
<tarrget iqn.2018-1.cn.thinkmo.www:target_san1> # iscsi正规名字格式: iqn.年-月.主机名倒着写: target端名字
backing-store /dev/hda4 #可以是具体的分区,也可以是DD出来的文件。不能小于5G。 (后面的文件系统是GFS,光日志空间就128M)
initiator-address 192.168.1.62 #指定允许访问的此存储主机
initiator-address 192.168.1.64 #指定允许访问的此存储主机
vendor_id “thinkmo” #vendor是供应厂商编号标识这个设备(字符不要过长)
product_id "TARGET1" # 产品编号
</target>
启动服务
[root@机器A Desktop]# systemctl restart tgtd
[root@机器A Desktop]# netstat -antup | grep 3260或者tgt-admin –show查看状态
Target 1: iqn.2015-01.cn.thinkmo.www:target_san1
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5372 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/sda4
Backing store flags:
Account information:
ACL information: #允许哪些客户端可以访问
192.168.1.64
配置客户端: 机器B
安装包:
[root@机器B ~]# yum install -y iscsi-initiator-utils
启动客户端服务:
[root@机器B~]# systemctl start iscsid #直接启动没有任何反应, 这里首先要发现target存储,再启动客户端服务,才有效
[root@机器B~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.63:3260
Starting iscsid: [ OK ]
192.168.1.63:3260,1 iqn.2018-01.cn.thinkmo.www:target_san1
[root@机器B~]# /etc/init.d/iscsid status
iscsid (pid 2607) is running...
target存储服务器信息在客户端存储的位置:
[root@机器B~]# yum install -y tree #安装tree命令,用于查询树
[root@机器B~]# tree /var/lib/iscsi/ #发现target后,会在此目录先生成树结构
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
│ └── iqn.2015-01.cn.thinkmo.www:target_san1
│ └── 192.168.1.63,3260,1
│ └── default
├── send_targets
│ └── 192.168.1.63,3260
│ ├── iqn.2015-01.cn.thinkmo.www:target_san1,192.168.1.63,3260,1,default -> /var/lib/iscsi/nodes/iqn.2015-01.cn.thinkmo.www:target_san1/192.168.1.63,3260,1
│ └── st_config
├── slp
└── static
客户端服务启动关系
先启动iscsid,再启动iscsi,iscsi是根据/var/lib/iscsi/中发现的信息,识别设备
[root@机器B~]#systemctl start iscsid #先启动iscsid
[root@机器B~]# systemctl start iscsi # 根据/var/lib/iscsi/ 中发现的信息,识别设备
Stopping iscsi: [ OK ]
Starting iscsi: [ OK ]
关闭:
[root@机器B~]# systemctl stop iscsi
[root@机器B~]# systemctl stop iscsid
开机自动启动:
[root@机器B~]# chkconfig iscsi on
[root@机器B~]# chkconfig iscsid on
查看发现到新硬盘:
[root@机器B~]# ll /dev/sdb
brw-rw---- 1 root disk 8, 16 Jul 30 19:11 /dev/sdb
卸载,挂载存储设备
卸载
[root@机器B~]# iscsiadm -m node -T iqn.2018-01.cn.thinkmo.www:target_san1 -u
Logging out of session [sid: 1, target: iqn.2015-01.cn.thinkmo.www:target_san1, portal: 192.168.1.63,3260]
Logout of [sid: 1, target: iqn.2015-01.cn.thinkmo.www:target_san1, portal: 192.168.1.63,3260] successful.
[root@机器B~]# ls /dev/sdb #查看设备不存在
ls: cannot access /dev/sdb: No such file or directory
登录存储存储设备
[root@机器B~]# iscsiadm -m node -T iqn.2018-01.cn.thinkmo.www:target_san1 -l
Logging in to [iface: default, target: iqn.2018-01.cn.thinkmo.www:target_san1, portal: 192.168.1.63,3260] (multiple)
Login to [iface: default, target: iqn.2018-01.cn.thinkmo.www:target_san1, portal: 192.168.1.63,3260] successful.
[root@机器B~]# ls /dev/sdb
/dev/sdb
上面的方法看起来比较复杂,命令比较长,简单的通过服务卸载与登陆
卸载方法二:
[root@机器B~]# systemctl stop iscsi
Stopping iscsi: [ OK ]
[root@机器B~]# ls /dev/sdb
ls: cannot access /dev/sdb: No such file or directory
登录方法二:
[root@机器B~]# systemctl restart iscsi
彻底退出:
[root@机器B~]# systemctl stop iscsi
[root@机器B~]# rm -rf /var/lib/iscsi/*
实例1: 在thinkmo4上对识别出来的硬盘,分区格式化,挂载使用。
[root@机器B~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.63:3260 #发现存储设备
[root@机器B~]# systemctl restart iscsid #登录存储
[root@机器B~]# systemctl restart iscsi
[root@机器B~]# ls /dev/sdb #发现sdb
/dev/sdb
分区格式化,挂载使用
[root@机器B~]# fdisk /dev/sdb #划分一个分区当作本地盘使用即可
[root@机器B~]# ll /dev/sdb* #查看分区
[root@机器B~]# mkfs.ext4 /dev/sdb1 #格式化分区
[root@机器B~]# mount /dev/sdb1 /opt/ #挂载使用
[root@机器B~]# cp /etc/passwd /opt/ #测试文件写入
例2: 在target服务端,再添加一个存储客户端:
添加如下内容:
[root@机器A~]# vim /etc/tgt/targets.conf
<target iqn.2018-01.cn.thinkmo.www:target_san1>
backing-store /dev/sda4
initiator-address 192.168.1.64
initiator-address 192.168.1.62 #添加一个客户端
vendor_id thinkmo
product_id target1
</target>
[root@机器A ~]# systemctl restart tgtd
Stopping SCSI target daemon: initiators still connected [FAILED]
Starting SCSI target daemon: [FAILED]
解决:客户端退出一下
[root@机器B~]# umount /opt/ #客户端卸载
[root@机器B~]# systemctl stop iscsi #客户端停止服务,做了这两个,再启动服务器端,否则,数据损失丢弃清空的情况发生。
客户端退出后,再测试启动:
[root@机器A~]# /etc/init.d/tgtd restart
Stopping SCSI target daemon: [ OK ]
Starting SCSI target daemon: [ OK ]
[root@机器A~]# tgt-admin –show #查看情况
测试: 机器B和机器C都挂载上硬盘,数据同步
[root@机器B~]# systemctl start iscsid
[root@机器B~]# systemctl start iscsi
[root@机器B~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
[root@机器B~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
[root@机器B~]# mount /dev/sdb1 /opt/
[root@机器B~]# cp /etc/passwd /opt/ #复制一些数据
测试:机器C是否数据同步
[root@机器C ~]# yum –y install iscsi-initiator-utils
[root@机器C~]# iscsiadm -m discovery -t sendtargets -p 192.168.1.63:3260
192.168.1.63:3260,1 iqn.2018-01.cn.thinkmo.www:target_san1
[root@机器C~]# systemctl restart iscsid
[root@机器C~]# systemctl restart iscsi
有时候环境和你操作的顺序问题,可能无法发现,重启一下SAN Server,然后两台客户端重新sendtargets一下,重新启动服务和挂载.
[root@机器C~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
[root@机器C~]# mount /dev/sdb1 /opt/
[root@机器C~]#ls /opt/ #可以看到数据已经同步过来了
lost+found passwd
添加新数据测试同步:
[root@机器C~]# cp /etc/hosts /opt
[root@机器C~]# ls /opt
hosts lost+found passwd
机器B上查看:
[root@机器B~]# ls /opt
lost+found passwd
# passwd #只看到passwd
没有同步,是因为我们使用的ext4 文件系统,ext4文件系统不支持多个客户端同时使用。 使用GFS文件系统就可以同步。
原文:https://www.cnblogs.com/wendyluo/p/13393434.html