openstackiscsi存储
⑴ iscsi共享存储的简单配置和应用
1、环境介绍
SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议。从根本上说,iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法,ISCSI使用 以太网 协议传送SCSI命令、响应和数据。ISCSI可以用我们已经熟悉和每天都在使用的以太网来构建IP存储局域网。通过这种方法,ISCSI克服了直接连接存储的局限性,使我们可以跨不同 服务器 共享存储资源,并可以在不停机状态下扩充存储容量。
所需软件与软件结构
CentOS 将 tgt 的软件名称定义为 scsi-target-utils ,因此你得要使用 yum 去安装他才行。至于用来作为 initiator 的软件则是使用 linux-iscsi 的项目,该项目所提供的软件名称则为 iscsi-initiator-utils 。所以,总的来说,你需要的软件有:
scsi-target-utils:用来将 Linux 系统仿真成为 iSCSI target 的功能;
iscsi-initiator-utils:挂载来自 target 的磁盘到 Linux 本机上。
那么 scsi-target-utils 主要提供哪些档案呢?基本上有底下几个比较重要需要注意的:
/etc/tgt/targets.conf:主要配置文件,设定要分享的磁盘格式与哪几颗;
/usr/sbin/tgt-admin:在线查询、删除 target 等功能的设定工具;
/usr/sbin/tgt-setup-lun:建立 target 以及设定分享的磁盘与可使用的
客户端等工具软件。
/usr/sbin/tgtadm:手动直接管理的管理员工具 (可使用配置文件取代);
/usr/sbin/tgtd:主要提供 iSCSI target 服务的主程序;
/usr/sbin/tgtimg:建置预计分享的映像文件装置的工具 (以映像文件仿真磁盘);
这次的实验结构
(sdx1、sdy1是物理的磁盘通过lun连接到target虚拟的共享块,在客户端挂载这个块。这里我们添加一块硬盘sdb,创建sdb1(400m)和sdb2(500m))
2、server端配置
添加一块磁盘后
复查一下
安装target并加入开机自启动
yum install -y target*
systemctl start target
systemctl enable target
配置target的ctl将sdb1和sdb2共享出去
(一)、block关联磁盘
(二)、创建target
(三)、创建lun关联block和target
至此服务器端就配置完了,详细的配置可以到/etc/target/saveconfig.json修改
3、client端配置
(一)、安装iscsi*
软件包 iscsi-initiator-utils-6.2.0.873-29.el7.x86_64
软件包 iscsi-initiator-utils-iscsiuio-6.2.0.873-29.el7.x86_64
[root@200 ~]# yum install -y iscsi*
(二)、加入开机自启
[root@200 ~]# systemctl restart iscsid.service
[root@200 ~]# systemctl enable iscsid.service
(三)、做一个发现的操作,发现服务器共享的target名字是什么
(四)、查看发现的条目
(五)、修改客户端的acl并登录
注:这个自动加载过来的磁盘重启之后是自动加载过来的
4、客户端挂载iscsi的盘
格式化sdb和sdc
创建挂载点并挂载
[root@200 ~]# mkdir /sdb
[root@200 ~]# mkdir /sdc
注:如果需要实时同步的话需要使用gfs集群文件系统
5、总结
(一)、增加iscsi存储
(1)发现iscsi存储:iscsiadm
-m discovery -t st -p ISCSI_IP
(2)查看iscsi发现记录:iscsiadm
-m node
(3)登录iscsi存储:iscsiadm
-m node -T LUN_NAME -p ISCSI_IP -l
(4)开机自动:
iscsiadm -m node –T LUN_NAME -p ISCSI_IP --op
update -n node.startup -v
automatic
(二)、删除iscsi存储
(1)登出iscsi存储
iscsiadm -m node -T LUN_NAME -p ISCSI_IP -u
(2)对出iscsi所有登录
iscsiadm -m node --logoutall=all
(3)删除iscsi发现记录:iscsiadm
-m node -o delete -T LUN_NAME -p ISCSI_IP
⑵ 服务器iscsi存储挂载初始化会删除数据吗
会删除。
既然要使用iSCSI存储技术为远程用户提供共享存储资源,首先要保障用于存放资源的服务器的稳定性与可用性,否则一旦在使用过程中出现故障,则维护的难度相较于本地硬盘设备要更加复杂、困难。iSCSI技术在工作形式上分为服务端(target)与客户端(initiator)。iSCSI服务端即用于存放硬盘存储资源的服务器,它作为前面创建的RAID磁盘阵列的存储端,能够为用户提供可用的存储资源。iSCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源。挂载iSCSI为本地磁盘的详细步骤:1.首先登陆DSM,打开iSCSI Manager套件,点击Target,再点击新增;2.可以自行输入target名称方便区分,也可以使用默认名称,点击下一步。如果网络使用环境比较复杂的话,可以勾选启用CHAP加密协议,输入名称和密码以及确认密码,家庭用户一般不用启用,启用的话之后挂载也要输入对应的CHAP密码,这里先不勾选,以后需要加密时也可以再回来设置;3.默认选中新增,继续点击下一步;4.这里名称可以自己取,也可以使用默认的。位置选择用来存放数据的的存储空间,总容量iSCSI盘的总容量,其他选项保持默认,点击下一步;5.经过以上4个步骤后就创建好了iSCSI服务,在Target界面可以看到服务属性。
⑶ OpenStack 之 虚拟化原理
一个KVM(kernel-based virtual machine)虚拟机在宿主机上就是一个 qemu-kvm进程,与其他Linux进程一样被调用。 虚拟机的每个虚拟CPU则对应 qemu-kvm进程中的一个进程。 因此,虚拟CPU可以超过物理CPU的数量,叫CPU超配。
KVM通过内存虚拟化共享物理系统内存,动态分配给虚拟机。
为了在一台机器上运行多个虚拟机,KVM需要实现VA(虚拟内存) --> PA(物理内存) --> MA(机器内存)的转换,其中虚拟机OS控制VA->PA的转换,KVM负责PA->MA的映射。
KVM的虚拟化通过存储池(Storage Pool)和卷(Volume)实现。 存储池是宿主机可见的一片存储空间,,可以分为多种类型。 卷是存储池的一块空间,卷在虚拟机眼中就是一块硬盘。 不同类型的存储池:
文件目录是最常见的存储池。 目录是一个存储池,默认是 /var/lib/libvirt/images/ 目录里的一个文件就是一个卷。
使用文件做卷的优点:
KVM支持多种卷格式:
宿主机上的VG(Volume Group)中的LV(Logical Volume)作为虚拟磁盘分配给虚拟机使用,只能作为数据盘,不能作为启动盘,因为它没有MBR引导记录。 这种情形,主机的VG就是存储池,LV就是卷。
KVM还支持 iSCSI, Ceph等多种类型的存储池。
假设宿主机有1块物理网卡 en0 , 运行着一个虚拟机VM1。那问题是如何让VM1访问外网呢? a):将物理网卡直接分配给虚拟机,但这样会导致宿主机和其他的虚拟机没有网络连接了。 b):给虚拟机分配一个虚拟网卡 vnet0 , 通过Linux Bridge br0 将 en0和vnet0连接起来。这个是实际采用的方案。
Linux Bridge可以看做是物理接口和虚拟接口的转发器。
如果添加虚拟机VM2,自然也给它分配虚拟网卡 vet0 , 这两块虚拟网卡都通过 br0 和en0通信,并且虚拟机之前是可以直接通信的。因此br0就充当了两台虚拟机的出口网关。
没有VLAN之前,连在同一交换机上的主机共享广播域,独占冲突域,相互之间可以直接通信。 VLAN 能够将一个交换机的端口划分为若干个组, 使得连接在同一组中端口的主机位于同一逻辑网络中,不同VLAN间通信需要经过三层路由。
VLAN是二层上的隔离,隔离广播指的是二层以太网广播帧,和三层的IP广播报文区别开来。
VLAN用VLAN ID 唯一标示组,范围是 [1, 4096]。 支持VLAN的交换机因而具有两种端口:access端口和trunk端口。 access口隶属某一个组,只能把access口划分给一个VLAN组,没有显式指定,默认在0号组。 trunk口允许不同的VLAN帧通过,通常是连接两个交换机的端口模式。
eth0 是宿主机的物理网卡, eth0.10 是与它连接的子设备。
eth0.10就是VLAN设备,vlan id 是10。
eth0.10挂载在 brvlan10 的Linux Bridge上, 虚拟机VM1的虚拟网卡 vnet0 也挂载在 brvlan10上。
如此一来,vnet0, brvlan10 和 eth0.10 都接在VLAN10 的Access口上。而eth0充当trunk口。
如果再增加一个VLAN2
那么VM2的三个虚拟接口都是接在VLAN 20 上的。对于新创建的虚拟机,只要为它创建一个VLAN组,并将其虚拟网卡放到这个组中,就能共享宿主机的物理网卡了。还有,一个物理网卡可以为多个虚拟网卡服务,而一个虚拟网卡则只能对应于一块物理网卡。即一对多关系。
对LVM的网络虚拟化总结:
所以,Linux Bridge + Vlan 模拟了现实的二层交换机。
⑷ 如何基于openstack管理配置数据
OpenStack软件包括许多不同的模块,针对云环境中各个方面:
Swift:对象存储
Cinder:块存储
Nova:虚拟机计算
Neutron:网络
Horizon: 仪表盘
Keystone:认证服务
Glance:镜像服务
Ceilometer:遥测
Heat:编排
Trove:数据库即服务
随着每一个OpenStack的代码发布(目前是第九个版本,叫做IceHouse),新项目被创建或者从已有的项目上“分支”出来或者开一个全新的分支,包括用于裸机管理的Ironic以及会在OpenStack的Juno版本中发布的Sahara,用于弹性MapRece。
数据服务由以上的五个组件来提供。Swift是一个子项目,为OpenStack基础架构提供对象存储的功能。块存储由Cinder提供,使用标准的象iSCSI和NFS这样的IP存储协议。Glance为VM镜像提供一个知识库,使用底层的基本文件系统或者Swift作为存储。Trove提供数据库即服务 (DBaaS) 的能力,而Sahara提供弹性MapRece的功能,后者也被称为Hadoop集群存储。这篇文章,我们将着重讲述Cinder和Swift这两大主要的存储平台。
Cinder块存储
块存储是虚拟基础架构中必不可少的组件,是存储虚拟机镜像文件及虚拟机使用的数据的基础。直到2012年OpenStack Folsom的发布才引入了Cinder,VM镜像是短暂的,它们的存储只维持在那台虚拟机的生命周期。Cinder提供对块存储的管理支持,通过使用iSCSI, 光纤通道或者NFS协议,以及若干私有协议提供后端连接,展现给计算层(Nova)。
Cinder接口提供了一些标准功能,允许创建和附加块设备到虚拟机,如“创建卷”,“删除卷”和“附加卷”。还有更多高级的功能,支持扩展容量的能力,快照和创建虚拟机镜像克隆。
许多厂商在他们现有的硬件平台上提供对Cinder块的支持,通过使用一个Cinder驱动将Cinder API转换成厂商特定的硬件命令。提供Cinder支持的厂商包括了EMC(VMAX和VNX),惠普(3PAR StoreServ和StoreVirtual),日立数据系统,IBM(跨所有存储平台),NetApp,Pure Storage和SolidFire。还有一些基于软件的解决方案,比如EMC(ScaleIO)和Nexenta。
另外,许多软件存储实现,包括开源平台,都可以用于提供对Cinder的支持,这些软件中包括红帽的Ceph和GlusterFS。Ceph已经被集成到Linux内核中,使其成为最简单的一种为OpenStack部署环境提供块存储的方法。
NFS的支持是在2013年OpenStack的第七个版本引入的,又叫Grizzly,尽管之前Folsom有提供“试验性的”技术支持。在NFS的环境中,VM磁盘分区被当作单个的文件,这和在VMware ESXi虚拟程序或者微软的Hyper-V的VHD所使用的方法相似。将VM磁盘分区封装成文件可以实现类似快照和克隆这样的功能。
存储功能已引入Cinder的后续版本,之后一直被存储厂商们支持。支持的各种厂商平台和功能的完整列表可以在OpenStack的关于OpenStack块存储驱动器的Wiki页面找到。
Swift对象存储
OpenStack中的对象存储通过Swift来达成,Swift实现了分布在OpenStack的集群节点的横向扩展的对象存储。对象存储将数据以二进制对象的方式存储,没有特别的格式要求。Swift使用简单的类似PUT或GET(基于HTTP网络协议,也被称为RESTful API)的命令对对象进行存取操作。
Swift架构被分割成一些逻辑服务,包括对象服务器,代理服务器,容器服务器和帐户服务器,整个一起被称作一个ring。数据同其他用于追踪与每个存储对象相关的元数据和管理数据访问的组件一起存储在对象服务器上。
在Swift中使用zone的概念来管理数据的弹性。一个zone是一个ring的子部件,用于提供数据的一个拷贝,多个zone则用来存储冗余的数据拷贝,被称为replica(默认最少3个)。Swift能用一个单独的磁盘或者服务器来代表一个zone,包括数据中心之间的数据地理分布。
同许多对象存储一样,Swift使用最终一致性的思想来实现数据的弹性。这意味着数据不是象块存储那样以同步的方式在整个OpenStack集群里复制,而是在zone之间以一个后台任务的形式进行复制,这在系统高负载的情况下也许会挂起或者失败。
与块存储的同步复制提供高级别的可靠性功能相比,最终一致性也许看起来会更具风险。但是,在可扩展性,性能和弹性中总是得做出取舍。最终一致性使得一个记录归档比在一个基于块存储的系统更容易具备可扩展性,就Swift而言,代理服务器会确保取得最近一次的数据拷贝,即便在该集群里的一些服务器无法访问的时候。
和所有的OpenStack项目一起,随着每个版本的发布,Swift不断被开发出新的功能和功能增强。OpenStack Grizzly引入了更细粒度的replica控制,允许ring能够调整replica的数量。另外,通过基于对象服务器的时间排序的思想,改善了对象读取的性能。使得数据能够通过最快响应速度的对象服务器传递,这对于扩展到广域网很重要。
由于Swift使用HTTP协议,这样在OpenStack里使用第三方存储方案,包括Cleversafe,Scality的产品或者类似于Amazon Web Service简单存储服务(S3)这样的公有云,进行对象存储的做法会非常实用。
Swift还是Cinder?做出正确的选择
很显然Swift和Cinder为完全不同类型的数据需求服务。对象存储(通过Swift)被设计成专门针对诸如媒体,镜像和文件之类的对象型数据的高可扩展性存储。这些系统的重点在于能够大量扩展数据而不依赖于那些类似RAID的传统存储拥有的特性。但是,最终的一致性模型意味着Swift不适合存储像虚拟机这样的数据。
尽管Swift使用元数据来追踪对象和他们的版本,对象存储仍然需要额外的逻辑来追踪所存的对象上的用户元数据。这部分将需要用户自己来构建到应用程序中去。
Cinder提供块存储组件来存储持久化对象,比如虚拟机和定期在数据库中更新的数据。块存储的功能可以在整个OpenStack集群中实现,通过一些商用组件,使用内置的工具,如服务器逻辑盘管理器或者NFS,来传输存储资源。另外,开源解决方案如Ceph的和GlusterFS,提供从OpenStack的主代码中单独打包OpenStack存储模块的能力,同时仍保留可以使用开源软件的灵活性。
随着Cinder的广泛支持,现有的传统存储方案可以用到OpenStack部署环境中来提供存储服务。当一个IT组织已经具备了这种技术并且硬件平台也到位的情况下,这也许是他们更愿意采用的方式。现有的存储平台技术已经很发达,并且支持一些存储优化的高级功能,比如精简配置,重复数据删除和压缩。许多现在还提供服务质量(比如HP的3PAR StoreServ和SolidFire的平台),让它们适合在混合工作负载下而不是单纯的用于OpenStack的部署。其结果带来的一个显着的益处就是,可以将“繁重”的任务卸载到一个外部存储阵列。
在做出使用一个特定平台的决策中,系统架构师们需要权衡风险与使用OpenStack“”方案(仍然需要硬件)或者使用专属硬件提供的功能所花费的成本。
OpenStack存储备份
最后,我们应该考虑在OpenStack里备份数据的需求。备份OpenStack环境中的关键配置组件的具体细节已经有很好的文档描述,但是备份在一个OpenStack集群里的数据被视为用户自己的责任。备份可以通过使用外部存储供应商来轻松实现,比如说,SolidFire提供将整个集群备份到AmazonS3或者Swift兼容的对象存储中的功能。或者,用户将需要查看现有的支持他们的OpenStack虚拟机管理程序的备份产品。
Raksha是一个新的项目提议,将备份即服务的功能集成到OpenStack的框架中。会同时支持完全及增量的虚拟机备份到一个Swift“端”,并能让应用保持一致性。Raksha目前是一个独立的项目,不属于核心OpenStack框架。要将它集成到一般的类似VSphere和Hyper-V这样的虚拟化平台中会需要花一些功夫,但是至少可以提供一个更整合的解决方案来对OpenStack环境中的数据进行保护。
⑸ iSCSI存储连接的几种方式
根据主机端HBA卡、网络交换机的不同,iSCSI设备与主机之间有三种连接方式。第一种:以太网卡+initiator软件方式。服务器、工作站等主机使用标准的以太网卡,通过以太网线直接与以太网交换机连接,iSCSI存储也通过以太网线连接到以太网交换机上,或直接连接到主机的以太网卡上。在主机上安装Initiator软件。安装Initiator软件后,Initiator软件可以将以太网卡虚拟为iSCSI卡,接受和发送iSCSI数据报文,从而实现主机和iSCSI设备之间的iSCSI协议和TCP/IP协议传输功能。这种方式由于采用普通的标准以太网卡和以太网交换机,无需额外配置适配器,因此硬件成本最低。缺点是进行ISCSI存储连接中包文和TCP/IP包文转换要点主机端的一部分资源。不过在低I/O和低带宽性能要求的应用环境中和完全满足数据访问要求。目前很多最新版本的常用操作系统都提供免费的Initiator软件,建立一个存储系统除了存储设备本身外,基本上不需要投入更多的资金来,因此在三种系统连接方式中其建设成本是最低的。第二种:硬件TOE网卡+initiator软件方式。第一种方式由于采用普通以太网卡和以太网交换机,无需额外配置适配器,或专用的网络设备,因此硬件成本最低。
⑹ iscsi、cifs、nfs在存储上的区别。
iscsi、cifs、nfs区别为:对象不同、环境不同、方式不同。
一、对象不同
1、iscsi:iscsi是针对数据块存储的。
2、cifs:cifs是针对共享文件存储的。
3、nfs:nfs是针对共享文件存储的。
二、环境不同
1、iscsi:iscsi主要应用在Windows环境下,适用于TCP/IP通讯协议。
2、cifs:cifs主要应用在NT/Windows环境下。
3、nfs:nfs主要应用在UNIX环境下,广泛应用在FreeBSD、SCO、Solaris等等异构操作系统平台。
三、方式不同
1、iscsi:iscsi并不能用于在磁盘中存储和管理数据,是通过TCP/IP网络传输文件时的文件组织格式和数据传输方式。
2、cifs:cifs让协议运行于TCP/IP通信协议之上,让Unix计算机可以在网络邻居上被Windows计算机看到,并进一步传递存储数据。
3、nfs:nfs能够支持在不同类型的系统之间通过网络进行文件共享存储。
⑺ centos7.2操作系统openstack对接iscsi存储type必须iscsi开头吗
通/etc/services查看即: [root@centos-doxer ~]# grep -i iscsi /etc/services iscsi 860/tcp # iSCSI iscsi 860/udp # iSCSI iscsi-target 3260/tcp # iSCSI port iscsi-target 3260/udp # iSCSI port
⑻ OpenStack选用哪种后端存储系统比较好
和openstack融合度较好的就是ceph,国内大多数云环境都使用ceph作为openstack的唯一后端存储。国内使用ceph开发出分布式存储系统的厂商有深圳元核云、北京xsky等,性能都还不错的。
⑼ iscsi存储服务器为什么不安全
其支持者通常都专注于其卓越的性价比,但是其成功的秘密却是广为人知的一些实施技巧:iSCSI使用标准的TCP/IP网络连接来传输“块级”数据,所以即使几乎没有存储经验的网络管理员也感到十分轻松。
低级配置带来的灾难
假设你为一家中小型企业工作,并且有几台Windows服务器,你想将其连接到iSCSI SAN上。这些服务器都是全新的,并拥有四个板载的1Gbps网卡,但是仅有一个网卡连接到了一台交换机,一台低端的不可管理的的千兆交换机。
乍一看,似乎你能够将SAN插入到交换机中,并为其分配IP地址,在服务器上安装微软的iSCSI initiator,并配置它使其连接到SAN,好象可以高枕无忧了。实际上,你能够从服务器上加载SAN存储器,而且它还可以凑合着运行—只要你并不设法调整它。然而,如果你将实际的负载加到SAN卷上,很快就会发现这种设计的不足之处。
以这种方式连接iSCSI存储器存在着几个问题。你将没有交换机或网卡的冗余,SAN上没有负载均衡,也没有需要用来优化iSCSI通信流(通过交换机的)的特性,而且,最糟的可能是,存储器将会与前端的客户端通信争夺带宽。
正确建立iSCSI
在上面的情形中,缺失的元素是很明显的:一台象样的交换机。一台优良的交换机是iSCSI SAN的关键部分。确实,任何千兆交换机都可用于iSCSI,但是采用低廉的不可管理的交换机会使你遗漏一些重要的特性。