zoukankan      html  css  js  c++  java
  • 二十五 存储技术与应用 iSCSI技术应用 、 udev配置 NFS网络文件系统 、 Multipath多路径 、 NFS网络文件系统 、 udev配置

    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
  • 相关阅读:
    go资料
    typescript 装饰器 decorator
    【转】typescript class decorator装饰器
    【转】Best way to get result count before LIMIT was applied
    DirectX11 采样状态对象
    React通过redux-persist持久化数据存储
    禁止网页查看源代码
    css3 动画 -- 加载动画 Loader
    css3 动画 -- 旋转线条 rotate_line
    读书打卡:《微信互联网平民创业》
  • 原文地址:https://www.cnblogs.com/luwei0915/p/10486191.html
Copyright © 2011-2022 走看看