易于使用XFS扩展Linux软件RAID 5。最佳做法?


13

我将Ubuntu计算机用作使用Samba共享的Windows / Linux / Mac客户端的文件服务器。我需要通过添加更多硬盘来轻松扩展,而不必来回移动任何数据。

到目前为止,这就是我所做的。我已经成功添加了第四个硬盘。现在,很高兴知道这应该怎么做?我做错了还是可以做得更好?

创建初始的3驱动器阵列

我从三个空驱动器开始:/ dev / sdb,/ dev / sdc和/ dev / sdd。

首先,我为所有驱动器创建了空分区:

$ fdisk /dev/sdX
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

在为所有三张光盘创建空的RAID分区后,我创建了一个RAID5阵列:

$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

现在创建了RAID5阵列,并且已经在构建它。这需要时间,但是您可以继续创建新的物理LVM2卷:

$ pvcreate /dev/md0

现在让我们创建一个新的卷组:

$ vgcreate vd_raid /dev/md0

然后,我们需要在该卷组内创建一个新的逻辑卷。首先,我们需要找出创建的卷组的确切大小:

$ vgdisplay vg_raid

从显示物理范围的“总PE”的行中可以看到大小。假设它是509。现在创建一个占用所有可用空间的新逻辑卷:

$ lvcreate -l 509 vg_raid -n lv_raid

最后,我们可以在该逻辑卷上创建一个文件系统:

$ mkfs.xfs /dev/mapper/vg_raid-lv_raid

为了能够使用我们新创建的RAID阵列,我们需要创建一个目录并将其挂载:

$ mkdir /raid
$ mount /dev/mapper/vg_raid-lv_raid /raid

现在可以使用了。但是要使其在重新启动后自动挂载,我们需要将RAID几何形状保存到mdadm的配置文件中:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

然后将以下行添加到/ etc / fstab中,该文件将自动安装RAID阵列:

/dev/mapper/vg_raid-lv_raid /raid auto auto,noatime,nodiratime,logbufs=8 0 1

现在,RAID阵列已准备就绪,可以使用,并在每次引导后自动安装到/ raid目录。

向阵列添加新驱动器

想象一下,现在您有了一个新的驱动器/ dev / sde,您希望将其添加到先前创建的阵列中而不丢失任何数据。

首先,需要将新驱动器与所有其他驱动器进行分区:

$ fdisk /dev/sde
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

然后需要将其添加到RAID阵列:

$ mdadm --add /dev/md0 /dev/sde1

现在,RAID5阵列包括四个驱动器,目前仅使用三个。需要将该阵列扩展为包括所有四个驱动器:

$ mdadm --grow /dev/md0 --raid-devices=4

然后,需要扩展物理LVM2卷:

$ pvresize /dev/md0

现在,默认情况下将调整物理卷的大小,以覆盖RAID阵列中的所有可用空间。我们需要在物理范围内找出新的大小:

$ vgdisplay vg_raid

假设新大小现在为764(可以从“ Total PE”中看到)。现在扩展逻辑卷以涵盖以下内容:

$ lvextend /dev/mapper/vg_raid-lv_raid -l 764

然后展开XFS文件系统。这需要在文件系统联机和挂载期间完成:

$ xfs_grow /raid

默认情况下,它会扩展为覆盖所有可用空间。最后,由于阵列现在包括一个新磁盘,因此需要更新RAID阵列的几何形状。首先从/etc/mdadm/mdadm.conf中删除添加的行,然后添加一个新行:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

3
不要在磁盘上放置分区。不需要它-不建议使用内核内RAID自动检测(分区类型fd)。
詹姆斯

因此,我应该直接在/ dev / sdb,/ dev / sdc和/ dev / sdd设备上创建/ dev / md0数组,而不是使用fdisk创建类型为'fd'的分区?
Taskinen

1
我听说并不是所有的磁盘都具有相同的大小,因此,如果我购买新的TB磁盘,它的大小可能不完全相同。这会带来一些问题吗?
Taskinen

Answers:


5

我认为您做对了。确保您了解并注意有关在中扩展RAID 5的警告man 8 mdadm

就我个人而言,如果要增加LVM卷,就不会增加现有的RAID阵列来做到这一点。我将创建另一个RAID阵列,从中创建一个新的physvol,并将其添加到同一卷组中。这是更安全的操作(不涉及在新磁盘集上重写整个RAID5阵列),并且可以减小阵列的大小。


完全同意。vgextend是您的朋友在这里。
Dan Andreatta 2010年

1
总的来说,我理解,但是要将上述三个磁盘阵列增长为四个磁盘阵列的情况又如何呢?我不能仅从第四个磁盘创建新的RAID阵列。
Taskinen

1
我不会一次将一个存储服务器的磁盘阵列扩展到一个磁盘。从三个磁盘阵列到四个磁盘阵列只会给您增加50%的存储空间,因为您必须使用相同大小的磁盘。
卡米尔·基西尔

1
同意 到空间不足时,更大的磁盘驱动器将降价。在一组更大的新驱动器上构建第二个RAID阵列,然后将旧数据pvmove移至该阵列,并在pvmove完成后停用旧数据集。这可以在受pvmove影响的逻辑卷中的文件系统处于活动状态时完成。
flabdablet 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.