Ceph iSCSI Gateway Demo安装配置
Ceph安装部署文档

Ceph安装部署文档目录一:简介 (1)二:部署环境介绍 (1)三:集群配置准备工作 (2)3.1 : 生成SSH证书,节点建立连接 (2)3.2 : 建立ip地址list, 修改host文件 (3)3.3 : 网络端口设置 (3)3.4 : 安装centos的yum源软件包=>全部节点安装 (4)3.5 : 添加时间同步定时任务 (4)3.6 : 安装yum-plugin-priorities. (8)四:安装ceph软件包 (8)4.1、安装ceph部署机,使用ceph-deploy方式安装部署 (8)4.2、安装ceph存储集群(包括ceph对象网关) (8)五:搭建ceph集群 (8)5.1 : 新建ceph集群 (9)5.2 : 添加mon节点 (9)5.3 : 添加osd节点 (9)六:安装过程出现的部分错误及解决方法 (11)七:常用命令 (11)一:简介Ceph 生态系统架构可以划分为四部分:1. Clients:客户端:数据用户2. mds:Metadata server cluster,元数据服务器:缓存和同步分布式元数据(此文档没有安装mds)3. osd:Object storage cluster,对象存储集群:将数据和元数据作为对象存储,执行其它关键职能4. mon:Cluster monitors,集群监视器:执行监视功能二:部署环境介绍三:集群配置准备工作3.1 : 生成SSH证书,节点建立连接1)所有节点修改hostnamevim /etc/sysconfig/network2)安装SSH (主节点)sudo apt-get install openssh-server3)ssh登陆证书(主节点)ssh-keygen将配置完成的证书传输到其它服务器:ssh-copy-id {其他节点用户名}@{其他节点IP} Example:ssh-copy-id root@anode24)创建并编辑~/.ssh/config 文件,添加其他Host Host {Hostname}Hostname {}User {Username}Example:Host anode1Hostname 172.16.100.35User rootHost anode2Hostname 172.16.100.36User rootHost anode3Hostname 172.16.100.37User root3.2 : 建立ip地址list, 修改host文件1)创建工作文件夹,建立ip地址list,为文件传输做准备主节点执行mkdir /workspace/cd /workspace/vim cephlist.txt 主机列表写入:anode1anode2anode32)修改host文件vim /etc/hosts追加内容如下:172.16.100.35 anode1172.16.100.36 anode2172.16.100.37 anode3将host文件传输到其它主机for ip in $(cat /workspace/cephlist.txt);do echo -----$ip-----;rsync -avp /etc/hosts $ip:/etc/;done3.3 : 网络端口设置检查网络设置,确定这些设置是永久生效的,重启之后不会改变。
ceph使用方法

ceph使用方法摘要:1.Ceph简介2.Ceph组件及其作用3.安装Ceph4.Ceph使用方法5.Ceph的日常维护与管理6.Ceph性能优化7.常见问题与解决方案正文:Ceph是一款开源的分布式存储系统,具有高性能、可靠性高、可扩展性强等特点。
它主要由以下几个组件构成:1.Ceph Monitor(CMS):负责维护整个Ceph集群的元数据信息,包括监控各个节点的状态、集群映射关系等。
2.Ceph OSD:负责存储数据,包括数据存储和数据恢复。
OSD节点之间通过CRUSH算法实现数据分布和平衡。
3.Ceph Metadata Server:为Ceph客户端提供元数据服务,包括存储卷配置、快照、克隆等。
接下来,我们来了解一下如何安装和配置Ceph。
1.安装Ceph:首先,确保操作系统为CentOS 7及以上版本。
然后,按照官方文档的指引,依次安装Ceph Monitor、OSD和Metadata Server组件。
2.配置Ceph:安装完成后,需要对Ceph进行配置。
编辑Ceph配置文件(/etc/ceph/ceph.conf),设置相关参数,如:osd pool默认配置、monitor 选举算法等。
3.初始化Ceph:使用ceph-init命令初始化Ceph,之后启动Ceph相关服务。
4.创建存储池:使用ceph-volume命令创建存储池,为存储池分配OSD 节点。
5.创建卷:使用ceph-volume命令创建卷,并将卷挂载到客户端节点。
6.扩容存储池:当存储池空间不足时,可以通过添加OSD节点或调整pool参数进行扩容。
7.维护与管理:定期检查Ceph集群状态,使用ceph命令监控性能指标,如:osd tree、health monitor等。
8.性能优化:根据实际需求,调整Ceph配置文件中的相关参数,如:调整osd的osd_cache_size、osd_timeout等。
9.常见问题与解决方案:遇到问题时,可通过查询官方文档、社区论坛等途径寻求解决方案。
iSCSI简介与安装配置

iSCSI简介与安装配置iSCSI简介SCSI和FC 拥有更高传输速率,因此用于大容量数据存储区域网络(SAN)。
如UltraSCSI320接口速率320MB/s 远大于百兆网络:12MB/s和千兆网:120MB/s。
SAN既有高性能和可扩展性特性,但是不能复用到目前广泛使用TCP/IP网络中,为了实现此目的,以达到更低整体拥有成本和高易用性,产生了iSCSI和FCIP技术。
iSCSI原理是将SCSI网络封装成IP网络(加IP数据头),以便能在IP网络中传输。
这可以通过软件(iSCSI initiator)或者专用的硬件的方式来实现(HBA卡),当然软件的将会额外消耗服务器CPU资源,硬件HBA卡将拥有高好的传输性能,价格也更高。
如果二台或二台以上服务器,直接连接到一台存储设备上(尤其是模拟的存储设备),视乎没有必要采用iSCSI技术方式,采用以太网线直接连接存储上即可(如:NFS方式即可),因为iSCSI多余的封装和解封装或影响传输性能。
但是如果以下情况,需要这么做:●服务器与存储设备连接距离大于25m。
●设备连接设备数目大于16。
●IP SAN存储设备。
●其他iSCSI Enterpise Target(即:iscsitarget)是个成熟稳定开源iSCSI Target 软件。
它用于构建iSCSI磁盘阵列存储系统。
客户端iSCSI initiator用于挂载此存储上的磁盘。
客户端iSCSI initiator可以是Windows系统和也可以是Linux。
模拟iSCSI存储设备的,也有Windows版本的免费软件。
以下介绍iSCSI Enterpise Target搭建的iSCS存储系统(Linux)。
注:也有Windows 版本的也有Target软件。
iSCSI安装iSCSI target安装# tar –xzvf iscsitarget-1.4.20.2.tar.gz# cd iscsitarget-1.4.20.2# yum -y install gcc gcc-c++ kernel-devel# make# make install# /etc/init.d/iscsi-taraget start# chkconfig –level 35 iscsi-target on #开机时自动运行。
ceph安装手册(实验版)20220118

Ceph原生安装手册(实验版)1.环境列表Ceph版本:ceph version 13.2.10主机名主机IP 磁盘配比角色node1 public-ip:192.168.110.121cluster-ip:192.168.1.121Sda(系统盘)sdb/sdc (数据盘)ceph-deploy,monitor,mgr,osdnode2 public-ip:192.168.110.122cluster-ip:192.168.1.122Sda(系统盘)sdb/sdc (数据盘)monitor,osdnode3 public-ip:192.168.110.123cluster-ip:192.168.1.123Sda(系统盘)sdb/sdc (数据盘)monitor,osd2.部署前系统配置2.1 修改/etc/hosts文件(各节点执行)Vi /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.121 ceph01192.168.1.122 ceph02192.168.1.123 ceph032.2关闭防火墙(各节点执行)systemctl stop firewalldsystemctl disable firewalldiptables -F(flush 清除所有的已定规则)setenforce 0vi /etc/selinux/configSELINUX =disabled2.3节点设置ssh免密(各节点执行)[root@ceph02 ~]# ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Created directory '/root/.ssh'.Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:RZxC7W733+iZCG9EPcnGye5li4ZCvTYqDFnhdcsjIz8 root@ceph02The key's randomart image is:+---[RSA 2048]----+| ..o.. || ..o+. || . oo+ .= o || + +.+. X || o S.+..o . || o Eo.o . o|| o ..oooo.o.|| o . B.+o=.|| ..+.=.=.o|+----[SHA256]-----+[root@ceph02 ~]# ssh-copy-id root@ceph01/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"The authenticity of host 'ceph01 (192.168.1.121)' can't beestablished.ECDSA key fingerprint is SHA256:0TJBpy/sIxnagPsU62jCRfo3u/FRb4roi7+Qup 7tRx0.ECDSA key fingerprint isMD5:ca:14:e6:a5:3c:72:fa:a2:62:0a:46:dd:fd:05:17:af.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysroot@ceph01's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@ceph01'"and check to make sure that only the key(s) you wanted were added.[root@ceph02 ~]# ssh-copy-id root@ceph02/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/. ssh/id_rsa.pub"The authenticity of host 'ceph02 (192.168.1.122)' can't beestablished.ECDSA key fingerprint is SHA256:7nRC3lyJyxliOolJgRNTvqKQzjX2zlEn5+xadg 0DTFk.ECDSA key fingerprint isMD5:9b:71:f5:ca:b0:bc:db:7c:96:3c:09:02:a7:c8:0e:e1.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysroot@ceph02's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@ceph02'"and check to make sure that only the key(s) you wanted were added.[root@ceph02 ~]# ssh-copy-id root@ceph03/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/. ssh/id_rsa.pub"The authenticity of host 'ceph03 (192.168.1.123)' can't beestablished.ECDSA key fingerprint is SHA256:MbLYNIWonbVIyPpbbFw1tE99s9LS68TezGU8Mw +BOO8.ECDSA key fingerprint isMD5:3f:62:0b:1a:1c:13:8c:09:66:9c:c8:3a:e6:eb:12:89.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysroot@ceph03's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@ceph03'"and check to make sure that only the key(s) you wanted were added.2.4 配置yum源(各节点执行)//安装wget命令,方便下载新的yum源。
iSCSI 安装配置过程(原创)

iSCSI Server 端安装
Dell PVNX3000默认安装的是Windows Storage Server 2008 R2 Standard版
所以安装高于Microsoft iscsitarget 3.2版本会提示不支持当前操作系统。
因此以下安装过程使用的是Microsoft iscsitarget 3.2版本。
安装后从“管理工具”中运行“Microsoft iSCSI Software Target”程序,进入iSCSI存储管理程序。
在iscsi目标上单击右键-我们选择创建iscsi目标。
打开创建iscsi目标向导。
输入iSCSI目标名称,然后下一步。
添加标示符用于iscsi磁盘访问控制,点击高级。
点击添加,然后选择类型为IP地址来进行对iscsi的访问控制。
输入ip地址后,接下来全部确定即可。
ok,创建目标完成,我们下面去创建虚拟磁盘。
在目标下右键创建一个虚拟磁盘
选择虚拟磁盘文件要保存的位置
选择大小,这里要注意,如果创建1.5T的磁盘,会在硬盘立刻产生一个1.5T的vhd文件,所以需要注意酌情考虑你的磁盘大小来设置。
以上是iSCSIServer的整个配置过程。
iSCSI Client 端安装
iscsitargetClient.msi安装完成,进入控制面板,点击iSCSIIntiator。
进入磁盘管理处,即可看到新增的硬盘。
下图为传输速度测试:
注意:winXP win2003 均不支持大于2T的硬盘,在创建虚拟磁盘时应注意大小控制小于2T。
ceph接口使用方法

ceph接口使用方法Ceph接口使用方法Ceph是一个开源的分布式存储系统,拥有强大的可扩展性和高可靠性。
它通过将数据分布在多个节点上,实现了数据冗余和负载均衡的功能。
Ceph提供了一系列的接口,让开发者可以轻松地使用其功能。
本文将介绍Ceph接口的使用方法,包括安装和配置Ceph、使用Ceph 接口进行数据操作等。
通过本文的指导,读者可以快速上手并深入了解Ceph接口的使用。
第一步:安装Ceph在开始使用Ceph接口之前,首先需要在集群中安装和配置Ceph。
Ceph 可以在Linux系统上运行,支持多种发行版。
以下是在Ubuntu上安装Ceph的步骤:1. 更新系统软件包:使用以下命令更新系统软件包以获取最新的软件包列表和安全修复程序。
sudo apt-get updatesudo apt-get upgrade2. 安装Ceph软件包:使用以下命令安装Ceph软件包。
sudo apt-get install ceph ceph-deploy3. 配置Ceph集群:使用Ceph提供的命令行工具ceph-deploy来配置Ceph集群。
首先需要创建一个新的目录作为Ceph集群的工作目录。
mkdir my-clustercd my-cluster然后,在此目录下,运行以下命令来初始化Ceph集群。
ceph-deploy new <MON节点>这将在当前目录下创建一个名为ceph.conf的配置文件,其中包含了集群的基本配置信息。
接下来,使用以下命令将Ceph软件包安装到集群的所有节点。
ceph-deploy install <所有节点>最后,使用以下命令来为集群添加MON节点。
ceph-deploy mon create-initial第二步:配置Ceph存储池一旦Ceph集群安装和配置完成,下一步是创建一个或多个存储池,以供存储数据。
存储池是Ceph中最基本的单元,用于管理数据的存储和分发。
ceph安装配置说明

ceph安装配置说明一、环境说明:注:在配置系统环境时,需要指定各结点的机器名,关闭iptables、关闭selinux(重要)。
相关软件包:ceph-0.61.2.tar.tarlibedit0-3.0-1.20090722cvs.el6.x86_64.rpmlibedit-devel-3.0-1.20090722cvs.el6.x86_64.rpmsnappy-1.0.5-1.el6.rf.x86_64.rpmsnappy-devel-1.0.5-1.el6.rf.x86_64.rpmleveldb-1.7.0-2.el6.x86_64.rpmleveldb-devel-1.7.0-2.el6.x86_64.rpmbtrfs-progs-0.19.11.tar.bz2$src为安装包存放目录二、内核编译及配置:cp /boot/config-2.6.32-279.el6.x86_64 /usr/src/linux-2.6.34.2/.config make menuconfig #选择把ceph编译成模块和加载btrfs文件系统make all #若是多核处理器,则可以使用make -j8命令,以多线程方式加速构建内核makemodules_installmake install修改/etc/grub.conf文件,把新编译的linux-2.6.34.2版本内核做为默认启动内核。
三、Ceph安装配置:先安装相关依赖包:rpm -ivh libedit0-3.0-1.20090722cvs.el6.x86_64.rpm --forcerpm -ivh libedit-devel-3.0-1.20090722cvs.el6.x86_64.rpmrpm -ivh snappy-1.0.5-1.el6.rf.x86_64.rpmrpm -ivh snappy-devel-1.0.5-1.el6.rf.x86_64.rpmrpm -ivh leveldb-1.7.0-2.el6.x86_64.rpmrpm -ivh leveldb-devel-1.7.0-2.el6.x86_64.rpm编译安装ceph:./autogen.sh./configure --without-tcmalloc --without-libatomic-opsmakemake install配置ceph:cp $src/ceph-0.61.2/src/sample.ceph.conf /usr/local/etc/ceph/ceph.confcp $src/ceph-0.61.2/src/init-ceph /etc/init.d/cephmkdir /var/log/ceph #建立存放ceph日志目录。
ceph 集群配置iscsi的操作步骤 -回复

ceph 集群配置iscsi的操作步骤-回复Ceph是一种开源的分布式对象存储系统,它提供了高可靠性、高可扩展性以及高性能的存储解决方案。
在Ceph集群中,我们可以配置iSCSI (Internet Small Computer System Interface)来提供块级存储服务。
本文将提供一步一步的操作步骤,以帮助您配置Ceph集群以支持iSCSI。
在开始之前,确保您已经搭建好了一个Ceph集群,并配置好了适当的硬件设备。
如果您还没有完成这些步骤,您可以参考Ceph官方文档来进行安装和配置。
以下是配置Ceph集群以支持iSCSI的操作步骤:1. 检查iSCSI支持:首先,您需要确保Ceph集群的所有节点都支持iSCSI。
您可以通过运行以下命令来检查内核模块是否加载:lsmod grep rbdlsmod grep target如果返回的结果为空,则需要加载相应的内核模块。
您可以使用modprobe命令来加载内核模块:modprobe rbdmodprobe target_core_user2. 创建iSCSI池:要使用iSCSI,您需要先创建一个用于存储iSCSI卷的池。
您可以使用以下命令在Ceph集群中创建一个新的池:ceph osd pool create iscsi 128 128其中,"iscsi"是池的名称,"128"是最小数量的副本数,"128"是最大数量的副本数。
3. 创建iSCSI卷:一旦您创建了iSCSI池,就可以在其中创建iSCSI卷。
您可以使用以下命令在Ceph集群中创建一个新的iSCSI卷:rbd create iscsi/myvolume size 10G pool iscsi其中,"iscsi/myvolume"是卷的名称,"size 10G"表示卷的大小为10GB,"pool iscsi"表示卷将存储在名为"iscsi"的池中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)支持的传输协议较少; 2)对 SCSI 协议支持比较简单,一些 cluster 中的特性比如 PR 等都不支持,所以基于 stgt 的方案不能在 cluster 中使用; 3)由于是用户态框架,性能问题较差,根据网上的相关数据, tgt 在使用本地存储的 情况下,性能相比后面会提到的 SCST、 LIO 等是有一定差距的。
4.1.4 安装 scstadmin
拷贝 scstadmin-3.0.1.tar.bz2 到 iscsi gateway 节点上,执行以下命令: tar -jxvf scstadmin-3.0.1.tar.bz2 cd scstadmin-3.0.1 make make install
4.1.5 启动 iscst target
Client(linux)包括 multpath 和 iscsi initiator,initiator 使用 open-iscsi,每 个 initiator 可以连接到多个 Iscsi target。对于多个 target 后端对应的同一个 image, 则使用多路径软件聚合成一个块设备后提供给用户使用。这样可以解决网络故障或者 gateway 故障后,通过另一条链路能够继续提供服务。
由于我们的 Demo 是把多路径接入 ceph,把 ceph 通过 scsi target 软件映射到主机上使 用,因此我们多路径软件选择的是 linux 开源软件通用多路径 multipath 和 windows server 的 MPIO
3 总体概述
Ceph iSCSI Gateway Demo 整体框架包括三个部分,ceph cluster、iscsi gateway 和 client。
3. LIO LIO 也即 Linux-IO,是目前 GNU/Linux 内核自带的 SCSI target 框架(自 2.6.38 版本开
始引入,真正支持 iSCSI 需要到 3.1 版本) ,对 iSCSI RFC 规范的支持非常好,包括完整 的错误恢复都有支持。整个 LIO 是纯内核态实现的,包括前端接入和后端存储模块,为了 支持用户态后端,从内核 3.17 开始引入用户态后端支持,即 TCMU(Target Core Module in Userspace) 优点:
缺点: 1)不支持 AEN,所以 target 状态发生变化时,只能通过 IO 或者用户手动触发以检测处 理变化。 2)结构相对复杂,二次开发成本较高。 3)工作在内核态,出现问题会影响其他程序的运行。
4. 总结 总的来说,stgt 构建一个规模不是很大的 iSCSI target。 LIO 支持 FC、SRP 等协议,但性能、稳定性不是很好。 SCST 适合构建一个企业级的高性能、高稳定性的存储方案,各大存储服务提供商都是基
1)支持较多传输协议 2)代码并入 linux 内核,减少了手动编译内核的麻烦。 3)提供了 python 版本的编程接口 rtslib。 4)LIO 在不断 backport SCST 的功能到 linux 内核,社区的力量是强大的。 5)LIO 也支持一些 SCST 没有的功能。如 LIO 还支持“会话多连接”(MC/S)。 6)LIO 支持最高级别的 ERL。
2.方案选型
ceph 集群目前支持三种形式的存储接口:文件、对象、块,其中块接口(即 RBD)与 SCSI 块设备读写所要求的接口一致,因此可以基于 ceph 的 RBD 提供 SCSI 存储系统后端。基 于 RBD 的 iSCSI 支持有多种实现思路,根据我们团队的现状,选择以下方案: 选择合适 的 iSCSI target 为其增加 RBD 后端支持,并在终端用户与 ceph 集群之 间架设 iSCSI 网关 (可以扩展成其它类型的如 FC 网关); 基本的架构图如下:
图 2 Ceph iSCSI Gateway Demo 架构
4. Ceph iSCSI Gateway Demo 安装
4.1 iSCSI Gateway 安装
4.1.1 下载源码
SCST 的版本选择的是 3.0.1,这个版本是社区里最新的稳定版。SCST 的安装需要重新编 译源码,相关的源码下载地址如下 1、scst 源码地址: /projects/scst/files/scst/scst-3.0.1.tar.bz2/download 2. scstadmin 源码地址: /projects/scst/files/scstadmin/scstadmin-3.0.1.tar.bz2/download 3. iscsi-scst 源码地址: /projects/ scst/fi les/ isc si- scst/i scsi -scst-3.0.1.tar.bz2/download
Ceph iSCSI Gateway Demo 安装配置
1. 背景介绍
ceph 作为一个真正意义上的统一存储系统,有着很好的应用前景,但到目前为止有多 种原因限制了其在传统存储应用领域真正大范围的应用,如客户端仅支持 GNU/Linux 系统, 内核态客户端实现也仅会合入高版本的内核中等。而对于 iSCSI 这种传统的存储应用而言, 由于客户端配置 简单且足 够通用,常 见的各种系 统(包括操 作系统和 应用系统) 一般都对 iSCSI 有很好的支持,因此为了扩大 ceph 的应用范围,特别是应对只支持 iSCSI 的系统, ceph 必须通过某种途径实现对 iSCSI 的支持。
1.故障的切换和恢复 2.IO 流量的负载均衡 3.磁盘的虚拟化
由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都 提供了不同的版本。并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的 话,可能还需要向厂商购买 license 才行。 业界比较常见的多路径功能软件有 EMC 的 PowerPath, IBM 的 SDD,日立的 Hitachi Dynamic Link Manager 和广泛使用的 linux 开源 软件 multipath 和 windows server 的 MPIO。
4.1.2 安装 SCST
拷贝 scst-3.0.1.tar.bz2 到 iscsi gateway 上,执行以下命令: tar -jxvf scst-3.0.1.tar.bz2 cd scst-3.0.1 make make install
4.1.3 安装 iscsi-scst
拷贝 iscsi-scst-3.0.1.tar.bz2 到 iscsi gateway 上,执行以下命令: tar -jxvf iscsi-scst-3.0.1.tar.bz2stall
执行下面的命令加载 scst 内核模块 modprobe scst modprobe scst_vdisk modprobe iscsi-scst
执行如下命令启动 scst 的用户态进程 /etc/init.d/scst start /usr /local/sbin /i scsi- scstd
于 SCST。因此我们选择了 SCST。
2.2 多路径
普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤 组成的 SAN 环境,或者由 iSCSI 组成的 IPSAN 环境,由 于主机和存储通过了光纤交换机或 者多块网卡及 IP 来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以 有多条路径可以选择。主机到存储之间 的 IO 由多条路径可以选择。每个主机到所对应的存 储可以经过几条不同的路径,如果是同时使用的话,I/O 流量如何分配?其中一条路径坏掉 了,如何处理?还 有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在 的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用 户 带来了困惑。多路径软件就是为了解决上面的问题应运而生的。 多路径的主要功能就是和存储设备一起配合实现如下功能:
图 1. Ceph iSCSI Gateway 基本框架 从上图可以看出,Ceph iSCSI Gateway 基本框架包括三个部分,ceph cluster、iscsi gateway 和 client。下面简单介绍以下各个组件的方案选择。
2.1 SCSI target 框架
GNU/Linux 系统中流行的 SCSI target 框架或 iSCSI target 实现有如下几种: tgt、SCST、 Linux-IO。 1. tgt tgt 是一个用户态的 SCSI target 框架,在 GNU/Linux 内核直接集成 SCSI target 框架之前, 这是一个绝对主流的框架。 它的优点是:
iscsi gateway 可以部署多个,每个 gateway 包括 iscsi target 和内核 rbd,iscsi target 使用了开源软件 SCST,块存储由 ceph 的内核模块 rbd 提供接口。每一个存储资源可以映射 到多个 gateway 上,通过任何一个 gateway 都可以访问到数据。将一个 image 映射到 gateway 本地后,再把这个块设备配置为 target 的后端存储。
2.SCST SCST 的核心模块工作在内核里,可以支持通过系统模块(VFS、块层)访问的后端存储
如块设备、文件设备以及 passthrough 的 scsi 设备。 它的优点是:
1)支持更多传输协议 2)针对性能做了特殊的优化 3)除了基本的 SCSI 协议支持外,还有一些高级支持: SCST 支持永久性预留(Persistent Reservation, PR);这是一个用于高可用集群中的存储 设备的 I/O 隔离与存储设备故障切换、接管的特性。通过使用 PR 命令,initiator 可 以在一个 target 上建立、抢占、查询、重置预留策略。在故障接管过程中,新的虚拟 资源可以重置老的虚拟资源的预留策略,从而让故障切换更快、更容易地进行。 SCST 可以使用异步事件通知(AEN)来通告会话状态的变更。AEN 是一个 SCSI target 用 来向 initiator 进行 target 端的事件告知的协议特性,即使在没有服务请求的时候也可 以进行。于是 initiator 就可以在 target 端发生事件时,如设备插入、移除、调整尺寸 或更换介质时,可以得到通知。这让 initiator 可以以即插即用的方式看到 target 的变 化。 4)SCST 的开发者声称,它们的设计在健壮性和安全性方面更加符合 SCSI 标准。SCSI 协 议要求,如果一个 initiator 要清除另一个 initiator 的预留资源时,预留者必须要得到 清除通知,否则,多个 initiator 都可能来改变预留数据,就可能会破坏数据。SCST 可 以实现安全的预留、释放操作,避免类似事情发生。 5)SCST 也支持非对称逻辑卷分配(ALUA)。ALUA 允许 target 管理员来管理 target 的 访问状态和路径属性。这让多路径路由机制可以选择最好的路径,从而根据 target 的 访问状态,优化带宽的使用。换句话说,在多路径环境下,target 管理员可以通过改变 访问状态来调整 initiator 的路径。 6)各大存储服务提供商都是基于 SCST。 7)提供更细粒度的访问控制策略以及 QoS 保证机制(限制 initiator 连接的个数)。 它的缺点是: 1)结构复杂,二次开发成本较高。 2)工作在 kernel,如果挂了,会导致整个机器 down 掉,影响其他程序。 3)kernel 部分没有并入 linux,需要手工编译。