Chunklets
Overview
物理硬盘被分为很多小块chunklets. 一个物理硬盘被存储确认后,就会被划分为chunklets成为可用空间。一部分 chunklets组成逻辑硬盘,另一部分做为热备空间,在硬盘故障或其他维护过程中用于数据的生组。生成、移动和删除 chunklets 和热备只能在HP 3PAR命令行进行。
查看chunklets和热备可以在命令行或是管理控制台实现。
Physical Disk Chunklets
物理硬盘分成多个chunklets,每个chunklet在物理硬盘上占据一块连续的空间。
空间是这样分配的:
. 在F-Class 和T-Class存储上,所有chunklets是256 MB.在 StoreServ 10000 和 StoreServ 7000存储上所有chunklets是1 GB.
. 256 MB空间保留给table of contents (TOC),包含了存储的内部描述。存储中的每块硬盘上的TOC的内容是一样的。
. 4 MB保留给诊断用途,其中 2 MB紧接着TOC,2 MB在硬盘逻辑块地址的最后。
. 一个或多个chunklets被分配为热备。在硬盘损坏或是维护过程中这些热备的chunklet用来保存重定位的数据。存储安装设置时生成热备,任何chunklet都可以设为热备,但是存储设置脚本会尽量选择磁盘最后面的空间。
. 剩下的磁盘空间用于逻辑硬盘。
Spare Chunklets
部分chunklets在系统安装设置时被指定为热备。当硬盘故障或是一个drive magazine需要维护时,其他chunklet的数据要移动、重构到这些chunklet上。这个初始化的热备集合了一个drive magazine中的存储空间,使用最大容量的硬盘。
热备chunklet这样工作:
. 当一个物理硬盘故障,或是到物理硬盘的连接中断,所以后续的写操作被自动写到一个logging逻辑硬盘,直到物理硬盘重新在线,或是logging的时间限制到达。logging磁盘空间是在初始化设置时分配的。本操作不适用于RAID0,因为RAID0没有冗余。
. 如果logging的时间限制到了,或是logging的逻辑硬盘满了,自动开始将这个硬盘上的chunklet迁移到空闲的,被指定为热备空间的过程。 空闲的chunklet就是没有分配给任何逻辑硬盘的空间。
. 对于自动的数据迁移,每个节点使用最多一个硬盘大小的chunklets.
. 选择用来迁移的chunklet时,存储(按顺序)尝试找到一个本地的热备chunklet,本地的空闲chunklet,远程的热备chunklet,最后是远程的空闲chunklet.
NOTE: 本地chunklet是指这样的硬盘上的chunklet,这些硬盘的主要访问路径连接到一个节点,而这个节点是有chunklet需要被迁移的逻辑硬盘的属主。
. 如果存储在数据迁移的过程中用光了空闲的或是热备chunklet,会生成一个警告。
.当所有的热备与空闲的chunklets都用完了,自动数据迁移就停止了。大多数情况下,数据的冗余不再存在。存储也会生成一个警告。
Logical Disks
Overview
一个逻辑硬盘Logical Disk (LD)是一组chunklet的集合,这些chunklet组成RAID组。 每个RAID组成员由不同物理硬盘上的chunklet组成。 逻辑硬盘组成一个存储池Common Provisioning Groups (CPGs)供虚拟卷分配存储空间。
虚拟卷由CPG生成时,存储自动生成逻辑硬盘。RAID级别、空间分配、空间增长步进和其他逻辑硬盘参数可以在生成CPG时设置,也可以在后期更改。
Logical Disks and Common Provisioning Groups
生成CPG,也就生成了一个虚拟的、可以按需增长的存储池。生成虚拟卷时,存储自动为你生成底层的逻辑硬盘。 CPG相关联的卷按需由虚拟的存储池内抽取逻辑硬盘空间。当由CPG抽取空间的虚拟卷需要更多空间时,存储自动生成额外的逻辑硬盘并把它们加入到存储池中。生成CPG后,你可以增加或删除逻辑硬盘。还可以指定进除的逻辑硬盘参数,这样可以更好地控制CPG中生成逻辑硬盘的方式。
NOTE: 生成虚拟拷贝或是快照需要HP 3PAR Virtual Copy Software license.
Logical Disk Types
下列的逻辑硬盘类型为虚拟卷提供存储空间:
. User 逻辑硬盘提供用户空间给虚拟卷。用户空间包含了用户数据,它映射给主机成为LUN。
. Snapshot data 逻辑硬盘提供存储空间给快照或是虚拟拷贝。快照空间存放了自快照生成以来所有变化了的用户数据。
. Snapshot administration逻辑硬盘提供存储空间供快照管理。这些管理空间用来跟踪上次快照生成以来卷的变化。
存储另外设置了逻辑硬盘实现logging,用做保留数据,用做存储管理。这些逻辑硬盘是多层逻辑硬盘,使用了3路镜像来保证冗余与高性能。存储系统生成下列类型的逻辑硬盘:
. logging logical disks,RAID 10级别,用来在硬盘故障或更换过程中临时性地保存数据。 Logging logical disks在存储初始化安装时生成。每个控制器节点有一个60 GB的logging LD.
. preserved data logical disks, RAID 10级别,用来保存一些保留数据。它也是在存储初始化安装时生成。 preserved data LD的大小取决于存储中 data cache 的大小。
在写操作时,如果有多块硬盘故障,数据就会在cache中挂起,存储暂时把这些数据保存在preserved data LD中。 这样以后,就可以把cache中的数据块释放出来。如果目标的LD又重新上线,存储会自动由preserved data LD中把数据写到目标LD中。
. Administration volume logical disks ,为管理卷提供空间,系统安装时生成一个管理卷,它用来存放系统日志system event log等内容。
RAID Types
3PAR存储支持下列RAID级别
. RAID 0
. RAID 10 (RAID 1)
. RAID 50 (RAID 5)
. RAID Multi-parity (MP)
RAID 0
在RAID 0逻辑硬盘上,数据条带化分布在多个物理硬盘上的chunklet中。RAID组中chunklet的数量称为set size,它的值总是为1. 一行之中有几个set称为row size. 存储以一个步进大小来访问RAID 0 LD. 步进大小指的是存储每次访问多少个连续的字节。 RAID 0提升了访问性能,但是没有提供冗余。
Figure 3 显示了一个set size是1,row size是3的RAID 0 LD。
RAID 1 and 10
在RAID 10 LD上,数据条带化分布在RAID 1组上(也叫镜像组)。 一个RAID 1组又两个或更多的保存同样数据的chunklet组成。 每个RAID组中的chunklet位于不同的物理硬盘,它们可能在不同的drive magazine中,甚至于在不同的硬盘笼中。 RAID 1中的set size也叫镜像深度。 RAID组中的一行中的set数叫row size.最大的row size是40. 存储以一个步进大小访问RAID 10 LD. 只要还有一个chunklet工作(有一份数据拷贝),数据就不会丢。
Figure 4 显示了一个set size为2,row size 为3,总共2行的RAID 10 LD
RAID 5 and 50
在一个 RAID 50 LD中,数据条带化分布在数行RAID 5组上。 一个RAID组,或者叫 parity set,至少要有3个chunklets. 由3个chunklet组成的RAID 5组有两个chunklet的存数空间,一个chunklet的空间用来做校验。 支持由3到9个chunklet组成RAID5组。RAID5组中的每个chunklet分在不同的物理硬盘上,可能在不同的drive magazine中,也可能在不同的drive笼中。 每一行中有多少个RAID set称为row size. 存储以一个步进大小访问RAID 50 LD。
Figure 5 显示了一个set size of 3, 一行2 sets的RAID 50 LD:
RAID Multi-Parity
在一个多重校验位RAID Multi-Parity (MP)或者说RAID 6的逻辑硬盘上,数据条带化分布在多行的RAID MP sets上.
一个RAID MP set,或者说一个双校验位组,至少要有8个 8 chunklets. 一个8个chunklets组成的MP set,有6个chunklets的空间存放数据,2个 chunklets空间存放校验位。RAID MP支持8个和10个chunklet的。每个RAID MP set中的chunklet是分布在不同的物理硬盘上,可能在不同的drive magazine中,甚至在不同的盘笼里。 每一行中的set数为row size.存储以一个步进大小访问数据。一个RAID MP set可以在任意两个chunklet损坏的情况下维持数据访问。下面的例子展示了一行中有两个RAID MP sets,第二个set在第一个的下面。 在例中第一个RAID MP set中,p0是这些数据块的校验:F, L, M, Q, T, V, and X. (相当跳跃啊,没看懂规律何在)
Figure 6 展示了一个RAID MP逻辑硬盘,set size为8,在一行中共2个set。
Logical Disk Size and RAID Types
逻辑硬盘是多个物理硬盘chunklet以数行RAID set的形式组合在一起的集合。 在F-Class和T-Class上,所有chunklets是256 MB大小.在StoreServ 10000和 StoreServ 7000上所有chunklets是1 GB大小.逻辑硬盘的大小是chunklet的大小的整数倍。逻辑硬盘的大小取决于RAID set中chunklet的数量。
. RAID 0或是RAID 1逻辑硬盘到少要有1个chunklet.
. RAID 5至少要有3个chunklets. 存储默认是4个chunklets: 3个chunklet的空间存数据,一个存校验位。(3+1).
. RAID MP set (RAID 6), 或者叫 double-parity set,至少有8个chunklets. RAID MP set sizes支持8或16个 chunklets 。存储默认的是 8个chunklets. 8个chunklets 的RAID MP set 有6个chunklets的空间存放数据,2个存放校验位 (6+2). 在StoreServ 10000 和StoreServ 7000 systems, RAID 6 set sizes支持(4+2), (6+2), (8+2), (10+2),和(14+2).
NOTE: 存储对虚拟卷、CPG、CPG递增空间也会以chunklet的大小取整,或是1GB,或是256MB.
Common Provisioning Groups
Overview
common provisioning group (CPG)生成逻辑盘的虚拟存储池,可以允许虚拟卷共享CPG的资源,按需分配空间。你可以生成 fully-provisioned virtual volumes 和 thinly-provisioned virtual volumes (TPVVs)。
CPGs 允许对逻辑容量以比较精细的颗粒度共享访问,不需要为虚拟卷指定专门的逻辑硬盘。例如:当一个TPVV的用户空间不多了的情况下,存储自动通CPG中相关的逻辑硬盘上映射一部分空间给这个TPVV。这样,就不会有大块的已分配又未使用的空间。FPVV不能生成用户空间,它预先分配固定的存储空间。
默认情况下,CPG被配置为当可用的逻辑盘空间降到低于一个预设的阈值后自动生成新的逻辑硬盘。初始化的存储池大小是映射出来的虚拟卷的一小部分,按照应用程序的写操作自动增加。
可以用命令行或是管理控制台来生成CPG。
Precautions and Planning
Common Provisioning Group (CPG)允许多至4,095个虚拟卷来共享CPG的资源。但是,CPG仍需仔细地规划与监控,避免变得过大超出内建的安全机制。这些安全机制是为了避免CPG消耗掉存储中的所有剩余空间,但是它只在仔细规划与监控的存储上才能生效。存储中可以生成最多2,048个CPG。
Growth Increments, Warnings, and Limits
生成CPG时,设置一个增长的步进值和一个可选的增长警告和增长极限值来限制CPG的最大值与增长特性。非常重要的一点是仔细规划好CPG的增长步进、增长警告值与增长极限值并且持续地监控。
CAUTION:在规划CPG时要注意,存储并不会阻止你将增长警告值或是增长极限值设得比存储的可用空间还大。当与CPG关联的虚拟卷用光了CPG中所有可用空间时,对TPVV的所有写操作将会失败,并且/或者与这个CPG关联的快照卷会失效。 在这些情况下,有些应用程序不能很好地处理写操作失败,可能导致不可预制的错误。
NOTE: 默认情况下,增长警告值与增长极限值均设为none, 使这个特性处在失效的状态。
Growth Increment
当一个由CPG抽取空间的虚拟卷需要额外的空间时,存储根据CPG增长步进值自动生成额外的逻辑硬盘。默认的与最小的增量值与控制器节点的数量相关。
有些情况下可能希望有更大的增量值。但是,较小的增量值可以避免CPG自动分配了过多空间。 优化的增量值取决于几个参数:
. 存储上总的可用空间
. 所存储的数据的相关特性
. 存储中CPG的数量
. 与CPG相关联的虚拟卷的数据.
. 预期的卷的增长率
NOTE: 存储在生成逻辑硬盘时会进行取整的操作(一定是chunklet的大小的整数倍 ),这样用户指定的大小与增长步进值可能与存储中分配的空间有所区别。 对这一部分详细的讨论,请参见”Logical Disk Size and RAID Types”部分.
Growth Warning
当由CPG抽取空间的卷的大小达到了CPG的增长警告值growth warning,存储会生成一条告警信息提醒你CPG增加了空间。这样的安全机制提供了早期处理避免关联于CPG的快照卷失效或是应用程序写失败,所有存储空间耗尽的可能性。
设定增长警告值时,一定要考虑到存储中CPG的数量,存储的总容量,和预期的所有虚拟卷的增长率。
存储不会制止你把增长警告值设为比总容量还大的值。
例如,在一个总容量为3TB的存储上,你可以生成两个CPG,每个CPG的增长警告值为2TB. 如果两个CPG以类似的速度增长,有可能会在增长警告尚未触发的情况下耗尽存储上的全部空间。
Growth Limit
如果虚拟卷达到CPG的增长极限值,存储会阻止它们继续获取额外的空间。这样的安全机制避免了一个有问题的应用程序或是一个卷耗尽CPG上的全部剩余空间。但是,存储不会阻止你将增长极限值设得比存储的全部空间还大。例如,一个4TB的存储,将增长极限值设为5TB是可能的。或者是生成5个CPG,每个增长极限值都设为2TB。
另外,虚拟卷只能使用指定的CPG上的空间,取决于CPG的逻辑硬盘参数。例如,你生成了一个CPG只使用控制器节点0所属的逻辑硬盘,当虚拟卷耗尽了相关CPG的全部空间后,会发生下列事件:
. 所有映射到这个CPG的TPVV的写操作都会失败。
. 映射到这个CPG的快照卷都会失效 (stale), 与base volume的virtual copy policy相关。对于 base volumes设定为 no stale snapshots virtual copy policy的, 所有对base volume的写操作会失败。
. base volumes 设定为stale snapshots virtual copy policy,新的写操作会使快照卷失效invalid (stale).
. 如果虚拟卷达到了CPG的增长极限值,存储生成一条告警信息提示CPG的所有空间耗尽。
System Guidelines for Creating CPGs
根据下述的规则来保证最好的性能与可用性。
. 为提供最高的可用性, 同一个RAID set中的chunklet应分布于不同的硬盘笼 drive cages, 然后是不同的drive magazines.
. 要优先使用那些chunklet比较少的物理硬盘。
. 同一行same row中的Chunklets要来自不同的物理硬盘。换句话说,同一行中一个物理硬盘不应该出现两次。
. Chunklets应该属于通过主要路径 primary path与逻辑硬盘属主连接的硬盘。
. 存储中硬盘越多越好.
. 各个物理硬盘上的负载要均衡。
. 存储要使用最大的可能的row size.
Volume Types Associated with CPGs
根据存储上安装的软件产品与License,你可以在生成CPG以后,生成两种类型的基础卷 base volumes : Thinly Provisioned Virtual Volumes (TPVVs)和fully provisioned virtual volumes(FPVVs).这两种卷从存储池中抽取空间的方式不同。
TPVVs,参考“Thinly-provisioned Virtual Volumes”。FPVV,参考“Fully-provisioned Virtual Volumes”