风中岁月存储专栏:EMC存储最佳实践R22(5)

 前文再叙,书接上一回

磁盘分区对齐和windows的系统

在Windows NT,2000,2003系统中,分区软件diskpar.exe,作为WRK(Windows Resource Kit)的一部分,可以用来设定分区位移的开始。你必须要在数据写入LUN之前做这件事,因为diskpar 会重新写分区表:所有在LUN上出现的数据都会丢失掉。

对于随机访问操作或者是metaLUN,在diskpart中设定起始位移的大小,跟对被用来Bind LUN的stripe element size的大小一致(一般128blocks)。对于高带宽要求的应用,设定起始位移的大小跟LUNstripe size的大小一致。

开始,用Disk Manager来获得磁盘的数目。在命令行中,使用diskpar加上-i的选项:diskpar -i x

(新的大小是磁盘个数)来检查已经存在的位移:

C:>diskpar -i 0

—-Drive 0 Geometry Information —-

—-Drive Partition 0 Information —-

StatringOffset = 32256

PartitionLength = 40007729664

HiddenSectors = 63

…… …… 

注意 HiddenSectors的值。这就是分区的位移的数值

1. 假如磁盘X有数据你不想丢失,那么备份那个数据

2. 假如磁盘X是一个Raw Drive,跳到第四部。

3. 删掉在磁盘X上所有的分区,使之成为一个Raw Disk。

4. 在命令行中使用diskpar -s X (X是磁盘个数)

5. 输入新的起始位移(单位sectors)和分区长度(单位MB)。这一步骤写入为那个磁盘写入新的MBR和创建新的分区。在你输入起始位移和分区大小,MBR就被修改了,而新的分区信息出现了。

6. 在command prompt输入diskpar -i x (x为磁盘个数)来复查新近创立的分区上的信息。

64位windows系统

在64位的windows系统里面,如果按照默认创建,MBR类型的磁盘是对齐的;GPT分区也是按默认对齐,尽管他们有一个小的保留区域(32MB)是没有对齐的。

在linux系统中的磁盘分区调整

在linux中,在数据写入LUN之前对齐分区表(table),因为分区影射(map)会被重写,所有在LUN上的数据都会毁坏。在接下来的例子里,LUN被影射到/dev/emcpowerah,而且LUN stripe element size是128block。fdisk软件工具的使用方式如下所示:

fdisk /dev/emcpowerah

x # expert mode

b # adjust starting block number

1 # choose partition 1

128 # set it to 128, our stripe element size

w # write the new partition

对于那些会使用snapshot,clone,MirrowView的镜像构成的LUN来说,这个方法比 LUN对齐位移方法更加适用。这对SAN Copy中的sources和targets是一样适用的

对于VMWare的磁盘分区调整

VMware会更加复杂,因为会有两种情况存在。

当对齐raw disk或者Raw Device Mapping(RDM)卷,实在虚拟主机(VM)层次上来实现对齐的。例如,在windows的虚拟主机上使用diskpar来实现对齐。

对于VMFS卷,会在ESX Server的层次上使用fdisk来实现对齐,正如diskpar在VM层次。这是因为不管是ESX Server还是客户端都会把MBR放到LUN上面去。ESX必须对齐VMFS卷,而客户系统必需对其他们的虚拟磁盘。

对齐ESX Server:

On service console, execute “fdisk /dev/sd“, where sd is the device on which you would like to create the VMFS

Type “n” to create a new partition

Type “p” to create a primary partition

Type “n” to create partition #1

Select the defaults to use the complete disk

Type “x” to get into expert mode

Type “b” to specify the starting block for partitions

Type “1” to select partition #1

Type “128” to make partition #1 to align on 64KB boundary

Type “r” to return to main menu

Type “t” to change partition type

Type “fb” to set type to fb (VMFS volume)

Type “w” to write label and the partition information to disk

通过把分区类型声明为fb,ESX Server会将这个分区认为一个没有被格式化的VMFS卷。你应该能够使用MUI或者vmkfstools,把一个VMFS文件系统放上去。对于Linux的虚拟主机,按照上面列出的程序步骤来做。对于windows的虚拟主机,也是按照上面的程序步骤来做。

Linux的I/O fragementing

对于linux来说,避免对一个LUN上的多个大文件的并发访问是很重要的。否则,这回造成来自不同的线程的许多个访问,使用不同的虚假设备来访问同一个潜在的设备。这种冲突减少了写操作的coalescing。

最好还是使用很多个小的LUN,每一个有一个单一的大的文件。

动态LUN的融合和偏移

如果你使用一个基于主机的分区工具来对齐数据,在你融合几个LUN的时候,这个对齐也会被保留。这是假设所有LUN的LUN stripe size是一致的。假如Navisphere Bind Offset被融合的源LUN所使用,那么目标LUN,在bound用来调整stripe对齐的时候,必须要使用Bind Offset。


<未完待续>