Top
配置iSCSI服务
编写udev规则
配置并访问NFS共享
部署FreeNAS服务器
本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端:
虚拟机添加新的磁盘
将新添加的磁盘分区并创建两个逻辑卷
逻辑卷名称分别为:/dev/myvg/iscsi1和/dev/myvg/iscsi2
服务器通过配置文件与命令两种方式共享逻辑卷
然后客户机挂载iSCSI服务器共享的磁盘:
客户端使用命令探测服务器共享的iSCSI磁盘
客户端挂载iSCSI磁盘
分区并格式化
使用2台RHEL6虚拟机,其中一台作为iSCSI服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.205),如图-1所示。
图-1
在RHEL6系统中,默认通过scsi-target-utils软件包提供iSCSI服务,因此需要在服务端安装scsi-target-utils包并配置对应的服务,iSCSI服务主要配置选项如表-1所示。
表-1 iSCSI配置选项列表
客户端挂载iSCSI服务器:
客户端需要安装iscsi-initiator-utils软件包
客户端使用命令挂载后需要分区、格式化并进行挂载测试
实现此案例需要按照如下步骤进行。
步骤一:安装iSCSI服务器软件
1)使用yum安装scsi-target-utils软件包
copytextpop-up
[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
[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服务,并设为开机自动运行
copytextpop-up
[root@svr5 ~]# service tgtd start ; chkconfig tgtd on
Starting SCSI target daemon: [ OK ]
[root@svr5 ~]# service tgtd start ; chkconfig tgtd on Starting SCSI target daemon: [ OK ]
tgtd服务默认通过TCP 3260端口监听客户端请求:
copytextpop-up
[root@svr5 ~]# netstat -anptu | grep tgtd
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 2737/tgtd
[root@svr5 ~]# netstat -anptu | grep tgtd tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 2737/tgtd
步骤二:创建逻辑卷
1)为新建磁盘/dev/sdb创建分区
copytextpop-up
[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
[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)创建逻辑卷
copytextpop-up
[root@svr5 ~]# pvcreate /dev/sdb{1,2}
[root@svr5 ~]# vgcreate myvg /dev/sdb{1,2}
[root@svr5 ~]# lvcreate -n iscsi1 �CL 800M myvg
[root@svr5 ~]# lvcreate -n iscsi2 �CL 800M myvg
[root@svr5 ~]# lvscan
[root@svr5 ~]# pvcreate /dev/sdb{1,2} [root@svr5 ~]# vgcreate myvg /dev/sdb{1,2} [root@svr5 ~]# lvcreate -n iscsi1 �CL 800M myvg [root@svr5 ~]# lvcreate -n iscsi2 �CL 800M myvg [root@svr5 ~]# lvscan
步骤三:通过命令行配置iSCSI服务
1)创建target
copytextpop-up
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \
> target --tid 1 -T iqn.2015-04.com.tarena.www:iscsi1
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \ > target --tid 1 -T iqn.2015-04.com.tarena.www:iscsi1
2)为target导入本地磁盘
copytextpop-up
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \
>logicalunit --tid 1 --lun 1 -b /dev/myvg/iscsi1
[root@svr5 ~]# tgtadm --lld iscsi --op new --mode \ >logicalunit --tid 1 --lun 1 -b /dev/myvg/iscsi1
3)配置ACL
copytextpop-up
[root@svr5 ~]# tgtadm --lld iscsi --op bind --mode \
> target --tid 1 -I 192.168.4.0/24
[root@svr5 ~]# tgtadm --lld iscsi --op bind --mode \ > target --tid 1 -I 192.168.4.0/24
4)将以上三条命令加入开机启动文件
copytextpop-up
[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
[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)修改配置文件
copytextpop-up
[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>
[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)重启计算机,验证服务是否开机有效
copytextpop-up
[root@svr5 ~]# reboot
[root@svr5 ~]# reboot
步骤四:客户端访问
1)客户端安装软件
copytextpop-up
[root@pc205 ~]# yum -y install iscsi-initiator-utils
[root@pc205 ~]# yum -y install iscsi-initiator-utils
2)客户端探测服务器共享
copytextpop-up
[root@pc205 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.5:3260
[root@pc205 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.5:3260
3)客户端挂载iSCSI共享
copytextpop-up
[root@pc205 ~]# iscsiadm -m node -T \
>iqn.2015-04.com.tarena.www:iscsi1 \
>-p 192.168.4.5:3260 �Cl
[root@pc205 ~]# iscsiadm -m node -T \
>iqn.2015-04.com.tarena.www:iscsi2 \
>-p 192.168.4.5:3260 �Cl
[root@pc205 ~]# iscsiadm -m node -T \ >iqn.2015-04.com.tarena.www:iscsi1 \ >-p 192.168.4.5:3260 �Cl [root@pc205 ~]# iscsiadm -m node -T \ >iqn.2015-04.com.tarena.www:iscsi2 \ >-p 192.168.4.5:3260 �Cl
4)分区、格式化、挂载
copytextpop-up
[root@pc205 ~]# fdisk �Ccul //查看挂载的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
[root@pc205 ~]# fdisk �Ccul //查看挂载的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规则,实现以下目标:
当插入一个U盘时,该U盘自动出现一个链接称为udisk
U盘上的第1个分区名称为udisk1,以此类推
终端上出现提示”udisk plugged in”
对于Linux kernel 2.6及更新的操作系统版本udev是系统的设备管理器,udev会分析sysfs的数据,并根据自己的udev规则,实现如下功能:
处理设备命名
决定要创建哪些设备文件或链接
决定如何设置属性
决定触发哪些事件
udev默认规则存放在/etc/udev/rules.d目录下,通过修改次目录下的规则实现设备的命名、属性、链接文件等。
Udev规则文件,常见指令操作符如表-2所示。
表-2 udev常见指令操作符
udev常用替代变量:
%k:内核所识别出来的设备名,如sdb1
%n:设备的内核编号,如sda3中的3
%p:设备路径,如/sys/block/sdb/sdb1
%%:%符号本身
实现此案例需要按照如下步骤进行。
步骤一:编写udev规则
1)查看设备属性
copytextpop-up
[root@svr5 ~]# udevadm monitor �Cproperty
[root@svr5 ~]# udevadm info --query=path �Cname=/dev/sdb
[root@svr5 ~]# udevadm info --query=property --path=/block/sdb
[root@svr5 ~]# udevadm monitor �Cproperty [root@svr5 ~]# udevadm info --query=path �Cname=/dev/sdb [root@svr5 ~]# udevadm info --query=property --path=/block/sdb
隐藏
代码
2)编写udev规则文件
copytextpop-up
[root@svr5 ~]# vim /etc/udev/rules.d/70-usb.rules
SUBSYSTEM=="block",ENV{DEVTYPE}="disk",KERNEL=="sdb",ENV{ID_VENDOR}=="TOSHIBA",SYMLINK="udisk",RUN+="/usr/bin/wall udisk plugged in"
SUBSYSTEM=="block",ACTION=="add",KERNEL=="sdb[0-9]",ENV{ID_VENDOR_ID}=="0930",ENV{DEVTYPE}=="partition",NAME="udisk%n"
[root@svr5 ~]# vim /etc/udev/rules.d/70-usb.rules SUBSYSTEM=="block",ENV{DEVTYPE}="disk",KERNEL=="sdb",ENV{ID_VENDOR}=="TOSHIBA",SYMLINK="udisk",RUN+="/usr/bin/wall udisk plugged in" SUBSYSTEM=="block",ACTION=="add",KERNEL=="sdb[0-9]",ENV{ID_VENDOR_ID}=="0930",ENV{DEVTYPE}=="partition",NAME="udisk%n"
步骤二:添加设备测试结果
点击VMware“虚拟机“菜单,在”可移动设备“菜单下,找到自己的U盘设备,点击”连接“与”断开“,测试自己的udev规则是否成功。
利用NFS机制发布2个共享目录,要求如下:
将目录/root共享给客户机192.168.4.205,客户机的root用户有权限写入
将/usr/src目录共享给192.168.4.0/24网段,只开放读取权限
从客户机访问NFS共享:
分别查询/挂载上述NFS共享目录
查看挂载点目录,并测试是否有写入权限
为访问NFS共享目录 /usr/src 配置触发挂载,挂载点为 /misc/nfsdir
使用2台RHEL6虚拟机,其中一台作为NFS共享服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.205),如图-7所示。
图-7
NFS共享的配置文件:/etc/exports 。
配置记录格式:文件夹路径 客户地址1(控制参数.. ..) 客户地址2(.. ..) 。
实现此案例需要按照如下步骤进行。
步骤一:配置NFS服务器,发布指定的共享
1)确认服务端程序、准备共享目录
软件包nfs-utils用来提供NFS共享服务及相关工具,而软件包rpcbind用来提供RPC协议的支持,这两个包在RHEL6系统中一般都是默认安装的:
copytextpop-up
[root@svr5 ~]# rpm -q nfs-utils rpcbind
nfs-utils-1.2.3-39.el6.x86_64
rpcbind-0.2.0-11.el6.x86_64
[root@svr5 ~]# rpm -q nfs-utils rpcbind nfs-utils-1.2.3-39.el6.x86_64 rpcbind-0.2.0-11.el6.x86_64
根据本例的要求,需要作为NFS共享发布的有/root、/usr/src这两个目录:
copytextpop-up
[root@svr5 ~]# ls -ld /root /usr/src/
dr-xr-x---. 35 root root 4096 1月 15 18:52 /root
drwxrwxr-x+ 4 root root 4096 1月 15 17:35 /usr/src/
[root@svr5 ~]# ls -ld /root /usr/src/ dr-xr-x---. 35 root root 4096 1月 15 18:52 /root drwxrwxr-x+ 4 root root 4096 1月 15 17:35 /usr/src/
2)修改/etc/exports文件,添加共享目录设置
默认情况下,来自NFS客户端的root用户会被降权,若要保留其root权限,注意应添加no_root_squash控制参数;另外,限制只读的参数为ro、可读可写为rw,相关配置操作如下所示:
copytextpop-up
[root@svr5 ~]# vim /etc/exports
/root 192.168.4.205(rw,no_root_squash)
/usr/src 192.168.4.0/24(ro)
[root@svr5 ~]# vim /etc/exports /root 192.168.4.205(rw,no_root_squash) /usr/src 192.168.4.0/24(ro)
3)启动NFS共享相关服务,确认共享列表
依次启动rpcbiind、nfs服务:
copytextpop-up
[root@svr5 ~]# service rpcbind restart ; chkconfig rpcbind on
停止 rpcbind: [确定]
正在启动 rpcbind: [确定]
[root@svr5 ~]# service nfs restart ; chkconfig nfs on
.. ..
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
[root@svr5 ~]# service rpcbind restart ; chkconfig rpcbind on 停止 rpcbind: [确定] 正在启动 rpcbind: [确定] [root@svr5 ~]# service nfs restart ; chkconfig nfs on .. .. 启动 NFS 服务: [确定] 关掉 NFS 配额: [确定] 启动 NFS mountd: [确定] 启动 NFS 守护进程: [确定] 正在启动 RPC idmapd: [确定]
使用showmount命令查看本机发布的NFS共享列表:
copytextpop-up
[root@svr5 ~]# showmount -e localhost
Export list for localhost:
/usr/src 192.168.4.0/24
/root 192.168.4.205
[root@svr5 ~]# showmount -e localhost Export list for localhost: /usr/src 192.168.4.0/24 /root 192.168.4.205
步骤二:从客户机访问NFS共享
1)启用NFS共享支持服务
客户机访问NFS共享也需要rpcbind服务的支持,需确保此服务已开启:
copytextpop-up
[root@pc205 ~]# service rpcbind restart ; chkconfig rpcbind on
停止 rpcbind: [确定]
正在启动 rpcbind: [确定]
[root@pc205 ~]# service rpcbind restart ; chkconfig rpcbind on 停止 rpcbind: [确定] 正在启动 rpcbind: [确定]
2)查看服务器提供的NFS共享列表
copytextpop-up
[root@pc205 ~]# showmount -e 192.168.4.5
Export list for 192.168.4.5:
/usr/src 192.168.4.0/24
/root 192.168.4.205
[root@pc205 ~]# showmount -e 192.168.4.5 Export list for 192.168.4.5: /usr/src 192.168.4.0/24 /root 192.168.4.205
3)从客户机192.168.4.205访问两个NFS共享,并验证权限
将远程的NFS共享/root挂载到本地的/root5文件夹,并验证可读可写:
copytextpop-up
[root@pc205 ~]# mkdir /root5 //建立挂载点
[root@pc205 ~]# mount 192.168.4.5:/root /root5 //挂载NFS共享目录
[root@pc205 ~]# df -hT /root5 //确认挂载结果
Filesystem Type Size Used Avail Use% Mounted on
192.168.4.5:/root nfs 50G 15G 33G 31% /root5
[root@pc205 ~]# cd /root5 //切换到挂载点
[root@pc205 root5]# echo "NFS Write Test" > pc205.txt //测试写入文件
[root@pc205 root5]# cat pc205.txt //测试查看文件
NFS Write Test
[root@pc205 ~]# mkdir /root5 //建立挂载点 [root@pc205 ~]# mount 192.168.4.5:/root /root5 //挂载NFS共享目录 [root@pc205 ~]# df -hT /root5 //确认挂载结果 Filesystem Type Size Used Avail Use% Mounted on 192.168.4.5:/root nfs 50G 15G 33G 31% /root5 [root@pc205 ~]# cd /root5 //切换到挂载点 [root@pc205 root5]# echo "NFS Write Test" > pc205.txt //测试写入文件 [root@pc205 root5]# cat pc205.txt //测试查看文件 NFS Write Test
将远程的NFS共享/usr/src挂载到本地的/mnt/nfsdir,并验证只读:
copytextpop-up
[root@pc205 ~]# mkdir /mnt/nfsdir //建立挂载点
[root@pc205 ~]# mount 192.168.4.5:/usr/src /mnt/nfsdir/ //挂载NFS共享目录
[root@pc205 ~]# df -hT /mnt/nfsdir/ //确认挂载结果
Filesystem Type Size Used Avail Use% Mounted on
192.168.4.5:/usr/src nfs 50G 15G 33G 31% /mnt/nfsdir
[root@pc205 ~]# cd /mnt/nfsdir/ //切换到挂载点
[root@pc205 nfsdir]# ls //读取目录列表
debug install.log kernels test.txt
[root@pc205 nfsdir]# echo "Write Test." > pc205.txt //尝试写入文件失败
-bash: pc205.txt: 只读文件系统
[root@pc205 ~]# mkdir /mnt/nfsdir //建立挂载点 [root@pc205 ~]# mount 192.168.4.5:/usr/src /mnt/nfsdir/ //挂载NFS共享目录 [root@pc205 ~]# df -hT /mnt/nfsdir/ //确认挂载结果 Filesystem Type Size Used Avail Use% Mounted on 192.168.4.5:/usr/src nfs 50G 15G 33G 31% /mnt/nfsdir [root@pc205 ~]# cd /mnt/nfsdir/ //切换到挂载点 [root@pc205 nfsdir]# ls //读取目录列表 debug install.log kernels test.txt [root@pc205 nfsdir]# echo "Write Test." > pc205.txt //尝试写入文件失败 -bash: pc205.txt: 只读文件系统
!!!! 如果从未授权的客户机访问NFS共享,将会被拒绝。比如从NFS服务器本机尝试访问自己发布的/root共享(只允许192.168.4.205访问),结果如下所示:
copytextpop-up
[root@svr5 ~]# mkdir /root5
[root@svr5 ~]# mount 192.168.4.5:/root /root5
mount.nfs: access denied by server while mounting 192.168.4.5:/root
[root@svr5 ~]# mkdir /root5 [root@svr5 ~]# mount 192.168.4.5:/root /root5 mount.nfs: access denied by server while mounting 192.168.4.5:/root
4)为NFS共享/usr/src添加触发挂载
要求的触发挂载点为/misc/nfsdir,其中/misc为autofs服务默认监控的文件夹,只需修改/etc/auto.misc文件,添加nfsdir的挂载设置即可:
copytextpop-up
[root@pc205 ~]# vim /etc/auto.misc
.. ..
nfsdir -fstype=nfs,ro 192.168.4.5:/usr/src
[root@pc205 ~]# vim /etc/auto.misc .. .. nfsdir -fstype=nfs,ro 192.168.4.5:/usr/src
确保重载autofs服务:
copytextpop-up
[root@pc205 ~]# service autofs restart ; chkconfig autofs on
停止 automount: [确定]
正在启动 automount: [确定]
[root@pc205 ~]# service autofs restart ; chkconfig autofs on 停止 automount: [确定] 正在启动 automount: [确定]
然后ls检查预期的挂载点,应该显示远程NFS共享/usr/src目录的内容,表示针对此NFS共享的触发挂载设置成功:
copytextpop-up
[root@pc205 ~]# ls /misc/nfsdir //查看以触发挂载操作
debug install.log kernels test.txt
[root@pc205 ~]# df -hT /misc/nfsdir/ //确认触发结果
Filesystem Type Size Used Avail Use% Mounted on
192.168.4.5:/usr/src nfs 50G 15G 33G 31% /misc/nfsdir
[root@pc205 ~]# ls /misc/nfsdir //查看以触发挂载操作 debug install.log kernels test.txt [root@pc205 ~]# df -hT /misc/nfsdir/ //确认触发结果 Filesystem Type Size Used Avail Use% Mounted on 192.168.4.5:/usr/src nfs 50G 15G 33G 31% /misc/nfsdir
通过安装FreeNAS套件系统,部署存储服务器,实现以下目标:
配置一个有三块硬盘的RAID数据盘
启用NFS服务并验证
启用CIFS服务并验证
新建虚拟机,使用FreeNAS镜像文件安装操作系统,配置存储服务器:
设置语言为中文
添加磁盘存储设备
设置共享服务
客户端测试共享存储
实现此案例需要按照如下步骤进行。
步骤一:使用镜像安装操作系统
使用VMware软件新建虚拟机,创建完成后为虚拟机额外添加三块硬盘设备,效果如图-2所示。
图-2
步骤二:安装FreeNAS
1)启动虚拟机,并选择系统磁盘
开启虚拟机,系统进入启动画面如图-3所示,选择Install/Upgrade。
图-3
2)选择系统磁盘
接下来,选择将FreeNAS系统安装到那个硬盘,这里选择da0(第一块硬盘),如图-4所示。
图-4
3)格式化磁盘
选择硬盘后,系统会提示格式化磁盘,并将删除所有磁盘数据,如图-5所示。
图-5
4)完成安装
格式化磁盘后,FreeNAS将进入自动安装过程。过程结束后,系统将提示重启计算机,如图-6所示。
图-6
步骤三:启动FreeNAS,并做初始化设置
1)设置网络参数
启动FreeNAS,进入如图-7所示的配置界面后,选择1设置网络参数,本案例中我们设置IP地址为192.168.20.100,子网掩码为255.255.255.0。
图-7
2)设置中文语音环境
使用浏览器访问http://192.168.20.10,进入FreeNAS后,点击如图-8所示的设置画面,在Language(语音)选择框中选择Simplified Chinese(简体中文),Timezone(时区)选择Asia/Shanghai(亚洲/上海),选择完成后点击下面的Save保存即可。刷新页面就可以看到中文环境。
图-8
3)设置账户密码
默认不需要密码即可登录FreeNAS系统,所以第一次时,我们还需要为管理员账户设置密码,使用浏览器登录http://192.168.20.100进入系统后,点击右上角的账户按钮,进入如图-9的画面,点击更改密码,设置新的密码。
图-9
步骤四:创建共享存储磁盘
FreeNAS系统,使用Zettabyte文件系统,拥有自优化,自动校验数据完整性,存储池/卷系统易管理等诸多优点。在FreeNAS系统中创建ZFS卷,使用浏览器登录服务器Web页面,点击如图-10所示的存储器按钮,选择“ZFS Volume Manager“创建ZFS卷。
图-10
创建ZFS卷时,需要设置卷名称,设置磁盘RAID,效果如图-11所示。
图-11
步骤五:配置共享服务
1)启动相关共享服务
使用浏览器登录服务器Web页面,点击如图-12所示的服务按钮,将CIFS和NFS服务的状态从OFF调整至ON。
图-12
点击CIFS服务右侧的小扳手按钮,将认证模式设置为匿名。
2)设置服务共享路径
启动CIFS和NFS服务后,还需要为服务设置相关的共享路径。使用浏览器登录服务器Web页面,点击共享共享按钮,在子菜单中找到“UNIX(NFS)“和Windows(CIFS),分别为每个服务添加对应的共享目录, 多个服务可以共享一个文件系统目录。
图-13
步骤六:客户端验证
客户端使用Windows资源管理器访问\\192.168.20.100,使用Linux系统mount挂载192.168.20.100的NFS测试共享服务是否正常。
本文出自 “11096511” 博客,转载请与作者联系!