2

我正在从 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

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

4

1 回答 1

3

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

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

我不知道怎么回事smartctl。我希望它可以在设备级别上工作iostat,但也许它正在通过 ZFS 将数据传递给它,它使用切片号。这对我来说似乎是一个错误,因为理想情况下,您会在它们所属的最小故障域中报告错误,在这种情况下是磁盘。(尽管至少它很容易解决。)

于 2018-05-25T22:47:38.740 回答