一、配置iSCSI服务
目标:
本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端:
- 虚拟机添加新的磁盘
- 将新添加的磁盘分区并创建两个逻辑卷
- 逻辑卷名称分别为:/dev/myvg/iscsi1和/dev/myvg/iscsi2
- 服务器通过配置文件与命令两种方式共享逻辑卷
然后客户机挂载iSCSI服务器共享的磁盘:
- 客户端使用命令探测服务器共享的iSCSI磁盘
- 客户端挂载iSCSI磁盘
- 分区并格式化
方案:
使用2台RHEL6虚拟机,其中一台作为iSCSI服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.205),如下图所示。
在RHEL6系统中,默认通过scsi-target-utils软件包提供iSCSI服务,因此需要在服务端安装scsi-target-utils包并配置对应的服务,iSCSI服务主要配置选项如下表所示。
客户端挂载iSCSI服务器:
- 客户端需要安装iscsi-initiator-utils软件包
- 客户端使用命令挂载后需要分区、格式化并进行挂载测试
步骤:
实现此案例需要按照如下步骤进行。
步骤一:安装iSCSI服务器软件
1)使用yum安装scsi-target-utils软件包
[root@svr5 ~]# yum -y install scsi-target-utils .. .. [root@svr5 ~]# rpm -q scsi-target-utils scsi-target-utils-1.0.24-10.el6.x86_64
2)启用target服务,并设为开机自动运行
[root@svr5 ~]# service tgtd start ; chkconfig tgtd on Starting SCSI target daemon: [ OK ]
tgtd服务默认通过TCP 3260端口监听客户端请求:
[root@svr5 ~]# netstat -anptu | grep tgtd tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 2737/tgtd
步骤二:创建逻辑卷
1)为新建磁盘/dev/sdb创建分区
[root@svr5 ~]# parted /dev/sdb mklabel gpt [root@svr5 ~]# parted /dev/sdb mkpart primary 1 1000 [root@svr5 ~]# parted /dev/sdb mkpart primary 1000 2000
2)创建逻辑卷
[root@svr5 ~]# pvcreate /dev/sdb{1,2} [root@svr5 ~]# vgcreate myvg /dev/sdb{1,2} [root@svr5 ~]# lvcreate -n iscsi1 –L 800M myvg [root@svr5 ~]# lvcreate -n iscsi2 –L 800M myvg [root@svr5 ~]# lvscan
步骤三:通过命令行配置iSCSI服务
1)创建target
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \ > target --tid 1 -T iqn.2015-04.com.tarena.www:iscsi1
2)为target导入本地磁盘
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \ >logicalunit --tid 1 --lun 1 -b /dev/myvg/iscsi1
3)配置ACL
[root@svr5 ~]# tgtadm --lld iscsi --op bind --mode > target --tid 1 -I 192.168.4.0/24
4)将以上三条命令加入开机启动文件
[root@svr5 ~]# vim /etc/rc.local .. .. tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2015-04.com.tarena.www:iscsi1 tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/myvg/iscsi1 tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.4.0/24
步骤四:通过配置文件实现iSCSI服务
1)修改配置文件
[root@svr5 ~]# vim /etc/tgt/targets.conf <target iqn.2015-04.com.tarena.www:iscsi2 > # List of files to export as LUNs backing-store /dev/myvg/iscsi2 //定义存储设备 initiator-address 192.168.4.0/24 //定义ACL </target>
2)重启计算机,验证服务是否开机有效
[root@svr5 ~]# reboot
步骤五:客户端访问
1)客户端安装软件
[root@pc205 ~]# yum -y install iscsi-initiator-utils
2)客户端探测服务器共享
[root@pc205 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.5:3260
3)客户端挂载iSCSI共享
[root@pc205 ~]# iscsiadm -m node -T \ >iqn.2015-04.com.tarena.www:iscsi1 >-p 192.168.4.5:3260 –l [root@pc205 ~]# iscsiadm -m node -T \ >iqn.2015-04.com.tarena.www:iscsi2 >-p 192.168.4.5:3260 –l
4)分区、格式化、挂载
[root@pc205 ~]# fdisk –cul //查看挂载的iSCSI共享盘 [root@pc205 ~]# parted /dev/sdb mklabel gpt [root@pc205 ~]# parted /dev/sdb mkpart primary 1 800 [root@pc205 ~]# parted /dev/sdc mklabel gpt [root@pc205 ~]# parted /dev/sdc mkpart primary 1 800 [root@pc205 ~]# mount /dev/sdb1 /mnt
二、编写udev规则
目标:
编写udev规则,实现以下目标:
- 当插入一个U盘时,该U盘自动出现一个链接称为udisk
- U盘上的第1个分区名称为udisk1,以此类推
- 终端上出现提示”udisk plugged in”
方案:
对于Linux kernel 2.6及更新的操作系统版本udev是系统的设备管理器,udev会分析sysfs的数据,并根据自己的udev规则,实现如下功能:
- 处理设备命名
- 决定要创建哪些设备文件或链接
- 决定如何设置属性
- 决定触发哪些事件
udev默认规则存放在/etc/udev/rules.d目录下,通过修改次目录下的规则实现设备的命名、属性、链接文件等。
Udev规则文件,常见指令操作符如下表所示。
udev常用替代变量:
- %k:内核所识别出来的设备名,如sdb1
- %n:设备的内核编号,如sda3中的3
- %p:设备路径,如/sys/block/sdb/sdb1
- %%:%符号本身
步骤: