Summary

With Pure Fusion, you can manage resources across multiple arrays from a single control plane, enabling consistency at scale and simplifying management of complex application storage requirements.

image_pdfimage_print

When managing storage infrastructure at scale, one of the most powerful approaches is treating related storage resources as cohesive workloads rather than individual components. This becomes especially important when dealing with applications like SQL Server that have specific storage patterns and requirements and are often deployed at scale in a data center or cloud.

In this post, I’ll walk through a complete workflow for creating and managing application-specific storage workloads using the Pure Fusion fleet capability with PowerShell. We’ll see how we can define storage templates, called presets, once and deploy them consistently across our entire fleet of storage arrays.

Why Pure Fusion Fleet Management?

Pure Fusion is a fleet management capability that allows you to manage resources across multiple arrays from a single control plane. Before diving into the implementation, let’s understand the challenges Pure Fusion addresses:

  • Consistency at scale: Manually configuring storage across multiple arrays leads to configuration drift
  • Complexity management: Applications like SQL Server require multiple volumes with different characteristics
  • Operational efficiency: Repetitive tasks consume valuable time and increase error risk
  • Governance: Ensuring compliance with organizational standards across all deployments

Pure Fusion fleet management solves these challenges by providing a single control plane for managing storage resources across your entire fleet as cohesive workloads.

Pure Fusion and PowerShell SDK2

With the release of the Pure Storage PowerShell SDK2 version 2.43.30, cmdlet support for Pure Fusion operations is now available. The release notes detail these new capabilities that make it easier than ever to implement consistent storage management across your entire fleet.

First, we need to establish a connection to one of our fleet member arrays.

The Pure Storage PowerShell SDK2 provides fleet management capabilities through several cmdlets. These cmdlets enable you to create and manage fleets (New-Pfa2Fleet, Update-Pfa2Fleet, Remove-Pfa2Fleet), view fleet information and membership (Get-Pfa2Fleet, Get-Pfa2FleetMember), and manage fleet membership by adding or removing arrays (New-Pfa2FleetMember, Remove-Pfa2FleetMember). Security is handled through fleet keys (New-Pfa2FleetKey, Get-Pfa2FleetKey), which allow arrays to join a fleet securely. When creating a fleet, the current array automatically becomes the first member, and additional arrays can be added using a fleet key generated from any existing member. Arrays can only be removed from a fleet if they’re not utilizing any fleet-wide resources, ensuring data integrity across the fleet.

Similarly, let’s check what workload management cmdlets are available:

The workload management cmdlets provide functionality for creating and managing storage presets and workloads across your fleet. You can create and manage workload presets (New-Pfa2PresetWorkload, Set-Pfa2PresetWorkload, Update-Pfa2PresetWorkload, Remove-Pfa2PresetWorkload), which serve as templates defining volume configurations, QoS settings, placement rules, and snapshot policies. Once presets are defined, you can deploy actual workload instances (New-Pfa2Workload, Update-Pfa2Workload, Remove-Pfa2Workload) that inherit all the preset’s configurations. There are also cmdlets for workload placement recommendations (New-Pfa2WorkloadPlacementRecommendation, Get-Pfa2WorkloadPlacementRecommendation) that help optimize where workloads should be deployed across your fleet based on capacity and performance requirements. Additionally, you can manage workload tags (Get-Pfa2WorkloadTag, Set-Pfa2WorkloadTagBatch, Remove-Pfa2WorkloadTag) for governance, tracking, and organizational purposes. These cmdlets work together to provide a complete workload lifecycle management solution from template creation through deployment and ongoing management.

Examining Our Fleet Members

Now let’s check which arrays are part of our Pure Fusion fleet:

We have four arrays in our fleet: three FlashArray systems and one FlashBlade® (//S200 model).

Understanding the Preset Structure

A workload preset in Pure Fusion consists of several interconnected configurations:

  • Volume configurations: Define the number, size, and type of volumes
  • QoS configurations: Set performance limits and guarantees
  • Placement configurations: Determine which arrays can host the workload
  • Snapshot configurations: Define data protection policies
  • Workload tags: Provide metadata for tracking and governance

Let’s break down each component as we build our SQL Server preset:

Creating a SQL Server Workload Preset

Now for the interesting part. We’ll create a preset workload template designed specifically for SQL Server deployments. This template will define:

  • Four volume types (Data, Log, TempDB, and System): Each with specific performance characteristics, separated for observability, management, and recovery reasons
  • Specific sizes for each volume type based on best practices and system requirements
  • Performance QoS settings to ensure consistent IOPS delivery (this is optional)
  • Snapshot policies that exclude TempDB from snapshots (since it’s recreated on restart)
  • Appropriate tagging for governance, compliance, and cost tracking

Here’s the complete template definition with detailed explanations:

Let’s verify that our preset is now visible across the fleet:

Deploying a SQL Server Workload Instance

Now that we have our template defined, let’s create an actual workload instance from this preset. Once created, this storage can be attached to a physical or virtual machine.

And confirm it was created:

Examining the Created Resources

Let’s examine what exactly was created for this workload. First, let’s look at the volume group. Here, you’ll find the QoS configuration, as well as space accounting information about all of the volumes in the volume group. When examining Pure Storage resources in a Pure Fusion-managed environment, you’ll notice two critical attributes: Context and Workload. Let’s look at those more closely.

Context: This identifies where the resource is located within the fleet hierarchy. It contains:

  • Id: A unique identifier for the location
  • Name: The human-readable name (usually the array name for array-specific resources or fleet name for fleet-wide resources)

In our example, Context: @{Id=’081f096d-1c16-42a6-9855-92678d705a1c’; Name=’sn1-x90r2-f06-27′} tells us this volume group resides on the array named sn1-x90r2-f06-27. The Id is a unique identifier for the resource.

Workload: This links the resource back to its parent workload and configuration source. It contains:

  • Id: The unique identifier of the parent workload
  • Name: The workload instance name
  • ResourceType: Always ‘workloads’ for workload-related resources
  • _Configuration: Which configuration from the preset this resource implements (e.g., ‘Data-QoS’, ‘SQL-Data’)

In our example, Workload: @{Id=’c4d35063-cc7e-4a34-8a1d-5d2590d40879′; Name=’Production-SQL-01′; ResourceType=’workloads’; _Configuration=’Data-QoS’} shows that this volume group belongs to the Production-SQL-01 workload and implements the ‘Data-QoS’ configuration from our preset.

These attributes are crucial for tracking and managing resources across your fleet, as they provide the linkage between fleet-level definitions and array-specific implementations.

In the code below, we’re using the Pure Storage PowerShell SDK2’s API filtering capabilities to retrieve only the volume group that belongs to our Production-SQL-01 workload. This server-side filtering is crucial for performance at scale. Rather than retrieving all volume groups and filtering locally (which could be hundreds or thousands of objects), we let the array do the work and return only the specific resource we need. For a deeper dive into filtering and querying Pure Storage resources, check out my blog series on PowerShell SDK filtering techniques. You’ll find that each of the examples in this post uses array-side API filtering.

And now let’s check the individual volumes that were created.

In the listing below, you’ll see the technical details of each of the volumes created: things like QoS configuration, space accounting, and volume group member. And again, you’ll find Context and Workload. Again, we’re using array-side API filtering with the parameter -Filter “workload.name=’Production-SQL-01′”

Perfect! We have our four volumes with the proper naming, sizes, and configuration based on our preset configuration.

Examining Protection Group Configuration

Let’s also check the protection group that was created for this workload. Notice the Workload attribute is populated with the PG’s workload name, allowing us to tie these snapshots back to the source system’s easily. We’ll be using this in an upcoming post where we work with our snapshots globally.

Notice it has VolumeCount: 3 because the TempDB volume was excluded from snapshots, exactly as we configured in our template.

Let’s look at the snapshots that have been created. We set a snapshot policy of every 10 minutes; this is the first one from that policy.

Scaling Workload Deployment

One of the most powerful aspects of the Pure Fusion fleet management capability is how easily you can create multiple workloads from a single preset. Once you’ve defined your SQL Server preset, you can rapidly deploy it for any number of SQL Server instances. Here’s where we’re creating several more SQL Server workloads from our preset configuration.

Summary

In this post, we’ve seen how to:

  1. Create a SQL Server-optimized workload preset with multiple volume types and snapshot policies
  2. Deploy a workload instance from this preset
  3. Examine the created resources (volumes, volume groups, protection groups)
  4. Manage and monitor these resources across our entire fleet of arrays
  5. Scale deployments by creating multiple workloads from a single preset

Pure Fusion fleet management capabilities, coupled with the newly released PowerShell SDK2 support introduced in version 2.43.30, provide a platform for defining workload templates once and deploying them consistently across a fleet. This approach enables consistency, implementing best practices and simplifying management of complex application storage requirements.

With this approach, we can ensure that every SQL Server deployment in our environment follows the same best practices for volume layout, performance settings, and data protection, regardless of which array it’s deployed on in our fleet.

What’s Next

This post covered the fundamentals of creating and deploying workload presets with Pure Fusion. In future posts, we’ll explore more advanced fleet management capabilities:

  • Cross-array replication: Configure periodic replication between arrays in your fleet for disaster recovery and data mobility.
  • Using Pure Fusion for remote command execution: Pure Fusion allows for remote command execution across all objects in your fleet rather than just per array.
  • Building a global snapshot catalog: Using tags combined with the fleet-wide scope of Pure Fusion, you can find and consume a snapshot anywhere in your fleet.
  • Updating workload presets: Modify existing presets and handle versioning as your requirements evolve.
  • Finding configuration skew: Use PowerShell to find configuration skew in your environment.
  • Fleet-wide monitoring: Gather performance metrics and capacity data across all arrays from a single control point.
  • Advanced placement strategies: Use workload placement recommendations to optimize resource utilization across your fleet.

Stay tuned as we dive deeper into these powerful fleet management capabilities, which help you operate storage infrastructure at scale with confidence and consistency.

Prerequisites

Before following this guide, ensure you have:

  • Pure Storage PowerShell SDK 2.43.30 or later (Install-Module PureStoragePowerShellSDK2)
  • Access to a Pure Storage® FlashArray system with Pure Fusion enabled and a fleet configured
  • Appropriate permissions to create and manage workloads

Additional Resources

For more information about Pure Fusion, visit: