首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析zpool中的磁盘

解析zpool中的磁盘
EN

Stack Overflow用户
提问于 2015-11-26 13:29:59
回答 2查看 803关注 0票数 2

我正在寻找一种最简单的方法来解析zpool中的磁盘。以空格分隔格式的磁盘列表。例如,下面的输出显示了zpool信息。是否有仅获取物理磁盘列表的命令?

代码语言:javascript
复制
   # zpool status pool
      pool: pool
      state: ONLINE
      scan: none requested
      config:

            NAME       STATE     READ WRITE CKSUM
            pool       ONLINE       0     0     0
              c2d44s2  ONLINE       0     0     0
              c2d45s2  ONLINE       0     0     0
              c2d46s2  ONLINE       0     0     0

    errors: No known data errors
EN

回答 2

Stack Overflow用户

发布于 2015-11-26 18:01:29

这应该可以工作,尽管它可能需要对复杂的zpool status输出进行一些修复:

代码语言:javascript
复制
# cat parsezs
awk '
  NF != 5 {next}
  $1 == "NAME" {getline;show=1;next}
  $1 ~ "mirror" {next}
  $1 ~ "raidz" {next}
  $1 ~ "replacing" {next}
  $1 ~ "error" {next}
  show == 1 {printf("%s ",$1)}
  END {printf("\n")}'
# zpool status pool | parsezs
c2d44s2 c2d45s2 c2d46s2
票数 3
EN

Stack Overflow用户

发布于 2020-11-25 23:06:51

这也会起作用,并向您显示池的名称。请注意,您需要nawk,它是Solaris上的Awk的更新版本:

代码语言:javascript
复制
zpool status  | nawk 'BEGIN{Disp=0}{if($1=="pool:") {if(Disp!=0) print ""; else Disp = 1; printf("%s ",$2)} ; if($1~"^c[0-9]") printf("%s ",$1)}END{print ""}'

Disp变量只是用来整理输出的。这是一个典型的结果:

代码语言:javascript
复制
js_data_san c0t6006016049B13A00B337B4F7F1DDE411d0 c0t6006016093003B0022E5A8A8C833E711d0
rpool c0t5000CCA07D07C764d0 c0t5000CCA07D07C514d0
s10patchchk-ospool c0t6006016093003B00B488CFCF10D8E611d0
vmware_ds_nfs01 c0t6006016049B13A005AE1A9648112E511d0

因此,在该示例中,rpooljs_data_san各有两个设备。它没有指明它们是镜像的还是串联的,但这很容易在脚本中进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33931201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档