You are currently browsing the tag archive for the ‘lun’ tag.
(Warning: This is a long post…)
You have a critical application that you can’t afford to lose:
So you want to replicate your critical applications because they are, well, critical. And you are looking at the top midrange storage vendors for a solution. NetApp touts awesome efficiency, awesome snapshots, etc while EMC is throwing considerable weight behind it’s 20% Efficiency Guarantee. While EMC guarantees to be 20% more efficient in any unified storage solution, there is perhaps no better scenario than a replication solution to prove it.
I’m going to describe a real-world scenario using Microsoft Exchange as the example application and show why the EMC Unified platform requires less storage, and less WAN bandwidth for replication, while maintaining the same or better application availability vs. a NetApp FAS solution. The example will use a single Microsoft Exchange 2007 SP2 server with ten 100GB mail databases connected via FibreChannel to the storage array. A second storage array exists in a remote site connected via IP to the primary site and a standby Exchange server is attached to that array.
- 100GB per database, 1 database per storage group, 1 storage group per LUN, 130GB LUNs
- 50GB Log LUNs, ensure enough space for extra log creation during maintenance, etc
- 10% change rate per day average
- Nightly backup truncates logs as required
- Best Practices followed by all vendors
- 1500 users (Heavy Users 0.4IOPS), 10% of users leverage Blackberry (BES Server = 4X IOPS per user)
- Approximate IOPS requirement for Exchange: 780IOPS for this server.
- EMC Solution: 2 x EMC Unified Storage systems with SnapView/SANCopy and Replication Manager
- NetApp Solution: 2 x NetApp FAS Storage systems with SnapMirror and SnapManager for Exchange
- RPO: 4 hours (remote site replication update frequency)
Based on those assumptions we have 10 x 130GB DB LUNs and 10 x 50GB Log LUNs and we need approximately 780 host IOPS 50/50 read/write from the backend storage array.
Disk IOPS calculation: (50/50 read/write)
- RAID10, 780 host IOPS translates to 1170 disk IOPS (r+w*2)
- RAID5, 780 host IOPS translates to 1950 disk IOPS (r+w*4)
- RAIDDP is essentially RAID6 so we have about 2730 disk IOPS (r + w*6)
Note: NetApp can create sequential stripes on writes to improve write performance for RAIDDP but that advantage drops significantly as the volumes fill up and free space becomes fragmented which is extremely likely to happen after a few months or less of activity.
Assuming 15K FiberChannel drives can make 180 IOPS with reasonable latencies for a database we’d need:
- RAID10, Database 6.5 disks (round up to 8), using 450GB 15K drives = 1.7TB usable (1 x 4+4)
- RAID5, 10.8 disks for RAID5 (round up to 12), using 300GB 15K drives = 2.8TB usable (2 x 5+1)
- RAID6/DP, 15.1 disks for RAID6 (round up to 16), using 300GB 15K drives = 3.9TB usable (1 x 14+2)
Log writes are highly cachable so we generally need fewer disks; for both the RAID10 and RAID5 EMC options we’ll use a single RAID1 1+1 raid group with 2 x 600GB 15K drives. Since we can’t do RAID1 or RAID10 on NetApp we’ll have to use at least 3 disks (1 data and 2 parity) for the 500GB worth of Log LUNs but we’ll actually need more than that.
Picking a RAID Configuration and Sizing for snapshots:
For EMC, the RAID10 solution uses fewer disks and provides the most appropriate amount of disk space for LUNs vs. the RAID5 solution. With the NetApp solution there really isn’t another alternative so we’ll stick with the 16 disk RAID-DP config. We have loads of free space but we need some of that for snapshots which we’ll see next. We also need to allocate more space to the Log disks for those snapshots.
Since we expect about 10% change per day in the databases (about 10GB per database) we’ll double that to be safe and plan for 20GB of changes per day per LUN (DB and Log).
NetApp arrays store snapshot data in the same volume (FlexVol) as the application data/LUN so you need to size the FlexVol’s and Aggregates appropriately. We need 200GB for the DB LUNs and 200GB for the Log LUNs to cover our daily change rate but we’re doubling that to 400GB each to cover our 2 day contingency. In the case of the DB LUNs the aggregate has more than enough space for the 400GB of snapshot data we are planning for but we need to add 400GB to the Log aggregate as well so we need 4 x 600GB 15K drives to cover the Exchange logs and snapshot data.
EMC Unified arrays store snapshot data for all LUNs in centralized location called the Reserve LUN Pool or RLP. The RLP actually consists of a number of LUNs that can be used and released as needed by snapshot operations occurring across the entire array. The RLP LUNs can be created on any number of disks, using any RAID type to handle various IO loads and sizing an RLP is based on the total change rate of all simultaneously active snapshots across the array. Since we need 400GB of space in the Reserve LUN Pool for one day of changes, we’ll again be safe by doubling that to 800GB which we’ll provide with 6 dedicated 300GB 15K drives in RAID10.
At this point we have 20 disks on the NetApp array and 16 disks on the EMC array. We have loads of free space in the primary database aggregate on the NetApp but we can’t use that free space because it’s sized for the IOPS workload we expect from the Exchange server.
In order to replicate this data to an alternate site, we’ll configure the appropriate tools.
- Install Replication Manager on a server and deploy an agent to each Exchange server
- Configure SANCopy connectivity between the two arrays over the IP ports built-in to each array
- In Replication Manager, Configure a job that quiesces Exchange, then uses SANCopy to incrementally update a copy of the database and log LUNs on the remote array and schedule for every 4 hours using RM’s built in scheduler.
- Install SnapManager for Exchange on each Exchange server
- Configure SnapMirror connectivity betweeen the two arrays over the IP ports built-in to each array
- In SnapManager, Configure a backup job that quiesces Exchange and takes a Snapshot of the Exchange DBs and Logs, then starts a SnapMirror session to replicate the updated FlexVol (including the snapshot) to the remote array. Configure a schedule in Windows Task Manager to run the backup job every 4 hours.
Both the EMC and NetApp solutions run on schedule, create remote copies, and everything runs fine, until...
Tuesday night during the weekly maintenance window, the Exchange admins decide to migrate half of the users from DB1, to DB2 and DB3 and half of the users from DB4, to DB5 and DB6. About 80GB of data is moved (25GB to each of the target DBs.) The transactions logs on DB1 and DB4 jump to almost 50GB, 35GB each on DB2, DB3, DB5, and DB6.
On the NetApp array, the 50GB log LUNs already have about 10GB of snapshot data stored and as the migration is happening, new snapshot data is tracked on all 6 of the affected DB and Log LUNs. The 25GB of new data plus the 10GB of existing data exceeds the 20GB of free space in the FlexVol that each LUN is contained in and guess what… Exchange chokes because it can no longer write to the LUNs.
There are workarounds: First, you enable automatic volume expansion for the FlexVols and automatic Snapshot deletion as a secondary fallback. In the above scenario, the 6 affected FlexVols autoextend to approximately 100GB each equaling 300GB of snapshot data for those 6 LUNs and another 40GB for the remaining 4 LUNs. There is only 60GB free in the aggregate for any additional snapshot data across all 10 LUNs. Now, SnapMirror struggles to update the 1200GB of new data (application data + snapshot data) across the WAN link and as it falls behind more data changes on the production LUNs increasing the amount of snapshot data and the aggregate runs out of space. By default, SnapMirror snapshots are not included in the “automatically delete snapshots” option so Exchange goes down. You can set a flag to allow SnapMirror owned snapshots to be automatically deleted but then you have to resync the databases from scratch. In order to prevent this problem from ever occurring, you need to size the aggregate to handle >100% change meaning more disks.
Consider how the EMC array handles this same scenario using SANCopy. The same changes occur to the databases and approximately 600GB of data is changed across 12 LUNs (6 DB and 6 Log). When the Replication Manager job starts, SANCopy takes a new snapshot of all of the blocks that just changed for purposes of the current update and begins to copy those changed blocks across the WAN.
- SANCopy/Inc is not tracking the changes that occur AS they occur, only while an update is in process so the Reserve LUN Pool is actually empty before the update job starts. If you want additional snapshots on top of the ones used for replication, that will increase the amount of data in the Reserve LUN Pool for tracking changes, but snapshots are created on both arrays independently and the snapshot data is NOT replicated. This nuance allows you to have different snapshot schedules in production vs. disaster recovery for example.
- Because SANCopy/Inc only replicates the blocks that have changed on the production LUNs, NOT the snapshot data, it copies only half of the data across the WAN vs SnapMirror which reduces the time out of sync. This translates to lower WAN utilization AND a better RPO.
- IF an update was occurring when the maintenance took place, the amount of data put in the Reserve LUN pool would be approximately 600GB (leaving 200GB free for more changed data). More efficient use of the Snapshot pool and more flexibility.
- IF the Reserve LUN Pool ran out of space, the SANCopy update would fail but the production LUNs ARE NEVER AFFECTED. Higher availability for the critical application that you devoted time and money to replicate.
- Less spinning disk on the EMC array vs. the NetApp.
EMC has several replication products available that each act differently. I used SANCopy because, combined with Replication Manager, it provides similar functionality to NetApp SnapMirror and SnapManager. MirrorView/Async has the same advantages as SANCopy/Incremental in these scenarios and can replicate Exchange, SQL, and other applications without any host involvement.
Higher Application availability, lower WAN Utilization , Better RPO, Fewer Spinning Disks, without even leveraging advanced features for even better efficiency and performance.
I started this post before I started working for EMC and got sidetracked with other topics. Recent discussions I’ve had with people have got me thinking more about orchestration of data protection, replication, and disaster recovery, so it was time to finish this one up…
Prior to me coming to work for EMC, I was working on a project to leverage NetApp and EMC storage simultaneously for redundancy. I had a chance to put various tools from EMC and NetApp into production and have been able to make some observations with respect to some of the differences. This is a follow up my previous NetApp and EMC posts…
Specifically this post is a comparison between NetApp SnapManager 5.x and EMC Replication Manager 5.x. First, here’s a quick background on both tools based on my personal experience using them.
EMC Replication Manager (RM) is a single application that runs on a dedicated “Replication Manager Server.” RM agents are deployed to the hosts of applications that will be replicated. RM supports local and remote replication features in EMC’s Clariion storage array, Celerra Unified NAS, Symmetrix DMX/V-Max, Invista, and RecoverPoint products. With a single interface, Replication Manager lets you schedule, modify, and monitor snapshot, clone, and replication jobs for Exchange, SQL, Oracle, Sharepoint, VMWare, Hyper-V, etc. RM supports Role-Based authentication so application owners can have access to jobs for their own applications for monitoring and managing replication. RM can manage jobs across all of the supported applications, array types, and replication technologies simultaneously. RM is licensed by storage array type and host count. No specific license is required to support the various applications.
NetApp SnapManager is actually a series of applications designed for each application that NetApp supports. There are versions of SnapManager for Exchange, SQL, Sharepoint, SAP, Oracle, VMWare, and Hyper-V. The SnapManager application is installed on each host of an application that will be replicated, and jobs are scheduled on each specific host using Windows Task Scheduler. Each version of SnapManager is licensed by application and host count. I believe you can also license SnapManager per-array instead of per-host which could make financial sense if you have lots of hosts.
EMC Replication Manager and NetApp SnapManager products tackle the same customer problem–provide guaranteed recoverability of an application, in the primary or a secondary datacenter, using array-based replication technologies. Both products leverage array-based snapshot and replication technology while layering application-consistency intelligence to perform their duties. In general, they automate local and remote protection of data. Both applications have extensive CLI support for those that want that.
- EMC RM – Replication Manager is a client-server application installed on a control server. Agents are deployed to the protected servers.
- NetApp SM – SnapManager is several applications that are installed directly on the servers that host applications being protected.
- Job Management
- EMC RM – All job creation, management, and monitoring is done from the central GUI. Replication Manager has a Java based GUI.
- NetApp SM – Job creation and monitoring is done via the SnapManager GUI on the server being protected. SnapManager utilizes an MMC based GUI.
- Job Scheduling
- EMC RM – Replication Manager has a central scheduler built-in to the product that runs on the RM Server. Jobs are initiated and controlled by the RM Server, the agent on the protected server performs necessary tasks as required.
- NetApp SM – SnapManager jobs are scheduled with Windows Task Scheduler after creation. The SnapManager GUI creates the initial scheduled task when a job is created through the wizard. Modifications are made by editing the scheduled task in Windows task scheduler.
So while the tools essentially perform the same function, you can see that there are clear architectural differences, and that’s where the rubber meets the road. Being a centrally managed client-server application, EMC Replication Manager has advantages for many customers.
Simple Comparison Example: Exchange 2007 CCR cluster
(snapshot and replicate one of the two copies of Exchange data)
With NetApp SnapManager, the application is installed on both cluster nodes, then an administrator must log on to the console on the node that hosts the copy you want to replicate, and create two jobs which run on the same schedule. Job A is configured to run when the node is the active node, Job B is configured to run when the node is passive. Due to some of the differences in the settings, I was unable to configure a single job that ran successfully regardless of whether the node was active or passive. If you want to modify the settings, you either have to edit the command line options in the Scheduled Task, or create a new job from scratch and delete the old one.
With EMC Replication Manager, you deploy the agent to both cluster nodes, then in the RM GUI, create a job against the cluster virtual name, not the individual node. You define which server you want the job to run on in the cluster, and whether the job should run when the node is passive, active, or both. All logs, monitoring, and scheduling is done in the same RM GUI, even if you have 50 Exchange clusters, or SQL and Oracle for that matter. Modifying the job is done by right-clicking on the job and editing the properties. Modifying the schedule is done in the same way.
So as the number of servers and clusters increases in your environment, having a central UI to manage and monitor all jobs across the enterprise really helps. But here’s where having a centrally managed application really shines…
But what if it gets complicated?
Let’s say you have a multi-tier application like IBM FileNet, EMC Documentum, or OpenText and you need to replicate multiple servers, multiple databases, and multiple file systems that are all related to that single application. Not only does EMC Replication Manager support SQL and Filesystems in the same GUI, you can tie the jobs together and make them dependent on each other for both failure reporting and scheduling. For example, you can snapshot a database and a filesystem, then replicate both of them without worrying about how long the first job takes to complete. Jobs can start other jobs on completely independent systems as necessary.
Without this job dependence functionality, you’d generally have to create scheduled tasks on each server and have dependent jobs start with a delay that is long enough to allow the first job to complete while as short as possible to prevent the two parts of the application from getting too far out of sync. Some times the first job takes longer than usual causing subsequent jobs to complete incorrectly. This is where Replication Manager shows it’s muscle with it’s ability to orchestrate complex data protection strategies, across the entire enterprise, with your choice of protection technologies (CDP, Snapshot, Clone, Bulk Copy, Async, Sync) from a single central user interface.
Do you have an EMC Clariion CX4 with Virtual Provisioning (thin provisioning)? Have you tried to expand the host visible (ie: maximum) size of a thin-LUN and can’t figure out how? Well you aren’t alone… Despite extremely little information available from EMC to say one way or the other, I finally figured out that you actually can’t expand a thin lun yet. This was a surprise to me, since I had just assumed that would be there. Thin-LUNs are pretty much virtual LUNs, and as such, they don’t have any direct block mapping to a RAID group that has to be maintained. And traditional LUNs can be expanded using MetaLUN striping or concatenation. Due to this restriction the host visible size of a thin-LUN cannot be edited after the LUN has been created.
But there IS a workaround. It’s not perfect but its all we have right now. Using CLARiiON’s built-in LUN Migration technology you can expand a thin-LUN in two steps.
Step 1: Migrate the thin-LUN to a thick-LUN of the same maximum size.
Step 2: Migrate the thick-LUN to a new thin-LUN that was created with the new larger size you want. After migration, the thin-LUN will consume disk space equivalent to the old thin-LUN’s maximum size, but will have a new, higher host maximum visible size.
This requires that you have a RAID group outside of your thin pools that has enough usable free space to fit the temporary thick-LUN, so it’s not a perfect solution. You’d think that migrating the old thin-LUN directly into a new, larger thin-LUN would work, but to use the additional disk space after a LUN migration, you have to edit the LUN size which, again, can’t be done on thin-LUNs. I haven’t actually tested this, but this is based on all of the documentation I could find from EMC on the topic.
I’m looking into other methods that might be better, but so far it seems that certain restrictions on SnapView Clones and SANCopy might preclude those from being used. The ability to expand thin-LUNs will come in a later FLARE release for those that are willing to wait.