Storage – Strip Unit Size

Background

A Storage disk’s Strip Unit Size is often taken into consideration as one considers storage alignment.

So I am finishing up and closing all opened Google’s Chrome Tab, and went back and read:

Disk Partition Alignment (Sector Alignment) for SQL Server: Part 4: Essentials (Cheat Sheet)
http://blogs.msdn.com/b/jimmymay/archive/2008/12/04/disk-partition-alignment-sector-alignment-for-sql-server-part-4-essentials-cheat-sheet.aspx

Jimmy May’s paper principally deals with Microsoft products: SQL Server on Windows OS, but his formula is very generalized.

 

Strip Unit Size – What does it matter?

Let us see how it plays out:

Here is Jimmy May’s formula:

Three Values - Two Essential Correlations

Jimmy’s document says:

  • Perform these calculations for each partition which must result in integer values
  • Of the two, the first is far more important.  Use the information below to divine this information.

And, here is how he says to get “File Allocation Unit Size” and also “Starting Offset”:

GetJimmysNumbers

It is left to the inquiring mind how to get “Stripe Unit Size” as that number is not based on the OS, Microsoft Windows, in this case; but based on the Vendor and each Application.

Matrix – Vendor

Here are some numbers for various vendors and models:

Strip Unit Size
Vendor Model# Strip Unit Size
EMC Clarion  64k
NetApp (all models)  4k
HP (all models)  64k -to- 256k

Matrix – Application

Here are popular applications along with their Block Size.

Block Size
Vendor Application Block Size
Microsoft SQL Server  64 kb
Hadoop HBASE  64 kb
MySQL\Percona InnoDB  512 Bytes

Matrix – Application – MySQL/Inno DB

http://www.percona.com/doc/percona-server/5.5/scalability/innodb_io_55.html?id=percona-server:features:innodb_io_55

This variable changes the size of transaction log records. The default size of 512 bytes is good in most situations. However, setting it to 4096 may be a good optimization with SSD cards. While settings other than 512 and 4096 are possible, as a practical matter these are really the only two that it makes sense to use. Clean restart and removal of the old logs is needed for the variable innodb_log_block_size to be changed.

Calculation

Calculation – NetApp

  1. NetApp’s default Strip Unit Size is 4K and Microsoft’s SQL Server best practice suggest using a File Allocation Unit Size of 64K.
  2. It does not take much calculation to deduce that 4K / 64K will not render an integer value, but a fractional value
  3. Please keep in mind that for NTFS, the default Strip Unit Size is 4K and one will get a whole number of 1 (Strip Unit Size / File Allocation Unit Size = 4 K / 4K = 1)

References

References – Vendor – Microsoft

References – Vendor – NetApp

References – Vendor – EMC

References – Vendor – HP

References – Vendor – Oracle

References – Vendor – MySQL

References – Technology – Hadoop

References – Changing Block Size

Technical: NetApp – MPIO – Path Details

Technical: NetApp – MPIO – Path Details

As part of NetApp diagnostic, you might need to dig deep into which paths are actually being used.

MPIO Path Details

  1. Launch Computer Management
  2. In the left panel, Access Storage \ Data OnTap(R) DSM Management \ Disk Management
  3. In the right panel, select the Disk
  4. Right Click on the the Disk Nth, and in the ensuring “Drop-down” menu, select the “Properties”
  5. The “NETAPP LUN Multi-Path Disk Device Properties” window appears
  6. The paths are listed in the “This device has the following paths”
  7. Double-clicked on the path you want to dig into …
  8. The “MPIO Path Details” window appears

NetApp - MPIO Path Details

The following areas are displayed:

  • Number of Reads
  • Number of Writes
  • Bytes Read
  • Bytes Written

 

Note that in the instructions above, you can not select the “Logical Disk”.

 

Computer Management

 

So in the screen above, please select “Disk 4” and right click on that selection.

 

NetApp – Data Collection Tool for Windows (ONTAPWinDC.exe)

Microsoft Visual C++ 2008

Ran OnTapWinDC, but unfortunately received an error message:

The application has failed to start because its side-by-sideconfiguration  is in correct. Please see the application 
event log or use the command-line sxstrace.exe tool for more detail.

To fix download and install “Microsoft Visual C++ 2008 SP1 redistributable package”. For X64 versions, download the following:

http://www.microsoft.com/downloads/details.aspx?familyid=BA9257CA-337F-4B40-8C14-157CFDFFEE4E&displaylang=en

I installed “Microsoft Visual C++ 2008 SP1”.  And, re-ran OnTapWinDC.

And, my God it launched successfully.

But, when I tried gathering data it shows the error listed below: Authentication failed <Filer Name>

NetApp - OnTapWinDC

I spent all evening trying to fix this one. Missed the last bus and everything in between.

I knew I had a problem with Network Firewall and not just simple user-name & password authentication.

Tried setting up a SSH Tunneling with MS Windows based Free SSH Servers.  Had one working with Cygwin, but was not in a mood to set up another one.

Nevertheless, finally, resorted to using a pre-existing Linux one.

To create the SSH Tunnel that will facilitate SSH Access to the Filers:

 

Syntax:


  plink [SSHServer] -P 22 -C -L [BridgeAddress]:BridgePort:DestinationAddress:22

Example:


 plink SSHServer -ssh -P 22 -C -L 127.0.0.1:22:FilerHRDB:22

To ensure that your connections are set up, use putty and see if you ‘re able to connect to the Filers:

  • Run putty
  • Target hostname : localhost
  • Target Port number: 22

Putty screen:

putty - localhost - port 22

The system came back with Filer asking me to authenticate.  Should have taken the help of the best NetApp engineer in world and configured Filer’s SSH Key authentication.

And, would not have to enter passwords.  Issued the password and we are good.

Issue a couple of NetApp Host Commands:


version

uptime

netapp - validation

Run netstat -ano to review your Network Connections:

netstat -ano | find ":22 "

Results

Netstat -ano | find ":22 "

netstat - port - 22 - port 22

And, then returned to the tool:

  • Filer Name/IP –> Make sure to use localhost  — as ssh tunneling will redirect

NetApp - OnTapWinDC - User Authentication - post ssh

But, still no luck.  The same error message:Authentication Failed.

I am here thanking Craig:

Gotcha with NetApp’s OnTapWinDcTool
http://www.humblecraig.com/?tag=ontapwindc

Basically, he says that connectivity to Filer is actually over HTTP, and not SSH. And, that to fix you should connect to your Filer and enable HTTP.

options httpd.admin.enable on

To facilitate HTTP Access over TCP/IP Tunneling:


  plink SSHServer -ssh -P 22 -C -L 127.0.0.1:80:FilerHRDB:80

To validate our SSH Connection, issue:

   netstat -ano | find ":80"

And, you should see at minimum the following entries:

netstat - port - 80

The data is easy enough to read:

  • Column – 1 – Protocol {TCP}
  • Column – 2 – Local IP Address and Port Number { LocalHost:80)
  • Column – 3 – Destination IP Address and Port Number
  • Column – 4 – Status { Listening}
  • Column – 5 – Process ID {13080}

The Process ID is important.  To terminate the SSH Connection, issue a kill request directed to the process ID.

Once we have SSH Tunneling to the Filer over port 80, we were good.

References:

References – NetApp – OnTapWinDCTool

References – SSH Tunneling

NetApp – Performance and Statistics Collector (PerfStats)

NetApp – Performance and Statistics Collector (PerfStats) – version 7

Command Line Parameters

-f

[-f controllername[,controllername1,controllername2,...]]
  • name of the filer

 

-t

 [-t time] (sample time per iteration, default 2)
  • Duration of each iteration in minutes

-i,m

[-i n[,m]] (repeat n times with m minutes between samples, 
                     defaults: n=1,m=0)
  • Number of Iterations and wait time between iterations
  • Make sure that there are no spaces between the two numbers
  • Default values for i is 1, and m is 0 –> That is the default is 1 iteration and no wait time

-l

 [-l login[:password]] (rsh/ssh login and password for rsh only)
  • Login Account to connect to Filer

-S pw:

[-S pw:|kf:]

Processing Steps:

Versioning

  • The version is stated
  • In our case, the information stated is “PerfStat v7.38 (10-2012)”

Begin Iteration <Iteration>

  • Indicates the beginning of the Iteration
  • In our case, the information stated is “Begin Iteration <nth> 


Checking filer <filer>

  • Checking filer …. Establishes a connection with the filer noted
  • In our case, the information stated is “Checking filer filerHR


Prestats on <filer>; OS: ONTAP<version>

  • This step connects to the Filer and kicks off statistics gathering on the Filer
  • In our case, the information stated is “Prestats on  filerHR; OS: ONTAP8.0.2 


Sleep for <performance duration> minute(s)…

  • Once performance gathering is initiated on the Filer, this step waits for the iteration duration
  • In our case, the information stated is “Sleep for 2 minutes”


Poststats on <filer>; OS: ONTAP<version>

  • This step connects to the Filer and “concludes” statistics gathering on the Filer
  • In our case, the information stated is “Poststats on  filerHR; OS: ONTAP8.0.2 


End Iteration <Iteration>

  • Indicates the completion of the Iteration
  • In our case, the information stated is “Poststats on  End Iteration <nth> 

 


Sleep <n> seconds

  • This indicates how long to wait between iterations
  • In our case, the information stated is “Sleeping 60 seconds”

Sample Code (baseline):



If not exist perfData mkdir perfData

for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set y=%%k
for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set d=%%k%%i%%j
for /F "tokens=5-8 delims=:. " %%i in ('echo.^| time ^| find "current" ') do set t=%%i%%j
set t=%t%_
if "%t:~3,1%"=="_" set t=0%t%
set t=%t:~0,4%
rem set "theFilename=%d%%t%"
set "fname=perfData\%1__%d%%t%.perfdata"
echo %fname%

Time /T

perfstat -f %1 -t 2 -i 4,1 -l root  -S pw:rootpwd > %fname%

Time /T

Sample invokation:



  Syntax:

     getNetAppFilePerData 

  Sample:

    getNetAppFilerPerfData filerHR

Output:

PerfStats - Output - 20130301

References:

NetApp – nSanity

NetApp – nSanity

http://support.netapp.com/NOW/download/tools/nsanity/

nSANity Data Collector is a support tool designed to aide users and technical support in troubleshooting complex issues. nSANity is able to collect diagnostic and configuration data from a variety of components including:

To get it, you need a NetApp account.

Here are a couple of usage documentation.



Syntax:

    nsanity windows:[domain-name]\[user-name]:*@[host-name]

Sample - connect to local computer, using current user's credentials

   nsanity windows://localhost

Sample - use current user's credentials

   nsanity windows://dbHR

Sample (enter password in clear text)

   nsanity windows://corp\daniel:mypwd@dbHR

Sample (enter password when prompted)

   nsanity windows://corp\daniel:*@dbHR

There are some important details when you run this on a MS Windows platform and target a MS Windows host.  Here they are:

  • If you enter credentials and target your current machine, ensure that the username and password are correct; as things will not work otherwise.  Even though, this requirement must be met you will subsequently be told “User credentials can not be specified for local connections, retrying with current user credentials
  • Based on one the comments posted by a user, the password entered can not be more than 8 characters. I can confirm that as version 1.2.10 that is no longer the case.

On MS Windows Host:

On MS Windows host, please make sure that you have the following installed:

http://updates.mistral.net/netapp/Tools/nsanity/nsanity_userguide.pdf

MFC90 – Requirement

The Windows executable requires MFC90 Runtime libraries, which are included with Windows 7. If your Windows host does not have the required libraries then they may be downloaded from Microsoft at the following URL.

MFC 90 is bundled with Microsoft Visual C++ 2008 SP1

FCINFO for Windows 2003

Microsoft Windows 2003 hosts require an additional package in order to allow complete data collection of HBA information. The Microsoft package is call fcinfo, which provides the HBAFAPI and WMI classes to access the API.

This package may be downloaded directly from Microsoft:

http://www.microsoft.com/downloads/details.aspx?familyid=73d7b879F
55b2F4629F8734Fb0698096d3b1&displaylang=en

References:

On MS Windows 2008/R2 host, running NetApp perfstats.exe \ Putty plink against Filer is stuck on poststats

On MS Windows 2008/R2 host, running NetApp perfstats.exe \ Putty plink against Filer is stuck on poststats:

Poststats on filerHRDB; OS: ONTAP8.0.2

Help came from Almeida:

https://communities.netapp.com/message/88172Re: Perfstat hanging
almeida Apr 24, 2012 1:10 PM (in response to carstensejer)

This is a plink issue. Try an older version (v0.60):

http://netapp.nunonet.com/supporttool/plink.exe

or use “NetApp Support Tool” to get perfstats:

https://communities.netapp.com/docs/DOC-16209

Fix:

1) Download plink version 0.60
http://netapp.nunonet.com/supporttool/plink.exe

2) Ensure that this downloaded version is the one used (Check local folder and path)

3) Retry PerfStats.exe

NetApp – PerfState.exe – Errror Message “SSH To Filer fails”

To connect to NetApp and get Performance data you can try using PerfStat.exe from MS Windows Host.

In some cases you will get the following error message:

SSH To Filer fails

To correct re-issue the command and add the -d option. This will place you in debug mode.

Here is a screen dump for us:

perfstat -f filerStage -t 3 -i 1,2 -d -l me -S pw:pwd 1>stage.dat

DEBUG: Per-second sampling frequency: 10

DEBUG: Total number of samples: 17

DEBUG: Length of sampling time per itreration (seconds): 170

DEBUG: Total length of iteration (seconds): 190

DEBUG: Parsed options
Perfstat v7.38 (10-2012)

DEBUG: Setting temp dir to: "C:\Users\me\Temp\perfstat\2
7312\"

DEBUG: Setting error log to: "C:\Users\me\AppData\Local\Temp\perfstat\27312\error.log"

DEBUG: Destroying TEMP Dir: "C:\Users\me\AppData\Local\Temp\perfstat\27312\"

DEBUG: Successfully created temp dir!

DEBUG: Get filer config: filerStage

DEBUG: Using RSH/SSH command: plink.exe -ssh -x -a -batch -pw pwd -l me filerStage
SSH to filer filerStage fails! Quitting.

To correct:

  1. Ensure that you have Network Connectivity (try pinging Filer Host Name or try telnet (telnet <filerhostname> <port#> — sample will be  telnet filerStaging 22)
  2. Ensure that you have tried ssh using putty or plink once and saved the filer’s host key)
  3. Ensure that plink.exe is in your current directory or on your path

Use Putty to cache each specific Filer’s Host Key in your Registry