操作环境
其他环境请酌情转换处理
系统环境: Ubuntu 22.04.3 LTS
```bashlsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
> 磁盘情况
```bash
# lsblk -e 7
# -e 排除 loop设备类型
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 7.3T 0 disk
sdb 8:16 0 7.3T 0 disk
sdc 8:32 0 7.3T 0 disk
sdd 8:48 0 7.3T 0 disk
OpenZFS 中常见的容错功能
OpenZFS 是一个强大的文件系统和逻辑卷管理器,它提供了多种容错功能,可以保护数据免受硬件故障和数据损坏的影响。下面是一些 OpenZFS 中常见的容错功能:
RAID-Z:
- RAID-Z1 是 RAID-Z 的别名。
The raidz vdev type is an alias for raidz1
- RAID-Z 是一种 ZFS 特有的软件 RAID 方案,类似于传统 RAID 5,但提供更强大的功能和更好的性能。
- RAID-Z 通过在数据块中存储校验信息来提供数据完整性保护。在磁盘故障时,它可以使用校验信息恢复丢失的数据。
- RAID-Z1 是 RAID-Z 的别名。
Mirror:
- Mirror 是 OpenZFS 中的镜像功能,类似于传统 RAID 1。
- 在 Mirror 中,数据被复制到至少两个磁盘上,如果一个磁盘失败,数据仍然可以从其他镜像中恢复。
RAID-Z2 和 RAID-Z3:
- 类似于 RAID-Z,但提供了更高级别的容错保护。
- RAID-Z2 允许在两个磁盘故障的情况下继续运行,而 RAID-Z3 允许在三个磁盘故障的情况下继续运行。
Hot Spare:
- Hot Spare 是一种备用磁盘,当检测到磁盘故障时,它会自动替换故障磁盘。
- 这可以减少故障对系统的影响,并在故障发生时自动恢复数据。
Scrubbing:
- Scubbing 是一种定期检查和修复数据完整性的过程。
- 它会定期扫描存储池中的所有数据,并检查它们与校验信息是否匹配,以及是否存在任何损坏的数据。
选择容错的方案
选择
RAID-Z1
, 如果有N个相等的磁盘 , 则容量为 (N-1)* 磁盘容量,读取、写入性能均为:N-1
, 适用追求最大容量、最小预算的情况。RAIDZ官网介绍:
https://openzfs.github.io/openzfs-docs/Basic%20Concepts/RAIDZ.html
主要操作步骤
参考资料:
https://openzfs.github.io/openzfs-docs/
- 安装 OpenZFS
On Ubuntu, ZFS is included in the default Linux kernel packages. To install the ZFS utilities, first make sure universe is enabled in /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu
CODENAME
main universe
apt update
apt install zfsutils-linux
# zpool version
zfs-2.1.5-1ubuntu6~22.04.4
zfs-kmod-2.2.0-0ubuntu1~23.10.2
# zfs --version
zfs-2.1.5-1ubuntu6~22.04.4
zfs-kmod-2.2.0-0ubuntu1~23.10.2
- 创建 ZFS 存储池
```bash下面两条命令效果相同
sudo zpool create mdata -m /mdata raidz1 /dev/sda /dev/sdb /dev/sdc /dev/sddsudo zpool create mdata -m /mdata raidz /dev/sda /dev/sdb /dev/sdc /dev/sdd
zpool list
zpool status
pool: mdata
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
mdata ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
errors: No known data errors
zpool --help
销毁存储池
sudo zpool destroy mdata
3. 创建 ZFS 文件系统
```bash
# 创建文件系统
sudo zfs create -o mountpoint=/mdata/zfs mdata/zfs
cd /mdata/
chown -R user:user admin-user zfs
zfs list
# 移除文件系统
sudo zfs unmount mdata/zfs
sudo zfs destroy -r mdata/zfs
其他命令
nfs共享
zfs set sharenfs="rw,root=192.168.xxx.xxx,root=172.10.xxx.xxx" /mata/share