本博客欢迎转发,但请保留原作者信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!
1 RAID
独立磁盘冗余数组(RAID, Redundant Array of Independent Disks),不同的RAID等级在两个目标间取得平衡,分别是增加数据可靠性以及增加存储器(群)读写性能
RAID 0
将数据按磁盘的个数来进行分段。速度最快,没有冗余,如果一个磁盘(物理)损坏,则所有的数据都会丢失。
Size=2*min(S1, S2)
RAID 1
两组以上的N个磁盘相互作备份,在一些多线程操作系统中能有很好的读取速度,但写入速度有微小的降低。可靠性最高。Size=min(S1, S2)
RAID 2
这是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分区为独立的比特,写入硬盘。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台磁盘驱动器方能运作。
RAID 3
采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分区后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。
RAID 4
它与RAID 3不同的是它在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。(Block interleaving)
RAID 5
RAID Level 5 是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5 至少需要三颗硬盘, RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相当的慢,若使用“回写高速缓存”可以让性能改善不少。同时RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。
Size=(N-1)*min(S1, S2,..., SN)
RAID 6
与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实作方式使得RAID 6很少得到实际应用。
同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。依照设计理论,RAID 6必须具备四个以上的磁盘才能生效。
Size=(N-2)*min(S1, S2,..., SN)
RAID 10/01
RAID 10/01细分为RAID 1+0或RAID 0+1。
RAID 1+0是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。
RAID 0+1则是跟RAID 1+0的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。
性能上,RAID 0+1比RAID 1+0有着更快的读写速度。
可靠性上,当RAID 1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1 只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。
因此,RAID 10远较RAID 01常用,零售主板绝大部份支持RAID 0/1/5/10,但不支持RAID 01。
RAID 50
RAID50也被称为镜象阵列条带,由至少六块硬盘组成,像RAID0一样,数据被分区成条带,在同一时间内向多块磁盘写入;像RAID5一样,也是以数据的校验位来保证数据的安全,且校验条带均匀分布在各个磁盘上。其目的在于提高RAID5的读写性能
应用
RAID2、3、4较少实际应用,因为RAID5已经涵盖了所需的功能,因此RAID2、3、4大多只在研究领域有实现,而实际应用上则以RAID5为主。
RAID4有应用在某些商用机器上,像是NetApp公司设计的NAS系统就是使用RAID4的设计概念
2 存储概述
存储技术
数据备份越来越受到人们的重视,并成为网络建设过程中必考虑的内容。网络存储设备根据存储技术的不同,主要分为三类:DAS(Direct Attached Storage)、NAS(Network Attached Storage)和SAN(Storage Area Network)。
存储方式
对象存储基于文件系统,通过文件系统来存储访问数据。
块存储是以块为基本单元的存储方式,其传输不存在数据打包/解包的过程,可提供更高的传输性能
文件存储设备通过以太网与服务器连接。服务器通过NFS、CIFS、HTTP、FTP等协议进行数据访问。数据通过以太网传输,有打包/解包的过程
存储接口
常见的存储接口包括SCSI、iSCSI、SAS、SATA、FC、FCoE等。
可靠性技术
存储的可靠性技术主要有RAID、备份、快照、镜像、群集并发存取等。
相关硬件
常用的存储设备主要有磁盘阵列、存储服务器和FC交换机。
三种存储技术
DAS是指将存储设备通过SCSI线缆或FC(Fiber Channel)直接连接到服务器上
NAS按照TCP/IP协议进行通信,以文件的I/O方式进行数据传输。它拥有自己的文件系统,通过网络文件系统NFS(Network File System)或通用Internet文件系统CIFS(Common Internet File System)对外提供文件访问服务。
SAN是一种通过网络方式连接存储设备和应用服务器的存储架构,这个网络专用于服务器和存储设备之间的访问,SAN代表的是一种专用于存储的网络架构,与协议和设备类型无关。有FC SAN和IP SAN两种方案。
3 iSCSI
iSCSI是网络存储标准,其核心是在TCP/IP网络上传输SCSI协议,用TCP/IP报文、和ISCSI报文封装SCSI报文,使得SCSI命令和数据可以在普通以太网络上进行传输。
iSCSI的工作过程:当iSCSI主机应用程序发出数据读写请求后,操作系统会生成一个相应的SCSI命令,该SCSI命令在iSCSI initiator层被封装成ISCSI消息包并通过TCP/IP传送到设备侧。设备侧的iSCSI target层会解开iSCSI消息包,得到SCSI命令的内容,然后传送给SCSI设备执行。设备执行SCSI命令后的响应,在经过设备侧iSCSI target层时被封装成ISCSI响应PDU,通过TCP/IP网络传送给主机的ISCSI initiator层。iSCSI initiator会从ISCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统再响应给应用程序
iSCSI SAN 上单个可发现的实体(如启动器或目标)表示一个 iSCSI 节点。每个节点都有一个或多个将其连接到
SAN 的端口。iSCSI 端口是 iSCSI 会话的端点。每个端口可通过多种方式进行标识(IP地址/ISCSI名称)。
3.1 iet
iet(iSCSI Enterprise Target)是Linux下的iSCSI Target实现,open-iscsi是Linux下的iscsi initiator实现。使用iet和open-iscsi就可以方便的实现简单的IPSAN,同时iet也可以和其他系统的iscsi initiator配合使用。
target名称:采用”iqn.yyyy-mm.<reversed domain name>[:identifier]”的格式。可以将块设备,文件,LVM卷,RAID卷作为块设备映射给iSCSI initiator使用,在/etc/iet/ietd.conf文件中增加如下内容实现块设备映射:
Lun <lunID> Path=<device>,Type=fileio|blockio[,IOMode=(wb|ro)],其中:
lunID:从0开始,最大2^14-1
Path=<device>指定块设备。可以使用dd命令生成一个文件
Type=fileio|blockio指定块设备类型,分区及dd命令生成的文件使用fileio类型;LVM卷、RAID卷使用blockio类型
IOMode=(wb|ro)指定iSCSI initiator允许的操作,wb表示可读写,ro表示只读
添加一个新的Target。其中[id]为数字必须是唯一的,后面的Name需要自定义,也需要保证是唯一的。
ietadm --op new --tid=[id] --params Name=iqn.zqin.example
添加一个新的lun。其中[id]必须是一个已经存在的tid号,[lun]从0开始
ietadm --op new --tid=[id] --lun=[lun] --params Path=/path/exported/file,Type=fileio
停止某个Target的某个Connection的连接
ietadm --op delete --tid=2 --sid=562950876233792 --cid=1 && ietadm --op delete --tid=2
3.2 iscsiadm
iscsiadm -m <op> 其中op=<discovery|node|session>
iscsiadm -m discovery
显示数据库中discovery记录
iscsiadm -m node
显示数据库中的所有的节点,输出:
192.168.122.102:3260,11 iqn.2006-08.com.huawei:oceanstor:210000e0fc123456:notconfig:192.168.122.102 192.168.123.100:3260,1 iqn.2006-08.com.huawei:oceanstor:210000e0fc123456:notconfig:192.168.123.100
iscsiadm -m session
显示所有的会话和连接,输出:
tcp: [1] 192.168.123.100:3260,1 \ iqn.2006-08.com.huawei:oceanstor:210000e0fc123456:notconfig:192.168.123.100
tcp: [2] 192.168.122.102:3260,11 \ iqn.2006-08.com.huawei:oceanstor:210000e0fc123456:notconfig:192.168.122.102
-m discovery --type=[type] --portal=[ip:port]
发起discovery,type指定类型,包括sendtargets, slp, isns,portal指定目标器的IP和端口,如:
iscsiadm -m discovery -t st -p 192.168.159.74
-m discovery --portal=[ip:port] --op=[op] [--name=[name] --value=[value]]
操作数据库的discovery表中对应portal的记录(一般不用对discovery表进行操作),可执行的操作op包括[new], [delete], [update] 或[show],name表示纪录项的名字,value表示纪录项的值。
-m node --targetname=[name] --portal=[ip:port] [--login|--logout|--rescan|--stats
对以targetname或portal指定的节点进行操作
-m node --targetname=[name] --portal=[ip:port] --op=[op] [--name=[name] --value=[value]]
操作数据库的nodes表中对应targetname或portal的节点。可执行的操作包括[new], [delete], [update] 或[show];示例:
iscsiadm -m node -p 192.168.122.102 --op update -n node.conn[0].startup -v automatic
-m session --sid=[sid] [ --print=level | --rescan | --logout ] --op=[op] [--name=[name] --value=[value]]
操作由sid指定的会话,包括重扫描,logout和数据库记录操作等,如:
#iscsiadm -m session --sid 1 –rescan
表示对会话1进行重扫描。
#iscsiadm -m session --sid 1 或 #iscsiadm -m session --sid 1 print=1
表示显示会话1相关信息,print可设为0~2。
一般步骤:
1. 使用脚本或手动启动iscsi服务
2. 发起discovery
# iscsiadm -m discovery -t sendtargets -p 192.168.122.102:3260,输出:
192.168.122.102:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
成功的话使用iscsiadm -m node可以看到对应的节点(被发现的目标也叫节点)
# iscsiadm -m node -T <target-name> -p <ip-address>:<port> --login
登入目标器,target-name为上一步发现target时的获得的,此时通过fdisk -l就可以看到映射过来的磁盘(或者在/dev/disk/by-path/路径下有对应lun的文件),该磁盘可以像使用本地磁盘一样进行格式化,分区等操作。如:
fdisk /dev/sdc
mkfs.ext3 /dev/sdc1
mount /dev/sdc1 /mnt/iscsi
如果要在系统启动时自动挂接,在/etc/fstab加入一行:
/dev/sdc /mnt/iscsi ext3 default 0 0
如果以后目标器IP改变了,可以先删除老节点,如:
# iscsiadm -m node -p 192.168.122.102 -o delete
再重新发起discovery生成新节点,如:
# iscsiadm -m discovery -t sendtargets -p 192.168.123.100
如果要登出节点,先解除挂载:#umount /mnt/iscsi,然后登出
# iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 192.168.123.100:3260 -u
3. 设置自动登陆目标器
对于已经存在于数据库中的节点,使用iscsiadm更新纪录项:
# iscsiadm -m node -p 192.168.122.102 –op update -n node.conn[0].startup -v automatic
对于还没有添加的节点,编辑配置文件/etc/iscsi/iscsid.conf,在其中增加一项:
node.conn[0].startup = automatic
这样以后通过discovery新添加的节点node.conn[0].startup都会被设置为automatic
设置自动登陆目标器后,每次使用init脚本启动iscsi服务时都会自动登入目标器(即生成LUN)
与多路径的相关设置
iSCSI 启动器通过周期向目标器下发ping(iSCSI NOP-Out requests)来检测连接状态,使用多路径软件时,可通过减小NOP-Out的发送间隔和超时时间来更快的感知路径故障,具体设置文件/etc/iscsi/iscsid.conf中的以下两项:
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
3.3 ISCSI存储系统架构
iSCSI存储设备从架构上可以分为4中类型:
1. 控制器架构
核心处理器全部采用硬件;设备内部是无线缆的背板结构,所有部件与背板之间通过标准或非标准的插槽链接在一起;操作系统是嵌入式设计;
2. iSCSI连接桥架构(市场已不多见)
分为两个部分,一个部分是前端协议转换设备,另一部分是后端存储。前端协议转换部分一般为硬件设备,主机接口为千兆以太网接口,磁盘接口一般为SCSI接口或FC接口,可连接SCSI磁盘阵列和FC存储设备,通过千兆以太网主机接口对外提供ISCSI数据传输协议;后端存储一般采用SCSI磁盘阵列和FC存储设备,将SCSI磁盘阵列和FC存储设备的主机接口直接连接到iSCSI桥的磁盘接口上。
设备本身只有协议转换功能,没有RAID校验和快照、卷复制等功能。创建RAID组、创建LUN等操作必须在存储设备上完成,存储设备有什么功能,整个iSCSI设备就具有什么样的功能。
3. PC架构
即高性能PC+iSCSI target软件,通过PC服务器的以太网卡对外提供iSCSI数据传输协议。所有的RAID组校验、逻辑卷管理、iSCSI运算、TCP/IP运算等都是以纯软件方式实现,因此对PC的CPU和内存的性能要求较高。另外iSCSI存储设备的性能极容易受PC服务器运行状态的影响。
4. PC+NIC架构
相对于PC+iSCSI Target高效。
3.4 ISCSI存储连接方式
1.以太网卡+initiator软件方式
服务器、主机、iSCSI存储通过以太网线连接到以太网交换机上,或直接连接到主机的以太网卡上。在主机上安装Initiator软件,将以太网卡虚拟为iSCSI卡,接受和发送iSCSI数据报文,从而实现主机和iSCSI设备之间的iSCSI协议和TCP/IP协议传输功能。
该方式硬件成本最低,但进行ISCSI包文和TCP/IP包文转换需要占用主机端的一部分资源。不过在低I/O和低带宽性能要求的应用环境中应该可以满足数据访问要求。
2.硬件TOE网卡+initiator软件方式
具有TOE(TCP Offload Engine)功能的智能以太网卡可以将网络数据流量的处理工作全部转到网卡上的集成硬件中进行,把系统主处理器CPU从忙于协议处理的繁重的内核中断服务中解脱出来,主机只承担TCP/IP控制信息的处理任务.
与第一种方式相比,采用TOE卡可以大幅度提高数据的传输速率。TCP/IP协议栈功能由TOE卡完成,而iSCSI层的功能仍旧由主机来完成。
由于TOE卡也采用TCP/IP协议,相当于一块高性能的以太网卡,所以第二种方式也可以看做是第一种连接方式的特殊情况
3. iSCSI HBA卡(硬件Initiator)方式
在主机上安装专业的iSCSI HBA适配卡,从而实现主机与交换机之间、主机与存储之间的高效数据交换。该方式数据传输性能最好,价格也最高
3.5 ISCSI存储使用模式
1、DAS使用方式
ISCSI存储设备的卷由服务器或NAS网关来管理和使用,其它的工作站通过服务器和NAS网关来访问iSCSI存储上数据。整个系统安装调试简单方便,服务器和NAS网关很容易实现数据的网络化共享访问。但服务器和NAS网关直接影响整体存储网络系统的性能,低配置的服务器和NAS网关及有可能成为整个系统的性能瓶颈。
2、SAN使用方式
iSCSI存储上的LUN对于主机来讲相当于裸设备
A、存储设备层共享
ISCSI设备上创建多个LUN,不同的LUN指定给不同的主机。各主机分别管理和访问自己的LUN。相当于将多个主机的本地磁盘集中放置在一个网络化的设备中,各主机之间仅实现硬件设备层的共享。如下图:
B、集群共享
系统中有多个数据库系统和WEB集群系统,每两台服务器之间需要管理和使用相同的LUN,主机之间通过MSCS或RAC等软件实现集群共享功能。每一个卷仅在两台主机之间共享,两台主机通过集群软件共同对同一个文件系统进行管理。如下图:
C、网络存储共享
在许多大型的高性能计算系统、广电非线性编辑制作系统、IPTV发布系统中,应用需要多台主机能同时访问同一个文件系统(同一个卷)中的数据,可能会是同一个数据。如下图:
为了保证同一个文件系统可以同时被多台主机访问,且不会因为并发访问而引起文件系统管理冲突,常规的做法是在所有需要文件系统共享的主机上安装SAN网络存储共享管理软件,并设置一台或多台主机为管理软件的服务器端。该服务器负责管理主机之间的元数据交换,因此被成为MDC,即Metadata Controller。
相关推荐
这篇“java基础知识学习笔记”是为初学者设计的,涵盖了从入门到精通的关键概念,旨在帮助新手快速掌握Java编程。 首先,从入门阶段开始,Java的学习会从安装JDK(Java Development Kit)开始,这是编写、编译和...
这份"MYSQL基础知识-学习笔记"涵盖了对MySQL的初步介绍以及基础概念,是初学者入门的理想资源。 首先,我们从MySQL的简介开始。MySQL是由瑞典的MySQL AB公司开发的,后被甲骨文公司收购。它是一款开源、免费的...
本资源包"**C语言学习笔记——基础知识篇**"是为C语言初学者或需要复习C语言概念的人准备的宝贵资料。 首先,我们要了解C语言的基础知识。C语言的语法结构基于ALGOL60和BCPL,由Dennis Ritchie在贝尔实验室设计和...
《C语言基础知识学习笔记》 C语言,一种强大的、高效的编程语言,自1972年诞生以来,一直是计算机科学教育和实际应用中的基石。它以其简洁的语法、高效的执行和对底层硬件的直接访问而著称,是许多现代编程语言的...
本学习笔记涵盖了 web 前端开发的基础知识,包括 HTML 的基本结构、文档类型声明、常见的文本和列表标签、分区标签以及图片标签的使用方法。对于初学者而言,这些内容是构建网页的基础,而掌握这些基础知识是进一步...
这些基础知识是理解和编写任何Java程序的基石。 2. **面向对象编程**:深入讲解Java的面向对象特性,包括类、对象、封装、继承、多态等概念。这部分内容是Java的核心,有助于理解如何构建可维护和可扩展的软件系统...
### HP 3PAR 存储基础知识与架构解析 #### 概述 HP 3PAR 存储系统是一款高性能的企业级存储解决方案,自HP(现HPE)收购3PAR后,该系列存储产品成为了HPE高端存储的核心技术之一。相较于传统的EVA、XP等存储系统,...
Java是一种广泛使用的面向对象的编程语言,其基础知识是学习Java编程的基石。下面将详细讲解在给定的学习笔记中提到的一些关键概念。 1. **Scanner类**:Scanner类是Java中用于输入处理的类,它可以从键盘、文件或...
此外,笔记中还涉及了Python与MySQL、MongoDB数据库的交互,这表明学习者在掌握基础知识之后,还可以进一步学习如何使用Python进行数据操作和数据库编程。 整体而言,这份学习笔记为初学者提供了一个全面、系统的...
LINUX 基础知识笔记分享学习 LINUX 基础知识笔记分享学习是指在 openEuler 平台上学习和应用 LINUX 基础知识的笔记分享和学习。openEuler 是一个开源、免费的 LINUX 发行平台,支持 x86、ARM、RISC-V 等多种处理器...
根据提供的文件内容,这份文档是一份关于C语言和数据结构基础的学习笔记。笔记内容涵盖了C语言的基本语法、存储类的使用、数据结构的基本概念和算法分析等方面的知识。下面将对每个知识点进行详细说明。 C语言基础...
本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...
Java是世界上最流行的编程语言之一,尤其对于初学者来说,掌握其基础知识至关重要。本文将深入探讨Java的基础知识点,包括标识符、内存管理、变量分类、数据类型、运算符、类和对象的关系,以及访问修饰符等。 首先...
本“C语言学习笔记”将以上知识点逐一展开,通过实例解析和练习题,帮助读者逐步构建扎实的C语言基础。无论你是初学者还是有经验的开发者,都能从中受益。请解压文件,仔细阅读,祝你在C语言的学习旅程中收获满满。
【Java基础】 Java是一种广泛使用的面向对象...这些是Java基础知识和高级技术的主要组成部分,掌握它们能够帮助开发者构建稳定、高效、可维护的Java应用程序。通过深入学习和实践,你可以不断提升自己的Java编程能力。
Java基础总结大全涵盖了Java编程语言的核心概念,从JVM、JRE和JDK的区别,到环境变量的设置,再到变量的定义和类型转换,深入浅出地讲解了Java的基础知识。 1. JVM、JRE和JDK: - JVM(Java Virtual Machine)是...
本文将深入探讨C语言的基础知识,包括数据类型和表达式、变量与常量、输出输入以及运算符号。 首先,我们要理解数据类型和表达式。在C语言中,数据在计算机内存中以特定的格式存储,这涉及到补码的概念。补码是一种...
以上内容是对计算机二级等级考试公共基础知识部分的学习笔记,涵盖了算法与数据结构的核心概念和基础知识,包括数据结构的逻辑与物理结构、各种查找与排序技术、算法的基本特征与复杂度分析方法等。掌握这些知识点,...