September 8

V7000: Check the enclosure battery status

To see the charge state of the enclosure batteries located in the Power supplies of the Gen 1 V7000 use the following command from the CLI.

lsenclosurebattery

Example:

IBM_Storwize:v7000:superuser>lsenclosurebattery

enclosure_id battery_id status charging_status recondition_needed percent_charged end_of_life_warning
1 1 online idle no 100 no
1 1 online idle no 100 yes
Category: SAN | Comments Off on V7000: Check the enclosure battery status
March 13

V7000: Change volume space warning percentage from the command line

V7000 Storewize OS
Changing the volume space warning percentage from the command line.

Log into your V7000 though the CLI using putty or your favorite ssh client.

Use the following command to list the volume configuration settings:
lsvdisk V7000-DISK1-2000TB-FileServerVolume

Use the following command to change the volume space warning percentage:
chvdisk -warning 90% V7000-DISK1-2000TB-FileServerVolume

Category: SAN | Comments Off on V7000: Change volume space warning percentage from the command line
September 1

V7000: Updating Storwize V7000 drive code

**************************************************************************
Update 17/12/2011:

Until the flash is updated showing how to avoid this issue, only update drive firmware when installing a new machine or if all hosts are offline.

**************************************************************************

IBM recently released new drive firmware for the Storwize V7000, so I thought I would share the process of how I update that firmware.    I recommend you perform the drive update before you next update your Storwize V7000 microcode.

I want to be clear that one of the central goals of the Storwize V7000 is to ensure that performing drive firmware updates can be done online without host disruption.    This is possible because each drive can be updated in less than around 4 seconds.   The scripts I share below leave a 10 second delay between drives just to be safe.  I would still prefer that you did the update during a quiet period.

We need to perform this procedure using the command line as there is no way to do this procedure from the GUI (yet).

There are four steps:

  1. Upload the Software Upgrade Test Utility to determine which drives need updating.
  2. Upload the drive microcode package.
  3. Apply the drive software.
  4. Confirm all drives are updated.

Step 1:  Upload and run the upgrade utility

  • You will need the upgrade test utility.
  • You will need the Putty utility PSCP.
  • You will need to have created a public/private key pair and assigned it to a user.  In all the examples the user name I use is anthonyv.  You need to use your own user-id, although you could also use admin.   Place the PPK file into the putty folder along with the upgrade test utility.

From the Putty folder we need to upload the test utility.  You will need to change the key file name, userid and IP address (all highlighted in red) to suit your installation.

NOTE:  The following command is being run in a Windows command prompt.  You need to be in the C:Program FilesPutty or C:Program Files (x86)Putty folder.

pscp -i anthonyv.ppk IBM2076_INSTALL_upgradetest_6.15 anthonyv@9.191.0.78:/home/admin/upgrade

Having uploaded the file, now start PuTTY and SSH to your Storwize V7000.   Logon and issue the following two commands.  You are using SSH commands now, not the Windows Command Prompt:

svcservicetask applysoftware -file IBM2076_INSTALL_upgradetest_6.15
svcupgradetest -f -d

If you get a warning window like the one shown below, indicating we have down-level drives, we need to proceed to the next step (note that the enclosure and slot numbers are not the same as drive IDs).  If you have a lot of drives, you can drop the -d from the svcupgradetest command to get a summary list.

******************* Warning found *******************
+----------------------+-----------+------------+------------------------------------------+
| Model                | Latest FW | Current FW | Drive Info                               |
+----------------------+-----------+------------+------------------------------------------+
| HK230041S            | 2920      | 291E       | Drive in slot 24 in enclosure  1         |
|                      |           |            | Drive in slot 23 in enclosure  1         |
| ST9450404SS          | B548      | B546       | Drive in slot 22 in enclosure  1         |
|                      |           |            | Drive in slot 21 in enclosure  1         |
|                      |           |            | Drive in slot 20 in enclosure  1         |
|                      |           |            | Drive in slot 19 in enclosure  1         |
|                      |           |            | Drive in slot 18 in enclosure  1         |
|                      |           |            | Drive in slot 17 in enclosure  1         |
|                      |           |            | Drive in slot 16 in enclosure  1         |
|                      |           |            | Drive in slot 15 in enclosure  1         |
|                      |           |            | Drive in slot 14 in enclosure  1         |
|                      |           |            | Drive in slot 13 in enclosure  1         |
|                      |           |            | Drive in slot 12 in enclosure  1         |
|                      |           |            | Drive in slot 11 in enclosure  1         |
|                      |           |            | Drive in slot 10 in enclosure  1         |
|                      |           |            | Drive in slot  9 in enclosure  1         |
|                      |           |            | Drive in slot  8 in enclosure  1         |
|                      |           |            | Drive in slot  5 in enclosure  1         |
|                      |           |            | Drive in slot  6 in enclosure  1         |
+----------------------+-----------+------------+------------------------------------------+

Step 2:  Upload the drive microcode package

Download the drive update package. Put it into the PuTTY folder.
From a Windows command prompt we need to upload the package using the following command.   You will need to change the key file name, userid and IP address (all highlighted in red) to suit your installation.    Note yet again that you are running this in a Windows command prompt from the PuTTY folder (not from inside an SSH session):

pscp -i anthonyv.ppk IBM2076_DRIVE_20110928 anthonyv@9.191.0.78:/home/admin/upgrade

Step 3:  Apply the drive software

I have written some scripts to help you list the drive IDs that need to be updated and perform the updates.   You can upgrade the drives one at a time, or in bulk, depending on how you want to do this.  All the remaining commands are all run in a PuTTY session.

Firstly run this script to list all the drive IDs and current firmware levels.  We need the drive IDs if we want to update individual drives.

svcinfo lsdrive -nohdr |while read did error use;do svcinfo lsdrive $did |while read id value;do if [[ $id == "firmware_level" ]];then echo $did"   "$value;fi;done;done

The output will look something like this, showing the drive ID and that drive’s current firmware level.   From step 1 we know what the latest firmware level is, so we can compare to the current firmware level:

0   291E
1   291E
2   B546
3   B546
4   B546
5   B546
6   B546
7   B546
8   B546
9   B546
10   B546
11   B546
12   B546
13   B546
14   B546
15   B546
16   B546
17   B546
18   B546
19   B546
20   B546
21   B546
22   B546
23   B546

Now we can update individual drives with this command, which will update drive ID 23.   Just keep changing the drive IDs, using the list of down-level drives, until every drive has been updated:

svctask applydrivesoftware -file IBM2076_DRIVE_20110928 -type firmware -drive 23

However you may have a lot of drives and want to upgrade them in bulk. So you could use this command, which updates drive ID 19 and 20 (highlighted in red).  You could change and also add extra drives to the list as required:

for did in 19 20;do echo "Updating drive "$did;svctask applydrivesoftware -file IBM2076_DRIVE_20110928 -type firmware -drive $did;sleep 10s;done

If we just wanted to upgrade every single drive in the machine (regardless of their level), we could run this command:

svcinfo lsdrive -nohdr |while read did name IO_group_id;do echo "Updating drive "$did;svctask applydrivesoftware -file IBM2076_DRIVE_20110928 -type firmware -drive $did;sleep 10s;done

When updating multiple drives, I have inserted a 10 second sleep between updates, just to ensure the process runs smoothly.  This means each drive takes about 13-15 seconds.

Once we have upgraded every drive, it is time for a final check.

Step 4: Confirm all drives are updated

You have two ways to confirm this.   Firstly run the following command to list the firmware level of each drive.  Is each drive reflecting the levels reported in Step 1?

svcinfo lsdrive -nohdr |while read did error use;do svcinfo lsdrive $did |while read id value;do if [[ $id == "firmware_level" ]];then echo $did"   "$value;fi;done;done

Now run the software upgrade test utility again:

svcupgradetest -f -d

Provided you receive no warnings about drives not being at the recommended levels, you are now finished with the drive updates.   Of course you could now proceed to install 6.2.0.4 firmware, but you can do that from the GUI.

By: anthonyv

Category: SAN, Virtualization | Comments Off on V7000: Updating Storwize V7000 drive code
July 29

V7000: Modifying the clustered system IP addresses using the CLI

Excerpt from the V3500 – Use these commands on the V7000 at your own risk.

You can use the command-line interface (CLI) to change the IP addresses that are associated with a clustered system (system).

About this task

Attention: When you specify a new IP address for a system, the existing communication with the system is broken. You must reconnect to the system with the new IP address.

Perform these steps to change the system IP address:

Procedure

  1. Issue the lssystemip command to list the current IP addresses that are used by the system.
  2. Record the current IP addresses for future reference.
  3. To change an Internet Protocol Version 4 (IPv4) system IP address, issue this command:
    chsystemip -clusterip cluster_ip_address -port cluster_port 

    where cluster_ip_address is the new IP address for the cluster and cluster_port specifies which port (1 or 2) to apply changes to.

  4. To change an IPv4 system IP address to an IPv6 system IP address, issue this command:
    chsystemip -clusterip_6 cluster_ip_address -port cluster_port

    where cluster_ip_address is the new Internet Protocol Version 6 (IPv6) address for the cluster and cluster_port specifies which port (1 or 2) to apply changes to.

  5. To change an IPv4 default gateway IP address, issue this command:
    chsystemip -gw cluster_gateway_address -port cluster_port

    where cluster_gateway_address is the new gateway address for the cluster and cluster_port specifies which port (1 or 2) to apply changes to.

  6. To change an IPv6 default gateway address, issue this command:
    chsystemip -gw_6 cluster_gateway_address -port cluster_port

    where cluster_gateway_address is the new gateway address for the cluster and cluster_port specifies which port (1 or 2) to apply changes to.

  7. Issue this command to change an IPv4 system subnet mask
    chsystemip -mask cluster_subnet_mask -port cluster_port

    where cluster_subnet_mask is the new subnet mask for the cluster and cluster_port specifies which port (1 or 2) to apply changes to.

  8. For IPv6 addresses, you can issue this command to set the prefix for the system:
    chsystemip -prefix_6 -port cluster_port 

    where cluster_port specifies which port (1 or 2) to apply changes to.

  9. Optionally, if you want to delete all of the IPv4 addresses in the system after you have changed all addresses to IPv6, issue this command:
    chsystem -noip 
  10. Optionally, if you want to delete all of the IPv6 addresses in the system after you have changed all addresses to IPv4, issue this command:
    chsystem -noip_6 
  11. The IP routing table provides details of the gateway that is used for IP traffic to a range of IP addresses for each Ethernet port. This information can be used to diagnose configuration node accessibility problems. To display the IP routing table, enter this CLI command:
    lsroute
  12. The ping command can be used to diagnose IP configuration problems by checking whether a given IP address is accessible from the configuration node. The command can be useful for diagnosing problems where the configuration node cannot be reached from a specific management server. For example, enter this CLI command:
    ping ipv4_address | ipv6_address 

    where ipv4_address | ipv6_address is either the IPv4 address or the IPv6 address.

By: IBM

Category: SAN | Comments Off on V7000: Modifying the clustered system IP addresses using the CLI
June 18

V7000: SVCMON

SVCMON is a perl based SAN monitoring solution for IBM.

General Installation notes(Note that there will be newer version available):
2-1. Install Linux
svcmon is tested with the following Redhat Enterprise Linux 5 installation.
[root@sspc bin]# cat /proc/version
Linux version 2.6.18-92.el5 ([email protected]) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-41)) #1 SMP Tue Apr 29 13:16:12 EDT 2008
[root@sspc bin]#

2-2. Installion Perl
svcmon is tested with the following perl and its modules installation.
[root@sspc bin]# rpm -qa | grep perl
perl-Compress-Zlib-1.42-1.fc6
perl-BSD-Resource-1.28-1.fc6.1
mod_perl-2.0.2-6.3.el5
perl-Digest-SHA1-2.11-1.2.1
perl-Digest-HMAC-1.01-15
perl-Socket6-0.19-3.fc6
perl-IO-Zlib-1.04-4.2.1
perl-GD-2.41-2.el5.rf
perl-5.8.8-10.el5_0.2
perl-String-CRC32-1.4-2.fc6
perl-HTML-Parser-3.55-1.fc6
perl-Net-DNS-0.59-3.el5
perl-Net-SSLeay-1.30-4.fc6
perl-XML-Simple-2.14-4.fc6
perl-HTML-Tagset-3.10-2.1.1
perl-Net-IP-1.25-2.fc6
perl-SGMLSpm-1.03ii-16.2.1
perl-DBI-1.52-1.fc6
perl-DBD-MySQL-3.0007-1.fc6
perl-XML-Parser-2.34-6.1.2.2.1
perl-GD-Graph-1.43-1.2.el5.rf
perl-IO-Socket-INET6-2.51-2.fc6
newt-perl-1.08-9.2.2
perl-Archive-Tar-1.30-1.fc6
perl-DBD-Pg-1.49-1.fc6
perl-GDTextUtil-0.86-1.el5.rf
perl-URI-1.35-3
perl-libwww-perl-5.805-1.1.1
perl-IO-Socket-SSL-1.01-1.fc6
perl-Time-Piece-1.13-1.el5.rf
[root@sspc bin]#

2-3. Install PostgreSQL
svcmon is tested with the following PostgreSQL installation.
[root@sspc bin]# rpm -qa | grep postgresql
postgresql-libs-8.1.11-1.el5_1.1
postgresql-8.1.11-1.el5_1.1
postgresql-python-8.1.11-1.el5_1.1
postgresql-server-8.1.11-1.el5_1.1
[root@sspc bin]#

2-4. Install ssh
svcmon is tested with the following ssh installation. After installation, you need to register your ssh key to your SVC / Storwize V7000 cluster.
[root@sspc bin]# rpm -qa | grep ssh
openssh-askpass-4.3p2-26.el5
openssh-4.3p2-26.el5
openssh-clients-4.3p2-26.el5
openssh-server-4.3p2-26.el5
[root@sspc bin]#

2-5. Install xsltproc
svcmon is tested with the following xsltproc installation.
[root@sspc bin]# rpm -qa | grep xslt
libxslt-1.1.17-2
libxslt-python-1.1.17-2
libxslt-devel-1.1.17-2
[root@sspc bin]#

2-6. Install svcmon
Create directories and place svcmon files as follows. /svcmon/report directory needs to be mode drwxrwxrwx, since user postgres is going to create files in this directory:
[root@sspc bin]# ls -alR /svcmon
/svcmon:
total 32
drwxr-xr-x 7 root root 4096 Nov 13 10:52 .
drwxr-xr-x 26 root root 4096 Nov 13 10:52 ..
drwxr-xr-x 2 root root 4096 Nov 13 10:52 backup
drwxr-xr-x 2 root root 4096 Nov 13 10:54 bin
drwxr-xr-x 2 root root 4096 Nov 13 10:54 config
drwxr-xr-x 2 root root 4096 Nov 16 05:59 iostats
drwxr-xr-x 2 root root 4096 Nov 13 10:52 report
/svcmon/backup:
total 8
drwxr-xr-x 2 root root 4096 Nov 13 10:52 .
drwxr-xr-x 7 root root 4096 Nov 13 10:52 ..
/svcmon/bin:
total 120
drwxr-xr-x 2 root root 4096 Nov 13 10:54 .
drwxr-xr-x 7 root root 4096 Nov 13 10:52 ..
-rw-r–r– 1 root root 7098 Nov 12 15:59 svcconfig.pl
-rw-r–r– 1 root root 1301 Feb 23 2008 svcconfig.xsl
-rw-r–r– 1 root root 19102 Nov 12 15:16 svcdb.pl
-rw-r–r– 1 root root 22025 Nov 12 16:23 svcperf.pl
-rw-r–r– 1 root root 50622 Nov 12 15:59 svcreport.pl
/svcmon/config:
total 12
drwxr-xr-x 2 root root 4096 Nov 13 10:54 .
drwxr-xr-x 7 root root 4096 Nov 13 10:52 ..
-rw-r–r– 1 root root 316 Feb 20 2008 svcconfig.css
/svcmon/iostats:
total 8
drwxr-xr-x 2 root root 4096 Nov 16 05:59 .
drwxr-xr-x 7 root root 4096 Nov 13 10:52 ..
/svcmon/report:
total 8
drwxrwxrwx 2 root root 4096 Nov 16 07:42 .
drwxr-xr-x 7 root root 4096 Nov 13 10:52 ..
[root@sspc bin]#

2-7. Verify installation

Verify Perl installation
Change current directory to /svcmon/bin and use the perl command as follows:
[root@sspc bin]# perl -v
This is perl, v5.8.8 built for i386-linux-thread-multi
Copyright 1987-2006, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using “man perl” or “perldoc perl”. If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
[root@sspc bin]#
If you see a similar screen, Perl installation is OK.

Verify PostgreSQL installation
Change current directory to /svcmon/bin and use the psql command as follows:
[root@sspc bin]# psql -U postgres
Welcome to psql 8.1.11, the PostgreSQL interactive terminal.
Type: copyright for distribution terms
h for help with SQL commands
? for help with psql commands
g or terminate with semicolon to execute query
q to quit
postgres=# q
[root@sspc bin]#
If you see a similar screen, PostgreSQL installation is OK.

Verify svcmon installation
Change current directory to /svcmon/bin and use the svcdb.pl command as follows:
[root@sspc bin]# perl svcdb.pl –help
Syntax
>>- perl svcdb.pl —+- –create—————+———————–>
‘- –backup ————–‘
‘- –restore – file_name -‘
‘- –list —————-‘
>–+————————–+—————————————->
‘- –dir – directory_name -‘
>–+————————+—+—————————-+———>
‘- –dbhost – host_name -‘ ‘- –dbname – database_name -‘
>–+————————+—+———————-+—————>
‘- –dbuser – user_name -‘ ‘- –dbpwd – password -‘
>–+———-+—+———+—————————————–><
‘- –help -‘ ‘- –man -‘
Invocation examples
perl svcdb.pl –create –dbhost localhost –dbname svcdb –dbuser postgres –dbpwd password
perl svcdb.pl –create
perl svcdb.pl –backup –dir /svcmon/backup/ (or C:svcmonbackup) –dbhost localhost –dbname svcdb –dbuser postgres –dbpwd password
perl svcdb.pl –backup
perl svcdb.pl –restore svcdb_20080101_000000 –dir /svcmon/backup/ (or C:svcmonbackup) –dbhost localhost –dbname svcdb –dbuser postgres –dbpwd password
perl svcdb.pl –restore svcdb_20080101_000000
perl svcdb.pl –list –dbhost localhost –dbname svcdb –dbuser postgres –dbpwd password
perl svcdb.pl –list
* Use “perl svcdb.pl –man” for more details.
[root@sspc bin]#
If you see a similar screen, svcmon installation is OK

The following applications and modules caused me issues and took some troubleshooting to get everything running properly:

xsltproc
libxslt
There will be several perl package that will need to be located and installed separately:
DBI
DBD
XML-Pg
XML-Parser
perl-XML-Simple
perl-Catalyst
per-GDGraph

Usage commands:
From svcmon/bin/
perl svcperf.pl –svc V7000DNSNAME
* Note what time you start the data collection

Use: Ctrl + c to stop the data collection

Create the report
perl svcreport.pl –cluster V7000DNSNAME –from “2013-03-07 8:40:00”

Report information can be found in svcmon/reports

Before creating a new report, to keep things clean I run:
“rm -f ../report/*” from svcmon/bin/

Category: SAN | Comments Off on V7000: SVCMON