I used to write a lot about how to manage CLARiiON and VNX storage environments with EMC’s naviseccli tool. I’ve been doing some stuff with Pure Storage FlashArrays in our lab and thought it might be worth covering off some of the basics of their CLI. This will obviously be no replacement for the official administration guide, but I thought it might come in useful as a starting point.
Basics
Unlike EMC’s CLI, there’s no executable to install – it’s all on the controllers. If you’re using Windows, PuTTY is still a good choice as an ssh client. Otherwise the macOS ssh client does a reasonable job too. When you first setup your FlashArray, a virtual IP (VIP) was configured. It’s easiest to connect to the VIP, and Purity then directs your session to whichever controller is the current primary controller. Note that you can also connect via the physical IP address if that’s how you want to do things.
The first step is to login to the array as pureuser, with the password that you’ve definitely changed from the default one.
login as: pureuser pureuser@10.xxx.xxx.30's password: Last login: Fri Aug 10 09:36:05 2018 from 10.xxx.xxx.xxx Mon Aug 13 10:01:52 2018 Welcome pureuser. This is Purity Version 4.10.4 on FlashArray purearray http://www.purestorage.com/
“purehelp” is the command to run to list available commands.
pureuser@purearray> purehelp Available commands: ------------------- pureadmin purealert pureapp purearray purecert pureconfig puredns puredrive pureds purehelp purehgroup purehost purehw purelog pureman puremessage purenetwork purepgroup pureplugin pureport puresmis puresnmp puresubnet puresw purevol exit logout
If you want to get some additional help with a command, you can run “command -h” (or –help).
pureuser@purearray> purevol -h usage: purevol [-h] {add,connect,copy,create,destroy,disconnect,eradicate,list,listobj,monitor,recover,remove,rename,setattr,snap,truncate} ... positional arguments: {add,connect,copy,create,destroy,disconnect,eradicate,list,listobj,monitor,recover,remove,rename,setattr,snap,truncate} add add volumes to protection groups connect connect one or more volumes to a host copy copy a volume or snapshot to one or more volumes create create one or more volumes destroy destroy one or more volumes or snapshots disconnect disconnect one or more volumes from a host eradicate eradicate one or more volumes or snapshots list display information about volumes or snapshots listobj list objects associated with one or more volumes monitor display I/O performance information recover recover one or more destroyed volumes or snapshots remove remove volumes from protection groups rename rename a volume or snapshot setattr set volume attributes (increase size) snap take snapshots of one or more volumes truncate truncate one or more volumes (reduce size) optional arguments: -h, --help show this help message and exit
There’s also a facility to access the man page for commands. Just run “pureman command” to access it.
Want to see how much capacity there is on the array? Run “purearray list –space”.
pureuser@purearray> purearray list --space Name Capacity Parity Thin Provisioning Data Reduction Total Reduction Volumes Snapshots Shared Space System Total purearray 12.45T 100% 86% 2.4 to 1 17.3 to 1 350.66M 3.42G 3.01T 0.00 3.01T
Need to check the software version or generally availability of the controllers? Run “purearray list –controller”.
pureuser@purearray> purearray list --controller Name Mode Model Version Status CT0 secondary FA-450 4.10.4 ready CT1 primary FA-450 4.10.4 ready
Connecting A Host
To connect a host to an array (assuming you’ve already zoned it to the array), you’d use the following commands.
purehost create hostname purehost create -wwnlist WWNs hostname purehost list purevol connect --host [host] [volume]
Host Groups
You might need to create a Host Group if you’re running ESXi and want to have multiple hosts accessing the same volumes. Here’re the commands you’ll need. Firstly, create the Host Group.
purehgroup create [hostgroup]
Add the hosts to the Host Group (these hosts should already exist on the array)
purehgroup setattr --hostlist host1,host2,host3 [hostgroup]
You can then assign volumes to the Host Group
purehgroup connect --vol [volume] [hostgroup]
Other Volume Operations
Some other neat (and sometimes destructive) things you can do with volumes are listed below.
To resize a volume, use the following commands.
purevol setattr --size 500G [volume] purevol truncate --size 20GB [volume]
Note that a snapshot is available for 24 hours to roll back if required. This is good if you’ve shrunk a volume to be smaller than the data on it and have consequently munted the filesystem.
When you destroy a volume it immediately becomes unavailable to host, but remains on the array for 24 hours. Note that you’ll need to remove the volume from any hosts connected to it first.
purevol disconnect [volume] --host [hostname] purevol destroy [volume]
If you’re running short of capacity, or are just curious about when a deleted volume will disappear, use the following command.
purevol list --pending
If you need the capacity back immediately, the deleted volume can be eradicated with the following comamnd.
purevol eradicate [volume]
Further Reading
The Pure CLI is obviously not a new thing, and plenty of bright folks have already done a few articles about how you can use it as part of a provisioning workflow. This one from Chadd Kenney is a little old now but still demonstrates how you can bring it all together to do something pretty useful. You can obviously extend that to do some pretty interesting stuff, and there’s solid parity between the GUI and CLI in the Purity environment.
It seems like a small thing, but the fact that there’s no need to install an executable is a big thing in my book. Array vendors (and infrastructure vendors in general) insisting on installing some shell extension or command environment is a pain in the arse, and should be seen as an act of hostility akin to requiring Java to complete simple administration tasks. The sooner we get everyone working with either HTML5 or simple ssh access the better. In any csase, I hope this was a useful introduction to the Purity CLI. Check out the Administration Guide for more information.