我正在 CentOS 上制作一个巨大的 RAID10 设备 (8 TB) 用于存储。我在 4 个物理硬盘上创建了 4 个分区,并从这 4 个分区中创建了 raid 设备 /dev/md2。
现在是时候在其上放置文件系统了。我想知道我是否应该这样做:
mkfs.ext4 /dev/md2
这完全可行(我试过了),或者我应该首先在该设备上创建一个占用所有空间的分区(使用 fdisk、gdisk 还是 parted?),然后在该分区上执行 mkfs 操作。
在谷歌上搜索后,我发现另一个人在这里问了同样的问题:http://ubuntuforums.org/showthread.php?t=2174067但尽管有一位回复者说:
分区位于阵列成员上。
文件系统位于阵列上。
他们没有给他一个明确的答案,也没有解释何时应该优先考虑一种方法。
答案1
我曾经使用过的唯一方法是对物理磁盘进行分区,然后将分区组合成 RAID,并将文件系统(或交换)直接放在设备上md
。
据我所知,对 md 设备进行分区是一项后来添加的功能,但从未被广泛使用。
我建议不要尝试在未先对物理设备进行分区的情况下直接在该设备上创建 RAID。许多软件都要求硬盘进行分区,并且分区表包含每个分区的类型字段,这将告诉读取分区表的软件该分区是 RAID 的一部分。
是否在设备顶部使用分区表md
可能取决于个人喜好。通常不这样做可能完全是由于历史原因。额外的分区表层会占用少量额外的磁盘空间,这当然不是避免这样做的理由,就像在下层一样,md 设备顶部的分区表会指示在里面可以找到什么。
然而,我认为通过对设备进行分区而获得的灵活性md
可以忽略不计,因为您可以在物理设备上创建多个分区并创建多个md
设备。
多个md
未分区的设备比单个md
分区的设备具有更大的灵活性。当需要更换底层介质之一时,您可以拥有更多的自由,并且可以为不同的md
设备配置不同的 RAID 级别。
例如,如果您有六个磁盘,则可以组成/boot
RAID-1,每个磁盘上都有一个副本。/
可以是三个磁盘上有副本的 RAID-1,其他三个磁盘上有副本的 RAID-1 可用于交换。剩余空间可以是跨所有六个磁盘的大型 RAID-6。
答案2
正如其他人所说,md-RAID 元设备的正常做法是将文件系统直接放在其上。元设备应该已经只由分区组成(我发现将 RAID 设备放在整个磁盘设备之上的做法往往是自找麻烦),因此您没有违反收到的建议。
但是,还有一个尚未提及的选项,即如果您想要对 RAID 设备进行分区,您可以将其分配给 LVM,然后使用 LVM 将设备划分为分区。此外,在调整分区大小、分配额外空间等方面,您还可以获得 LVM 的便利优势。
以下是我的一个盒子中的一个例子:
[root@risby ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/md127 VolGroup01 lvm2 a-- 1.82t 0
[root@risby ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup01 1 4 0 wz--n- 1.82t 0
[root@risby ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
LogVol00 VolGroup01 -wi-ao---- 5.00g
LogVol01 VolGroup01 -wi-ao---- 50.00g
LogVol02 VolGroup01 -wi-ao---- 1.75t
LogVol03 VolGroup01 -wi-a----- 11.02g
如您所见,有一个 RAID 元设备,上面有四个单独的分区。它们分别对应交换分区、/
一个大数据分区和一个额外的小空间,以备不时之需。