我正致力于从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个人对同一个设备没有使用相同的名称?
答案 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使用切片编号。这对我来说似乎是一个错误,因为理想情况下,你会在他们所属的最小的失败域中报告错误,在这种情况下是磁盘。 (虽然至少它很容易解决。)