We recently set up a virtual demo of an Isilon system on our network as we are evaluating Isilon for a possible purchase. You can obtain a virtual node that runs on ESX from your local EMC Isilon representative, along with temporary licenses to test everything out. As part of the test I wanted to see if it was possible to create custom CLI scripts in the same way that I create them on the Celerra or VNX File. On the Celerra, I run daily scripts that output file pool sizes, file systems & disk space, failover status, logs, health check info, checkpoint info, etc. to my web report page. Can you do the same thing on an Isilon?
Well, to start with, Isilon’s commands are completely different. The first step of course was to look at what was available to me. All of the Isilon administration commands appear to begin with ‘isi’. If you type isi by itself it will show you the basic list of commands and what they do:
isilon01-1% isi Description: OneFS cluster administration. Usage: isi <subcommand> [--timeout <integer>] [{--help | -h}] Subcommands: Cluster Monitoring: alert* An alias for "isi events". audit Manage audit configuration. events* Manage cluster events. perfstat* View cluster performance statistics. stat* An alias for "isi status". statistics* View general cluster statistics. status* View cluster status. Cluster Configuration: config* Manage general cluster settings. email* Configure email settings. job Isilon job management commands. license* Manage software licenses. networks* Manage network settings. services* Manage cluster services. update* Update OneFS system software. pkg* Manage OneFS system software patches. version* View system version information. remotesupport Manage remote support settings. Hardware & Devices: batterystatus* View battery status. devices* Manage cluster hardware devices. fc* Manage Fibre Channel settings. firmware* Manage system firmware. lun* Manage iSCSI logical units (LUNs). target* Manage iSCSI targets. readonly* Toggle node read-write state. servicelight* Toggle node service light. tape* Manage tape and media changer devices. File System Configuration: get* View file system object properties. set* Manage file system object settings. quota Manage SmartQuotas, notifications and reports. smartlock* Manage SmartLock settings. domain* Manage file system domains. worm* Manage SmartLock WORM settings. dedupe Manage Dedupe settings. Access Management: auth Manage authentication, identities and role-based access. zone Manage access zones. Data Protection: avscan* Manage antivirus service settings. ndmp* Manage backup (NDMP) settings. snapshot Manage SnapshotIQ file system snapshots and settings. sync SyncIQ management interface. Protocols: ftp* Manage FTP settings. hdfs* Manage HDFS settings. iscsi* Manage iSCSI settings. nfs Manage NFS exports and protocol settings. smb Manage SMB shares and protocol settings. snmp* Manage SNMP settings. Utilities: exttools* External tools. Other Subcommands: filepool Manage filepools on the cluster. storagepool Configure and monitor storage pools Options: Display Options: --timeout <integer> Number of seconds for a command timeout. --help | -h Display help for this command.
Noe that subcommands or actions that are marked with an asterisk(*) require root login. If you log in with a normal admin account you’ll get the following error message when you run the command:
isilon01-1% isi status Commands not enabled for role-based administration require root user access.
Isilon’s OneFS operating system is based on FreeBSD as opposed to Linux for the Celerra/VNX DART OS. Since it’s a unix based OS with console access, you can create shell scripts and cron job schedules just like the Celerra/VNX File.
Because all of the commands I want to run require root access, I had to create the scripts logged in as root. Be careful doing this! This is only a test for me, I would likely look for a workaround for a prod system. Knowing that I’m going to be FTPing the output files to my web report server, I started by creating the .netrc file in the /root folder. This is where I store the default login and password for the FTP server. Permissions must be changed for it to work, use chmod 600 on the file after you create it. It didn’t work for me at first as the syntax is different on FreeBSD than on Linux, so looking at my Celerra notes didn’t help (For Celerra/VNX File I used “machine <ftp_server_name> login <ftp_login_id> password <ftp_password>”).
For Isilon, the correct syntax is this:
default login <ftp_username> password <ftp_password>The script that FTP’s the files would then look like this for Isilon:
HOST=”10.1.1.1″ ftp $HOST <<SCRIPT put /root/isilon_stats.txt put /root/isilon_repl.txt put /root/isilon_df.txt put /root/isilon_dedupe.txt put /root/isilon_perf.txt SCRIPTFor this demo, I created a script that generates reports for File system utilization, Deduplication Status, Performance Stats, Replication stats, and Array Status. For the Filesystem utilization report, I used two different methods as I wasn’t sure which I’d like better. Using ‘df –h –a /ifs’ will get you similar information to ‘isi storagepool list’, but the output format is different. I used cron to schedule the job directly on the Isilon.
Here is the reporting script:
TODAY=$(date) HOST=$(hostname) sleep 15 echo “———————————————————————————” > /root/isilon_stats.txt echo “Date: $TODAY Host: $HOST” >> /root/isilon_stats.txt echo “———————————————————————————” >> /root/isilon_stats.txt /usr/bin/isi status >> /root/isilon_stats.txt echo “———————————————————————————” > /root/isilon_repl.txt echo “Date: $TODAY Host: $HOST” >> /root/isilon_repl.txt echo “———————————————————————————” >> /root/isilon_repl.txt /usr/bin/isi sync reports list >> /root/isilon_repl.txt echo “———————————————————————————” > /root/isilon_df.txt echo “Date: $TODAY Host: $HOST” >> /root/isilon_df.txt echo “———————————————————————————” >> /root/isilon_df.txt df -h -a /ifs >> /root/isilon_df.txt echo ” ” >> /root/isilon_df.txt /usr/bin/isi storagepool list >> /root/isilon_df.txt echo “———————————————————————————” > /root/isilon_dedupe.txt echo “Date: $TODAY Host: $HOST” >> /root/isilon_dedupe.txt echo “———————————————————————————” >> /root/isilon_dedupe.txt /usr/bin/isi dedupe stats >> /root/isilon_dedupe.txt echo “———————————————————————————” > /root/isilon_perf.txt echo “Date: $TODAY Host: $HOST” >> /root/isilon_perf.txt echo “———————————————————————————” >> /root/isilon_perf.txt sleep 1 echo “ ” >> /root/isilon_perf.txt echo “–System Stats–” >> /root/isilon_perf.txt echo “ ” >> /root/isilon_perf.txt /usr/bin/isi statistics system >> /root/isilon_perf.txt sleep 1 echo “ ” >> /root/isilon_perf.txt echo “–Client Stats–” >> /root/isilon_perf.txt echo “ ” >> /root/isilon_perf.txt /usr/bin/isi statistics client >> /root/isilon_perf.txt sleep 1 echo “ ” >> /root/isilon_perf.txt echo “–Protocol Stats–” >> /root/isilon_perf.txt echo “ ” >> /root/isilon_perf.txt /usr/bin/isi statistics protocol >> /root/isilon_perf.txt sleep 1 echo “ ” >> /root/isilon_perf.txt echo “–Protocol Data–” >> /root/isilon_perf.txt echo “ ” >> /root/isilon_perf.txt /usr/bin/isi statistics pstat >> /root/isilon_perf.txt sleep 1 echo “ ” >> /root/isilon_perf.txt echo “–Drive Stats–” >> /root/isilon_perf.txt echo “ ” >> /root/isilon_perf.txt /usr/bin/isi statistics drive >> /root/isilon_perf.txtOnce the ouput files are FTP’d to the web server, I have a basic HTML page that uses iframes to show the text files. The web page is then automatically updated as soon as the new text files are FTP’d. Below is a screenshot of my demo report page. It doesn’t show the entire page, but you’ll get the idea.