PVE ZFS RAIDZ(RAID5)阵列重建

玩机教程 > Proxmox VE/PVE (28) 2025-10-10 12:24:00

1.模拟磁盘故障

参考上一篇《PVE ZFS RAIDZ(RAID5)整列创建》,将安装完成的raidz其中一块硬盘去掉

PVE ZFS RAIDZ(RAID5)整列重建_图示-9e5aa9c4c889410b9ee2d3ef6bd60a43.png

去掉一块硬盘

查看r5阵列状态

PVE ZFS RAIDZ(RAID5)整列重建_图示-601dd63c7e524c4aa31956267d54e717.png

发现健康状态已经变为DEGRADED了,并且提示了其中一块硬盘UNAVAIL

虽然RAIDZ整列已经警告了,但是虚拟机还是能正常使用,见下图

PVE ZFS RAIDZ(RAID5)整列重建_图示-b39616d65bed44c5b64e976ded90bcf4.png

数据也还存在

PVE ZFS RAIDZ(RAID5)整列重建_图示-4b8c26105dad4fc2bde5c3cd7ef05e77.png

 

此处体现了磁盘整列的好处,不会因为其中一块故障而丢失所有。

 

2.PVE重建RAIDZ

重新添加一块20G硬盘,这里PVE是安装到VMware环境的,所以模拟实现非常简单。

PVE ZFS RAIDZ(RAID5)整列重建_图示-a79b47b9d8fd46c2bbf629677eff52bc.png

关闭PVE,然后添加一个20G新硬盘即可。

image

通过web界面查看整列详情,可以看到提示使用 zpool replace 替换坏的盘。反而言之就是特喵的不支持web操作。需要pve shell里面操作命令了。

2.1 命令查看整列状态

打开pve shell命令行

PVE ZFS RAIDZ(RAID5)整列重建_图示-84959582369048a0ada75200b6c76131.png

查看整列状态

查看所有阵列

zpool status

查看指定阵列

zpool status -v 池名称
PVE ZFS RAIDZ(RAID5)整列重建_图示-1ef45caa7a014e1c986ba56bfa0ca56f.png
查看所有zfs存储阵列
PVE ZFS RAIDZ(RAID5)整列重建_图示-20dcfceba31c4ecebcecc65058ec1da7.png
查看指定阵列

 

2.2 找到新加硬盘的设备路径

通过命令找新加入设备名称

lsblk 
PVE ZFS RAIDZ(RAID5)整列重建_图示-3d1f003af68e403ba1def42972708eb6.png

可以看到新设备为 nvme0n3

通过命令找设备的设备id路径

ls -l /dev/disk/by-id/*
PVE ZFS RAIDZ(RAID5)整列重建_图示-5b0cbc67bb654b538380a0ef1ff69989.png

由上图可以看到新硬盘的设备id路径为

/dev/disk/by-id/nvme-VMware_Virtual_NVMe_Disk_VMware_NVME_0000_3

重要提醒:

虽然直接使用 /dev/xxx 设备也能用,但是不建议推荐使用by-id设备路径,防止迁移或系统崩溃导致硬盘顺序号变化导致存储池GAME OVER!!!

2.3 替换阵列不可用硬盘

2.3.1 替换非系统所在阵列盘

使用以下命令。(没有重建过的阵列,zfs记录的名称就是一长串,正常现象)

zpool replace -f 池名称 ZFS记录的旧硬盘名称 新硬盘路径

特别重要提示:

注意不要把好盘给替换了,要替换需要更换的盘!

通过2.1操作我们可以看到ZFS记录的问题硬盘名称(就是was后面那串)为:

/dev/disk/by-id/nvme-VMware_Virtual_NVMe_Disk_VMware_NVME_0000_3-part1

 

所以替换命令为:

zpool replace -f r5 /dev/disk/by-id/nvme-VMware_Virtual_NVMe_Disk_VMware_NVME_0000_3-part1 /dev/disk/by-id/nvme-VMware_Virtual_NVMe_Disk_VMware_NVME_0000_3

执行后可以在web的ZFS整列详情看到重建中,也可以在命令行查看状态查看

PVE ZFS RAIDZ(RAID5)整列重建_图示-16ae0030dd6a4c86b7fb5b8f2cb7bc40.png

重建完成后状态变为ONLINE

PVE ZFS RAIDZ(RAID5)整列重建_图示-d6fe6f452eb94aa5840c78b44fb1bf07.png

 

2.3.2 替换系统所在阵列

分区

使用以下命令复制分区表。

sgdisk 好硬盘或旧硬盘路径 -R 新硬盘路径
sgdisk -G 新硬盘路径
#例
sgdisk /dev/nvme0n1 -R /dev/nvme1n1
sgdisk -G /dev/nvme1n1
恢复数据

使用以下命令重建zfs阵列。

zpool replace -f rpool ZFS记录的旧硬盘名称 新硬盘ZFS分区路径
#例,注意不要把好盘给替换了,要替换需要更换的盘!
zpool replace -f rpool 654684651684613 /dev/nvme1n1p3

可以使用zpool status查看重建进度。

重建efi分区数据,使更换的硬盘可以启动。

使用以下命令。

proxmox-boot-tool format 新硬盘EFI分区路径
proxmox-boot-tool init 新硬盘EFI分区路径
#例
proxmox-boot-tool format /dev/nvme1n1p2
proxmox-boot-tool init /dev/nvme1n1p2

使用以下命令确认efi启动正常。

proxmox-boot-tool refresh

 

3.数据查看

折腾多次,最后还是看一眼虚拟机和数据是否正常

PVE ZFS RAIDZ(RAID5)整列重建_图示-8399570afc3e4b19b2b2e2908971aeac.png

虚拟机正常启动数据都还在。

 

 

参考文章:

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
1.模拟磁盘故障接着上一篇《》,将安装完成的raidz其中一块硬盘去掉去掉一块硬盘发现健康状态已经变为DEGRADED了,并且提示了其中一块硬盘UNAVAIL虽
1.添加硬盘添加3块级以上大小相同的硬盘 2.创建ZFS RAIDZPVE没有自带RAID实现,但是通过ZFS整列可以实现类似RAID5效果。 选pve-&gtl;磁盘
概述pve自身是没有提供直接创建raid整列的方式,是通过ZFS来实现的raid0/raid5/raid6/raid1 PVE通过ZFS创建磁盘阵列
1.模拟PVE系统挂了替换已有系统PVE盘(PVE单独盘安装,去掉系统盘,则PVE没了)2.安装PVE重新安装PVE系统,操作参考 VMware 安装PVE/P
PVE 添加新硬盘-PVE将新硬盘添加为存储首先登录pve控制台,选中pve设备下面的磁盘磁盘查看磁盘点击后可以在右侧看到目前链接刀pve的硬盘数量。
PVE 7.x更换国内源备份之前的cp /etc/apt/sources.list.d/pve-install-repo.list /root删除企业源rm /etc/apt/sources.l...
1.重启pve连接pve主机键盘和显示器 2.进入PVE GRUB界面 3.编辑启动项选择GRUB的第一个,一般默认就是第一个。按键盘的E进入编辑界面,调整光标
pve升级9 sr-iov GG了参考前一篇文章PVE8升级到PVE9-XQLEE'Blog正常升级后,重启开机pve发现igpu拆分无法识别了。资源映射全红,
PVE软件源更换禁用pve企业源mv/etc/apt/sources.list.d/pve-enterprise.list/etc/apt/sources.list.d/pve-enterpri...
概述模拟pve系统盘挂了,恢复数据盘环境说明pve 版本8.4.1测试环境为VMware虚拟机内部虚拟机配置:CPU 4核内存 8GB硬盘1:100G (系统盘
not a valid block device/错误很多人觉得 PVE 复杂的原因主要就是因为 PVE 有很多操作需要用命令去完成,就比如上面这个删除失效存储
官方指导Upgrade from 8 to 9 - Proxmox VE实操步骤更新到8.x最新版更新当前系统到PVE8.4.1X(也就是8的最新版)apt u
PVE 7显示CPU温度工具准备xshell 或者其他ssh工具xftp 或者其他ftp工具notepad++或者其他文本编辑工具 需要修改以下两个文件/usr/share/pve-manage...
效果图参考服务配置编辑文件 /usr/share/perl5/PVE/API2/Nodes.pm 跳转到 my $dinfo =位置,编辑成如下所示
PVE 安装黑群晖6.x一 PVE安装黑群晖准备Proxmox VE虚拟环境(以下简称PVE)黑群晖引导(这里用的DSM 6.17版本)群晖系统官方文件DS3617_6.17-15284.pat...