怎样称呼不会改变的 ZFS vdev?

Chr*_*son 7 ubuntu zfs

由于 PPA ,我有一个支持 ZFS 的 Ubuntu (13.04) 桌面zfs-native/stable

一切都运行得很好。我创建了一个inground使用以下命令调用的 RAID-Z1 池:

zpool create inground raidz1 sdb sdc sdd sde sdf
Run Code Online (Sandbox Code Playgroud)

后来,在无法访问我创建的挂载点后,zpool status当我看到池中的1unavailable和 2 个corruptvdev时,我跑起来差点从椅子上掉下来。深呼吸几次后,我注意到当我最近重新启动系统时,我的塔的前端口之一中有一个美元拇指驱动器。这导致所有/dev/sd*映射都发生了变化,一切都有意义了。我移除了 USB 驱动器,重新启动,一切都很好。

我的问题是,我将来如何防止这种情况发生?在将物理驱动器作为 vdev 添加到 zpool 时,是否可以使用不同的规范标识符来引用它们?

小智 9

好消息是您可以通过导出和重新导入池来更改 vdev 配置方案。(来自Linux 文档上的 ZFS

admin@Test-ZFS:~$ sudo zpool status tankz
  pool: tankz
 state: ONLINE
  scan: resilvered 15K in 0h0m with 0 errors on Tue Feb 25 16:36:18 2014
config:

        NAME        STATE     READ WRITE CKSUM
        tankz       ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sde     ONLINE       0     0     0
            sdd     ONLINE       0     0     0

errors: No known data errors

admin@Test-ZFS:~$ sudo zpool export tankz
admin@Test-ZFS:~$ sudo zpool import -d /dev/disk/by-id tankz
admin@Test-ZFS:~$ sudo zpool status tankz
  pool: tankz
 state: ONLINE
  scan: resilvered 15K in 0h0m with 0 errors on Tue Feb 25 16:36:18 2014
config:

        NAME                                       STATE     READ WRITE CKSUM
        tankz                                      ONLINE       0     0     0
          raidz1-0                                 ONLINE       0     0     0
            ata-VBOX_HARDDISK_VB3b2901c3-c7700ec9  ONLINE       0     0     0
            ata-VBOX_HARDDISK_VB4ad696a7-d3e6b542  ONLINE       0     0     0
            ata-VBOX_HARDDISK_VBbed2a908-5ddcaedb  ONLINE       0     0     0

errors: No known data errors
Run Code Online (Sandbox Code Playgroud)


eww*_*ite 5

在 SCSI 设备名称可以更改的情况下,您不应将 /dev/sdX 名称用于 ZFS 池。查看 /dev/disk 下的选项...

[root@Davalan /dev/disk]# cd by-
by-id/   by-path/ by-uuid/ 
Run Code Online (Sandbox Code Playgroud)

我通常使用/dev/disk/by-id我的 Linux zpools的条目......

# zpool status
  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 1h44m with 0 errors on Sat Jul  6 13:12:06 2013
config:

        NAME                               STATE     READ WRITE CKSUM
        vol1                               ONLINE       0     0     0
          mirror-0                         ONLINE       0     0     0
            scsi-35000c5003af99fa7         ONLINE       0     0     0
            scsi-35000cca0153ec2d0         ONLINE       0     0     0
          mirror-1                         ONLINE       0     0     0
            scsi-35000cca01540e340         ONLINE       0     0     0
            scsi-35000cca01540e298         ONLINE       0     0     0
        cache
          ata-STEC_M8IOPS-50_STM000136649  ONLINE       0     0     0
Run Code Online (Sandbox Code Playgroud)

和...

[root@Davalan /dev/disk/by-id]# ls -1
ata-STEC_M8IOPS-50_STM000136649
ata-STEC_M8IOPS-50_STM000136649-part1
ata-STEC_M8IOPS-50_STM000136649-part9
scsi-35000c5003af99fa7
scsi-35000c5003af99fa7-part1
scsi-35000c5003af99fa7-part9
scsi-35000cca0153ec2d0
scsi-35000cca0153ec2d0-part1
scsi-35000cca0153ec2d0-part9
scsi-35000cca01540e298
scsi-35000cca01540e298-part1
scsi-35000cca01540e298-part9
scsi-35000cca01540e340
scsi-35000cca01540e340-part1
scsi-35000cca01540e340-part9
scsi-SATA_STEC_M8IOPS-50_STM000136649
scsi-SATA_STEC_M8IOPS-50_STM000136649-part1
scsi-SATA_STEC_M8IOPS-50_STM000136649-part9
wwn-0x5000a720300411f7
wwn-0x5000a720300411f7-part1
wwn-0x5000a720300411f7-part9
wwn-0x5000c5003af99fa7
wwn-0x5000c5003af99fa7-part1
wwn-0x5000c5003af99fa7-part9
wwn-0x5000cca0153ec2d0
wwn-0x5000cca0153ec2d0-part1
wwn-0x5000cca0153ec2d0-part9
wwn-0x5000cca01540e298
wwn-0x5000cca01540e298-part1
wwn-0x5000cca01540e298-part9
wwn-0x5000cca01540e340
wwn-0x5000cca01540e340-part1
wwn-0x5000cca01540e340-part9
Run Code Online (Sandbox Code Playgroud)

  • 应该注意的是,Linux 上的 ZFS 实现并不像本机 Solaris 代码那么智能。在 Solaris 下,您可以预期更改的磁盘编号不会引起问题,而 Linux 上的 ZFS 似乎不能很好地处理这种情况。在从名称过长的 iSCSI 设备上创建池时,会变得很烦人。 (3认同)