我正在构建我的第一个 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 字节”。以及如何正确分区磁盘以匹配,以便我可以正确格式化它。
由于对齐在很多地方都会弹出 -
- 我会稍微扩展一下这个问题。
对齐分区
“Linux on 4kB-sector disks”(IBM developerWorks)介绍了使用 fdisk、parted 和 GPT fdisk 的步骤。
使用 fdisk:
对齐文件系统
这主要与 RAID 相关(级别 0、5 和 6;不是级别 1);如果文件系统是在知道条带大小的情况下创建的,则它的性能会更好。
如果您希望将文件系统与 SSD 擦除块大小对齐(Theodore Tso,Linux 内核开发人员),它也可用于 SSD 。
在 OP 帖子
mkfs
中,显然自动检测到了最佳设置,因此无需采取进一步行动。如果您想验证,对于RAID,相关参数是:
stripe size / block size
例如 64k / 4k = 16)stride * #-of-data-disks
例如 4 个磁盘 RAID 5 是 3 个数据磁盘;16*3 = 48)来自Linux Raid 维基。另请参阅这个简单的计算器,了解不同的 RAID 级别和磁盘数量。
对于SSD 擦除块对齐,参数为:
来自Theodore 的 SSD 帖子。
对齐 LVM 范围
潜在的问题是 LVM 创建了 192k 标头。这是 4k 的倍数(因此 4k 块磁盘没有问题),但可能不是 RAID 条带大小(如果 LVM 在 RAID 上运行)或 SSD 擦除块大小(如果 LVM 在 SSD 上运行)的倍数。
有关解决方法,请参阅Theodore 的帖子。
我的一个朋友指出我可以直接打开 mkfs.ex4
/dev/md1
而不进行任何分区,所以我删除了分区并这样做了,它现在似乎正在格式化。我发现这种方式是最简单的
或者另一种肮脏的方法就像这样
似乎 mkfs.ext4 希望 RAID 上的文件系统以 64 KiB 的边界开始。如果你使用整个磁盘,它从 0 开始,当然也是 64 KiB 的倍数...
现在的大多数分区工具无论如何都会默认使用 1 MiB 边界(fdisk 可能不会)。
原因是大多数硬盘和 SSD 在设备上使用比逻辑扇区大得多的物理扇区。这样做的结果是,如果你从磁盘读取一个 512 字节的逻辑扇区,硬件实际上必须读取更多的数据。
如果您的软件 RAID 设备会发生类似情况:其上的数据使用默认的 mdadm 设置存储在 64 KiB 的“块”中。