二十五 存储技术与应用 iSCSI技术应用 、 udev配置 NFS网络文件系统 、 Multipath多路径 、 NFS网络文件系统 、 udev配置

时间:2022-10-07 12:05:56
1.配置iSCSI服务
服务器上要额外配置一块硬盘
服务端(proxy)安装target,并将新加的硬盘配置为iSCSI 的共享磁盘
在客户端(client)上安装initiator,挂载服务器iSCSI,要求实现开机自动挂载
1.1 安装iSCSI服务器软件(proxy)
1.1.1 装包
]# yum -y install targetcli
]# yum info targetcli
1.1.2 手动添加一块20G的硬盘,化分区
]# lsblk
vdb 252:16 0 20G  0 disk
]# parted /dev/vdb mklabel gpt
]# parted /dev/vdb mkpart primary 1 100%
]# lsblk
vdb     252:16  0  20G 0 disk 
└─vdb1  252:17  0  20G 0 part
1.2 targetcli 划分分区
1.2.1 进入
]# targetcli
/> ls
o- / .............. [...]
  o- backstores ... [...]
  | o- block ...... [Storage Objects: 0]
  | o- fileio ..... [Storage Objects: 0]
  | o- pscsi ...... [Storage Objects: 0]
  | o- ramdisk .... [Storage Objects: 0]
  o- iscsi ........ [Targets: 0]
  o- loopback ..... [Targets: 0]
三大块:backstores  iscsi(空)  loopback
1.2.2 使用targetcli定义后端存储
(后段存储backstores里block块目录下创建块存储store,使用/dev/vdb1全部空间)
/> backstores/block create store /dev/vdb1
o- backstores .... [...]
  | o- block ..... [Storage Objects: 1]
  | | o- store ... [/dev/vdb1...
1.2.3 iSCSI创建iqn对象(给iSCSI共享设置一个共享名称)
/> iscsi/ create iqn.2019-01.com.baidu:www
1.2.4 acl访问控制
/> iscsi/iqn.2019-01.com.baidu:www/tpg1/acls create iqn.2019-01.com.baidu:ftp
拥有 iqn.2019-01.com.baidu:ftp 名称的客户机才能访问
1.2.5 luns绑定存储(store)
/> iscsi/iqn.2019-01.com.baidu:www/tpg1/luns create /backstores/block/store 
/> ls iscsi/
o- iscsi ............................. [Targets: 1]
  | o- iqn.2019-01.com.baidu:www ..... [TPGs: 1]
  |   o- tpg1 ........................ [no-gen-acls, no-auth]
  |     o- acls .....................  [ACLs: 1]
  |     | o- iqn.2019-01.com.baidu:ftp [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ..........  [lun0 block/store (rw)]
  |     o- luns .....................  [LUNs: 1]
  |     | o- lun0 ...................  [block/store (/dev/vdb1)
  |     o- portals ..................  [Portals: 1]
  |       o- 0.0.0.0:3260 ...........  [OK]
/> saveconfig 
/> exit
]# systemctl restart target
]# systemctl enable target
1.3 客户端访问(web1作为客户端的角色)
1.3.1 安装客户端软件
]# yum -y install iscsi-initiator-utils
1.3.2 设置本机的iqn名称
]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2019-01.com.baidu:ftp
1.3.3 发现远程target存储 提示:参考man iscsiadm!
]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover 192.168.2.5:3260,1 iqn.2019-01.com.baidu:www
1.3.4 登陆挂载
]# iscsiadm --mode node --targetname iqn.2019-01.com.baidu:www --portal 192.168.2.5:3260 --login
]# lsblk
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0   20G  0 disk 
]# systemctl restart iscsi
1.3.5 分区、格式化、挂载
]# parted /dev/sda mklabel gpt
]# parted /dev/sda mkpart primary 1 800
]# mkfs.xfs /dev/sda1
]# mount /dev/sda1 /mnt
]# lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0  0  20G  0 disk 
└─sda1 8:1  0  762M 0 part /mnt
]# umount /mnt
1.4 附加课外实验:多台FTP或者http主机使用共享存储
1.4.1 web1 ftp使用共享存储
]# mkdir /var/ftp/
]# mount /dev/sda1 /var/ftp/
]# yum -y install vsftpd
]# sed -i 's/^#anon/anon/' /etc/vsftpd/vsftpd.conf
备注:修改vsftpd配置文件,开启匿名上传功能。将下面2行默认的注释行打开。
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
]# chmod 777  /var/ftp/pub
]# systemctl start vsftpd
]# systemctl enable vsftpd
备注:只有启动ftp才会产生pub文件夹
真机访问web1的ftp,并拖入任意文件(pub为777)
目标:当web1宕机后,web2主机可以继续使用iscsi提供FTP共享服务。
Web1关闭vsftpd服务,卸载iscsi挂载。
]# systemctl stop vsftpd(pub文件夹没有了)
]# umount /var/ftp(没有共享存储了)
1.4.2 web2 ftp使用共享存储
]# yum -y install iscsi-initiator-utils
]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2019-01.com.baidu:ftp
]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover 192.168.2.5:3260,1 iqn.2019-01.com.baidu:www
]# iscsiadm --mode node --targetname iqn.2019-01.com.baidu:www --portal 192.168.2.5:3260 --login
]# lsblk
]# yum -y install vsftpd
]# sed -i 's/^#anon/anon/' /etc/vsftpd/vsftpd.conf
]# chmod 777 /var/ftp/pub/
]# systemctl start vsftpd
]# systemctl enable vsftpd
真机访问web2的ftp,并拖入任意文件(pub为777)
2.部署Multipath多路径环境(暂时不做)
3.配置并访问NFS共享
服务器利用NFS机制发布2个共享目录,要求如下:(proxy,192.168.2.5)
   将目录/root共享给192.168.2.100,客户机的root用户有权限写入
   将/usr/src目录共享给192.168.2.0/24网段,只开放读取权限
从客户机访问NFS共享:
   分别查询/挂载上述NFS共享目录
   查看挂载点目录,并测试是否有写入权限
3.1 配置NFS服务器,发布指定的共享
3.1.1 软件包nfs-utils用来提供NFS共享服务及相关工具,而软件包rpcbind用来提供RPC协议的支持
]# rpm  -q  nfs-utils  rpcbind
nfs-utils-1.3.0-0.48.el7.x86_64
rpcbind-0.2.0-42.el7.x86_64
3.1.2 需要作为NFS共享发布的有/root、/usr/src这两个目录:
]# 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/
3.1.3 修改/etc/exports文件,添加共享目录设置
默认情况下,来自NFS客户端的root用户会被自动降权为普通用户,若要保留其root权限,注意应添加no_root_squash控制参数(没有该参数,默认root会被自动降级为普通账户);另外,限制只读的参数为ro、可读可写为rw,相关配置操作如下所示:
]# vim /etc/exports
/root    192.168.2.100(rw,no_root_squash)
/usr/src 192.168.2.0/24(ro)
3.1.4 启动NFS共享相关服务,确认共享列表
依次启动rpcbiind、nfs服务:
]# systemctl restart rpcbind; systemctl enable rpcbind
]# systemctl restart nfs; systemctl enable nfs
3.1.5 使用showmount命令查看本机发布的NFS共享列表:
]# showmount -e localhost
Export list for localhost:
/usr/src 192.168.2.0/24
/root    192.168.2.100
3.2 从客户机访问NFS共享(web1)
3.2.1 启用NFS共享支持服务
客户机访问NFS共享也需要rpcbind服务的支持,需确保此服务已开启:
]# systemctl restart rpcbind; systemctl enable rpcbind
3.1.2 查看服务器提供的NFS共享列表
]# showmount -e 192.168.2.5
Export list for 192.168.2.5:
/usr/src 192.168.2.0/24
/root    192.168.2.100
3.1.3 从客户机192.168.2.100访问两个NFS共享,并验证权限
将远程的NFS共享/root挂载到本地的/root5文件夹,并验证可读可写:
]# mkdir /root5                    //建立挂载点
]# mount 192.168.2.5:/root /root5  //挂载NFS共享目录
]# df -hT /root5                   //确认挂载结果
Filesystem        Type  Size  Used Avail Use% Mounted on
192.168.2.5:/root nfs    50G   15G   33G  31% /root5
]# cd /root5  //切换到挂载点
root5]# echo "NFS Write Test" >  test.txt   //测试写入文件
root5]# cat test.txt                        //测试查看文件
NFS Write Test
proxy查看:
]# ls /root/ 是否有文件及内容(说明可以读写)
将远程的NFS共享/usr/src挂载到本地的/mnt/nfsdir,并验证只读:
]# mkdir /mnt/nfsdir                        //建立挂载点
]# mount 192.168.2.5:/usr/src /mnt/nfsdir/  //挂载NFS共享目录
]# df -hT /mnt/nfsdir/                 //确认挂载结果
Filesystem           Type  Size  Used Avail Use% Mounted on
192.168.2.5:/usr/src nfs    50G   15G   33G  31% /mnt/nfsdir
[root@web1 ~]# cd  /mnt/nfsdir/        //切换到挂载点
nfsdir]# ls               //读取目录列表
debug  install.log  kernels  test.txt
]# echo "Write Test." >  pc.txt //尝试写入文件失败
-bash: pc.txt: 只读文件系统
如果从未授权的客户机访问NFS共享,将会被拒绝。比如从NFS服务器本机尝试访问自己发布的/root共享(只允许192.168.2.100访问),结果如下所示:(proxy)
]# mkdir /root5
]# mount 192.168.2.5:/root /root5    
mount.nfs: access denied by server while mounting 192.168.2.5:/root
3.1.4 设置永久挂载(web1)
]# vim  /etc/fstab
.. ..
192.168.2.5:/usr/src /mnt/nfsdir  nfs default,ro  0 0
192.168.2.5:/root    /root5       nfs default     0 0
4.编写udev规则
4.1 先输入指令:再插入U盘(真机)
]# udevadm monitor --property
...
ID_BUS=usb(设备类型)
ID_VENDOR=OPPO(设备名)
ID_SERIAL_SHORT=LBNRSS5HYDMVINC6(设备序列号、串号)
ID_FS_TYPE=文件系统
ACTION=add
ACTION=remove
DEVNAME=
DEVPATH=
如果设备已经加载则无法使用monitor查看相关属性。可以使用下面的命令查看设备属性。
]# udevadm info --query=path --name=/dev/sda
]# udevadm info --query=property --path=/block/sda
单独查看某个磁盘分区的属性信息。
]# udevadm info --query=property --path=/block/sda1
4.2 编写udev规则文件(实现插拔USB设备时有屏幕提示信息)
]#vim /etc/udev/rules.d/70-usb.rules
ACTION=="add",ENV{ID_VENDOR}=="TOSHIBA",ENV{ID_SERIAL_SHORT}=="60A44CB4665EEE4133500001",RUN+="/usr/bin/systemctl start httpd"
ACTION=="remove",ENV{ID_VENDOR}=="TOSHIBA",ENV{ID_SERIAL_SHORT}=="60A44CB4665EEE4133500001",RUN+="/usr/bin/systemctl stop httpd" 
**********************************
udev常见操作符:
==   表示匹配
!=    不匹配
=     指定赋予的值
+=   添加新值
:=    指定值,且不允许替换
NAME=“udisk" 定义设备名称
SYMLINK+=”data1" 定义设备的别名
OWNER=“student"  定义设备的所有者
GROUP=”student"  定义设备的所属组
MODE=“0600”      定义设备的权限
ACTION==“add"    判断设备的插拔操作
KERNEL=="sd[a-z]1" 判断设备的内核名称
RUN+=程序           为设备添加程序
udev常用替代变量:
%k:内核所识别出来的设备名,如sdb1
%n:设备的内核编号,如sda3中的3
%p:设备路径,如/sys/block/sdb/sdb1