Chinaunix首页 | 论坛 | 博客
  • 博客访问: 741236
  • 博文数量: 130
  • 博客积分: 2951
  • 博客等级: 少校
  • 技术积分: 1875
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-04 18:32
文章分类

全部博文(130)

文章存档

2013年(1)

2012年(129)

分类: Python/Ruby

2012-09-03 14:53:35

从SAN map到vios的一些盘,由于种种原因,有时候并未assign到lpar,也未做其他用途,久之成为无用的盘,耗费
了storage的空间,需要把它们找出来,并删除。
这个是找出它们的脚本


  1. #! /usr/bin/perl

  2. my @lsdev_rs = `/usr/ios/cli/ioscli lsdev -type disk | grep -i mpio | awk -F " " '{print \$1}'`;
  3. my @lspv_rs = `lspv | awk -F " " '{print \$1}'`;
  4. my @lsmap_rs = `/usr/ios/cli/ioscli lsmap -all | grep -i "backing device" | awk -F " " '{print \$3}' | sed -n '/hdisk/p'`;

  5. #print @lsmap_rs;

  6. sub non_intersect{
  7.         #my ($array_ref1, $aray_ref2) = @_;
  8.         my $array_ref1 = shift;
  9.         my $array_ref2 = shift;
  10.         my %all_hash = ();
  11.         my @non_intersec;
  12.         foreach $em ( @$array_ref1, @$array_ref2 ) {
  13.                 $all_hash{$em}++;
  14.         }

  15.         foreach $em ( keys %all_hash ) {
  16.                 if ($all_hash{$em} == 1){
  17.                         push @non_intersec, $em;
  18.                 }
  19.         }

  20.         return \@non_intersec;

  21. }

  22. my $disklist_ref = non_intersect(\@lsdev_rs, \@lsmap_rs);

  23. my %disk_uid = ();
  24. foreach my $em ( @$disklist_ref ) {
  25.         chomp $em;
  26.         my $uid = `lsattr -El $em -a unique_id | awk -F " " '{print \$2}'`;
  27.         $uid = substr( $uid, 5, 32 );

  28.         $disk_uid{$em} = $uid;
  29. }


  30. foreach $k ( keys %disk_uid ){
  31.         print "$k:$disk_uid{$k}\n";
  32. }

结果示例:
# ./detectUselessDisk.pl
hdisk5:600507680280838EC8000000000008E5
hdisk10:600507680280838EC80000000000089D
hdisk8:600507680280838EC80000000000089C
hdisk6:600507680280838EC800000000000899
hdisk3:600507680280838EC800000000000728
hdisk7:600507680280838EC80000000000089B
阅读(1699) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~