存储技术与应用(ISCSI)

存储技术与应用

存储概述

存储的目标:

存储是根据不同的应用环境通过采取合理、安全、有效的方式将数据保存到某些介质上并能保证有效的访问;

一方面它是数据临时或长期驻留的物理媒介;

另一方面,它是保证数据完整安全存放的方式或行为;

存储就是把这两个方面结合起来,向客户提供一套数据存放解决方案

存储技术分类

SCSI(Small Computer System Interface)小型计算机系统接口

作为输入/输出接口,主要用于硬盘、光盘、磁带机等设备

DAS(Direct-Attached Storage)直连存储

将存储设备通过SCSI接口或光纤通道直接连接到计算机上

不能实现数据与其他主机的共享

占用服务器操作系统资源,如CPU、IO等

缺点:数据量越大,性能越差

NAS(Network-Attached Storage)网络技术存储

一种专用数据存储服务器,以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资

用户通过TCP/IP协议访问数据:采用标准的NFS/HTTP/CIFS

缺点:存储空间固定,不方便扩展。

SAN(Storage Area Network)存储区域网络

通过光纤交换机、光纤路由器、光纤集线器等设备将磁盘阵列、磁带等存储设备与相关服务器连接起来,形成高速专网网络

组成部分:如路由器、光纤交换机;

接口:如SCSI、FC;

通信协议:如IP、SCSI

FC(Fibre Channel)光纤通道

一种适合于千兆数据传输的、成熟而安全解决方案,与传统的SCSI相比,FC提供更高的数据传输速率、更远的传输距离,更多的设备连接支持以及更稳定的性能、更简易的安装

FC主要组件:光纤、HBA(主机总线适配置器)、FC交换机

FC交换机交换拓扑:点到点(point-to-point):简单将两个设备互连

已裁定的环路(arbitrated loop):可多达126个设备共享一段信道或环路

交换式拓扑(switched fabric):所有设备通过光纤交换机互连

它的扩展:FC_SAN,IP_SAN(IP指双绞线)

ISCSI(Internet SCSI)技术

IETF制定的标准,将SCSI数据块映射为以太网数据包,是一种基于IP Storage理论的新型存储技术。

将存储行业广泛应用的SCSI接口技术与IP网络相结合。可以在IP网络上构建SAN。

最初由Cisco和IBM开发

ISCSI技术优势:基于IP协议技术的标准;

允许网络在TCP/IP协议上传输SCSI命令;

相对FC SAN,ISCSI实现的IP SAN投资更低;

解决了传输效率、存储容量、兼容性、开放性、安全性等方面的问题;

没有距离限制。

客户端:iSCSI Initiator:软件实现,成本低、性能较低

    iSCSI HBA:硬件实现,性能好,成本较高

存储设备端:iSCSI Target

以太网交换机

 

iSCSI技术应用

iSCSI操作流程

Target端:选择target名称--->安装iSCSI target--->准备用于target的存储--->配置target--->启用服务

Initiator端:安装initiator--->配置initiator并启动服务

 

iSCSI命名规范

建议采用IQN(iSCSI限定名称)

全称必须全局唯一

IQN格式:iqn.<date_code>.<reversed_domain>.<string>[:<substring>]

 

部署iSCSI服务

201存储服务器把本机的磁盘B和C共享给前端的应用服务器(网站服务器)101和102使用。

配置后端存储201

1 准备存储介质 /dev/vdb、/dev/vdc、/dev/vdd    均为5G大小

网卡名称问题

[root@stu ~]# ifconfig -a

修改网卡名

在virt-manager中查看虚拟机连接到private1网卡的MAC地址

[root@stu ~]# vim /etc/udev/rules.d/70-persistent-net.rules

查找到不存在的mac地址行,先删除,再将正确的mac地址网卡改名

改完名之后,reboot重启,就可以得到正确的eth0了

配置ip地址

[root@stu ~]# setup

Network Configuration ->Device Configuration ->eth0

[root@stu ~]# service network restart

4、主机名

[root@stu ~]# setup

Network Configuration ->DNS Configuration

 

配置yum

(1)在宿主机上挂载光盘到ftp共享目录

[root@room4pc09 ~]# mkdir /var/ftp/rhel6.7

[root@room4pc09 ~]# ls /ISO/rhel-server-6.7-x86_64-dvd.iso >> /etc/fstab

[root@room4pc09 ~]# vim /etc/fstab

/ISO/rhel-server-6.7-x86_64-dvd.iso     /var/ftp/rhel6.7        iso9660 loop    0 0

[root@room4pc09 ~]# mount -a

(2)修改配置文件

[root@room4pc09 ~]# vim /etc/yum.repos.d/rhel6.repo

[rhel6]

name=rhel6

baseurl=ftp://192.168.4.254/rhel6.7

enabled=1

gpgcheck=0

(4)防火墙和selinux

[root@vh01 ~]# service iptables status

[root@vh01 ~]# getenforce

3台VM,第一台加一块硬盘,用作提供存储的一端

# qemu-img create -f qcow2 /var/lib/libvirt/images/iscsi1.img 5G

为客户端提供存储,服务器端就需要有存储介质,存储介质可以是磁盘分区,也可以是逻辑卷,还可以是dd出来的磁盘文件

[root@vh01 ~]# parted /dev/vdb

(parted) mklabel gpt

(parted) mkpart primary ext4 1M 100% -1   # -1表示结尾

(parted) print

(parted) quit  

# partprobe

[root@vh01 ~]# lsblk         应该本地多发现了一块硬盘

注意:分区后千成不要格式化!!!

注意:千万不要在两个节点上同时挂载sda1,否则会导致文件系统损坏,数据丢失

分区,注意千万不要格式化

[root@vh01 ~]# parted /dev/vdb

(parted) mklabel gpt   新硬盘,使用一次

(parted) mkpart primary ext4 1M 100%  创建主分区

(parted) print

(parted) quit  

创建逻辑卷

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

 

2 配置

2.1 装包

[root@storage201 ~]# yum list |grep -i scsi   //查询yum仓库

[root@storage201 ~]# rpm -q scsi-target-utils

[root@storage201 ~]# yum -y install  scsi-target-utils

[root@storage201 ~]# yum info scsi-target-utils       //查看iSCSI target信息

2.2 修改配置文件

命令行配置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

 

配置文件修改:配置永久生效,配置相对简单

# vim /etc/tgt/targets.conf

</target>

<target iqn.2017-11.cn.tedu:storage201.diskb>

    backing-store /dev/vdb            //定义存储设备

    initiator-address 192.168.4.101   //定义ACL,客户端IP

    initiator-address 192.168.4.102

</target>

 

[root@storage201 ~]# rpm -qc scsi-target-utils

/etc/sysconfig/tgtd

/etc/tgt/targets.conf

[root@storage201 ~]# cp /etc/tgt/targets.conf  /root

[root@storage201 ~]# vim /etc/tgt/targets.conf

配置在容器<target 名称.日期.主机所在域:服务器名.当前磁盘扫描名> </target>内

<target iqn.2017-11.cn.tedu:storage201.diskb>

    backing-store /dev/vdb

    write-cache off

    vendor_id tarena      ##厂商

    product_id disktwo

    initiator-address 192.168.4.101

    initiator-address 192.168.4.102

</target>

<target iqn.2017-11.cn.tedu:storage201.diskc>

    backing-store /dev/vdb

    write-cache off

    vendor_id tarena      ##厂商

    product_id diskthree

    initiator-address 192.168.4.101

    initiator-address 192.168.4.102

</target>

2.3 启动服务

[root@storage201 ~]# service tgtd start

[root@storage201 ~]# chkconfig tgtd on     //设置服务开机运行

[root@storage201 ~]# netstat -pantul |grep tgtd

[root@storage201 ~]# ps -C tgtd

[root@storage201 ~]# tgt-admin --show  //也可写成tgt-admin -s,查看生效信息

//查看到LUN和ACL才是正确的

如果中间遇到错误,重启tgtd服务可能不生效,需要强制重启

# service tgtd force-restart

如果仍然不成功,则需要reboot

2.4 验证配置

# lsof -l /dev/sda1  查看哪个进程在使用sda1

 

配置前端应用服务器101、102

在RHEL6系统中,默认通过scsi-target-utils软件包提供iSCSI服务,因此需要在服务端安装scsi-target-utils包并配置对应的服务,iSCSI服务主要配置选项如表所示。

客户端挂载iSCSI服务器:

客户端需要安装iscsi-initiator-utils软件包

客户端使用命令挂载后需要分区、格式化并进行挂载测试

 

1 装包 web102与web101相同的配置,下边省略

[root@web101 ~]# yum list |grep -i iscsi       //查询yum仓库

[root@web101 ~]# yum -y install iscsi-initiator-utils

[root@web101 ~]# yum info iscsi-initiator-utils      //查看iSCSI target信息

2 启用服务

[root@web101 ~]# service iscsi restart

[root@web101 ~]# chkconfig iscsi on  # iscsi用于自动login

[root@web101 ~]# chkconfig iscsid on # iscsi是服务

[root@web101 ~]# lsblk

 [root@web101 ~]# rpm -qc iscsi-initiator-utils

/etc/iscsi/iscsid.conf

/etc/logrotate.d/iscsiuiolog

3 发现共享存储设备

[root@web101 ~]# man iscsiadm 找到EXAMPLES

格式:iscsiadm --mode node --targetname iqn_name --portal ip:port -l

[root@web101 ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.201 --discover

发现可用的target:iscsiadm -m discovery -t sendtargets -p 192.168.4.201:3260

4 登录共享存储设备

登录target:

[root@web101 ~]# iscsiadm --mode node --targetname iqn.2017-11.cn.tedu:storage201.diskb --portal 192.168.4.201:3260 -l

iscsiadm -m node -P N    //(N=0,1)

iscsiadm -m session -P N    //(N=0-3)

iscsiadm -m discovery -P N    //(N=0,1)

登出target:

[root@web101 ~]# iscsiadm --mode node --targetname iqn.2017-11.cn.tedu:storage201.diskb --portal 192.168.4.201:3260 -u

查看共享存储设备:

[root@web101 ~]# ls /dev/sd*

//谁先登谁获得sda的名称,所以我们要给登录的设备取固定的名称

5 配置UDEV

设备文件管理方法:

devfs:Linux早期采用的静态管理方法;/dev目录下有大量静态文件;内核版本2.6.13开始被完全取代

udev: 动态管理硬件文件的方法。只有连到系统上来的设备在/dev下创建设备文件;与主、次设备编号无关;为设备提供持久、一致的名字

接入设备事件链

内核发现设备并导入设备状态到sysfs

udev接到事件通知

udev创建设备节点或是运行指定程序

udev通知hald守护进程

HAL探测设备信息

HAL创建设备对象结构

HAL通过系统消息总线广播该事件

用户程序也可以监控该事件

udev的作用

从内核收到添加/移除硬件事件时,udev将会分析:

/sys目录下信息

/etc/udev/rules.d目录中的规则

对于Linux kernel 2.6及更新的操作系统版本udev是系统的设备管理器,udev会分析sysfs的数据,并根据自己的udev规则,实现如下功能:

处理设备命名

决定要创建哪些设备文件或链接

决定如何设置属性

决定触发哪些事件

配置udev:

主配置文件/etc/udev/udev.conf

udev_root:创建设备文件位置,默认为/dev

udev_rules :udev规则文件位置,默认为/etc/udev/rules.d

udev_log:syslog优先级,缺省为err

文件位置及格式:

/etc/udev/rules.d/<rule_name>.rules

例:75-custom.rules

规则格式:

<match-key> <op> <value> [,...] <assignment-key> <op> value [,...]

BUS==”usb”,SYSFS{serial}==”20043512321411d34721”,NAME=”udisk”

Udev规则文件,常见指令操作符如表所示。

可以简化或缩写规则:KERNEL==”sda*”,SYMLINK+=”iscsi%n”

udev常用替代变量:

%k:内核所识别出来的设备名,如sdb1

%n:设备的内核编号,如sda3中的3

%p:设备路径,如/sys/block/sdb/sdb1

%%:%符号本身

 

5.1 获取磁盘的参数

[root@web101 ~]# cd /etc/udev/rules.d/

[root@web101 ~]# iscsiadm -m discovery -t sendtargets -p 192.168.4.201:3260

[root@web101 ~]# iscsiadm --mode node --targetname iqn.2017-11.cn.tedu:storage201.diskb --portal 192.168.4.201:3260 -l

[root@web101 ~]# ls /dev/sd*

[root@web101 rules.d]# udevadm info --query=path --name=/dev/sda

   //获取设备的内核参数信息(硬件的sys路径)

/devices/platform/host3/session2/target3:0:0/3:0:0:1/block/sda

格式:udevadm info --path=内核参数信息 --attribute-walk

[root@web101 rules.d]# udevadm info --attribute-walk

--path=/devices/platform/host3/session2/target3:0:0/3:0:0:1/block/sda 

5.2 编写udev文件

udev默认规则存放在/etc/udev/rules.d目录下,通过修改次目录下的规则实现设备的命名、属性、链接文件等。

[root@web101 ~]# vim /etc/udev/rules.d/70-iscsi.rules

//以下内容由内核信息中查到:块设备,空间大小,厂商,磁盘名,链接(自定义)

SUBSYSTEM=="block",ATTR{size}=="10485760",ATTRS{vendor}=="tarena  ",ATTRS{model}=="disktwo         ",SYMLINK+="iscsi/diskb"

SUBSYSTEM=="block",ATTR{size}=="10485760",ATTRS{vendor}=="tarena  ",ATTRS{model}=="diskthree       ",SYMLINK+="iscsi/diskc"

5.3 重启udev程序

[root@web101 ~]# start_uedv

[root@web101 ~]# scp /etc/udev/rules.d/70-iscsi.rules 192.168.4.102:/etc/udev/rules.d/     //拷贝给web102

5.4 查看是否生成对应的链接文件(查看/dev目录下是否有对应的设备名):

[root@web101 ~]# ls -l /dev/iscsi/disk*

 

示例:编写udev规则,实现以下目标:

当插入一个U盘时,该U盘自动出现一个链接称为udisk

U盘上的第1个分区名称为udisk1,以此类推,终端上出现提示”udisk plugged in”

步骤一:编写udev规则

查看设备属性

[root@svr5 ~]# udevadm monitor –property       //udev事件监控

[root@svr5 ~]# udevadm info --query=path –name=/dev/sdb

[root@svr5 ~]# udevadm info --query=property --path=/block/sdb

2)编写udev规则文件

[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规则是否成功。

//查找到能够表明该硬件是USB存储的信息,编写规则文件

[root@room9pc16 ~]# vim /etc/udev/rules.d/90-udisk.rules

ACTION=="add", KERNEL=="sd[a-z]*", SUBSYSTEMS=="usb", SYMLINK+="udisk%n"

//将U盘重新插入到主机,将会出现/dev/udisk

//识别U盘个性信息

[root@room9pc16 ~]# vim /etc/udev/rules.d/90-udisk.rules

ACTION=="add", KERNEL=="sd[a-z]*", SUBSYSTEMS=="usb", ATTRS{serial}=="0D80E897", ATTRS{manufacturer}=="Generic", SYMLINK+="myudisk%n", RUN+="/bin/wall hello"

 

UDEV:它是动态管理设备文件的方法

一、为U盘创建一个符号链接,叫udisk

1、获取U盘的路径

[root@room9pc16 nsd1702]# udevadm info --query=path --name=/dev/sdb1

/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1

2、获取U盘所有信息

[root@room9pc16 nsd1702]# udevadm info --query=all --attribute-walk --path=/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/host4/target4:0:0/4:0:0:0/block/sdb/sdb1

3、创建规则

[root@room9pc16 nsd1702]# vim /etc/udev/rules.d/90-udisk.rules

ACTION=="add", KERNEL=="sd[a-z]*", SUBSYSTEMS=="usb", SYMLINK+="udisk%n"

4、重新接入U盘,查看结果

[root@room9pc16 nsd1702]# ll /dev/udisk*

二、为自己的U盘起名为myudisk

作法以和前面完全一样,只要找出你自己U盘的唯一信息

[root@room9pc16 nsd1702]# vim /etc/udev/rules.d/90-udisk.rules

ACTION=="add", KERNEL=="sd[a-z]*", SUBSYSTEMS=="usb", ATTRS{serial}=="0D80E897", ATTRS{manufacturer}=="Generic", ATTRS{product}=="Mass Storage", SYMLINK+="myudisk%n"

三、改虚机网卡名

[root@vh03 ~]# vim /etc/udev/rules.d/70-persistent-net.rules

 

 

5 分区

格式:fdis 磁盘名

[root@web101 ~]# fdisk -cul       //查看挂载的iSCSI共享盘

[root@web101 ~]# fdisk -l

[root@web101 ~]# fdisk  /dev/iscsi/diskb

//n--->p--->1--->回车--->回车--->p--->w

[root@web101 ~]# fdisk  -l /dev/iscsi/diskb    

[root@web101 ~]# ll /dev/sd*

6 格式化

格式:mkfs.ext3/4 分区名        查看:blkid 分区名

[root@web101 ~]# mkfs.ext3 /dev/sdb1

[root@web101 rules.d]# blkid /dev/sdb1

/dev/sdb1: UUID="94a07e70-3dc1-4989-8117-3b22ce515518" SEC_TYPE="ext2" TYPE="ext3"

7 挂载

格式:mount -t 文件系统类型 分区名 挂载点

[root@web101 ~]# mount -t ext3 /dev/sdb1 /var/www/html/

[root@web101 ~]# df -h /dev/sdb1

8 存储数据

# vim 挂载点/test.html

[root@web101 ~]# echo "XXXXXXXXXX" > /var/www/html/test.html

Web102也要挂载到相同位置(要先登出共享设备,再登录):

[root@web102 ~]# ll /dev/sd*

[root@web102 ~]# mount -t ext3 /dev/sdb1 /var/www/html/

[root@web102 ~]# cat /var/www/html/test.html

 

分区、格式化

[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@web101 ~]# parted /dev/sda

(parted) mklabel gpt

(parted) mkpart primary ext4 1M 4096M

(parted) quit

[root@web101 ~]# mkfs.ext4 /dev/sda1

[root@vh03 ~]# partprobe

千万注意:不要在vh02和vh03上对共享存储的相同分区同时挂载,同时挂载将会导致文件系统崩溃、数据丢失

缺点:web101、web102双方写入新文件或更新文件时,彼此看不到对方写入的新文件或更新文件内容。这是由文件系统为本地文件系统ext3造成的。

要解决,可使用脚本监控,获取vip的挂载共享权限,服务中止时卸载共享权限。或使用gfs文件系统进行共享。

 

附:如果希望RHEL6也支持各级别的命令tab键补全,可以把rhel7光盘的bash-completion rpm包安装并reboot。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iSCSI存储是一种基于块存储协议的存储技术。它使用TCP/IP网络将远程存储设备连接到主机系统。 iSCSI存储具有以下几个优点:首先,它可以通过使用现有的以太网基础设施来实现存储共享,无需额外的专用硬件。其次,iSCSI存储提供了高度的灵活性,可以根据需要扩展存储容量。另外,它的运行成本相对较低。此外,iSCSI存储还具有高可靠性和高性能的特点。总而言之,iSCSI存储通过利用TCP/IP网络连接存储设备,为用户提供了一种可靠、高性能、灵活和成本效益高的存储解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [块存储、文件系统存储以及对象存储的特性及其应用](https://blog.csdn.net/Jack__iT/article/details/112760145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [ISCSI企业共享存储方案](https://download.csdn.net/download/machen_smiling/10852396)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值