Nimble Storageにsshでログインしてみた。
ユーザは「admin」(標準で作成されている管理者ユーザ)。
パスワードは初期セットアップ時に指定したものを使う。
# ssh admin@IPアドレス Password: / $ su bash: su: command not found / $
一般ユーザっぽい雰囲気だったので、権限をかえられるのか?と「su」を実行してみたがコマンドがないらしい。
とりあえずディレクトリ構成確認。
/ $ ls -al drwxr-xr-x 13 0 0 1024 Nov 8 04:24 . drwxr-xr-x 13 0 0 1024 Nov 8 04:24 .. drwxr-xr-x 2 0 0 1024 Nov 8 04:24 bin drwxr-xr-x 3 0 0 1024 Nov 8 04:24 dev drwxr-xr-x 2 0 0 1024 Nov 8 04:23 diags drwxr-xr-x 5 0 0 1024 Nov 8 04:24 etc drwxr-xr-x 3 0 0 4096 Jan 4 11:11 home drwxr-xr-x 2 0 0 1024 Nov 8 04:24 lib64 drwxr-xr-x 2 0 0 1024 Nov 8 04:23 mnt drwxr-xr-x 3 0 0 1024 Nov 8 04:19 nimble drwxr-xr-x 2 0 0 1024 Nov 8 04:23 sbin drwxr-xr-x 6 0 0 1024 Nov 8 04:23 usr drwxr-xr-x 3 0 0 4096 Jan 4 11:08 var / $ df bash: df: command not found / $ cat /proc/mounts cat: can't open '/proc/mounts': No such file or directory / $
dfコマンドや/proc/mountsを使って、パーテーション構成を確認する、といったことはできないようだ。
設定ファイルはどんなものがあるのかな?と/etc配下を見てみる。
/ $ ls -al /etc drwxr-xr-x 5 0 0 1024 Nov 8 04:24 . drwxr-xr-x 13 0 0 1024 Nov 8 04:24 .. drwxr-xr-x 2 0 0 1024 Nov 8 04:23 acpi drwxr-xr-x 3 0 0 1024 Nov 8 04:23 diag lrwxrwxrwx 1 0 0 14 Nov 8 04:24 group -> /var/etc/group -rw-r--r-- 1 0 0 48 Aug 16 2012 hosts lrwxrwxrwx 1 0 0 18 Nov 8 04:24 localtime -> /var/etc/localtime drwxr-xr-x 2 0 0 1024 Nov 8 04:23 nimpart -rw-r--r-- 1 0 0 56 Aug 16 2012 nsswitch.conf lrwxrwxrwx 1 0 0 15 Nov 8 04:24 passwd -> /var/etc/passwd -rw-r--r-- 1 0 0 291 Aug 16 2012 profile lrwxrwxrwx 1 0 0 20 Nov 8 04:24 resolv.conf -> /var/etc/resolv.conf / $ ls -l /var/etc -rw-r--r-- 1 0 0 14 Jan 4 11:08 group -rw-r--r-- 1 0 0 331 Jan 29 16:25 localtime -rw-r--r-- 1 0 0 44 Jan 4 11:08 passwd -rw-rw-rw- 1 0 0 42 Jan 29 16:26 resolv.conf / $
/etcの中はreadonlyのようで、ユーザがカスタマイズするファイルについては/var/etc/に置かれる、という形を取っているようだ。
登録済みのユーザとグループはこんな感じ。
/ $ cat /etc/passwd admin:x:1000:1000:CLI user:/home:/bin/clish / $ cat /etc/group admin:x:1000: / $
adminユーザしか載ってない、というもの。
次に、実行できそうなコマンドは何があるのか確認してみる。
/ $ ls /bin ash dd getopt man pwd stat vi bash echo grep mkdir rm stty watch cat ed hostname mktemp rmdir sync zcat chmod egrep ln more sed touch cp false ls mv sh true cut fgrep lsattr printenv sleep usleep / $ ls /sbin arp busybox / $ ls /usr/bin [ du id readlink tail uptime [[ env install realpath tee wc awk expand length reset telnet wget basename expr less resize test which cksum find md5sum script tftp whoami clear fold mkfifo seq time xargs cmp ftpget nohup sha1sum tr yes comm ftpput nslookup sort traceroute dc hd od split ttysize diff head patch strings unexpand dirname hexdump ping sum uniq dos2unix hostid printf tac unix2dos / $ ls /usr/sbin / $
busyboxでいろいろ代用している模様。
/ $ busybox BusyBox v1.13.0 (2013-11-07 11:23:31 PST) multi-call binary Copyright (C) 1998-2008 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as! Currently defined functions: [, [[, arp, ash, awk, basename, cat, chmod, cksum, clear, cmp, comm, cp, dc, dd, diff, dirname, dos2unix, du, echo, ed, egrep, env, expand, expr, false, fgrep, find, fold, ftpget, ftpput, getopt, grep, hd, head, hexdump, hostid, hostname, id, install, length, ln, ls, lsattr, md5sum, mkdir, mkfifo, mktemp, more, mv, nohup, nslookup, od, patch, printenv, printf, pwd, readlink, realpath, reset, resize, rm, rmdir, script, sed, seq, sh, sha1sum, sleep, sort, split, stat, strings, stty, sum, sync, tac, tail, tee, telnet, test, tftp, time, touch, tr, true, ttysize, unexpand, uniq, unix2dos, uptime, usleep, watch, wc, wget, which, whoami, xargs, yes / $
Nimble独自の管理プログラム系はどこにあるのかな?と$PATHを確認してみると、/nimble/usr/binというディレクトリが・・・
/ $ echo $PATH /bin:/usr/bin:/sbin:/usr/sbin:/nimble/usr/bin / $ ls /nimble/usr/bin ? failover perfpolicy snapcoll version alert halt prottmpl software vmwplugin array help reboot sshkey vol chapuser initiatorgrp route stats volcoll ctrlr ip setup subnet date nic shelf timezone disk partner snap useradmin / $
コマンド名を見る限りでは、Nimble StorageのWeb GUIで操作することができることが、CLIでも実装されている、というような感じに見受けられる・・・というか、おそらく、Web GUIのバックエンドでは、これらのCLIが実行されているだけ、という気がする。
とりあえず、「array」というコマンドを実行してみる。
/ $ array ERROR: One of following options must be specified: --info, --edit, --resetup, --create_throttle, --delete_throttle, --edit_throttle, --autosupport_validate, --autosupport_initiate, --unset_http_proxy INFO: Use --help option to view usage information. / $ array --info Model: CS220G Serial: AF-****** Version: 1.4.8.0-54807-opt Array name: ************** Array IP address: xxx.xxx.xxx.xx1 Array IP netmask: 255.255.0.0 Discovery IP address: xxx.xxx.xxx.xx1 Discovery IP netmask: 255.255.0.0 Domain name: ************** DNS server(s): ************** NTP server: ************** Timezone: Asia/Tokyo SMTP server: ************** SMTP port: 25 Minimum alert email severity level: WARNING Alert email recipient address(es): *******@*********** Alert email from address: *******@*********** Copy alert email to Nimble Storage support: Yes Send event data to Nimble Storage support: Yes Allow Nimble Storage support to establish secure connection to array: No HTTP proxy server: HTTP proxy server port: HTTP proxy server username: HTTP proxy server password: (on file if set) Default volume reserve (% of volume size): 0 Default volume quota (% of volume size): 100 Default volume warn level (% of volume size): 80 Default snapshot reserve (% of volume size): 0 Default snapshot quota (% of volume size): unlimited Default snapshot warn level (% of volume size): 0 Total capacity (MB): 7740973 Volume usage (MB): 71797 Volume compression: 1.46X Volume space saved (MB): 33001 Snapshot usage (MB): 2143 Snapshot compression: 1.59X Snapshot space reduction: 324.41X Snapshot space saved (MB): 693238 Unused reserve (MB): 0 Free space (MB): 7667032 Last login: admin @ Throttled replication bandwidth: unlimited Replication throttles: N/A iSNS enabled: No iSNS hostname: iSNS port: 3205 SNMP trap enabled: No SNMP trap hostname: N/A SNMP trap port: N/A SNMP get enabled: No SNMP community: N/A SNMP get port: N/A SNMP system location: N/A SNMP system contact: N/A Array time: Thu Jan ** **:**:** 2014 / $
Web GUI上では「Manage」→「Array」に相当する操作になるようだ。
「ctrlr」コマンドは何なのか?
/ $ ctrlr --info ERROR: required parameter is missing in 'info' INFO: Use --help option to view usage information. / $ ctrlr --list ----+----------+--------------------+----------------+--------+-------+-------- Name State Hostname Support IP Power Fans Temper- Supplies Status -ature Status Status ----+----------+--------------------+----------------+--------+-------+-------- A active xxx.xxx.xxx.xx3 OK OK OK B standby xxx.xxx.xxx.xx4 OK OK OK / $ ctrlr --info A Name: A Serial number: AF-xxxxxx-C1 State: active Hostname: Support IP address: xxx.xxx.xxx.xx3 Support IP netmask: 255.255.0.0 Support IP nic: eth1 Hostname: Power supply: OK power-supply1 at left rear: ok power-supply2 at right rear: ok Cooling fans: OK fan1 at lower front of controller A: ok, speed: 11730rpm fan2 at lower left rear of controller A: ok, speed: 10608rpm fan3 at lower right rear of controller A: ok, speed: 10608rpm fan4 at upper right front of controller A: ok, speed: 10410rpm fan5 at upper left front of controller A: ok, speed: 10245rpm fan6 at upper left rear of controller A: ok, speed: 10560rpm Temperature sensors: OK motherboard at motherboard: ok, temperature: 28C bp-temp1 at left-side backplane: ok, temperature: 37C System partition status: OK Last AutoSupport contact: Jan 30 2014 00:50:39 / $ ctrlr --info B Name: B Serial number: AF-xxxxxx-C2 State: standby Hostname: Support IP address: xxx.xxx.xxx.xx4 Support IP netmask: 255.255.0.0 Support IP nic: eth1 Hostname: Power supply: OK power-supply1 at left rear: ok power-supply2 at right rear: ok Cooling fans: OK fan1 at lower front of controller B: ok, speed: 10608rpm fan2 at lower left rear of controller B: ok, speed: 10608rpm fan3 at lower right rear of controller B: ok, speed: 10608rpm fan4 at upper right front of controller B: ok, speed: 10410rpm fan5 at upper left front of controller B: ok, speed: 10275rpm fan6 at upper left rear of controller B: ok, speed: 10365rpm Temperature sensors: OK motherboard at motherboard: ok, temperature: 28C bp-temp2 at right-side backplane: ok, temperature: 38C System partition status: OK Last AutoSupport contact: N/A / $
各コントローラ(マザーボード)の状態を取得するコマンドであったようだ。
システム停止するための操作は、Web GUI上だと「Administrator」→「shutdown」だったので、shutdownコマンドを探したんですが、rebootしかないなー、と思ってしまったのですが、こちらは「halt」コマンドでした。
/ $ halt ERROR: One of following options must be specified: --array, --controller INFO: Use --help option to view usage information. / $ halt --array The array is shutting down and the head shelf will power off. You will not be able to use the user interface. Once the array head shelf is powered down, it is safe to manually turn off any expansion shelves attached to this array. To re-establish the user interface, you must first power any expansion shelves back on, power the array back on and log in again. INFO: Initiated array shutdown. / $
「halt –array」にてシステム停止ができました。
いまのところ、Nimble Storage側に、UPS連携の仕組みが用意されていないですが、sshでログインして「halt –array」コマンドを実行することで停止ができるので、そういうUPSを用意すれば問題がないですね。
UPSソリューションズのAdvanced NWボード対応のUPSシリーズ(UPSS-SP,UPSS-HP,UPSS-HS)とかが使えるでしょうね。(Nimble StorageはSSH v2対応で、SSH v1のみ対応のSNMP/Webボードは使えません)
まぁ、コマンドを全部紹介していってもきりがないので、これくらいで・・・
各コマンドの詳細については、「man コマンド名」でちゃんと表示されます。
しっかりとCLI管理の場合も考えられている良い作りになっています。
・・・どこぞのWeb GUIがほぼ全てのTintri VMstoreとは全然違う・・・と感じましたね。