it-swarm.cn

如何正确对齐分区表?

我正在构建我的第一个RAID5阵列。我用mdadm创建了以下设置:

[email protected]:~# mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Wed Oct 20 20:00:41 2010
     Raid Level : raid5
     Array Size : 5860543488 (5589.05 GiB 6001.20 GB)
  Used Dev Size : 1953514496 (1863.02 GiB 2000.40 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Wed Oct 20 20:13:48 2010
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 1% complete

           UUID : f6dc829e:aa29b476:edd1ef19:85032322 (local to Host bondigas)
         Events : 0.12

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       4       8       64        3      spare rebuilding   /dev/sde

在这种情况下,我决定使用以下命令格式化野兽:

[email protected]:~# mkfs.ext4 /dev/md1p1 
mke2fs 1.41.11 (14-Mar-2010)
/dev/md1p1 alignment is offset by 63488 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=48 blocks
97853440 inodes, 391394047 blocks
19569702 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
11945 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Writing inode tables: ^C 27/11945
[email protected]:~# ^C

我不确定如何处理“/ dev/md1p1对齐偏移63488字节。”以及如何正确分区磁盘以匹配,以便我可以正确格式化。

19
Jorge Castro

我的一个朋友指出我可以在/dev/md1上直接使用mkfs.ex4而不对任何内容进行分区,所以我删除了分区并执行了该操作,现在它似乎是格式化。

7
Jorge Castro

由于对齐在很多地方出现 -

  • 具有4k块的“高级格式化”硬盘
  • 固态硬盘
  • 袭击
  • LVM

- 我会在这个问题上稍微扩展一下。

对齐分区

“Linux on 4kB-sector disks” (IBM developerWorks)使用fdisk,parted和GPT fdisk完成这些步骤。

使用fdisk:

Sudo fdisk /dev/XXX 
c # turn off DOS compatibility
u # switch to sector units
p # print current partitions, check that start sectors are multiples of 8

# for a new partition:
n # new partition
<select primary/secondary and partition #>
first sector: 2048 
  # 2048 is default in recent fdisk, 
  # and is compatible with Vista and Win 7, 
  # 4k-sector disks and all common RAID stripe sizes

对齐文件系统

这主要与RAID相关(级别0,5和6;不是级别1);如果在了解条带大小的情况下创建文件系统,则文件系统的性能会更好。

如果您希望 将文件系统与SSD擦除块大小对齐 (Theodore Tso,Linux内核开发人员),它也可以用于SSD。

在OP post mkfs中显然自动检测到了最佳设置,因此无需进一步操作。

如果您想验证,对于RAID,相关参数是:

  • 块大小(文件系统块大小,例如4096)
  • 条带大小(与mdadm块大小相同,例如64k)
  • 步幅:stripe size / block size(例如64k/4k = 16)
  • stripe-width:stride * #-of-data-disks(例如4个磁盘RAID 5是3个数据磁盘; 16 * 3 = 48个)

来自 Linux Raid Wiki 。另请参阅 这个简单的计算器 针对不同的RAID级别和磁盘数量。

对于SSD擦除块对齐,参数为:

  • fs块大小(例如4096)
  • SSD擦除块大小(例如128k)
  • stripe-width:erase-block-size/fs-block-size(例如128k/4k = 32)

西奥多的SSD帖子

对齐LVM范围

潜在的问题是LVM创建了一个192k的头。这是4k的倍数(因此4k块磁盘没有问题)但可能不是RAID条带大小的倍数(如果LVM在RAID上运行)或SSD擦除块大小(如果LVM在SSD上运行)。

请参阅 Theodore的帖子 以获得解决方法。

17
j-g-faustus

我发现这种方式最简单

parted -a opt /dev/md0
(parted) u MiB
(parted) rm 1
(parted) mkpart primary 1 100%

或者另一种脏方法就是这样

(parted) mkpart primary ext4 1 -1
6
AllGamer

似乎mkfs.ext4希望RAID上的文件系统在64 KiB边界上启动。如果您使用整个磁盘,它从0开始,当然也是64 KiB的倍数...

现在大多数分区工具默认使用1 MiB边界(fdisk可能不会)。

原因在于大多数硬盘和SSD使用的设备上的虚拟扇区比逻辑扇区大得多。结果是,如果从磁盘读取512字节的逻辑扇区,硬件实际上必须读取更大量的数据。

如果您的软件RAID设备发生类似情况:其上的数据以64 KiB的“块”存储,并具有默认的mdadm设置。

1
JanC