免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4620 | 回复: 6
打印 上一主题 下一主题

[文本处理] 请教一个多路径Multipath处理的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-20 09:59 |只看该作者 |倒序浏览
本帖最后由 tesroom 于 2015-08-20 10:01 编辑

经常遇到添加删除LUN,所以避免不了与Multipath打交道,linux下的Multipath设备管理比Unix略微复杂,删除聚合设备mpath后还需要删除对应的/dev/sdX路径设备,不像AIX一条rmdev -dl 就可以全部删除了。所以每次操作都比较繁琐,想请教一个脚本来完成上述删除的工作。

文本格式:
  1. # lsblk -s
  2. NAME                         MAJ:MIN  RM   SIZE RO TYPE  MOUNTPOINT
  3. sda1                           8:1     0   200M  0 part  /boot
  4. └─sda                          8:0     0   1.7T  0 disk  
  5. sda2                           8:2     0 195.3G  0 part  /
  6. └─sda                          8:0     0   1.7T  0 disk  
  7. sda3                           8:3     0  31.3G  0 part  [SWAP]
  8. └─sda                          8:0     0   1.7T  0 disk  
  9. sda4                           8:4     0     1K  0 part  
  10. └─sda                          8:0     0   1.7T  0 disk  
  11. sda5                           8:5     0   1.4T  0 part  /opt
  12. └─sda                          8:0     0   1.7T  0 disk  
  13. sr0                           11:0     1  1024M  0 rom   
  14. mpathd (dm-0)                253:0     0   300G  0 mpath
  15. ├─sdn                          8:208   0   300G  0 disk  
  16. ├─sdk                          8:160   0   300G  0 disk  
  17. ├─sdam                        66:96    0   300G  0 disk  
  18. ├─sdae                        65:224   0   300G  0 disk  
  19. ├─sdbd                        67:112   0   300G  0 disk  
  20. ├─sdai                        66:32    0   300G  0 disk  
  21. ├─sdac                        65:192   0   300G  0 disk  
  22. └─sdak                        66:64    0   300G  0 disk  
  23. mpathc (dm-1)                253:1     0   300G  0 mpath
  24. ├─sdj                          8:144   0   300G  0 disk  
  25. ├─sdi                          8:128   0   300G  0 disk  
  26. ├─sdq                         65:0     0   300G  0 disk  
  27. ├─sdo                          8:224   0   300G  0 disk  
  28. ├─sdaa                        65:160   0   300G  0 disk  
  29. ├─sdx                         65:112   0   300G  0 disk  
  30. ├─sdab                        65:176   0   300G  0 disk  
  31. └─sdag                        66:0     0   300G  0 disk  
  32. mpathb (dm-2)                253:2     0   300G  0 mpath
  33. ├─sde                          8:64    0   300G  0 disk  
  34. ├─sdg                          8:96    0   300G  0 disk  
  35. ├─sdm                          8:192   0   300G  0 disk  
  36. └─sdh                          8:112   0   300G  0 disk  
  37. mpathm (dm-4)                253:4     0   300G  0 mpath
  38. ├─sdcw                        70:64    0   300G  0 disk  
  39. └─sddu                        71:192   0   300G  0 disk  
复制代码
达到目的:
给出一个LUN的列表,比如

  1. /dev/mapper/mpathc
  2. /dev/mapper/mpathm
复制代码
通过匹配lsblk -s的结果分别执行
multipath -f mpathc
echo 1 > /sys/block/sdX/device/delete
从而达到删除LUN设备的目的。

由于mpath设备包含的路径不一定是4条,也可能是8条,所以思路应该是截取两个mpath之间的路径,还请高手指点。

论坛徽章:
7
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:18程序设计版块每日发帖之星
日期:2015-08-09 06:20:00每日论坛发贴之星
日期:2015-08-09 06:20:00程序设计版块每日发帖之星
日期:2015-08-22 06:20:00程序设计版块每日发帖之星
日期:2015-08-27 06:20:00
2 [报告]
发表于 2015-08-20 10:21 |只看该作者
我能说我没看懂吗。。。咱抽象点的理解是不是你想要抓取
mpathc (dm-1)                253:1     0   300G  0 mpath
├─sdj                          8:144   0   300G  0 disk  
├─sdi                          8:128   0   300G  0 disk  
├─sdq                         65:0     0   300G  0 disk  
├─sdo                          8:224   0   300G  0 disk  
├─sdaa                        65:160   0   300G  0 disk  
├─sdx                         65:112   0   300G  0 disk  
├─sdab                        65:176   0   300G  0 disk  
└─sdag                        66:0     0   300G  0 disk  
mpathb (dm-2)                253:2     0   300G  0 mpath
├─sde                          8:64    0   300G  0 disk  
├─sdg                          8:96    0   300G  0 disk  
├─sdm                          8:192   0   300G  0 disk  
└─sdh                          8:112   0   300G  0 disk  
mpathm (dm-4)  
这一部分里面的所有的路径啊??

论坛徽章:
0
3 [报告]
发表于 2015-08-20 10:28 |只看该作者
本帖最后由 tesroom 于 2015-08-20 10:34 编辑

回复 2# tuyajie


   

恩,就是取sdX ,由于mapthX 和sdX是有隶属关系的,一个mpathX 对应多个sdX。根据给出mpathx取出对应的sdx 。对sed不是特别熟悉,还请指点一二。
  1. file1=`lsblk -s > /tmp/file1`
  2. file2="mpatha
  3. mpathb
  4. "
复制代码
在file1中找出包含file2的所有对应sdX路径。file1的格式见楼顶。

论坛徽章:
7
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:18程序设计版块每日发帖之星
日期:2015-08-09 06:20:00每日论坛发贴之星
日期:2015-08-09 06:20:00程序设计版块每日发帖之星
日期:2015-08-22 06:20:00程序设计版块每日发帖之星
日期:2015-08-27 06:20:00
4 [报告]
发表于 2015-08-20 10:42 |只看该作者
  1. [jay.liu@aliCloud chinaUnix]$ cat file2
  2. mpathm
  3. mpathd
  4. mpatha
  5. [jay.liu@aliCloud chinaUnix]$ while read line
  6. > do
  7. > echo "=====================>$line<====================="
  8. > sed -n '/'$line'/,/mpath/p' test.dat | grep -v "mpath"
  9. > done < file2
  10. =====================>mpathm<=====================
  11. ├─sdcw                        70:64    0   300G  0 disk  
  12. └─sddu                        71:192   0   300G  0 disk  
  13. =====================>mpathd<=====================
  14. ├─sdn                          8:208   0   300G  0 disk  
  15. ├─sdk                          8:160   0   300G  0 disk  
  16. ├─sdam                        66:96    0   300G  0 disk  
  17. ├─sdae                        65:224   0   300G  0 disk  
  18. ├─sdbd                        67:112   0   300G  0 disk  
  19. ├─sdai                        66:32    0   300G  0 disk  
  20. ├─sdac                        65:192   0   300G  0 disk  
  21. └─sdak                        66:64    0   300G  0 disk  
  22. =====================>mpatha<=====================
  23. [jay.liu@aliCloud chinaUnix]$
复制代码

论坛徽章:
0
5 [报告]
发表于 2015-08-20 10:47 |只看该作者
本帖最后由 tesroom 于 2015-08-20 10:49 编辑

回复 4# tuyajie

万分感谢,可否再指点下,我只需要取sdX这一个关键字。其他不需要。


取出的数据可否是


mpathm : sdcw
mpathm : sddu

论坛徽章:
7
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:18程序设计版块每日发帖之星
日期:2015-08-09 06:20:00每日论坛发贴之星
日期:2015-08-09 06:20:00程序设计版块每日发帖之星
日期:2015-08-22 06:20:00程序设计版块每日发帖之星
日期:2015-08-27 06:20:00
6 [报告]
发表于 2015-08-20 10:50 |只看该作者
sed -n '/'$line'/,/mpath/p' test.dat | grep -v "mpath" | sed 's/.*\(sd[^ ]\+\).*/\1/'
因为不清楚前面那个串东西是什么,所以写的比较恶心。

论坛徽章:
0
7 [报告]
发表于 2015-08-20 11:02 |只看该作者
回复 6# tuyajie

前面就是2个字符,固定长度,不过目的已经达到了,剩下的我自己调整下就OK了,万分感谢。!!!

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP