硬盘扩容(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