ISCSI 存储服务器
ISCSI服务器通常也称为Target端,负责定义存储对象,分配逻辑空间LUM(Local Unit逻辑单元),在RHEL6 服务器中需要安装scsi-target-utils软件包,对应的系统服务tgtd,命令行管理工具为 tgtadm
接下来依次讲解配置ISCSI的主要过程,准备存储设备,创建ISCSI对象,为客户机分配存储空间,客户机使用ISCSI。存储设备指将要分配给某个客户机使用的设备文件,在RHEL6系统中,硬盘,分区,逻辑卷,软RAID等都可以用作ISCSI服务的存储设备,为了延续磁盘空间的可扩展性,建议以一个逻辑卷为单位分配给客户机使用,对于个别特殊要求的客户机,也可以将一个软RAID阵列分配。
这里将Target主机一个逻辑卷作为ISCSI共享磁盘,共享给一台Linux主机使用,创建一个逻辑卷名为lvtest,将来分配给客户机使用,如下图所示(使用pvcreate,vgcreate,lvcreate创建逻辑卷lvtest)
[root@localhost ~]# lvdisplay /dev/vgtest/lvtest
--- Logicalvolume ---
LV Name /dev/vgtest/lvtest
VG Name vgtest
LV UUID dmFGR8-bJfN-uK03-I774-s7z8-jkep-Px3yi2
LV WriteAccess read/write
LV Status available
# open 1
LV Size 15.00 GiB
CurrentLE 3840
Segments 2
Allocation inherit
Read aheadsectors auto
- currentlyset to 256
Blockdevice 253:2
,
ISCSI服务器的配置步骤:
第一步:在iscis存储服务器上安装iscsi Target 软件包,如下图
[root@localhost ~]# yum -y installiscsi-initiator-utils perl-Config-General scsi-target-utils
第二步:iscsi target配置文件是/etc/tgt/targets.conf,此文件中的配置项默认全部被注释掉了,编辑该文件,实现简单的ISCSI存储服务器配置,在文件尾部添加如下内容:
<target iqn.2012-12.com.example:lvtest>
backing-store /dev/vgtest/lvtest
initiator-address 192.168.1.2
<target>
若要将多个存储设培分配给客户机可以在target.conf文件中添加多个
<target……..>
…………
</target>
注:Target的命名在同一子网中应该是唯一的,标准命名方式为:
Iqn.yyyy-mm.<reversed domain name>[:identifier]
其中:
Iqn:表示ISCSI Qualified Name,简称iqn)
yyyy-mm:表示年份-月份。这里是2012-12
reversed domain name:表示倒过来的域名,这里是com.example。
identifier:表示识别代码,这里是disk
backing-store:用于指定存储设备,一般指非实际的物理磁盘,如LVM卷,某个分区,raid磁盘阵列
initiator-address地址用于将target指派给指定的客户机使用。
接下来启动tgtd服务,并设置系统启动时自动启动,iscsi通信的端口:3260/tcp,以明文传输数据
[root@localhost ~]# /etc/init.d/tgtd restart
Stopping SCSI target daemon: [ OK ]
Starting SCSI target daemon: [ OK ]
[root@localhost ~]# chkconfig tgtd on
[root@localhost ~]# netstat -anpult | grep tgtd
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 4800/tgtd
tcp 0 0 :::3260 :::* LISTEN 4800/tgtd 、
若是ISCSI服务器上开启了防火墙可以将iptables关闭或创建允许规则,如下图所示
[root@localhost ~]# service iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
或
[root@localhost ~]# iptables -I INPUT -p tcp --dport3260 -s 192.168.1.2 -j ACCEPT
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
运行tgtadm –lld iscsi –op show –mode target查看target信息
[root@localhost ~]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2012-12.com.example:lvtest
Systeminformation:
Driver:iscsi
State:ready
I_T nexus information:
LUNinformation:
LUN: 0
Type: controller
SCSIID: IET 00010000
SCSISN: 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
SCSIID: IET 00010001
SCSISN: beaf11
Size: 16106 MB, Block size: 512
Online: Yes
Removable media: No
Readonly: No
Backing store type: rdwr
Backing store path: /dev/vgtest/lvtest
Backing store flags:
Accountinformation:
ACL information:
192.168.1.2
至此,iscsi target存储服务器配置完成,使用ISCSI Initiator就可以连接iscsi target服务器了,使用tgtadm工具创建iscsi对象时,主要命令选项如下:
-L ,–lld:指定驱动类型,如“-L iscsi”表示ISCSI存储
-o, --op:指定操作类型,如”-o new”表示创建,”-o delete”表示删除,”-o show”表示查看信息
-m, mode:指定管理目标,如”-m target”表示ISCSI对象
-T,--targetname:指定ISCSI对象的名称。
在RHEL5上iscsi客户端配置:(在RHEL6上软件包稍有区别)
第一步:安装iscsi发起端软件,iscsiinitiator-utils和lsscsi软件包
[root@localhost Server]# rpm -vihiscsi-initiator-utils-6.2.0.868-0.7.el5.i386.rpm
[root@localhost Server]# rpm -vih lsscsi-0.17-3.el5.i386.rpm
[root@localhost Server]# /etc/init.d/iscsi restart
Stopping iSCSI daemon: /etc/init.d/iscsi: line 33:15541 已杀死 /etc/init.d/iscsid stop
iscsid 已死,但 pid 文件仍存 [确定]
Turning off network shutdown. Starting iSCSIdaemon: [确定]
[确定]
设置 iSCSI 目标:iscsiadm: No records found!
[确定]
[root@localhost Server]# chkconfig iscsi on
第二步:查找iscsi服务器上的iscsi目标,即iscsi发现
执行iscsiadm –m discovery –t st –p iscsi服务器IP
或
Iscsiadm –m discovery –t sendtargets –p targetIP地址:端口号
若是默认端口3260可以省略不写
[root@localhost ~]# iscsiadm -m discovery -t st -p 192.168.1.1
192.168.1.1:3260,1 iqn.2012-12.com.example:lvtest
第三步:登录服务器上的ISCSI目标,即iscsi注册
执行iscsiadm –m node –T target名称 –p targetIP地址:端口号 –login
[root@localhost ~]# iscsiadm -m node -Tiqn.2012-12.com.example:lvtest -p 192.168.1.1:3260 --login
Logging in to [iface: default, target: iqn.2012-12.com.example:lvtest,portal: 192.168.1.1,3260]
Login to [iface: default, target:iqn.2012-12.com.example:lvtest, portal: 192.168.1.1,3260]: successful
退出iscsi盘阵
执行iscsiadm –m node –T target名称 –p targetIP地址:端口号 –logout
[root@localhost ~]# iscsiadm -m node -Tiqn.2012-12.com.example:lvtest -p 192.168.1.1:3260 --logout
Logging out of session [sid: 1, target:iqn.2012-12.com.example:lvtest, portal: 192.168.1.1,3260]
Logout of [sid: 1, target:iqn.2012-12.com.example:lvtest, portal: 192.168.1.1,3260]: successful
第四步:查看/dev/disk/by-path目录中iscsi符号链接所指向的位置或fdisk –l查看磁盘情况或检查iscsi的状态:service iscsi status 或
dmesg |tail
[root@localhost ~]# dmesg | tail
sdb: Write Protect is off
sdb: Mode Sense: 49 00 00 08
SCSI device sdb: drive cache: write back
SCSI device sdb: 31457280 512-byte hdwr sectors (16106MB)
sdb: Write Protect is off
sdb: Mode Sense: 49 00 00 08
SCSI device sdb: drive cache: write back
sdb: unknownpartition table
sd 2:0:0:1: Attached scsi disk sdb
sd 2:0:0:1: Attached scsi generic sg2 type 0
[root@localhost ~]# ls -l /dev/disk/by-path/
总计 0
lrwxrwxrwx 1root root 9 12-21 15:48ip-192.168.1.1:3260-iscsi-iqn.2012-12.com.example:lvtest -> ../../sdb
lrwxrwxrwx 1 root root 9 08-09 16:11 pci-0000:00:07.1-ide-0:0 -> ../../hdc
lrwxrwxrwx 1 root root 9 08-09 16:11 pci-0000:00:10.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 10 08-09 16:11pci-0000:00:10.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 08-09 16:11pci-0000:00:10.0-scsi-0:0:0:0-part2 -> ../../sda2
此时,可以使用iscsi磁盘,就好像它是本地连接硬盘驱动器
第五步:对连接的ISCSI磁盘建立LVM并实现自动挂载
未分区前显示sdb信息如下,执行fdisk –l /dev/sdb查看
[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 16.1 GB, 16106127360 bytes
64 heads, 32 sectors/track, 15360 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdb doesn't contain a valid partition table
在ISCSI客户机中执行fdisk /dev/sdb创建LVM类型分区并查看/dev/sdb新建分区后的信息
[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 16.1 GB, 16106127360 bytes
64 heads, 32 sectors/track, 15360 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
DeviceBoot Start End Blocks Id System
/dev/sdb1 1 4769 4883440 8e Linux LVM
/dev/sdb2 4770 9538 4883456 8e Linux LVM为了实现磁盘扩容,在客户机上可以将连接的ISCSI磁盘创建为LVM
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2
Physicalvolume "/dev/sdb1" successfully created
Physicalvolume "/dev/sdb2" successfully created
[root@localhost ~]# vgcreate vg_data /dev/sdb1/dev/sdb2
Volume group"vg_data" successfully created
[root@localhost ~]# lvcreate -L 8G -n lv_data vg_data
/dev/cdrom:open failed: 只读文件系统
Logical volume"lv_data" created
在建好的逻辑卷上创建文件系统
[root@localhost ~]# mkfs.ext3 /dev/vg_data/lv_data
注意:在RHEL6可以是mkfs.ext4/dev/vg_data/lv_data
创建挂载点目录并挂载
[root@localhost ~]# df -Th | grep -i "data"
/dev/mapper/vg_data-lv_data
ext3 7.9G 147M 7.4G 2% /data
[root@localhost ~]# echo"www.benet.com">/data/a.txt
[root@localhost ~]# ls /data/
a.txt lost+found
修改/etc/fstab文件实现自动挂载
执行blkid /dev/vg_data/lv_data获得逻辑卷lv_data的UUID
[root@localhost ~]# blkid /dev/vg_data/lv_data
/dev/vg_data/lv_data:UUID="f83b5aea-8731-41c9-90f5-c9d3255b51aa" SEC_TYPE="ext2"TYPE="ext3"
修改/etc/fstab文件自动挂载逻辑卷lv_data,如下所示
[root@localhost~]# vi/etc/fstab
UUID=f83b5aea-8731-41c9-90f5-c9d3255b51aa/data ext3 defaults,_netdev 0 0
测试自动挂载,mount –a或者重启系统后执行df –Th查看情况
注意
1. 使用blkid确定文件系统UUID并使用UUID挂载,而不是/dev/sd*设备名称。(每次引导显示的设备名称都不同,具体取决于iscsi设备通过网络进行响应的顺序,如果按设备名称挂载,这会导致使用错误的设备)
2. 在/etc/fstab中使用_netdev作为挂载选项。(这将确保客户端不会尝试挂载 文件系统,直至启用联网,否则,在引导时系统将出错)
3. 确保iscsi服务在引导时将启动
[root@localhost ~]#chkconfig iscsion
扩展ISCSI存储:
1 先在ISCSI客户机上卸除挂载并断开和ISCSI服务器连接
[root@localhost~]# umount /data/
[root@localhost~]# iscsiadm -m node -T iqn.2012-12.com.example:lvtest -p 192.168.1.1 -u
Logging out ofsession [sid: 2, target: iqn.2012-12.com.example:lvtest, portal:192.168.1.1,3260]
Logout of [sid: 2,target: iqn.2012-12.com.example:lvtest, portal: 192.168.1.1,3260]: successful
2 在ISCSI服务器上停止tgtd服务
[root@localhost~]# service tgtd stop
Stopping SCSItarget daemon: [ OK ]
3 在ISCSI服务器扩容共享的逻辑卷lvtest
[root@localhost~]# vgdisplay
--- Volume group ---
VG Name vgtest
System ID
Format lvm2
Metadata Areas 4
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 4
Act PV 4
VG Size 39.97 GiB
PE Size 4.00 MiB
Total PE 10232
Alloc PE / Size 3840 / 15.00 GiB
Free PE / Size 6392 / 24.97 GiB
VG UUID d3l2G2-ADu0-J8J2-JDC3-2l0M-Y2hl-FRCCQA
[root@localhost~]# lvextend -L +10G /dev/vgtest/lvtest
Extending logical volume lvtest to 25.00 GiB
Logical volume lvtest successfully resized
4 重启ISCSI服务
[root@localhost~]# service tgtd restart
Stopping SCSItarget daemon: not running [FAILED]
Starting SCSItarget daemon: [ OK ]
5 重启ISCSI客户机系统
6 ISCSI客户机重启后查看/dev/sdb信息
[root@localhost~]# fdisk -l /dev/sdb
Disk /dev/sdb: 26.8 GB, 26843545600bytes
64 heads, 32sectors/track, 25600 cylinders
Units = cylindersof 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 4769 4883440 8e Linux LVM
/dev/sdb2 4770 9538 4883456 8e Linux LVM
执行fdisk命令对/dev/sdb磁盘上增加的未分配空间创建分区,分区后的信息如下:
[root@localhost~]# fdisk -l /dev/sdb
Disk /dev/sdb:26.8 GB, 26843545600 bytes
64 heads, 32sectors/track, 25600 cylinders
Units = cylindersof 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 4769 4883440 8e Linux LVM
/dev/sdb2 4770 9538 4883456 8e Linux LVM
/dev/sdb3 9539 25600 16447488 8e Linux LVM
将/dev/sdb3转换成PV添加到vg_data卷组并扩展lv_data逻辑卷
[root@localhost~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3"successfully created
[root@localhost~]# vgextend vg_data /dev/sdb3
/dev/cdrom: open failed: 只读文件系统
Attempt to close device '/dev/cdrom' which isnot open.
Volume group "vg_data" successfullyextended
[root@localhost~]# lvextend -L +10G /dev/vg_data/lv_data
Extending logical volume lv_data to 18.00 GB
Logical volume lv_data successfully resized
激活逻辑卷lv_data
[root@localhost~]# vgchange -ay vg_data
1 logical volume(s) in volume group"vg_data" now active
执行resize2fs命令使系统识别扩容后的逻辑卷
[root@localhost~]# e2fsck -f /dev/vg_data/lv_data
e2fsck 1.39(29-May-2006)
Pass 1: Checkinginodes, blocks, and sizes
Pass 2: Checkingdirectory structure
Pass 3: Checkingdirectory connectivity
Pass 4: Checkingreference counts
Pass 5: Checkinggroup summary information
/dev/vg_data/lv_data:12/1048576 files (8.3% non-contiguous), 70323/2097152 blocks
[root@localhost~]# resize2fs /dev/vg_data/lv_data
resize2fs 1.39(29-May-2006)
Resizing thefilesystem on /dev/vg_data/lv_data to 4718592 (4k) blocks.
The filesystem on/dev/vg_data/lv_data is now 4718592 blocks long.
重新挂载逻辑卷/dev/vg_data/lv_data
[root@localhost~]# mount /dev/vg_data/lv_data /data/
[root@localhost~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
ext3 19G 4.3G 14G 25% /
/dev/sda1 ext3 99M 12M 82M 13% /boot
tmpfs tmpfs 125M 0 125M 0% /dev/shm
/dev/hdc iso9660 2.9G 2.9G 0 100% /media/RHEL_5.2 i386 DVD
/dev/mapper/vg_data-lv_data
ext3 18G 151M 17G 1% /data
第六步:删除iscsi
卸载新文件系统并删除/etc/fstab中的行或对其添加批注,退出并删除iscsi目标的条目
[root@localhost~]# iscsiadm -m node -T iqn.2012-12.com.example:lvtest -p 192.168.1.1 -u
Logging out ofsession [sid: 2, target: iqn.2012-12.com.example:lvtest, portal:192.168.1.1,3260]
Logout of [sid: 2,target: iqn.2012-12.com.example:lvtest, portal: 192.168.1.1,3260]: successful
[root@localhost~]# iscsiadm -m node -T iqn.2012-12.com.example:lvtest -p 192.168.1.1 -o delete