故障信息: root@host1:/tank/new/ddd# zpool status -v tank pool: tank state: ONLINE status: One or more E26926_01.zip root@host1:/tank/new/ddd# zpool status tank pool: tank state: ONLINE status: One or new/ddd# rm /tank/new/ddd/Oracle\ Solaris\ 11\ 11_11\ .cn.\ E26926_01.zip root@host1:/tank/new/ddd# zpool have been detected in the following files: tank/new:<0x51b9> 检测: root@host1:/tank/new/ddd# zpool clear' or replace the device with 'zpool replace'.
脚本有个关键的初始化zfs, 如下 zpool create -f keydb raidz ${device\_list} zfs create keydb/data zfs set mountpoint -b ${device\_name} ]; do sleep 3 echo "wait ${device\_name} ready" done zpool create -f keydb
好硬盘或旧硬盘路径 -R 新硬盘路径 # sgdisk -G 新硬盘路径 sgdisk /dev/nvme1n1 -R /dev/nvme0n1 sgdisk -G /dev/nvme0n1 # 查看存储池情况 zpool status -x # zpool replace -f rpool 旧设备 新设备 zpool replace -f rpool 7220772029817774912 /dev/nvme0n1p3
如何修复 ZFS 创建zpool create出现的invalid vdev specification, xxx is part of active pool 错误 问题背景 在aws实例上运行zpool 命令,出现下方错误 zpool create keydb raidz nvme1n1 nvme2n1 nvme3n1 Defaulting to 4K blocksize (ashift=12) for following errors: /dev/nvme1n1 is part of active pool 'keydb' 按照提示执行, 还是不行 root@ip-10-230-3-239:/data# zpool part of active pool 'keydb' 解决方案 原因是某个volume之前被其他实例用过, 解挂后重新挂到这个实例, 数据不干净导致的. root@ip-10-230-2-67:~# zpool 暴力import zpool import -f 2. destroy之后, 再创建即可 zpool destroy keydb zpool create keydb raidz nvme1n1 nvme2n1
sudo vi /usr/share/ubiquity/zsys-setup 查找到 zpool create,Ubuntu 20.04.1 镜像的此文件含有 2 组 zpool create。 然后修改: zpool create -f \ 改为: echo "mypassphrase" | zpool create -f \ 其中 mypassphrase 修改为自己的密码短语
先看一张ZFS的层级结构图: 这是一张从底向上的图: 将若干物理设备disk组成一个虚拟设备vdev(同时,disk 也是一种vdev) 再将若干个虚拟设备vdev加到一个zpool里。 在zpool的基础上创建zfs并挂载(zvol可以先不看,我们没有用到) (一)ZFS的一些操作 创建zpool root@:~ # zpool create 这里没有指定ZFS的quota,创建的ZFS大小即zpool大小。 创建的,zpool可以动态扩容意味着存储空间也可以动态扩容。 而且可以创建多个文件系统,文件系统共享完整的zpool空间无需预分配。
四、服务器故障情况分析 在服务器ZFS文件系统中,池被称为ZPOOL。 ZPOOL的子设备可以有很多种类,包括块设备、文件、磁盘等等,在本案例中所采用的是其中的一种------三组RAIDZ作为子设备。 经过分析发现,三组RAIDZ内有两组分别启用热备盘个数为1和3。 );第二组内出现第三块离线盘,RAIDZ崩溃、ZPOOL下线、服务器崩溃。 五、重组ZPOOL,追踪数据入口 ZFS管理的存储池与常规存储不同,所有磁盘都由ZFS进行管理。常规RAID在存储数据时,只按照特定的规则组建池,不关心文件在子设备上的位置。 这种特性使得RAIDZ缺盘时无法直接进行校验得到数据,必须将整个ZPOOL作为一个整体进行解析。
四、服务器故障情况分析 在服务器ZFS文件系统中,池被称为ZPOOL。 ZPOOL的子设备可以有很多种类,包括块设备、文件、磁盘等等,在本案例中所采用的是其中的一种------三组RAIDZ作为子设备。 经过分析发现,三组RAIDZ内有两组分别启用热备盘个数为1和3。 );第二组内出现第三块离线盘,RAIDZ崩溃、ZPOOL下线、服务器崩溃。 五、重组ZPOOL,追踪数据入口 ZFS管理的存储池与常规存储不同,所有磁盘都由ZFS进行管理。常规RAID在存储数据时,只按照特定的规则组建池,不关心文件在子设备上的位置。 这种特性使得RAIDZ缺盘时无法直接进行校验得到数据,必须将整个ZPOOL作为一个整体进行解析。
好硬盘或旧硬盘路径 -R 新硬盘路径 # sgdisk -G 新硬盘路径 sgdisk /dev/nvme1n1 -R /dev/nvme0n1 sgdisk -G /dev/nvme0n1 # 查看存储池情况 zpool status -x # zpool replace -f rpool 旧设备 新设备 zpool replace -f rpool 7220772029817774912 /dev/nvme0n1p3
insmod /lib/modules/5.15.0-40-generic/kernel/zfs/zfs.ko zfs验证 [root@ubuntu-dev /home/perrynzhou]$ sudo zpool compression=lz4 \ -O dnodesize=auto \ perryn-pool mirror sdb sdc [root@ubuntu-dev /home/perrynzhou]$ zpool
ZFS,先看一张 zfs 的层级结构图: 这是一张从底向上的图: 将若干物理设备 disk 组成一个虚拟设备 vdev(同时,disk 也是一种 vdev) 再将若干个虚拟设备 vdev 加到一个 zpool 里 在 zpool 的基础上创建 zfs 并挂载(zvol 可以先不看,我们没有用到) ZFS 的一些操作 创建 zpool root@:~ # zpool create tank raidz /dev /ada1 /dev/ada2 /dev/ada3 raidz /dev/ada4 /dev/ada5 /dev/ada6 root@:~ # zpool list tank NAME SIZE 7.1G 117K 7.1G 0% /mnt/srev 创建了一个 zfs,挂载到了 /mnt/srev 这里没有指定 zfs 的 quota,创建的 zfs 大小即 zpool 创建的,zpool 可以动态扩容意味着存储空间也可以动态扩容,而且可以创建多个文件系统,文件系统共享完整的 zpool 空间无需预分配。
存储池 zfs首先从物理磁盘开始构建存储池,叫做zpool,服务器的存储空间可以由一个或者多个zpool组成,每个zpool都是独立的存储空间。 zpool:将阵列进行任意的组合,可以生成一个或者多个zpool,zpool可以添加或者删除子阵列,zpool的存储空间就是所有阵列存储空间的叠加。 文件系统 有了zpool存储空间后,就可以构建文件系统了。 zfs文件系统 zfs文件系统以zpool为根,以树形结构进行层级划分和管理,但是文件系统的属性(比如预留空间、权限、配额)可以有继承和依赖关系。
x = self.bn(x) if self.relu is not None: x = self.relu(x) return xclass ZPool __init__() kernel_size = 7 self.compress = ZPool() self.conv = BasicConv(2, 1, kernel_size
zpool创建 // 创建一个zpool $ modprobe zfs $ zpool create -f -m /sample sample -o ashift=12 /dev/sdc $ zfs recordsize=8k \ -o logbias=throughput // 手动umount和挂载 $ umount /sample/fs1 $ zfs mount sample/fs1 zpool 和zfs参数获取 // zfs pool默认的参数获取 $ zpool get all // zfs pool挂载文件系统的参数获取 $ zfs get all zfs和内核之间的桥梁 super_operations
zfs2.1新特性 dRAID,该项功能,能够加快磁盘重建速度 Compatibility Property:能够在zpool启用该功能,保证openzfs不同版本和不同平台的兼容性 同时支持了influxdb
Please see zpool(1M). Reading the primary EFI GPT label failed. Using backup label. Please see zpool(1M). format> verify Volume name = < > ascii name = <SEAGATE-ST3300657SS-ES64
x = self.bn(x) if self.relu is not None: x = self.relu(x) return xclass ZPool __init__() kernel_size = 7 self.compress = ZPool() self.conv = BasicConv(2, 1, kernel_size
zfs文件系统扩容 zfs主要在FreeBSD和Solaris上使用,Linux上也有: # 扩展zpool zpool online -e poolname /dev/vda2 # 检查状态 zpool
uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonename zones zpool_version
存储池(zpool):这是ZFS的基础。你首先将一个或多个磁盘(或分区)组合成一个zpool。zpool管理底层的物理存储。它处理RAID(称为“raidz”)、设备替换等。 在zpool之上没有传统的“分区”概念。数据集(dataset):在zpool内部,你创建数据集。它们类似于Btrfs的子卷,表现为独立的、可挂载的文件系统。 它们从zpool继承属性(如冗余级别),但每个数据集也可以有自己的属性(压缩、配额等)。写时复制、校验和与自我修复数据所有数据和元数据都使用校验和进行保护。每次读取数据时,都会验证校验和。 df, smartctl, mdadm, zpool status 是你的朋友。测试:在生产环境部署之前,彻底测试你的备份和恢复程序以及任何新的文件系统或配置。