当前位置: 首页>>技术教程>>正文


partitioning – 如何正确对齐分区表?

, ,

问题描述

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

root@bondigas:~# 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

在此过程中,我决定使用以下命令格式化野兽:

root@bondigas:~# 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
root@bondigas:~# ^C

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

最佳办法

由于对齐会在很多地方弹出 –

  • “Advanced Format” 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)相关;如果在知道条带大小的情况下创建文件系统,它的性能会更好。

如果您希望 align the file system to the SSD erase block size(Theodore Tso,Linux 内核开发人员),它也可以用于 SSD。

在 OP 后 mkfs 显然 auto-detected 最佳设置,因此不需要进一步的操作。

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

  • 块大小(文件系统块大小,例如 4096)

  • 条带大小(与 mdadm 块大小相同,例如 64k)

  • 步幅:stripe size / block size(例如 64k /4k = 16)

  • stripe-width: stride * #-of-data-disks (ex. 4 disks RAID 5 is 3 data disks; 16*3 = 48)

来自 Linux Raid Wiki。另请参阅 this simple calculator 了解不同的 RAID 级别和磁盘数量。

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

  • fs 块大小(例如 4096)

  • SSD 擦除块大小(例如 128k)

  • stripe-width:erase-block-size /fs-block-size(例如 128k /4k = 32)

来自 Theodore’s SSD post

对齐 LVM 范围

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

有关解决方法,请参阅 Theodore’s post

次佳办法

我的一个朋友指出,我可以在 /dev/md1 上直接 mkfs.ex4 而无需分区,所以我删除了分区并执行了该操作,现在它似乎正在格式化。

第三种办法

我发现这种方式是最简单的

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

或者另一种肮脏的方法会像这样简单地进行

(parted) mkpart primary ext4 1 -1

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13489.html,未经允许,请勿转载。