设备命名zfs vs smartctl vs iostat

时间:2018-05-25 13:32:55

标签: zfs iostat omnios

我正致力于从SAN收集性能指标数据(5.11 omnios-7648372)。 我们使用数据JBOD。

zdb -C mypoolname的输出片段:

children[0]:
    type: 'disk'
    id: 0
    guid: 7701924650939559899
    path: '/dev/dsk/c1t0d0s0'
    devid: 'id1,sd@n5000c5004cce9b53/a'
    phys_path: '/pci@0,0/pci8086,25f7@2/pci8086,350c@0,3/pci1000,3030@1/sd@0,0:a'
    whole_disk: 1
    DTL: 599
    create_txg: 4

专注于'路径'部分,它说' / dev / dsk / c1t0d0s0'我认为设备名称是c1t0d0s0并且它匹配'用smartctl ...除非聪明的ctl说路径是/ dev / rdsk / c1t0d0s0

但是' iostat -extnc 3 1'以不同方式命名设备:c1t0d0

请告诉我为什么他们中的3个人对同一个设备没有使用相同的名称?

1 个答案:

答案 0 :(得分:3)

zdb向您显示ZFS在内部用于寻址设备的path,这是/dev文件系统中允许访问块设备文件的路径。 (顺便说一句,zdb主要是作为一个调试工具,并不保证它打印的任何内容都具有向后兼容性。)它使用disk slice后缀s0进行寻址,这就是出现在那些列表中的原因。我相信磁盘片基本上和分区一样。当您使用ZFS时,Slice 0通常是整个磁盘,因为当您将整个设备添加到zpool时,ZFS将自动为您设置格式,并且它只需要/创建一个切片。但是,也可以只将一个磁盘分区添加到zpool(或者更愚蠢的是,同一个驱动器上的多个分区与单独的vdevs),因此ZFS必须跟踪哪个分区( s)它实际上是在控制。

iostat只显示设备名称,没有/dev路径或切片编号。这是因为iostat不知道切片,它只是在收集数据时查看实际设备。

我不知道smartctl是怎么回事。我希望它能在像iostat这样的设备级工作,但也许它会通过ZFS传递数据,ZFS使用切片编号。这对我来说似乎是一个错误,因为理想情况下,你会在他们所属的最小的失败域中报告错误,在这种情况下是磁盘。 (虽然至少它很容易解决。)