磁盘和Raid基础_第1页
磁盘和Raid基础_第2页
磁盘和Raid基础_第3页
磁盘和Raid基础_第4页
磁盘和Raid基础_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、王文斌CHS编码(Cylinder/Head/Sector)盘面数=磁头数(Heads):表示硬盘总共有几个磁头,也就是有几面盘面, 最大为 0255 (用 8 个二进制位存储),一盘片有两个盘面;磁道数=柱面数(Cylinders):表示硬盘每一面盘片上有几条磁道,最大为 01023(用 10 个二进制位存储);扇区数(Sectors) :表示每一条磁道上有几个扇区, 最大为 163(用 6个二进制位存储);理论上磁盘最大容量为:256 * 1024 * 63 * 512 / 1048576 = 8064MB=7.875 GB ( 1M =1048576 Bytes )这就是所谓的磁盘8GB

2、的限制,所以在后面的发展中CHS编码逐渐被淘汰。硬盘厂商常用的单位:256 * 1024 * 63 * 512 / 1000000 = 8.456 GB ( 1M =1000000 Bytes )注:(1)磁头数最大256是理论值,有的设置FF值无效,取值为最大为255,这些不在讨论范围内,注意后面的发展磁头只是一个逻辑概念,盘片一般只有24片。(2)磁道数1024也只是理论值,3FF有时也是无效值。(3)扇区数取值以前固定为163,所以只为63个扇区。LBA:Logical Block Address 逻辑块地址CHS编码问题: (1)容量问题,突破不了8GB的限制。一个磁道扇区数远远不只6

3、3个。 (2)物理概念和逻辑概念混用,后期用的磁头数(磁道数,扇区数)不是指的物理存在的磁头数,而是逻辑的磁头数。扇区排列顺序问题:扇区在磁道中一般不是顺序排列的,由于磁盘在旋转过程中速度太快,还没等磁头准备好第二个扇区的数据,磁盘已经转到第四个或后面的扇区了,接着写第二个扇区就要转第二圈。使用交叉因子解决。例如:17个扇区交叉因子为3:1,则磁盘扇区顺序为:1,7,13,2,8,14,3,9,15,4,10,16,5,11,17,6,12struct _sas_device struct list_head list;/sas设备链表,_scsih_add_device()u64sas_ad

4、dress;/sas地址,sas_device_pg0配置页读取u64device_name;/设备名,sas_device_pg0配置页获取u16handle;/设备句柄, sas_device_pg0配置页获取u64sas_address_parent; /上一级sas地址, sas_device_pg0配置页获取u16enclosure_handle; / 参见_scsih_add_device()u64enclosure_logical_id; /逻辑槽位号, sas_device_pg0配置页u32device_info;/设备信息, sas_device_pg0配置页获取intid

5、;/未使用,初始化为0intchannel;/未使用,初始化为0u16slot;/未使用,初始化为0u8phy;/实际phy ID,如下D0.15.0对应于0 xfu8responding;在拔出和插入磁盘的时候会打印详细信息,如下:Remove device. BEGIN TO PRINT device info-SAS Address: 0 x5000c500436fa855, device name: 0 x5000c500436fa855, handle: 0 x000d, Parent address: 0 x500605b0000272bf, enclosure handle: 0

6、 x0000, enclosure logical id: 0 x0000000000000000device info: 0 x00000401, id: 0 x00000000, channel: 0 x00000000, slot: 0 x0000, phy: 0 x0f, responding: 0char Serial_Number20;/磁盘序列号,SN号 char Model_Number40;/磁盘厂商和型号 char Firmware_Revision8; /磁盘固件版本u64 Max_LBA;/磁盘大小,最大的LBAu32 SectorSize;/扇区大小,设置为512by

7、tesu16 Capacity;/磁盘容量,未使用,用max_LBA表示u16 Setting;/磁盘设置,未使用,置0;在拔出和插入磁盘的时候会打印详细信息,如下:serial number: 6SL2C9JE, model number: SEAGATE ST3600057SS , firmware rev: ES64, max LBA 0 x0000000045dd2faf, sector size: 512, capacity: 0 x000a, setting: 0 x0000磁盘作为Target端,要获取磁盘信息,只需要向磁盘发送SCSI命令和Inquiry命令即可。_scsih_

8、get_drive_info()获取磁盘的信息。获取磁盘容量:0 x9e, sas_device-Max_LBA大于2T:_scsih_inquiry_lba_sectorsize_by_read_capacity_16()小于2T:_scsih_inquiry_lba_sectorsize_by_read_capacity_10()获取磁盘厂商,型号和版本信息:0 x12 inquiry标准inquiry数据:_scsih_inquiry_model_revision()获取磁盘sn序列号:0 x12 inquiry配置页配置页0 x80: _scsih_inquiry_vpd_sn()sa

9、s2hdfs文件系统与dpart对应bind -k sas2hd 0 /dev/hd : raid; ls /dev/hd/0.13.0raw #define HDP_RAW 0 /* raw partition */ data #defineHDP_DATA 1 /* data partition */ rconfig #defineHDP_RCONFIG 2 /* raid configuration partition */ label #define HDP_LABEL3 /* label partition */ dna #define HDP_DNA 4 /* dna partit

10、ion */syslog #defineHDP _SYSLOG 5/* syslog partition */ cachev #define HDP_CACHEVAULT 6/* cache vaulting partition */K9磁盘初始化:将所有的扇区全部写零。Windows/Linux磁盘初始化:具有具体应用的文件系统,如NTFS或ext3文件系统,有超级块,文件链等。在创建Raid和Pool后,使用_sfsmk创建可用的文件系统,从而可以创建虚拟盘等操作。LBA 0 0 x0000000000000000LBA 1 0 x0000000000000001.LBA_max 0 x0

11、000000045dd2faf磁盘初始化zoutzero out a drives data partition. 磁盘数据区域写零。Usage: zout Dc.s.l|-s SN 如:zout D0.12.0zout_thread (Dcsl)初始化流程(1)首先通过sn号判断D0.12.0位置磁盘是否存在,再通过dnablk的标志位来判断此磁盘是否已经初始化。如果磁盘存在且未初始化则进行下一步。(2)打开磁盘文件系统的数据域,/dev/hd/0.12.0/data,以K9_RDWR读写方式打开。(3)分配写buffer,1024个block的buffer,即1024*512Bytes=5

12、12KB。(4)计算出磁盘的总扇区和buffer的扇区,计算出需要多少个buffer和剩余多少个扇区。(5) 分别写buffer扇区和剩余的扇区,进行写磁盘K9write (fd, (char *) zerobuf, buf_sz),通过文件系统架构调用do_hdwritev(),调用hd_raw_io()做一些检查校验,最后调用hd_asyncio()实际写IO,先准备好异步IO(ASYNCio),然后通过NCRend给磁盘下发IO,NCRwait等待写完成。(6)通过调用步骤5写完所有的扇区,进度条计算,将需要的总buffer分成10份,每完成一份就上报一个进度。全部完成后,更新dnabl

13、k的标志位,初始化完成。王文斌物理盘:物理盘是指创建Raid所用的每块独立的物理硬盘,创建为Raid后,就成为Raid的成员盘。逻辑盘:多块物理盘经过Raid卡进行创建为Raid后,就组成了一块新的虚拟的磁盘,磁块磁盘即为逻辑盘。热备盘:热备盘是指空闲的,加电并待机的磁盘,当Raid中某个成员盘发生故障后,Raid卡可以用热备盘代替故障磁盘。去Raid化:Raid出现故障后,逻辑盘就无法被系统识别,此时物理盘可能只有部分有故障,从槽位上取下来可以继续分析恢复数据,从raid中拔插出来的过程就是去Raid化。盘数和盘序:组成Raid逻辑盘的个数就是盘数,Raid创建出来后,Raid磁盘的顺序就固

14、定,即为盘序。条带和条带组:条带是Raid的最小单位,即将多个扇区组合起来成为一个条带,如K9中使用128个扇区,64KB作为条带。条带组是指raid0和raid5上多个磁盘的条带组成一个组。Raid0是将多块物理磁盘连接在一起形成一个容量更大的的存储设备,Raid0的磁盘容量等于物理盘的的容量乘以磁盘数目。磁盘号=LBA%磁盘数组织结构校验读出磁盘LBA0数据。读出Raid0的LBA0/128数据。对比Raid0的数据是分别在两块磁盘上还是在一块磁盘上。LBA 0LBA128LBA 256LBA 384LBA 512RAID1又称为磁盘镜像,需要两个物理磁盘共同构建,使用磁盘镜像技术而成,方

15、法是在工作磁盘之外再额外的弄一块备份磁盘。磁盘号=两块磁盘组织结构校验读出两块磁盘LBA0数据。读出Raid1 LBA0/128数据。对比Raid1的数据是否在两块磁盘上镜像。LBA 0LBA128LBA 256LBA 384LBA 512Raid5是在Raid0的基础上增加了校验数据,校验数据是分散到所有的磁盘上的,校验算法是异或运算,XOR。校验磁盘号=数据盘数-LBA/数据盘数%磁盘数磁盘号=LBA%数据盘数,小于P不动,大于等于自加1组织结构校验读出三块磁盘LBA0数据。读出Raid5 LBA0/128/256数据。对比Raid5的数据和三块磁盘的数据,是否按照此格式进行排列。LBA

16、0LBA128LBA 256LBA 384LBA 512K9 Raid5的格式和标准的Raid5的格式有一定的区别,区别在于找盘的算法不一样,导致盘的位置也不一样。校验磁盘号=数据盘数-LBA/数据盘数%磁盘数磁盘号=LBA%磁盘数组织结构校验读出三块磁盘LBA0数据。读出Raid5 LBA0/128/256数据。对比Raid5的数据和三块磁盘的数据,是否按照算法所进行的格式排列。LBA 0LBA128LBA 256LBA 384LBA 512Raid6是在Raid5的基础上增加了多增加了一个校验盘,第一个校验数据是异或得出来的,第二个校验数据通过伽罗华域计算出来的。组织结构校验读出三块磁盘L

17、BA0数据。读出Raid6 LBA0/128/256数据。对比Raid6的数据和三块磁盘的数据,是否按照算法所进行的格式排列。LBA 0LBA 1LBA 2LBA 3LBA 4Raid虚拟文件系统Raidfs: raid; ls /raid/R5_000/raid/R5_000:#define ROOT_ID (unsigned long)(0 | K9_DIRBIT)ctl #define CTL_ID1UL data #define RAW_ID2UL repair #define REPAIR_ID 3UL stats #define STATS_ID4ULstatic K9naminfo_t namtab = ROOT_ID,ctl,CTL_ID, ROOT_ID,data,RAW_ID, ROOT_ID,repair,REPAIR_ID , ROOT_ID,stats,STATS_ID, 0, 0, 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论