MyException - 我的异常网
当前位置:我的异常网» 互联网 » 储存基础知识学习笔记

储存基础知识学习笔记

www.MyException.Cn  网友分享于:2015-08-26  浏览:5次
存储基础知识学习笔记

本博客欢迎转发,但请保留原作者信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!

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)的方式将数据进行编码后分区为独立的比特,写入硬盘。因为在数据中加入了错误修正码(ECCError Correction Code),所以数据整体的容量会比原始数据大一些,RAID2最少要三台磁盘驱动器方能运作。


 
RAID 3
采用Bitinterleaving(数据交错存储)技术,它需要通过编码再将数据比特分区后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。


 
RAID 4
它与RAID 3不同的是它在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。(Block interleaving


 
RAID 5
RAID Level 5
是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5 至少需要三颗硬盘, RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0RAID 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+0RAID 0+1
RAID 1+0
是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。
RAID 0+1
则是跟RAID 1+0的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。
性能上,RAID 0+1RAID 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
34较少实际应用,因为RAID5已经涵盖了所需的功能,因此RAID234大多只在研究领域有实现,而实际应用上则以RAID5为主。

RAID4有应用在某些商用机器上,像是NetApp公司设计的NAS系统就是使用RAID4的设计概念

2      存储概述

存储技术
数据备份越来越受到人们的重视,并成为网络建设过程中必考虑的内容。网络存储设备根据存储技术的不同,主要分为三类:DASDirect Attached Storage)、NASNetwork Attached Storage)和SANStorage Area Network)。

存储方式
对象存储基于文件系统,通过文件系统来存储访问数据。
块存储是以块为基本单元的存储方式,其传输不存在数据打包/解包的过程,可提供更高的传输性能
文件存储设备通过以太网与服务器连接。服务器通过NFSCIFSHTTPFTP等协议进行数据访问。数据通过以太网传输,有打包/解包的过程

 
存储接口
常见的存储接口包括SCSIiSCSISASSATAFCFCoE等。

可靠性技术
存储的可靠性技术主要有RAID、备份、快照、镜像、群集并发存取等。

相关硬件
常用的存储设备主要有磁盘阵列、存储服务器和FC交换机。

三种存储技术
DAS
是指将存储设备通过SCSI线缆或FCFiber Channel)直接连接到服务器上
NAS
按照TCP/IP协议进行通信,以文件的I/O方式进行数据传输。它拥有自己的文件系统,通过网络文件系统NFSNetwork File System)或通用Internet文件系统CIFSCommon Internet File System)对外提供文件访问服务。
SAN
是一种通过网络方式连接存储设备和应用服务器的存储架构,这个网络专用于服务器和存储设备之间的访问,SAN代表的是一种专用于存储的网络架构,与协议和设备类型无关。有FC SANIP 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-iscsiLinux下的iscsi initiator实现。使用ietopen-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]
发起discoverytype指定类型,包括sendtargets, slp, isnsportal指定目标器的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
对以targetnameportal指定的节点进行操作
-m node --targetname=[name] --portal=[ip:port] --op=[op] [--name=[name] --value=[value]]
操作数据库的nodes表中对应targetnameportal的节点。可执行的操作包括[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
启动器通过周期向目标器下发pingiSCSI 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运算等都是以纯软件方式实现,因此对PCCPU和内存的性能要求较高。另外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软件方式
   
具有TOETCP Offload Engine)功能的智能以太网卡可以将网络数据流量的处理工作全部转到网卡上的集成硬件中进行,把系统主处理器CPU从忙于协议处理的繁重的内核中断服务中解脱出来,主机只承担TCP/IP控制信息的处理任务.
   
与第一种方式相比,采用TOE卡可以大幅度提高数据的传输速率。TCP/IP协议栈功能由TOE卡完成,而iSCSI层的功能仍旧由主机来完成。

   
由于TOE卡也采用TCP/IP协议,相当于一块高性能的以太网卡,所以第二种方式也可以看做是第一种连接方式的特殊情况
3. iSCSI HBA
(硬件Initiator)方式
   
在主机上安装专业的iSCSI HBA适配卡,从而实现主机与交换机之间、主机与存储之间的高效数据交换。该方式数据传输性能最好,价格也最高

3.5    ISCSI存储使用模式

1DAS使用方式
ISCSI
存储设备的卷由服务器或NAS网关来管理和使用,其它的工作站通过服务器和NAS网关来访问iSCSI存储上数据。整个系统安装调试简单方便,服务器和NAS网关很容易实现数据的网络化共享访问。但服务器和NAS网关直接影响整体存储网络系统的性能,低配置的服务器和NAS网关及有可能成为整个系统的性能瓶颈。


 
2
SAN使用方式
iSCSI
存储上的LUN对于主机来讲相当于裸设备
A
、存储设备层共享
ISCSI
设备上创建多个LUN,不同的LUN指定给不同的主机。各主机分别管理和访问自己的LUN。相当于将多个主机的本地磁盘集中放置在一个网络化的设备中,各主机之间仅实现硬件设备层的共享。如下图:


 
B
、集群共享
系统中有多个数据库系统和WEB集群系统,每两台服务器之间需要管理和使用相同的LUN,主机之间通过MSCSRAC等软件实现集群共享功能。每一个卷仅在两台主机之间共享,两台主机通过集群软件共同对同一个文件系统进行管理。如下图:


 
C
、网络存储共享
在许多大型的高性能计算系统、广电非线性编辑制作系统、IPTV发布系统中,应用需要多台主机能同时访问同一个文件系统(同一个卷)中的数据,可能会是同一个数据。如下图:


 
为了保证同一个文件系统可以同时被多台主机访问,且不会因为并发访问而引起文件系统管理冲突,常规的做法是在所有需要文件系统共享的主机上安装SAN网络存储共享管理软件,并设置一台或多台主机为管理软件的服务器端。该服务器负责管理主机之间的元数据交换,因此被成为MDC,即Metadata Controller






文章评论

漫画:程序员的工作
漫画:程序员的工作
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
老程序员的下场
老程序员的下场
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
一个程序员的时间管理
一个程序员的时间管理
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
那些争议最大的编程观点
那些争议最大的编程观点
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java程序员必看电影
Java程序员必看电影
编程语言是女人
编程语言是女人
每天工作4小时的程序员
每天工作4小时的程序员
旅行,写作,编程
旅行,写作,编程
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员都该阅读的书
程序员都该阅读的书
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
10个调试和排错的小建议
10个调试和排错的小建议
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
我的丈夫是个程序员
我的丈夫是个程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员的鄙视链
程序员的鄙视链
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
中美印日四国程序员比较
中美印日四国程序员比较
我是如何打败拖延症的
我是如何打败拖延症的
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
 程序员的样子
程序员的样子
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
如何成为一名黑客
如何成为一名黑客
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有