Friday Jul 02, 2010

Sizing J4410

I'm extremely excited about this week's quiet release of the J4410 expansion module for 7000 Series storage appliances. On the surface, it seems like they changed the look and feel and upgraded the back end to SAS-2, but it signifies much more. Inside these new modules are new disks that we affectionately call 'Fat SAS' - 1 or 2TB in size, spinning at 7200 RPM but with a SAS interface instead of SATA. This change from SATA to SAS interfaces has a lot of positive impact inside the 7000 series appliances, but the most relevant change to this post is the improved granularity with which one can configure storage pools...

Systems configured using J4410 expansion modules are able to provision storage at the granularity of a single disk where previously the smallest unit of configurable storage was a diskset, a group of 12 disks. As a result of this, and the 2010.Q1 enhancement which allows multiple pools per controller I decided to rework the 7000 Size Calculator. In order to simplify what was rapidly becoming a convoluted input language, we decided to create a new edition that will only handle the new hardware generation. Of course, you can continue to use the 2009.Q3 release to model configurations using the original J4400.

So let's take a look at how we model J4410 based configurations. There are two potential ways to buy J4410 modules: full, and with room for Log devices. The 'with room' configuration (I feel like I'm ordering at Starbucks every time I say that) has four open slots in the top row to be used with Log devices. Within each module, we can choose to allocate some of the disks to one or more pools. The new input language looks something like this:

./sizecalc-sas.py 10.156.83.42 \*\*\* 8/8/8

In the sample above, we are specifying a single expansion module configured with three pools, with 8 disks allocated to each pool. To specify two expansion modules, we add another layout statement:

./sizecalc-sas.py 10.156.83.42 \*\*\* 8/8/8 12/2/10

In this example, we now are allocating a total of 20 drives to pool 1, 10 to pool 2, and 18 to pool three with disks spread across both modules. Another new feature is strict mode, which ensures that the number of disks specified for a given expansion module adds to either 20 (for the 'with room' configuration) or 24. It is enabled simply with the '-s' argument:

./sizecalc-sas.py -s 10.156.83.42 \*\*\* 8/8/8 12/2/10

Let's see the output for the command above

./sizecalc-sas.py -s 10.156.83.42 \*\*\* 8/8/8 12/2/10
  Sun Storage 7000 Size Calculator for SAS disks Version 2010.Q1
  -----------------------------------------
  | |    3   |    3   |    3   |    3   | |
  | |-----------------------------------| |
  | |    3   |    3   |    3   |    3   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
 1| |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  -----------------------------------------
  -----------------------------------------
  | |    3   |    3   |    3   |    3   | |
  | |-----------------------------------| |
  | |    3   |    3   |    3   |    3   | |
  | |-----------------------------------| |
  | |    2   |    2   |    3   |    3   | |
 2| |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  -----------------------------------------
============================================
Pool 1
type          NSPF  width spares  data drives  raw (TB)  usable (TiB)
mirror       False      2      2           18     18.00         16.12
mirror        True      2      4           16     16.00         14.32
mirror3      False      3      2           18     12.00         10.74
mirror3       True      3      2           18     12.00         10.74
raidz1       False      4      4           16     24.00         21.49
raidz2       False      9      2           18     28.00         25.07
raidz3 wide  False     19      1           19     32.00         28.65
stripe       False      0      0           20     40.00         35.81
Pool 2
type          NSPF  width spares  data drives  raw (TB)  usable (TiB)
mirror       False      2      2            8      8.00          7.16
mirror        True      2      6            4      4.00          3.58
mirror3      False      3      1            9      6.00          5.37
mirror3       True      3      4            6      4.00          3.58
raidz1       False      4      2            8     12.00         10.74
raidz2       False      9      1            9     14.00         12.53
raidz3 wide  False      9      1            9     12.00         10.74
stripe       False      0      0           10     20.00         17.91
Pool 3
type          NSPF  width spares  data drives  raw (TB)  usable (TiB)
mirror       False      2      2           16     16.00         14.32
mirror        True      2      2           16     16.00         14.32
mirror3      False      3      3           15     10.00          8.95
mirror3       True      3      3           15     10.00          8.95
raidz1       False      4      2           16     24.00         21.49
raidz2       False      8      2           16     24.00         21.49
raidz3 wide  False     17      1           17     28.00         25.07
stripe       False      0      0           18     36.00         32.23

Oh, did I forget to mention that the new version draws ASCII art to show you which disks are in which pools? Beyond the visual representation however, you can also see three separate size tables, one per pool. Let's look at a configuration that includes a 'with room' module:

./sizecalc-sas.py -s 10.156.83.42 \*\*\* 10/10 12/12
Sun Storage 7000 Size Calculator for SAS disks Version 2010.Q1
  -----------------------------------------
  | |   LZ   |   LZ   |   LZ   |   LZ   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
 1| |-----------------------------------| |
  | |    1   |    1   |    2   |    2   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  -----------------------------------------
  -----------------------------------------
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
 2| |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  -----------------------------------------
============================================
Pool 1
type          NSPF  width spares  data drives  raw (TB)  usable (TiB)
mirror       False      2      2           20     20.00         17.91
mirror        True      2      2           20     20.00         17.91
mirror3      False      3      1           21     14.00         12.53
mirror3       True      3      1           21     14.00         12.53
raidz1       False      4      2           20     30.00         26.86
raidz2       False     10      2           20     32.00         28.65
raidz3 wide  False     21      1           21     36.00         32.23
stripe       False      0      0           22     44.00         39.39
Pool 2
type          NSPF  width spares  data drives  raw (TB)  usable (TiB)
mirror       False      2      2           20     20.00         17.91
mirror        True      2      2           20     20.00         17.91
mirror3      False      3      1           21     14.00         12.53
mirror3       True      3      1           21     14.00         12.53
raidz1       False      4      2           20     30.00         26.86
raidz2       False     10      2           20     32.00         28.65
raidz3 wide  False     21      1           21     36.00         32.23
stripe       False      0      0           22     44.00         39.39 

Here you can see the first row of the first module identifies the Log slots with 'LZ'. You may also have noticed that the default disk size is now 2TB as that is now the flagship size. If you need to model 1TB configurations, you can still use the 'size' keyword from previous releases. The other command which carried forward is the 'add' command, which allows you to model the change in configurations over time. Here's an example that shows both in use:

./sizecalc-sas.py -s 10.156.83.42 \*\*\* size 1T 12/12 add size 2T 12/12
Sun Storage 7000 Size Calculator for SAS disks Version 2010.Q1
  -----------------------------------------
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
 1| |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  -----------------------------------------
============================================
  -----------------------------------------
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
  | |-----------------------------------| |
  | |    2   |    2   |    2   |    2   | |
 1| |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  | |-----------------------------------| |
  | |    1   |    1   |    1   |    1   | |
  -----------------------------------------
============================================
Pool 1
type          NSPF  width spares  data drives  raw (TB)  usable (TiB)
mirror       False      2      4           32     15.00         13.43
mirror3      False      3      6           30      9.00          8.06
raidz1       False      4      8           28     18.00         16.12
raidz2       False     11      2           34     27.00         24.17
raidz3 wide  False     11      2           34     24.00         21.49
stripe       False      0      0           36     36.00         32.23
Pool 2
type          NSPF  width spares  data drives  raw (TB)  usable (TiB)
mirror       False      2      4           32     15.00         13.43
mirror3      False      3      6           30      9.00          8.06
raidz1       False      4      8           28     18.00         16.12
raidz2       False     11      2           34     27.00         24.17
raidz3 wide  False     11      2           34     24.00         21.49
stripe       False      0      0           36     36.00         32.23  

In this example, we specify that the first module uses 1TB drives, while the second uses 2TB drives. The double line separates the first configuration visually from the second that we added with the 'add' keyword.

 So after all of that, you should be armed and dangerous... Download the new tool here, and have fun modelling the new system!

Update July 7, 2010 - This is embarassing....

Thanks to Darius Zanganeh, an Oracle Storage Sales Consultant out of the Denver area for finding a couple of minor issues in the 2010.Q1 version. I made some last minute changes that I didn't think needed much testing, but it turns they had a bigger effect than I thought. In the initial 2010.Q1 release the number of data drives was wrong (I feel really silly for not catching that as I wrote the blog entry which clearly has the wrong number of data disks), and that the use of the 'add' keyword with configurations that would generate different stripe widths will cause the calculator to crash. The revised version which I call 2010.Q1a has been uploaded in the same location as the original, and doesn't exhibit these problems.

Update: The size calculator is currently unavailable for download. You can read more here

 EOF

Wednesday Sep 16, 2009

2009.Q3 Update for Size Calculator

With today's release of the 2009.Q3 update for 7000 Series Unified Storage Appliances there are a few enhancements to storage profiles that we can take advantage of and the trusty size calculator tool was in need of modification to use them, so I've spent some time putting them together. The resulting tool can be downloaded here (Update: The size calculator is currently unavailable, you can read more here), details about what has changed follow below.

The most obvious change from a size calculator perspective with the 2009.Q3 release is that the appliance has some new storage profiles (namely Triple Parity RAID with wide stripes, and Three-Way Mirroring). When run against an updated appliance or simulator, the tool will show these new profiles:

$ ./sizecalc.py 172.16.131.131 \*\*\* 12
Sun Storage 7000 Size Calculator Version 2009.Q3
type          NSPF  width spares  data drives       raw (TB)   usable (TiB)
mirror       False      2      4          284         142.00         127.13
mirror        True      2      4          284         142.00         127.13
mirror3      False      3      6          282          94.00          84.16
mirror3       True      3      6          282          94.00          84.16
raidz1       False      4      4          284         213.00         190.70
raidz1        True      4      4          284         213.00         190.70
raidz2       False     14      8          280         240.00         214.87
raidz2        True     14      8          280         240.00         214.87
raidz2 wide  False     47      6          282         270.00         241.73
raidz2 wide   True     20      8          280         252.00         225.61
raidz3 wide  False     56      8          280         265.00         237.25
raidz3 wide   True     35      8          280         256.00         229.19
stripe       False      0      0          288         288.00         257.84

\*\* As of 2009.Q3, the raidz2 wide profile has been deprecated.
\*\* New configurations should use the raidz3 wide profile.

In addition to these supporting these new storage profiles, I wanted to enhance the calculator to better handle the existing variety of drives we support in the 7210 (the 2009.Q2 release could only model 1TB disks), and prepare to model configurations with drives larger than 1TB in the 7310 and 7410.

The revised help message explains how to declare different disk sizes in more detail (run sizecalc.py without any arguments to read it), but the examples below should help to highlight the new capability and how it ties in with the previous enhancements. Here is an example modelling a 7210 configuration using 500GB disks; you can see that the size keyword and argument are prepended to the JBOD layout:

$ ./sizecalc.py 172.16.131.131 \*\*\* size 500G 1 t1
Sun Storage 7000 Size Calculator Version 2009.Q3
type          NSPF  width spares  data drives       raw (TB)   usable (TiB)
mirror       False      2      3           42          10.50           9.40
mirror3      False      3      3           42           7.00           6.27
raidz1       False      4      5           40          15.00          13.43
raidz2       False     14      3           42          18.00          16.12
raidz2 wide  False     43      2           43          20.50          18.35
raidz3 wide  False     43      2           43          20.00          17.91
stripe       False      0      0           45          22.50          20.14

\*\* As of 2009.Q3, the raidz2 wide profile has been deprecated.
\*\* New configurations should use the raidz3 wide profile.

When combined with Eric Schrock's modeling feature we can specify a different size drive each time we 'add' a JBOD layout (we're not actually selling 2TB drives yet, but the tool will allow us to model that configuration anyway):

./sizecalc.py 172.16.131.131 \*\*\* 1 add size 2T 1
Sun Storage 7000 Size Calculator Version 2009.Q3
type          NSPF  width spares  data drives       raw (TB)   usable (TiB)
mirror       False      2      4           44          33.00          29.54
mirror3      False      3      6           42          21.00          18.80
raidz1       False      4      8           40          45.00          40.29
raidz2       False     11      4           44          54.00          48.35
raidz2 wide  False     23      2           46          63.00          56.40
raidz3 wide  False     23      2           46          60.00          53.72
stripe       False      0      0           48          72.00          64.46

\*\* As of 2009.Q3, the raidz2 wide profile has been deprecated.
\*\* New configurations should use the raidz3 wide profile.

In this example, have supplied the configuration "1 add size 2T 1" which tells the calculator to initially model a single JBOD with the default drive size, which is 1TB, and then add a new JBOD with 2T drives. You can see that the total number of disks is only 48, however the results are based on 72TB of raw capacity.

As always, you can find the latest 7000 information in the Fishworks wiki. Happy calculating!

EOF 


About

This is the weblog for Ryan Matthews, a sales consultant at Oracle specializing in the ZFS Storage Appliance. It is the home to information on sizing and much more.

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today