硬盘扩容(raid0 踩坑版)

起始状态

$lsblk
···
nvme1n1     259:0    0   3.5T  0 disk 
nvme0n1     259:1    0   3.5T  0 disk 
└─nvme0n1p1 259:3    0   3.5T  0 part /home
nvme2n1     259:2    0   3.5T  0 disk

背景

原 Windows 中 nvme0n1、nvme1n1、nvme2n1 是以 RAID 0 方式组合在一起,现在安装 Ubuntu20.04,同样想将其组合成 RAID 0。

目标

将 nvme0n1、nvme1n1、nvme2n1 组合为 RAID 0 并挂载在 /home 下。

过程

由于 /home 无法直接 umount,故 nvme0n1 现在被占用。
所以我计划首先将 nvme1n1 和 nvme2n1 组成 RAID 0,然后将 /home目录迁移到 RAID 0 ,重启使目录完成迁移,然后格式化 nvme0n1,将其热添加到 RAID 0 中。

步骤 1:创建 RAID 0

首先安装 mdadm,然后将 nvme1n1 和 nvme2n1 创建为 RAID 0 阵列,设备名为 /dev/md127。

sudo apt install mdadm -y
sudo mdadm --create --verbose /dev/md/raid0 --level=0 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

步骤 2:迁移 /home

运行以下命令确认设备挂载:

lsblk

在 RAID0 阵列上创建文件系统。假设你打算使用 ext4 文件系统:

sudo mkfs.ext4 /dev/md/raid0

创建一个挂载点并将 RAID0 阵列挂载到该目录:

sudo mkdir /mnt/raid0
sudo mount /dev/md/raid0 /mnt/raid0

将原 /home 目录中的数据迁移到新挂载的 RAID0 阵列。使用 rsync 来保留文件权限和符号链接等:

sudo rsync -aHAXxv /home/ /mnt/raid0/

为了确保每次启动时 RAID0 阵列自动挂载,需要编辑 /etc/fstab 文件。
首先,获取 RAID0 的 UUID:

sudo blkid /dev/md127

然后编辑 /etc/fstab 文件,添加如下内容(根据实际 UUID 替换):

UUID=abcd1234-56ef-7890-abcdef123456(修改此处) /home(找到它) ext4 defaults 0 2

重启!!!然后使用lsblk命令查看是否挂载成功,如果挂载成功如下所示:

nvme1n1 259:0    0   3.5T  0 disk  
└─md127   9:127  0     7T  0 raid0 /home
nvme0n1 259:1    0   3.5T  0 disk  
nvme2n1 259:2    0   3.5T  0 disk  
└─md127   9:127  0     7T  0 raid0 /home

步骤 3 :将 nvme0n1 添加到 md127

首先,检查现有 RAID 阵列的状态,确保它是健康的。或者使用 mdadm 查看 RAID 详细信息:

cat /proc/mdstat
sudo mdadm --detail /dev/md127

确保新添加的 NVMe 磁盘 /dev/nvme0n1 没有被挂载或被使用。使用 lsblk 或 fdisk 检查磁盘状态:

lsblk

如果 /dev/nvme0n1 已经有分区或文件系统,需要删除它们。

sudo fdisk /dev/nvme0n1

向阵列添加新磁盘,由于使用 Raid 0 ,所以添加命令如下

mdadm --grow /dev/md127 --raid-devices=3 --add /dev/nvme0n1

注意, --raid-devices= 的值为指定磁盘的数量,可以在上面 Total Devices 的值 + 1

再次执行 检查,发现新磁盘被标记 spare ,因为它还没有被添加到阵列中

sudo mdadm --detail /dev/md127

此时后台已经开始将磁盘添加队列中 ,可以检查 RAID 重塑状态,根据磁盘大小,可能会需要数小时,退出服务器等待完成即可

在这里插入图片描述

结束

一天没管,今天过来使用lsblk查看发现基本完成。
在这里插入图片描述
但是 df -h 查看:

/dev/md127      7.0T  1.2G  6.6T    1% /home

发现容量还没有更新,执行

$ sudo resize2fs /dev/md127
resize2fs 1.45.5 (07-Jan-2020)
/dev/md127 上的文件系统已被挂载于 /home;需要进行在线调整大小
old_desc_blocks = 895, new_desc_blocks = 1342
/dev/md127 上的文件系统大小已经调整为 2812954368 个块(每块 4k)。

再次df -h查看,发现显示正确!完成!

/dev/md127       11T  1.2G   10T    1% /home
<think>嗯,用户想知道如何给RAID 5添加硬盘扩容,这个问题需要详细回答。首先,我应该回忆一下RAID 5的基本知识。RAID 5通过分布式奇偶校验实现数据冗余,至少需要三块硬盘扩容的话,添加新硬盘需要兼容现有阵列的规格,比如容量和接口类型,这点用户可能需要注意,引用里的资料也提到了这点[^3][^4]。 接下来,步骤方面,可能需要先检查当前RAID状态,确认现有阵列的信息。用户提到的引用里提到用mdadm工具,比如mdadm --detail /dev/md0,这样可以看到阵列的详细信息,比如硬盘数量和状态[^1]。然后添加新硬盘到阵列,可能需要使用mdadm --add命令,这一步用户需要确保硬盘已经被系统识别,比如用lsblk或者fdisk -l查看[^1][^2]。 添加硬盘后,需要扩容阵列,使用mdadm --grow --raid-devices=N,这里N是新数量。例如原来三块,现在四块,所以N设为4。这个过程可能需要时间,因为要重新同步数据,用户需要耐心等待,可能还要监控进度。 然后,调整文件系统的大小。如果是ext4,可以用resize2fs,xfs的话用xfs_growfs。这里要注意文件系统的类型,不然命令可能用错。扩容完成后,用户需要确认新容量是否生效,比如用df -h查看。 还要考虑是否需要备份数据,虽然RAID5有冗余,但扩容过程中还是有风险,最好先备份。另外,不同的RAID管理工具可能有不同的步骤,比如硬件RAID卡可能需要进BIOS设置,但用户的问题里提到的引用都是关于Linux下的软件RAID,所以重点放在mdadm上比较合适[^3][^4]。 用户可能遇到的问题包括硬盘兼容性、扩容时间过长、命令使用错误等,应该在回答中提到这些注意事项。比如,确保新硬盘和原有硬盘规格一致,避免性能问题;扩容期间不要中断,防止数据损坏;确认文件系统支持在线扩容等。 最后,生成相关问题时,可以涉及扩容后的数据迁移、不同RAID级别的比较、性能影响等,这样用户如果有进一步疑问,可以自行探索。同时,确保引用正确,每个步骤都对应到用户提供的参考资料,增加回答的可信度。</think>### RAID 5 添加硬盘扩容方法教程 RAID 5 通过分布式奇偶校验实现数据冗余和性能提升,支持在添加新硬盘后动态扩容。以下是详细步骤: --- #### **1. 确认硬件兼容性** - **新硬盘要求**:与现有阵列硬盘的容量、转速、接口类型(如SATA/SAS)一致。 - **系统支持**:确保操作系统支持软件RAID管理工具(如Linux的`mdadm`)。 --- #### **2. 查看当前RAID状态** 使用`mdadm`工具查看现有RAID信息: ```bash mdadm --detail /dev/md0 # 假设RAID设备为/dev/md0 ``` 输出示例: ``` RAID Level : raid5 Active Devices : 3 Total Devices : 3 ``` 注意当前硬盘数量(如3块)和状态是否正常[^4]。 --- #### **3. 添加新硬盘RAID** - **步骤3.1:将新硬盘插入服务器**,确保系统识别到新硬盘: ```bash lsblk # 查看新硬盘设备名(如/dev/sdd) ``` - **步骤3.2:将硬盘加入RAID阵列**: ```bash mdadm --add /dev/md0 /dev/sdd # 将/dev/sdd添加到/dev/md0 ``` --- #### **4. 扩展RAID阵列容量** - **步骤4.1:调整RAID设备数量**(例如从3块扩展到4块): ```bash mdadm --grow /dev/md0 --raid-devices=4 ``` - **步骤4.2:等待数据同步**(耗时较长,可通过以下命令监控进度): ```bash cat /proc/mdstat # 查看同步进度 ``` --- #### **5. 扩展文件系统** - **步骤5.1:扩展逻辑卷或直接调整文件系统**(以ext4为例): ```bash resize2fs /dev/md0 # 调整文件系统大小 ``` - **步骤5.2:验证新容量**: ```bash df -h # 查看挂载点容量变化 ``` --- #### **注意事项** 1. **备份数据**:扩容前建议备份关键数据,避免操作失误导致数据丢失。 2. **同步时间**:扩容时间取决于硬盘大小和性能,可能持续数小时。 3. **兼容性问题**:若使用硬件RAID卡,需通过管理界面操作[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值