ZFS学习笔记
目录

从2021年12月3日到2022年1月5日,基本上把正文过了一遍,发现FreeBSD和Solaris对ZFS的实现还是有不少差别的。

接下来可能要做的是同时装两台虚拟机,一台跑FreeBSD,一台跑Solaris,然后再把这篇文档过一遍,争取把文档中的实例都做一遍。


2022年1月5日
试了几个虚拟机: 可能要找实体机来安装Solaris和FreeBSD了。
2022年1月7日
尝试在Hyper-V上测试安装FreeBSD,未能实现UEFI根盘镜像的灾难恢复。可能跟虚拟机的磁盘结构有关。
计划下周在实体机上测试一下UEFI、跟盘镜像灾难恢复。
2022年1月10日
在一台dell电脑上实验如下:
电脑配置:16G内存;以主板上硬盘接口顺序依次为一块西数500g机械硬盘、一块Sandisk 120g固态硬盘、一块日立500g机械硬盘。

标准安装,到磁盘规划时选择默认选项ZFS(auto),然后将分区规划(Partition Scheme)改成GPT(EFI)。池类型(Pool Type/Disks)选择镜像,将两个500g硬盘组成镜像。
全部安装完成,能正常进入系统。
关机,然后将第一块硬盘(西数500g)拔掉,然后再开机,无法进入系统。
关机,将西数硬盘插回,启动正常。进入系统后使用以下命令将西数硬盘的efi分区完整复制到日立硬盘对应的分区上:
dd if=/dev/ada0p1 of=/dev/ada2p1 bs=1M conv=sync
复制完成后关机,拔掉西数硬盘,开机,正常启动。
启动后运行zpool status会发现组成zroot镜像的两个硬盘都是ada0p3了,且第一个的状态是FAILTED
root@freebsd:~ # zpool status
  pool: zroot
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            ada0p3  FAULTED      0     0     0  corrupted data
            ada0p3  ONLINE       0     0     0

errors: No known data errors
这说明FreeBSD对硬盘的编号是一种逻辑编号,按它自己数出来的编,而不理会实际物理接口的编号顺序。
关机,重新插回西数硬盘,启动电脑,系统应该是正常的。


接下来实验为池添加日志和缓存。
固态硬盘不需要分区,直接运行
zpool add zroot log ada1
即可为zroot添加日志盘。
同样,运行
zpool add zroot cache ada1
也可以为zroot添加缓存盘。
如果要把日志和缓存放在同一个硬盘上,首先要把固态盘分成两个区:
gpart create -s gpt ada1
gpart add -s 50g -t freebsd-zfs ada1
gpart add -t freebsd-zfs ada0
然后运行
zpool add zroot log ada1p1
zpool add zroot cache ada1p2
如果有提示invalid vdev spcification,可以根据提示使用-f选项。
完成后运行zpool status查看状态:
root@freebsd:/boot/efi # zpool status
  pool: zroot
 state: ONLINE
  scan: resilvered 1.65G in 00:00:33 with 0 errors on Mon Jan 10 23:26:17 2022
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            ada0p3  ONLINE       0     0     0
            ada2p3  ONLINE       0     0     0
        logs
          ada1p1    ONLINE       0     0     0
        cache
          ada1p2    ONLINE       0     0     0

errors: No known data errors		
若要移除日志或缓存,可以使用zpool remove zroot ada1p1|ada1p2命令。
2022年8月30日
Debian上使用ZFS需要先安装zfsutils-linux并启动相应的服务:
# apt install zfsutils-linux
# systemctl start zfs-zed
然后可以使用zpool import命令查看可导入的池,并用zpool import poolname命令导入池。
当前FreeBSD13.1的版本是:zfs-2.1.4-FreeBSD_g52bad4f23,而Debian11的版本是zfs-2.0.3-9。
尚不知这个两个版本的区别。

回主站