我正在构建我的第一个 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 字节。”以及如何正确对磁盘进行分区以匹配,以便我可以正确格式化它。
答案1
由于对齐在很多地方都会出现 -
- 具有 4k 块的“高级格式化”硬盘
- 固态硬盘
- 袭击
- 逻辑卷管理器
- 我将稍微详细阐述一下这个问题。
对齐分区
“4kB 扇区磁盘上的 Linux”(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将文件系统与 SSD 擦除块大小对齐(Theodore Tso,Linux 内核开发人员)。
在 OP 帖子中mkfs
显然自动检测了最佳设置,因此无需采取进一步的行动。
如果你想验证,袭击相关参数为:
- 块大小(文件系统块大小,例如 4096)
- 条带大小(与 mdadm 块大小相同,例如 64k)
- 步幅:
stripe size / block size
(例如 64k / 4k = 16) - 條紋寬度:
stride * #-of-data-disks
(例如 4 个磁盘 RAID 5 是 3 个数据磁盘;16*3 = 48)
从Linux 突袭 Wiki。 也可以看看这个简单的计算器适用于不同的 RAID 级别和磁盘数量。
为了SSD擦除块对齐参数为:
- fs 块大小(例如 4096)
- SSD 擦除块大小(例如 128k)
- 条带宽度:擦除块大小/fs 块大小(例如 128k / 4k = 32)
对齐 LVM 范围
潜在的问题是 LVM 会创建一个 192k 的标头。这是 4k 的倍数(因此 4k 块磁盘没有问题),但可能不是 RAID 条带大小(如果 LVM 在 RAID 上运行)或 SSD 擦除块大小(如果 LVM 在 SSD 上运行)的倍数。
看Theodore 的帖子寻求解决方法。
答案2
我的一个朋友指出我可以直接执行 mkfs.ex4 而/dev/md1
无需进行任何分区,因此我删除了该分区并执行了该操作,现在它似乎正在格式化。
答案3
我觉得这是最简单的方法
parted -a opt /dev/md0
(parted) u MiB
(parted) rm 1
(parted) mkpart primary 1 100%
或者另一种肮脏的方法就是像这样
(parted) mkpart primary ext4 1 -1
答案4
似乎 mkfs.ext4 想要 RAID 上的文件系统从 64 KiB 边界开始。如果您使用整个磁盘,它将从 0 开始,这当然也是 64 KiB 的倍数...
无论如何,现在大多数分区工具默认使用 1 MiB 边界(fdisk 可能不会)。
原因是大多数硬盘和 SSD 使用的物理扇区比逻辑扇区大得多。结果是,如果您从磁盘读取 512 字节的逻辑扇区,硬件实际上必须读取大量数据。
如果您的软件 RAID 设备也会出现类似的情况:其中的数据以默认的 mdadm 设置存储在 64 KiB 的“块”中。