Yesterday, we heard from Dmitriy Sandler where he described Role Based Access Control in the Nimble OS 2.1 Series. One of the other great new features within the latest Nimble OS is the ability to perform volume moves. This post will focus on describing how volumes can be moved between different pools of storage within a scale-out group of Nimble arrays. I have already touched on this functionality in my previous post that describes the concept of Storage Pools in general, so its worth reading about that first before continuing with this post if storage pools are a new feature for you (storage pools were introduced with Nimble OS version 2.0).
When creating a volume, you can specify which pool it is created in right from the start. However, you may want to change the location of this volume from one pool to another & this is where volume moves come into play! The two most common reasons for moving data are to increase performance (moving a volume from a single array pool to a multi-array pool), and manually balancing space usage between pools.
Note that moving a volume from one pool to another does not leave a copy of the volume on the original array. During the move, parts of the volume might exist on either pool and once the move is complete, the data exists on the destination pool and is not preserved on the source pool. NOTE: When you move a volume, you move all of the snapshots and clones of the volume as well as the original. User access permissions and encryption settings will move with the volume as well. During a move, the change from one pool to another is transparent: there is no disruption of service, and during the move process, any write is made to the current location of that part of the volume. A move can require some time, depending on the amount of data in the volume, the number of clones, and the pools being migrated to and from so please be aware of this fact.
During a volume move operation, data is in flight between two or more arrays and so we strongly recommend the use of Nimble Connection Manager (NCM) on the host to avoid forwarding during the move process. Nimble Connection Manager (NCM) will know where to direct IO as it tracks where blocks of data are stored. Volumes can be moved independently or simultaneously along with other volume-move operations. However, while in the process of a move, you cannot start another move on the same volume. It goes without saying but the destination pool must have sufficient space to accommodate current use and reserve space for all volumes being moved to it! At any point during a move, the move can be aborted by the user. When a volume move is aborted, all data that has already moved onto the destination pool moves back to the source pool. This may take some time, depending on the size of the pools and how much data has been moved so be aware of this as well!
Lets take a look at how we can perform volume moves in more detail and with screenshots!
Here we can see a group with multiple arrays all in the same default storage pool. Those of you who read my previous post will know that we cannot move any volumes here because we only have one storage pool. If we wanted to segregate the data anyway, we would have to remove one or more arrays from the default storage pool which will trigger a mass evacuation of data from the array to the other members of the pool. Only when the array is empty can we then create a new storage pool, using this array, and then start to migrate volumes to the new storage pool.
In this screenshot below, we can see that there are multiple storage pools in this particular group. Only the default pool has any data on it so we can move volumes from this pool to the other pools which have plenty of free space.
To move a volume, you must navigate to Manage -> Volumes. You then need to select the volume you wish to move by checking the tick box as shown here, then click the Move... button
This then brings up the move dialogue page shown below. This page tells us the source pool on which the volume exists currently and the destination pools we can move the volume to.
In this example, we are going to move the volume to the "goggiepool" storage pool.
Once we click the Move button, the volume will begin its migration to the new pool. As mentioned earlier, depending on the size of the volume being moved this process can take a fair amount of time to complete. If we want to monitor the progress of the volume move, we need to go to Manage -> Volumes, then click on the volume being moved and this shows us more details about this particular volume. In here we can see the progress of the volume move in the top left hand corner of the page as shown below:
Should we need to abort the volume move, we can do this from the volume details page by clicking on the x as per the screenshot below. Remember, any data that was moved will need to be moved back to the source pool which can take additional time to complete.
Hopefully, this has been helpful in explaining and showing how volume moves can be achieved in a multi array group. If you have any questions, please do not hesitate to ask below. Tomorrow, we will be hearing from Walter Van Hoolst where he will be discussing VAAI Thin Provision Stun / Volume Online-Non Writable. You can get back to the main blog series here.