单个分区上的 ZFS 与其他分区混合

单个分区上的 ZFS 与其他分区混合

我在一家医疗设备供应商工作。我们在一台机器上有几个 SquashFS 分区(用于操作系统文件,两个操作系统分区,只读 squashfs),一些启动分区(3x FAT32)和一个数据分区(120Gb,rw,ext4)。

问题是,作为医院使用的设备,有时他们会切断设备的电源,有时我们会遇到随机问题,这些问题似乎与 DATA 分区上的数据损坏有关。问题是,医疗软件记录了很多东西,所以我猜有时会发生写入,也许机器硬关机,这似乎会损坏相邻的文件。

无论如何,我认为将数据分区上的 ext4 更改为 ZFS 之类的写时复制 FS 可能会有所帮助。但有一件事是……ZFS 是否要求整个磁盘都是 ZFS(zpool 的东西),或者我们能否让 ZFS 分区与具有不同 FS 的其他分区共存于同一磁盘上。

谢谢!

答案1

您不必将整个磁盘格式化为 ZFS。zpool 可以由整个磁盘和分区的任意组合构建。

如果您确实与同一磁盘上的其他分区共享 ZFS 成员,则应记住输入/输出 (I/O) 性能也是共享的。

在最简单的配置中,您可以拥有一个由一个 vdev(只是一个分区或设备)组成的 zpool。我有一台格式化如下的计算机:

root@craptop [~]# zpool status -P
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:30 with 0 errors on Sun Nov 14 00:24:31 2021
config:

        NAME                                                                 STATE     READ WRITE CKSUM
        rpool                                                                ONLINE       0     0     0
          /dev/disk/by-id/ata-LITEONIT_LSS-24L6G_S45N8470Z1ZNDW089292-part4  ONLINE       0     0     0

errors: No known data errors

ZFS 成员是位于以下位置的一个分区/dev/sda

root@craptop [~]# blkid /dev/sda4
/dev/sda4: LABEL="rpool" UUID="3735190874680832032" UUID_SUB="15024274719792138025" TYPE="zfs_member" PARTUUID="a9a5ae01-90cd-4945-a9dd-fbccbfbfc075"
root@craptop [~]# lsblk -p
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/sda      8:0    0  22.4G  0 disk 
├─/dev/sda1   8:1    0  1000K  0 part 
├─/dev/sda2   8:2    0   512M  0 part /boot/efi
├─/dev/sda3   8:3    0     1G  0 part /boot
└─/dev/sda4   8:4    0  20.9G  0 part 
/dev/sdb      8:16   0 931.5G  0 disk 
├─/dev/sdb1   8:17   0  1000M  0 part 
├─/dev/sdb2   8:18   0   260M  0 part 
├─/dev/sdb3   8:19   0  1000M  0 part 
├─/dev/sdb4   8:20   0   128M  0 part 
├─/dev/sdb5   8:21   0   884G  0 part 
├─/dev/sdb6   8:22   0  25.2G  0 part 
└─/dev/sdb7   8:23   0    20G  0 part 
/dev/sdc      8:32   1  58.6G  0 disk 
└─/dev/sdc1   8:33   1    58G  0 part

如果没有冗余或奇偶校验 vdev(镜像、raidz、raidz2、draid 等),ZFS 可以检测到静默数据损坏,但无法纠正它,因为数据的唯一副本是坏的。

您应该考虑创建具有一个或多个冗余 vdev 的 zpool。

这是我的另一台电脑RAID 1等效的 vdev,称为镜像:

root@box1 [~]# zpool status -P
  pool: fastpool
 state: ONLINE
  scan: scrub repaired 0B in 00:04:39 with 0 errors on Sun Nov 14 00:28:40 2021
config:

        NAME                STATE     READ WRITE CKSUM
        fastpool            ONLINE       0     0     0
          mirror-0          ONLINE       0     0     0
            /dev/nvme0n1p3  ONLINE       0     0     0
            /dev/nvme1n1p3  ONLINE       0     0     0

errors: No known data errors

  pool: slowpool
 state: ONLINE
  scan: scrub repaired 0B in 05:45:50 with 0 errors on Sun Nov 14 06:09:52 2021
config:

        NAME              STATE     READ WRITE CKSUM
        slowpool          ONLINE       0     0     0
          mirror-0        ONLINE       0     0     0
            /dev/sda1     ONLINE       0     0     0
            /dev/sdb1     ONLINE       0     0     0
        logs
          /dev/nvme0n1p5  ONLINE       0     0     0
          /dev/nvme1n1p5  ONLINE       0     0     0
        cache
          /dev/nvme0n1p4  ONLINE       0     0     0
          /dev/nvme1n1p4  ONLINE       0     0     0

errors: No known data errors

入门

其他阅读材料

相关内容