• iscsi脚本


    服务端

    #!/bin/bash
    #测试主机是否可以联网
    echo -e "33[31m即将测试主机是否可以联网33[0m"
    ping -c 4 www.baidu.com
    if [ $? -eq 0 ];then
    		echo -e "33[31m主机可以联网继续脚本33[0m"
    else
    		echo -e "33[31m主机不可联网,即将退出脚本33[0m"
            exit
    fi
    #编写服务端与客户端IP地址
    echo -e "33[31m即将编写服务端与客户端IP地址33[0m"
    sleep 3s
    rm -rf ./ip
    cat >> ./ip <<EOF
    #在后面写IP地址,ip1为服务端,ip2为客户端
    export ip1=
    export ip2=
    EOF
    vi ./ip
    source ./ip
    
    echo -e "33[31m即将关闭firewalld与selinux33[0m"
    sleep 1s
    # firewalld config
    systemctl disable firewalld
    systemctl stop firewalld
    
    #关闭selinux
    setenforce 0
    
    echo -e "33[31m即将配置yum仓库文件33[0m"
    sleep 1s
    #创建本地仓库文件
    mkdir /mnt/cdrom
    mount /dev/sr0 /mnt/cdrom
    
    cat >> /etc/yum.repos.d/a.repo <<EOF
    [a]
    name=a
    baseurl=file:///mnt/cdrom
    gpgcheck=0
    EOF
    
    
    yum install -y wget
    #下载epel7仓库文件
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    yum repolist
    
    sleep 3s
    
    echo -e "33[31m
    即将安装targetcli33[0m"
    sleep 1s
    yum -y install targetcli
    
    echo -e "33[31m
    即将配置targetcli33[0m"
    sleep 1s
    #创建共享文件夹存档点
    mkdir /iscsi_disks
    chmod 777 /iscsi_disks
    
    >/etc/target/saveconfig.json
    cat >> /etc/target/saveconfig.json <<EOF
    {
      "fabric_modules": [], 
      "storage_objects": [
        {
          "attributes": {
            "block_size": 512, 
            "emulate_dpo": 0, 
            "emulate_fua_read": 0, 
            "emulate_fua_write": 1, 
            "emulate_model_alias": 1, 
            "emulate_rest_reord": 0, 
            "emulate_tas": 1, 
            "emulate_tpu": 0, 
            "emulate_tpws": 0, 
            "emulate_ua_intlck_ctrl": 0, 
            "emulate_write_cache": 1, 
            "enforce_pr_isids": 1, 
            "fabric_max_sectors": 8192, 
            "is_nonrot": 0, 
            "max_unmap_block_desc_count": 1, 
            "max_unmap_lba_count": 8192, 
            "max_write_same_len": 4096, 
            "optimal_sectors": 8192, 
            "queue_depth": 128, 
            "unmap_granularity": 1, 
            "unmap_granularity_alignment": 0
          }, 
          "dev": "/iscsi_disks/disk01.img", 
          "name": "disk01", 
          "plugin": "fileio", 
          "size": 2147483648, 
          "write_back": true, 
          "wwn": "3267f7a8-b56b-448e-a0dd-b9f65906e96e"
        }
      ], 
      "targets": [
        {
          "fabric": "iscsi", 
          "tpgs": [
            {
              "attributes": {
                "authentication": 0, 
                "cache_dynamic_acls": 0, 
                "default_cmdsn_depth": 16, 
                "demo_mode_write_protect": 1, 
                "generate_node_acls": 0, 
                "login_timeout": 15, 
                "netif_timeout": 2, 
                "prod_mode_write_protect": 0
              }, 
              "enable": true, 
              "luns": [
                {
                  "index": 0, 
                  "storage_object": "/backstores/fileio/disk01"
                }
              ], 
              "node_acls": [
                {
                  "attributes": {
                    "dataout_timeout": 3, 
                    "dataout_timeout_retries": 5, 
                    "default_erl": 0, 
                    "nopin_response_timeout": 30, 
                    "nopin_timeout": 15, 
                    "random_datain_pdu_offsets": 0, 
                    "random_datain_seq_offsets": 0, 
                    "random_r2t_offsets": 0
                  }, 
                  "chap_password": "password", 
                  "chap_userid": "username", 
                  "mapped_luns": [
                    {
                      "index": 0, 
                      "tpg_lun": 0, 
                      "write_protect": false
                    }
                  ], 
                  "node_wwn": "iqn.2016-10.vdevops.org:vdevops.org"
                }
              ], 
              "parameters": {
                "AuthMethod": "CHAP,None", 
                "DataDigest": "CRC32C,None", 
                "DataPDUInOrder": "Yes", 
                "DataSequenceInOrder": "Yes", 
                "DefaultTime2Retain": "20", 
                "DefaultTime2Wait": "2", 
                "ErrorRecoveryLevel": "0", 
                "FirstBurstLength": "65536", 
                "HeaderDigest": "CRC32C,None", 
                "IFMarkInt": "2048~65535", 
                "IFMarker": "No", 
                "ImmediateData": "Yes", 
                "InitialR2T": "Yes", 
                "MaxBurstLength": "262144", 
                "MaxConnections": "1", 
                "MaxOutstandingR2T": "1", 
                "MaxRecvDataSegmentLength": "8192", 
                "MaxXmitDataSegmentLength": "262144", 
                "OFMarkInt": "2048~65535", 
                "OFMarker": "No", 
                "TargetAlias": "LIO Target"
              }, 
              "portals": [
                {
                  "ip_address": "0.0.0.0", 
                  "iser": false, 
                  "port": 3260
                }
              ], 
              "tag": 1
            }
          ], 
          "wwn": "iqn.2016-10.vdevops.org:storage.target00"
        }
      ]
    }
    
    EOF
    
    echo -e "33[31m
    查看3260端口是否打开33[0m"
    sleep 1s
    ss -napt | grep 3260
    sleep 3s
    
    systemctl enable target
    
    echo -e "33[31m即将使用EPEL源安装scsi-target-utils并配置33[0m"
    sleep 3s
    # 使用EPEL源安装scsi-target-utils
    yum --enablerepo=epel -y install scsi-target-utils 
    # 创建硬盘镜像
    dd if=/dev/zero of=/iscsi_disks/disk01.img count=0 bs=1 seek=2G
    
    cat >> /etc/tgt/targets.conf  <<EOF
    <target iqn.2016-10.vdevops.org:target00>
    backing-store /iscsi_disks/disk01.img
    initiator-address $ip2
    incominguser username password
    </target>
    EOF
    
    #开启并自启服务
    systemctl start tgtd
    systemctl status tgtd |grep Active:
    systemctl enable tgtd
    sleep 3s
    
    #查看状态
    echo -e "33[31m查看服务状态33[0m"
    sleep 3s
    tgtadm --mode target --op show
    
    

    客服端

    #!/bin/bash
    lsblk >lsblk1
    #测试主机是否可以联网
    echo -e "33[31m即将测试主机是否可以联网33[0m"
    if [ $? -eq 0 ];then
    		echo -e "33[31m主机可以联网继续脚本33[0m"
    else
    		echo -e "33[31m主机不可联网,即将退出脚本33[0m"
            exit
    fi
    #编写服务端与客户端IP地址
    echo -e "33[31m
    即将编写服务端与客户端IP地址33[0m"
    sleep 3s
    rm -rf ./ip
    cat >> ./ip <<EOF
    #在后面写IP地址,ip1为服务端,ip2为客户端
    export ip1=
    export ip2=
    EOF
    vi ./ip
    source ./ip
    
    echo -e "33[31m
    即将关闭firewalld与selinux33[0m"
    sleep 1s
    # firewalld config
    systemctl disable firewalld
    systemctl stop firewalld
    #关闭selinux
    setenforce 0
    
    echo -e "33[31m即将配置yum仓库文件33[0m"
    sleep 1s
    #创建本地仓库文件
    mkdir /mnt/cdrom
    mount /dev/sr0 /mnt/cdrom
    
    cat >> /etc/yum.repos.d/a.repo <<EOF
    [a]
    name=a
    baseurl=file:///mnt/cdrom
    gpgcheck=0
    EOF
    
    
    yum install -y wget vim
    #下载epel7仓库文件
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    yum repolist
    
    sleep 3s
    
    echo -e "33[31m即将使用EPEL安装iscsi-initiator-utils并配置33[0m"
    sleep 1s
    #使用EPEL安装iscsi-initiator-utils
    yum -y install iscsi-initiator-utils
    
    echo "InitiatorName=iqn.2016-10.vdevops.org:vdevops.org" >/etc/iscsi/initiatorname.iscsi
    
    echo "node.session.auth.authmethod = CHAP" >>/etc/iscsi/iscsid.conf
    echo "node.session.auth.username = username" >>/etc/iscsi/iscsid.conf
    echo "node.session.auth.password = password" >>/etc/iscsi/iscsid.conf
    
    # 发现target
    iscsiadm -m discovery -t sendtargets -p $ip1
    sleep 5s
    iscsiadm -m node -o show
    #登录target
    iscsiadm -m node --login
    #确认连接状态
    iscsiadm -m session -o show
    #确认分区状况
    echo -e "33[35m等待5s对比看是否多出一块disk磁盘33[0m"
    sleep 5s
    lsblk >lsblk2
    vim -O lsblk1 lsblk2
    
    
    
  • 相关阅读:
    使用wchar_t输入,显示中文
    MFC使用rich edit若干问题
    一种对话框嵌入MFC 文档结构效果的实现方法(一),让你的自定义对话框区域同客户区大小一起改变
    一种在MFC程序上显示jpeg图片的方法(二)曙光乍现
    一种在MFC程序上显示jpeg图片的方法(一)宁滥勿缺
    MFC---GDI之DC类杂记,以画尺子为例
    又让厂公着半天急----一例自定义MFC程序编译时LNK2019错误
    egret 引擎分析之三————egret make --egretversion xxxx 到底做了什么?
    egret 引擎分析之二————从selector.js说起
    egret 引擎分析之一————egret 命令的时候发生了什么
  • 原文地址:https://www.cnblogs.com/kklinux/p/iscsi_bash.html
Copyright © 2020-2023  润新知