mdadm和4k扇区(高级格式)


10

关于对齐4k扇区磁盘,Serverfault上有很多问题,但是我还不清楚。

我已成功对齐RAID1 + LVM。我做的一件事是使用mdadm超级块版本1.0(将超级块存储在磁盘的末尾)。

联机帮助页上说:

不同的子版本将超级块存储在设备上的不同位置,无论是在末尾(对于1.0),在开始(对于1.1)还是从开始4K(对于1.2)。“ 1”等于“ 1.0”。“默认”等效于“ 1.2”。

是默认版本1.2版本用于4k扇区驱动器吗?我的观察方式不是这样,因为从头开始的4k +超级块的长度不是4k的数目(如果我没记错的话,超级块大约200字节长)。

欢迎对此有任何见识。

编辑:

下面的答案是mdadm超级块1.1和1.2用于4k对齐。我刚刚使用以下方法创建了整个设备团队:

mdadm --create /dev/md4 -l 1 -n 2 /dev/sdb /dev/sdd

然后我添加了一个逻辑卷:

vgcreate universe2 /dev/md4

阵列以16 MB / s的速度同步:

md4 : active raid1 sdd[1] sdb[0]
      1465137424 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.8% (13100352/1465137424) finish=1471.6min speed=16443K/sec

因此,我怀疑它是否正确对齐。

(磁盘为1.5 TB WD EARS。我将其放在台式机中,它们以大约80 MB / s的速度进行同步。)

编辑2:

这是--examine输出:

# mdadm --examine /dev/sdb
/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 79843828:7d939cce:1c8f0b32:cf339870
           Name : brick:4  (local to host brick)
  Creation Time : Sat Jul  9 10:47:33 2011
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 2930275120 (1397.26 GiB 1500.30 GB)
     Array Size : 2930274848 (1397.26 GiB 1500.30 GB)
  Used Dev Size : 2930274848 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : dd2e3b5f:33214b96:1cb88169:25deb050

    Update Time : Sat Jul  9 10:49:06 2011
       Checksum : 4f7cd785 - correct
         Events : 1


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing)

数据偏移量为2048个扇区,可以除以8,因此人们会认为这是可以的。该卷组的物理扩展区大小为4 MiB,也可以除以8。但是这甚至没有关系,因为重新同步与设备所包含的内容无关。

另一个修改:这似乎不是对齐问题;因为hdparm -t显示其中一个磁盘的读取速度非常低(30 MB / s)。还有别的事情。

Edit2:当我找到答案时,我不记得要更新这篇文章。一切都很好地对齐了。其中一张磁盘坏了。显然,这是它的最后一站,甚至在某个时候坏了。更换磁盘工作正常。

Answers:


13

是的,它是用于4k扇区对齐的。

对于1.1和1.2超级块,每个磁盘的开头都保留了空间,这样就不会破坏超级块。超级块创建代码强制此保留空间为4kB的倍数。所有物理读取都从此保留空间的末尾偏移,而不是从超级块的末尾偏移。因此,对于任何均分为4kB的扇区,它都保留了对齐方式。

如果您有兴趣,请参见mdadm源代码super1.c):

/* force 4K alignment */
reserved &= ~7ULL;
sb->data_offset = __cpu_to_le64(reserved);

内核中data_offsetRAID1代码使用此参数来偏移物理读取,例如在读取路径中:

read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset

如果1.1和1.2都适用于4k对齐,那么1.2版本适合什么?我的意思是,为什么我要让超级块从头开始4k?
Halfgaar,2011年

2
因此,可以将磁盘的开头保留用于引导块,从而允许将磁盘用作引导磁盘。
汤姆·肖

我刚刚更新了我的帖子。从外观上看,我的新数组未正确对齐。
Halfgaar 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.