量化分区错位的影响

我在NFS服务器上遇到一些重大的性能问题。 我一直在读分区alignment,我我有我的分区错位。 我找不到任何能够告诉我如何实际量化错误分区的影响的东西。 我发现的一些一般信息表明,性能损失可能相当高(超过60%),而其他人则认为这是微不足道的。 我想要做的是确定分区alignment是否是该服务器性能问题的一个因素; 如果是的话,到什么程度?

所以我会把我的信息放在这里,希望社区能够确认我的分区是否确实是错误的,如果是这样的话,请帮我把性能成本计算在内。

服务器是具有双E5620 CPU和8 GB RAM的戴尔R510。 有八个15k 2.5“600 GB硬盘(Seagate ST3600057SS),configuration为硬件RAID-6,带有一个热备份。 RAID控制器是一个戴尔PERC H700瓦特/ 512MBcaching(Linux认为这是一个LSI MegaSAS 9260)。 OS是CentOS 5.6,主目录分区是ext3,选项“rw,data = journal,usrquota”。

我已经将HW RAIDconfiguration为向操作系统提供两个虚拟磁盘:用于操作系统(启动,根和交换分区)的/ dev / sda和用于大型NFS共享的/ dev / sdb:

[root@lnxutil1 ~]# parted -s /dev/sda unit s print Model: DELL PERC H700 (scsi) Disk /dev/sda: 134217599s Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 63s 465884s 465822s primary ext2 boot 2 465885s 134207009s 133741125s primary lvm [root@lnxutil1 ~]# parted -s /dev/sdb unit s print Model: DELL PERC H700 (scsi) Disk /dev/sdb: 5720768639s Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name Flags 1 34s 5720768606s 5720768573s lvm 

编辑1使用cfq IO调度程序(CentOS 5.6的默认设置):

 # cat /sys/block/sd{a,b}/queue/scheduler noop anticipatory deadline [cfq] noop anticipatory deadline [cfq] 

块大小与条大小相同,对不对? 如果是这样,那么64kB

 # /opt/MegaCli -LDInfo -Lall -aALL -NoLog Adapter #0 Number of Virtual Disks: 2 Virtual Disk: 0 (target id: 0) Name:os RAID Level: Primary-6, Secondary-0, RAID Level Qualifier-3 Size:65535MB State: Optimal Stripe Size: 64kB Number Of Drives:7 Span Depth:1 Default Cache Policy: WriteBack, ReadAdaptive, Direct, No Write Cache if Bad BBU Current Cache Policy: WriteThrough, ReadAdaptive, Direct, No Write Cache if Bad BBU Access Policy: Read/Write Disk Cache Policy: Disk's Default Number of Spans: 1 Span: 0 - Number of PDs: 7 ... physical disk info removed for brevity ... Virtual Disk: 1 (target id: 1) Name:share RAID Level: Primary-6, Secondary-0, RAID Level Qualifier-3 Size:2793344MB State: Optimal Stripe Size: 64kB Number Of Drives:7 Span Depth:1 Default Cache Policy: WriteBack, ReadAdaptive, Direct, No Write Cache if Bad BBU Current Cache Policy: WriteThrough, ReadAdaptive, Direct, No Write Cache if Bad BBU Access Policy: Read/Write Disk Cache Policy: Disk's Default Number of Spans: 1 Span: 0 - Number of PDs: 7 

如果不明显,则操作系统的虚拟磁盘0对应于/ dev / sda; 虚拟磁盘1是/ dev / sdb(导出的主目录树)。

你的分区是错位的,可能很难评估你实际上在性能上损失了多less,因为这取决于I / O工作负载的types。 如果您的I / O工作负载比您的磁盘的性能要轻,则可能忽略不计。 但是,由于这是一个NFS服务器,我认为这不是微不足道的,应该加以解决。 有些估计performance为20-30%的罚款。

分区错位基本上意味着您可能需要两个硬件级别的I / O操作来满足软件级别的一个I / O操作。 如果你的软件块没有在相同的硬件边界结束,就会发生。 从你写的东西,你已经研究和理解这一点。

  • 磁盘= 512字节的扇区
  • RAID = 65536字节条纹(OK)
  • 分区0 =从扇区63开始(32256字节偏移)
  • 分区1 =从扇区465885开始(238533120字节偏移量)
  • EXT2 / 3/4块大小=?
  • EXT2 / 3/4步幅=? ( 计算器 )

请记住,分区错位与您的存储子系统使用的块大小不同于您的软件所使用的不同。 这也可能会给你的磁盘带来更多的压力,但是并没有真正涉及alignment问题。

使用tunefs -l /dev/sdaX | grep size tunefs -l /dev/sdaX | grep size来检查文件系统上的块大小。

根据红帽企业Linux的build议:

通常,将分区alignment到一个MB的倍数(1024×1024字节)是一个好主意。 为了实现alignment,分区的起始扇区应始终为2048的倍数,并且结束扇区应始终为2048的倍数,减1.请注意,第一个分区不能从扇区0开始,而是使用扇区2048。

看起来您可能正在考虑移动数据并重新创build分区,如果这确实是NFS性能问题的根本原因。 然而,整个事情通常会更复杂,我会试图find证据表明其他事情都行,然后再考虑昂贵的重新安装。