Sun ZFS Storage 7000 System Administration Guide: Part No: 820-4167-13 Rev. A November 2010
Sun ZFS Storage 7000 System Administration Guide: Part No: 820-4167-13 Rev. A November 2010
Copyright 2010, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related software documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable: U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are commercial computer software or commercial technical data pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065. This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications which may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure the safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. UNIX is a registered trademark licensed through X/Open Company, Ltd. This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third- party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third- party content, products, or services. . Copyright 2009, 2010, Oracle et/ou ses affilis. Tous droits rservs. Ce logiciel et la documentation qui laccompagne sont protgs par les lois sur la proprit intellectuelle. Ils sont concds sous licence et soumis des restrictions dutilisation et de divulgation. Sauf disposition de votre contrat de licence ou de la loi, vous ne pouvez pas copier, reproduire, traduire, diffuser, modifier, breveter, transmettre, distribuer, exposer, excuter, publier ou afficher le logiciel, mme partiellement, sous quelque forme et par quelque procd que ce soit. Par ailleurs, il est interdit de procder toute ingnierie inverse du logiciel, de le dsassembler ou de le dcompiler, except des fins dinteroprabilit avec des logiciels tiers ou tel que prescrit par la loi. Les informations fournies dans ce document sont susceptibles de modification sans pravis. Par ailleurs, Oracle Corporation ne garantit pas quelles soient exemptes derreurs et vous invite, le cas chant, lui en faire part par crit. Si ce logiciel, ou la documentation qui laccompagne, est concd sous licence au Gouvernement des Etats-Unis, ou toute entit qui dlivre la licence de ce logiciel ou lutilise pour le compte du Gouvernement des Etats-Unis, la notice suivante sapplique : U.S. GOVERNMENT RIGHTS. Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065. Ce logiciel ou matriel a t dvelopp pour un usage gnral dans le cadre dapplications de gestion des informations. Ce logiciel ou matriel nest pas conu ni nest destin tre utilis dans des applications risque, notamment dans des applications pouvant causer des dommages corporels. Si vous utilisez ce logiciel ou matriel dans le cadre dapplications dangereuses, il est de votre responsabilit de prendre toutes les mesures de secours, de sauvegarde, de redondance et autres mesures ncessaires son utilisation dans des conditions optimales de scurit. Oracle Corporation et ses affilis dclinent toute responsabilit quant aux dommages causs par lutilisation de ce logiciel ou matriel pour ce type dapplications. Oracle et Java sont des marques dposes dOracle Corporation et/ou de ses affilis.Tout autre nom mentionn peut correspondre des marques appartenant dautres propritaires quOracle. AMD, Opteron, le logo AMD et le logo AMD Opteron sont des marques ou des marques dposes dAdvanced Micro Devices. Intel et Intel Xeon sont des marques ou des marques dposes dIntel Corporation. Toutes les marques SPARC sont utilises sous licence et sont des marques ou des marques dposes de SPARC International, Inc. UNIX est une marque dpose concde sous licence par X/Open Company, Ltd. Ce logiciel ou matriel et la documentation qui laccompagne peuvent fournir des informations ou des liens donnant accs des contenus, des produits et des services manant de tiers. Oracle Corporation et ses affilis dclinent toute responsabilit ou garantie expresse quant aux contenus, produits ou services manant de tiers. En aucun cas, Oracle Corporation et ses affilis ne sauraient tre tenus pour responsables des pertes subies, des cots occasionns ou des dommages causs par laccs des contenus, produits ou services tiers, ou leur utilisation.
101109@24999
Contents
Preface ...................................................................................................................................................19
Introduction .........................................................................................................................................21 Overview ............................................................................................................................................... 21 Introduction ................................................................................................................................. 21 User Interface ....................................................................................................................................... 24 Browser User Interface (BUI) ..................................................................................................... 25 Command Line Interface (CLI) ................................................................................................. 25 Browsers ............................................................................................................................................... 25 Supported Browsers ..................................................................................................................... 25 Main Window ...................................................................................................................................... 26 Overview ....................................................................................................................................... 26 Masthead ....................................................................................................................................... 26 Title Bar ......................................................................................................................................... 27 Side Panels and Menu Titles ....................................................................................................... 28 Non-Standard BUI Control Primer ........................................................................................... 28 Icons ...................................................................................................................................................... 31 General Usage ............................................................................................................................... 31 CLI ......................................................................................................................................................... 35 CLI Introduction .......................................................................................................................... 35 Contexts ................................................................................................................................................ 36 CLI Contexts ................................................................................................................................. 36 Returning to a Previous Context ................................................................................................ 37 Navigating to a Parent Context .................................................................................................. 38 Contexts and Tab-Completion .................................................................................................. 38 Executing Context-Specific Commands ................................................................................... 39 Uncommitted Contexts .............................................................................................................. 39 Properties ............................................................................................................................................. 40
3
Contents
CLI Properties .............................................................................................................................. 40 Getting Properties ........................................................................................................................ 40 Setting Properties ......................................................................................................................... 41 Immutable Properties .................................................................................................................. 42 Scripting ............................................................................................................................................... 43 Batching Commands ................................................................................................................... 43 Scripting ........................................................................................................................................ 43 Automating Access ...................................................................................................................... 49
Status .....................................................................................................................................................51 Status ..................................................................................................................................................... 51 Introduction ................................................................................................................................. 51 Dashboard ............................................................................................................................................ 52 Links .............................................................................................................................................. 52 CLI ................................................................................................................................................. 57 Tasks .............................................................................................................................................. 58 Settings .................................................................................................................................................. 58 Introduction ................................................................................................................................. 58 BUI ................................................................................................................................................. 58 CLI ................................................................................................................................................. 60 Tasks .............................................................................................................................................. 60 NDMP ................................................................................................................................................... 61 BUI ................................................................................................................................................. 61 CLI ................................................................................................................................................. 62
Configuration .......................................................................................................................................63 Configuration ...................................................................................................................................... 63 Introduction ................................................................................................................................. 63 Initial ..................................................................................................................................................... 64 Initial Configuration .................................................................................................................... 64 Prerequisites ................................................................................................................................. 64 Summary ....................................................................................................................................... 64 BUI ................................................................................................................................................. 65 CLI ................................................................................................................................................. 66 Network ................................................................................................................................................ 70
Sun ZFS Storage 7000 System Administration Guide November 2010
Contents
Network Configuration ............................................................................................................... 71 BUI ................................................................................................................................................. 78 CLI ................................................................................................................................................. 80 Tasks .............................................................................................................................................. 82 Storage .................................................................................................................................................. 87 Introduction ................................................................................................................................. 87 Tasks .............................................................................................................................................. 91 SAN ....................................................................................................................................................... 92 SAN ................................................................................................................................................ 92 BUI ................................................................................................................................................. 93 CLI ................................................................................................................................................. 95 Terms .................................................................................................................................................... 95 SAN Terminology ........................................................................................................................ 95 FC .......................................................................................................................................................... 97 Fibre Channel ............................................................................................................................... 97 BUI ............................................................................................................................................... 100 CLI ............................................................................................................................................... 102 FCMPxIO ........................................................................................................................................... 105 Configuring FC Client Multipathing ....................................................................................... 105 iSCSI .................................................................................................................................................... 109 Introduction ............................................................................................................................... 109 BUI ............................................................................................................................................... 112 CLI ............................................................................................................................................... 113 SRP ...................................................................................................................................................... 114 Introduction ............................................................................................................................... 114 BUI ............................................................................................................................................... 121 CLI ............................................................................................................................................... 124 Users .................................................................................................................................................... 125 Introduction ............................................................................................................................... 125 Roles ............................................................................................................................................ 125 Authorizations ............................................................................................................................ 126 Properties .................................................................................................................................... 127 BUI ............................................................................................................................................... 128 CLI ............................................................................................................................................... 128 Tasks ............................................................................................................................................ 130 Preferences ......................................................................................................................................... 133
5
Contents
Introduction ............................................................................................................................... 133 BUI ............................................................................................................................................... 133 CLI ............................................................................................................................................... 134 SSH Public Keys ......................................................................................................................... 134 Alerts ................................................................................................................................................... 135 Introduction ............................................................................................................................... 135 Actions ........................................................................................................................................ 136 Threshold Alerts ........................................................................................................................ 137 BUI ............................................................................................................................................... 138 CLI ............................................................................................................................................... 138 Tasks ............................................................................................................................................ 138 Workflows .......................................................................................................................................... 139 Introduction ............................................................................................................................... 139 BUI ............................................................................................................................................... 151 CLI ............................................................................................................................................... 151 Cluster ................................................................................................................................................. 153 Clustering .................................................................................................................................... 153 Features and Benefits ................................................................................................................. 154 Drawbacks .................................................................................................................................. 155 Terminology ............................................................................................................................... 156 Subsystem Design ...................................................................................................................... 156 Configuration Changes in a Clustered Environment ............................................................ 162 Clustering Considerations for Storage .................................................................................... 163 Clustering Considerations for Networking ............................................................................ 164 Clustering Considerations for Infiniband .............................................................................. 165 Preventing "Split-Brain" Conditions ....................................................................................... 167 Estimating and Reducing Takeover Impact ........................................................................... 170 Setup Procedure ......................................................................................................................... 171 Node Cabling .............................................................................................................................. 173 JBOD Cabling ............................................................................................................................. 174 BUI ............................................................................................................................................... 174 Unconfiguring Clustering ......................................................................................................... 175
Contents
Introduction ............................................................................................................................... 177 BUI ............................................................................................................................................... 179 CLI ............................................................................................................................................... 181 NFS ...................................................................................................................................................... 184 Introduction ............................................................................................................................... 184 Properties .................................................................................................................................... 184 Kerberos realms .......................................................................................................................... 185 Logs .............................................................................................................................................. 186 Analytics ...................................................................................................................................... 186 CLI ............................................................................................................................................... 186 Tasks ............................................................................................................................................ 187 iSCSI .................................................................................................................................................... 188 Introduction ............................................................................................................................... 188 Properties .................................................................................................................................... 188 Authentication ........................................................................................................................... 188 Authorization ............................................................................................................................. 188 Targets and Initiators ................................................................................................................ 189 CLI ............................................................................................................................................... 189 Tips .............................................................................................................................................. 189 SMB ..................................................................................................................................................... 189 Introduction ............................................................................................................................... 189 Properties .................................................................................................................................... 190 Share Properties ......................................................................................................................... 191 NFS/SMB Interoperability ........................................................................................................ 191 DFS Namespaces ........................................................................................................................ 191 Autohome Rules ......................................................................................................................... 192 Local Groups .............................................................................................................................. 192 MMC Integration ....................................................................................................................... 193 CLI ............................................................................................................................................... 198 Tasks ............................................................................................................................................ 199 FTP ...................................................................................................................................................... 202 Introduction ............................................................................................................................... 202 Properties .................................................................................................................................... 202 Logs .............................................................................................................................................. 203 Tasks ............................................................................................................................................ 204 HTTP .................................................................................................................................................. 204
7
Contents
Introduction ............................................................................................................................... 204 Properties .................................................................................................................................... 204 Authentication and Access Control ......................................................................................... 205 Logs .............................................................................................................................................. 205 Tasks ............................................................................................................................................ 206 NDMP ................................................................................................................................................. 206 Introduction ............................................................................................................................... 206 Properties .................................................................................................................................... 211 Logs .............................................................................................................................................. 213 SFTP .................................................................................................................................................... 213 Introduction ............................................................................................................................... 213 Properties .................................................................................................................................... 213 Logs .............................................................................................................................................. 214 Tasks ............................................................................................................................................ 214 Virus Scan ........................................................................................................................................... 214 Introduction ............................................................................................................................... 214 Properties .................................................................................................................................... 215 Logs .............................................................................................................................................. 216 Tasks ............................................................................................................................................ 216 NIS ....................................................................................................................................................... 217 Introduction ............................................................................................................................... 217 Properties .................................................................................................................................... 217 Logs .............................................................................................................................................. 217 Tasks ............................................................................................................................................ 218 LDAP ................................................................................................................................................... 218 Introduction ............................................................................................................................... 218 Properties .................................................................................................................................... 219 Logs .............................................................................................................................................. 220 Tasks ............................................................................................................................................ 220 Active Directory ................................................................................................................................. 221 Introduction ............................................................................................................................... 221 Properties .................................................................................................................................... 221 Domains and Workgroups ....................................................................................................... 222 LDAP Signing ............................................................................................................................. 222 Windows Server 2008 Support ................................................................................................. 223 BUI ............................................................................................................................................... 224
8 Sun ZFS Storage 7000 System Administration Guide November 2010
Contents
CLI ............................................................................................................................................... 224 Tasks ............................................................................................................................................ 225 Identity Mapping ............................................................................................................................... 226 Concepts ..................................................................................................................................... 226 IDMU .......................................................................................................................................... 227 Directory-based Mapping ......................................................................................................... 227 Name-based Mapping ............................................................................................................... 228 Ephemeral Mapping .................................................................................................................. 230 Best Practices .............................................................................................................................. 230 Testing Mappings ...................................................................................................................... 231 Examples ..................................................................................................................................... 231 Tasks ............................................................................................................................................ 232 DNS ..................................................................................................................................................... 233 Introduction ............................................................................................................................... 233 Properties .................................................................................................................................... 233 CLI ............................................................................................................................................... 233 Logs .............................................................................................................................................. 234 Active Directory and DNS ........................................................................................................ 234 Non-DNS Resolution ................................................................................................................ 234 DNS-Less Operation ................................................................................................................. 235 IPMP ................................................................................................................................................... 235 Introduction ............................................................................................................................... 235 Properties .................................................................................................................................... 235 Logs .............................................................................................................................................. 236 Tasks ............................................................................................................................................ 236 NTP ..................................................................................................................................................... 236 Introduction ............................................................................................................................... 236 Properties .................................................................................................................................... 236 BUI Clock .................................................................................................................................... 238 Tips .............................................................................................................................................. 238 Tasks ............................................................................................................................................ 239 Remote Replication ........................................................................................................................... 239 Introduction ............................................................................................................................... 239 Dynamic Routing .............................................................................................................................. 240 RIP and RIPng Dynamic Routing Protocols .......................................................................... 240 Logs .............................................................................................................................................. 240
9
Contents
Phone Home ...................................................................................................................................... 240 Introduction ............................................................................................................................... 240 Properties .................................................................................................................................... 241 Service state ................................................................................................................................. 242 Logs .............................................................................................................................................. 242 SNMP .................................................................................................................................................. 242 Introduction ............................................................................................................................... 242 Properties .................................................................................................................................... 243 MIBs ............................................................................................................................................ 243 Sun FM MIB ............................................................................................................................... 244 Sun AK MIB ................................................................................................................................ 244 Tasks ............................................................................................................................................ 245 SMTP .................................................................................................................................................. 245 Introduction ............................................................................................................................... 245 Properties .................................................................................................................................... 246 Logs .............................................................................................................................................. 246 Service Tags ........................................................................................................................................ 246 Introduction ............................................................................................................................... 246 Properties .................................................................................................................................... 247 System Identity .................................................................................................................................. 247 Introduction ............................................................................................................................... 247 Properties .................................................................................................................................... 247 Logs .............................................................................................................................................. 248 SSH ...................................................................................................................................................... 248 Introduction ............................................................................................................................... 248 Properties .................................................................................................................................... 248 Logs .............................................................................................................................................. 248 Tasks ............................................................................................................................................ 249 Shadow Migration ............................................................................................................................. 249 Introduction ............................................................................................................................... 249 Properties .................................................................................................................................... 249 Managing Shadow Migration ................................................................................................... 250 Syslog .................................................................................................................................................. 250 Introduction ............................................................................................................................... 250 Properties .................................................................................................................................... 251 Classic Syslog: RFC 3164 ........................................................................................................... 251
10 Sun ZFS Storage 7000 System Administration Guide November 2010
Contents
Updated Syslog: RFC 5424 ........................................................................................................ 251 Message Format .......................................................................................................................... 251 Receiver Configuration Examples ........................................................................................... 253
Shares ................................................................................................................................................. 255 Shares .................................................................................................................................................. 255 Introduction ............................................................................................................................... 255 Concepts ............................................................................................................................................. 256 Storage Pools ............................................................................................................................... 256 Projects ........................................................................................................................................ 257 Shares ........................................................................................................................................... 257 Properties .................................................................................................................................... 257 Snapshots .................................................................................................................................... 258 Clones .......................................................................................................................................... 259 Shadow Migration ............................................................................................................................. 259 Shadow Data Migration ............................................................................................................ 259 Shadow migration behavior ...................................................................................................... 262 Shadow Migration Management ............................................................................................. 263 Migration of local filesystems ................................................................................................... 267 Tasks ............................................................................................................................................ 267 Space Management ........................................................................................................................... 268 Introduction ............................................................................................................................... 268 Terms ........................................................................................................................................... 268 Understanding snapshots ......................................................................................................... 270 Filesystem and project settings ................................................................................................. 271 User and group settings ............................................................................................................. 272 Filesystem Namespace ...................................................................................................................... 275 Filesystem namespace ............................................................................................................... 275 Shares .................................................................................................................................................. 277 BUI ............................................................................................................................................... 277 CLI ............................................................................................................................................... 282 General ................................................................................................................................................ 287 General Share Properties ........................................................................................................... 287 Space Usage ................................................................................................................................ 287 Properties .................................................................................................................................... 288
11
Contents
Custom Properties ..................................................................................................................... 293 Protocols ............................................................................................................................................. 293 Shares Protocols ......................................................................................................................... 293 NFS .............................................................................................................................................. 294 SMB ............................................................................................................................................. 298 SCSI ............................................................................................................................................. 298 HTTP ........................................................................................................................................... 299 FTP ............................................................................................................................................... 299 SFTP ............................................................................................................................................ 300 Access .................................................................................................................................................. 300 Access Control ............................................................................................................................ 300 Root Directory Access ............................................................................................................... 300 ACL Behavior ............................................................................................................................. 301 Root Directory ACL ................................................................................................................... 303 Snapshots ............................................................................................................................................ 305 Introduction ............................................................................................................................... 305 Snapshot Properties ................................................................................................................... 305 BUI ............................................................................................................................................... 306 CLI ............................................................................................................................................... 309 Projects ............................................................................................................................................... 311 BUI ............................................................................................................................................... 311 CLI ............................................................................................................................................... 313 General ................................................................................................................................................ 317 General Project Properties ........................................................................................................ 317 Space Usage ................................................................................................................................ 317 Inherited Properties ................................................................................................................... 318 Custom Properties ..................................................................................................................... 318 Filesystem Creation Defaults .................................................................................................... 318 LUN Creation Defaults .............................................................................................................. 318 Protocols ............................................................................................................................................. 319 Project Protocols ........................................................................................................................ 319 NFS .............................................................................................................................................. 319 SMB ............................................................................................................................................. 319 iSCSI ............................................................................................................................................ 319 HTTP ........................................................................................................................................... 320 FTP ............................................................................................................................................... 320
12 Sun ZFS Storage 7000 System Administration Guide November 2010
Contents
Access .................................................................................................................................................. 320 Access Control ............................................................................................................................ 320 Inherited ACL Behavior ............................................................................................................ 320 Snapshots ............................................................................................................................................ 320 Introduction ............................................................................................................................... 320 Snapshot Properites ................................................................................................................... 320 BUI ............................................................................................................................................... 321 CLI ............................................................................................................................................... 321 Replication ......................................................................................................................................... 321 Remote Replication Introduction ............................................................................................ 321 Concepts ..................................................................................................................................... 323 Configuring Replication ........................................................................................................... 327 Managing Replication Packages ............................................................................................... 330 Remote Replication Details ...................................................................................................... 338 Schema ................................................................................................................................................ 345 Customized Share Properties ................................................................................................... 345 BUI ............................................................................................................................................... 345 CLI ............................................................................................................................................... 346 Tasks ............................................................................................................................................ 347
Analytics ............................................................................................................................................. 349 Analytics ............................................................................................................................................. 349 Introduction ............................................................................................................................... 350 Concepts ............................................................................................................................................. 350 Analytics ...................................................................................................................................... 350 Drilldown Analysis .................................................................................................................... 350 Statistics ....................................................................................................................................... 351 Datasets ....................................................................................................................................... 352 Actions ........................................................................................................................................ 352 Worksheets ................................................................................................................................. 352 Statistics .............................................................................................................................................. 353 Introduction ............................................................................................................................... 353 Descriptions ................................................................................................................................ 353 Default Statistics ......................................................................................................................... 354 Tasks ............................................................................................................................................ 356
13
Contents
CPU Percent utilization .................................................................................................................... 357 CPU: Percent Utilization ........................................................................................................... 357 Cache ARC accesses .......................................................................................................................... 358 Cache: ARC accesses .................................................................................................................. 358 Cache L2ARC IO bytes ..................................................................................................................... 361 Cache: L2ARC I/O bytes ........................................................................................................... 361 Cache L2ARC accesses ...................................................................................................................... 361 Cache: L2ARC accesses ............................................................................................................. 361 Data Movement NDMP bytes transferred tofrom disk ................................................................ 362 Data Movement: NDMP bytes transferred to/from disk ...................................................... 362 Data Movement NDMP bytes transferred tofrom tape ................................................................ 363 Data Movement: NDMP bytes transferred to/from tape ...................................................... 363 Data Movement Shadow migration bytes ...................................................................................... 363 Data Movement: Shadow migration bytes .............................................................................. 363 Data Movement Shadow migration ops ......................................................................................... 364 Data Movement: Shadow migration ops ................................................................................. 364 Data Movement Shadow migration requests ................................................................................. 365 Data Movement: Shadow migration requests ........................................................................ 365 Disk Disks ........................................................................................................................................... 366 Disk: Disks .................................................................................................................................. 366 Disk IO bytes ...................................................................................................................................... 367 Disk: I/O bytes ............................................................................................................................ 367 Disk IO operations ............................................................................................................................ 368 Disk: I/O operations .................................................................................................................. 368 Network Device bytes ....................................................................................................................... 370 Network: Device bytes ............................................................................................................... 370 Network Interface bytes .................................................................................................................... 370 Network: Interface bytes ........................................................................................................... 370 Protocol SMB operations .................................................................................................................. 371 Protocol: SMB operations ......................................................................................................... 371 Protocol Fibre Channel bytes ........................................................................................................... 373 Protocol: Fibre Channel bytes .................................................................................................. 373 Protocol Fibre Channel operations ................................................................................................. 374 Protocol: Fibre Channel operations ......................................................................................... 374 Protocol FTP bytes ............................................................................................................................ 375 Protocol: FTP bytes .................................................................................................................... 375
14 Sun ZFS Storage 7000 System Administration Guide November 2010
Contents
Protocol HTTPWebDAV requests .................................................................................................. 376 Protocol: HTTP/WebDAV requests ........................................................................................ 376 Protocol iSCSI bytes .......................................................................................................................... 378 Protocol: iSCSI bytes .................................................................................................................. 378 Protocol iSCSI operations ................................................................................................................ 378 Protocol: iSCSI operations ........................................................................................................ 378 Protocol NFSv2 operations .............................................................................................................. 380 Protocol: NFSv2 operations ...................................................................................................... 380 Protocol NFSv3 operations .............................................................................................................. 382 Protocol: NFSv3 operations ...................................................................................................... 382 Protocol NFSv4 operations .............................................................................................................. 383 Protocol: NFSv4 operations ...................................................................................................... 383 Protocol SFTP bytes .......................................................................................................................... 385 Protocol: SFTP bytes .................................................................................................................. 385 Protocol SRP bytes ............................................................................................................................ 386 Protocol: SRP bytes .................................................................................................................... 386 Protocol SRP operations ................................................................................................................... 387 Protocol: SRP operations .......................................................................................................... 387 CPU CPUs .......................................................................................................................................... 388 CPU: CPUs ................................................................................................................................. 388 CPU Kernel spins .............................................................................................................................. 389 CPU: Kernel spins ...................................................................................................................... 389 Cache ARC adaptive parameter ....................................................................................................... 390 Cache: ARC adaptive parameter .............................................................................................. 390 Cache ARC evicted bytes .................................................................................................................. 390 Cache: ARC evicted bytes ......................................................................................................... 390 Cache ARC size .................................................................................................................................. 391 Cache: ARC size ......................................................................................................................... 391 Cache ARC target size ....................................................................................................................... 392 Cache: ARC target size .............................................................................................................. 392 Cache DNLC accesses ....................................................................................................................... 393 Cache: DNLC accesses ............................................................................................................... 393 Cache DNLC entries ......................................................................................................................... 393 Cache: DNLC entries ................................................................................................................. 393 Cache L2ARC errors ......................................................................................................................... 394 Cache: L2ARC errors ................................................................................................................. 394
15
Contents
Cache L2ARC size ............................................................................................................................. 395 Cache: L2ARC size ..................................................................................................................... 395 Data Movement NDMP file system operations ............................................................................. 395 Data Movement: NDMP file system operations ..................................................................... 395 Data Movement NDMP jobs ............................................................................................................ 396 Data Movement: NDMP jobs ................................................................................................... 396 Disk Percent utilization .................................................................................................................... 396 Disk: Percent utilization ............................................................................................................ 396 Disk ZFS DMU operations ............................................................................................................... 397 Disk: ZFS DMU operations ...................................................................................................... 397 Disk ZFS logical IO bytes .................................................................................................................. 398 Disk: ZFS logical I/O bytes ........................................................................................................ 398 Disk ZFS logical IO operations ........................................................................................................ 398 Disk: ZFS logical I/O operations .............................................................................................. 398 Memory Dynamic memory usage ................................................................................................... 399 Memory: Dynamic memory usage .......................................................................................... 399 Memory Kernel memory .................................................................................................................. 400 Memory: Kernel memory .......................................................................................................... 400 Memory Kernel memory in use ....................................................................................................... 400 Memory: Kernel memory in use ............................................................................................... 400 Memory Kernel memory lost to fragmentation ............................................................................. 401 Memory: Kernel memory lost to fragmentation .................................................................... 401 Network IP bytes ............................................................................................................................... 401 Network: IP bytes ....................................................................................................................... 401 Network IP packets ........................................................................................................................... 402 Network: IP packets ................................................................................................................... 402 Network TCP bytes ........................................................................................................................... 403 Network: TCP bytes ................................................................................................................... 403 Network TCP packets ....................................................................................................................... 403 Network: TCP packets ............................................................................................................... 403 System NSCD backend requests ...................................................................................................... 404 System: NSCD backend requests ............................................................................................. 404 System NSCD operations ................................................................................................................. 405 System: NSCD operations ......................................................................................................... 405 Open Worksheets .............................................................................................................................. 405 Worksheets ................................................................................................................................. 406
16 Sun ZFS Storage 7000 System Administration Guide November 2010
Contents
Saving a Worksheet ................................................................................................................... 409 Toolbar Reference ...................................................................................................................... 409 CLI ............................................................................................................................................... 411 Tips .............................................................................................................................................. 411 Tasks ............................................................................................................................................ 411 Saved Worksheets .............................................................................................................................. 412 Introduction ............................................................................................................................... 412 Properties .................................................................................................................................... 413 BUI ............................................................................................................................................... 413 CLI ............................................................................................................................................... 413 Datasets ............................................................................................................................................... 414 Introduction ............................................................................................................................... 414 BUI ............................................................................................................................................... 415 CLI ............................................................................................................................................... 415
Application Integration ....................................................................................................................419 Application Integration .................................................................................................................... 419 Introduction ............................................................................................................................... 419 Microsoft ............................................................................................................................................ 420 Sun Storage 7000 Provider for Microsoft VSS Software ........................................................ 420 Oracle .................................................................................................................................................. 421 Sun Storage 7000 Management Plug-In for Oracle Enterprise Manager 10g Grid Controller ................................................................................................................................... 421
17
18
Preface
The Sun ZFS Storage 7000 System Administration Guide contains administration and configuration documentation for Oracle's Sun ZFS Storage 7000 series of NAS appliances. This documentation is also available while using the appliance Browser User Interface, accessible via the Help button. The appliance documentation may be updated using the System Upgrade procedure documented in the System Service Manual.
Related Documentation
Refer to the following documentation for installation instructions, hardware overviews, service procedures and software update notes.
Installation Guide, Analytics Guide and Service Manual (http://wikis.sun.com/ display/fishworks/documentation/) Release Notes (http://wikis.sun.com/display/fishworks/software+updates)
19
Preface
Note Oracle is not responsible for the availability of third-party Web sites mentioned in this
document. Oracle does not endorse and is not responsible or liable for any content, advertising, products, or other materials that are available on or through such sites or resources. Oracle will not be responsible or liable for any actual or alleged damage or loss caused by or in connection with the use of or reliance on any such content, goods, or services that are available on or through such sites or resources.
20
1
Overview
C H A P T E R
Introduction
Introduction
The Sun ZFS Storage 7000 family of products provide efficient file and block data services to clients over a network, and a rich set of data services that can be applied to the data stored on the system.
Platforms
Legacy platforms are documented in the 7110, 7210, 7310, 7410, J4400/J4500 sections of the Sun Storage 7000 Unified Storage System Service Manual available at http://wikis.sun.com/display/ fishworks. (http://wikis.sun.com/display/fishworks.)
Expansion Storage
Overview
Protocols
Sun ZFS Storage appliances include support for a variety of industry-standard client protocols, including:
SMB NFS HTTP and HTTPS WebDAV iSCSI FC SRP iSER FTP SFTP
Key Features
Sun ZFS Storage systems also include new technologies to deliver the best storage price/performance and unprecedented observability of your workloads in production, including:
Analytics, a system for dynamically observing the behavior of your system in real-time and viewing data graphically The ZFS Hybrid Storage Pool, composed of optional Flash-memory devices for acceleration of reads and writes, low-power, high-capacity disks, and DRAM memory, all managed transparently as a single data hierarchy
Data Services
To manage the data that you export using these protocols, you can configure your Sun ZFS Storage system using the built-in collection of advanced data services, including:
RAID-Z (RAID-5 and RAID-6), mirrored, and striped disk configurations Unlimited read-only and read-write snapshots, with snapshot schedules Data deduplication Built-in data compression Remote replication of data for disaster recovery Active-active clustering for high availability (7310, 7320, 7410, 7420, and 7720) Thin provisioning of iSCSI LUNs Virus scanning and quarantine NDMP backup and restore
22
Overview
Availability
To maximize the availability of your data in production, Sun ZFS Storage appliances include a complete end-to-end architecture for data integrity, including redundancies at every level of the stack. Key features include:
Predictive self-healing and diagnosis of all system hardware failures: CPUs, DRAM, I/O cards, disks, fans, power supplies ZFS end-to-end data checksums of all data and metadata, protecting data throughout the stack RAID-6 (double- and triple-parity) and optional RAID-6 across disk shelves Active-active clustering for high availability (7310, 7320, 7410, 7420, and 7720) Link aggregations and IP multipathing for network failure protection I/O Multipathing between the controller and disk shelves Integrated software restart of all system software services Phone-Home of telemetry for all software and hardware issues Lights-out Management of each system for remote power control and console access
The browser user interface The BUI is the graphical tool for administration of the appliance. The BUI provides an intuitive environment for administration tasks, visualizing concepts, and analyzing performance data. The management software is designed to be fully featured and functional on the following supported web browsers: Firefox 3.x, Internet Explorer 7 and 8, Safari 3.1 or later, and WebKit 525.13 or later.
Chapter 1 Introduction 23
User Interface
Direct your browser to the system using either the IP address or host name you assigned to the NET-0 port during initial configuration as follows: https://ipaddress:215 or https://hostname:215. The login screen appears. The online help linked in the top right of the BUI is context-sensitive. For every top-level and second-level screen in the BUI, the associated help page appears when you click the Help button.
Tab completion is used extensively: if you are not sure what to type in any given context, pressing the Tab key will provide you with possible options. Throughout the documentation, pressing Tab is presented as the word "tab" in bold italics. Help is always available: the help command provides context-specific help. Help on a particular topic is available by specifying the topic as an argument to help, for example help commands. Available topics are displayed by tab-completing the help command, or by typing help topics.
User Interface
Browsers
Main Window - overview of BUI elements and design Icons - icon reference Browsers - supported browsers
Browsers
Supported Browsers
This section defines BUI browser support. For best results, use a tier 1 browser.
Tier 1
The BUI software is designed to be fully featured and functional on the following tier 1 browsers:
Firefox 3.x Internet Explorer 7 Internet Explorer 8 Safari 3.1 or later WebKit 525.13 or later
Tier 2
BUI elements may be cosmetically imperfect in tier 2 browsers, and some functionality may not be available, although all necessary features work correctly. A warning message appears during login if you are using one of the following tier 2 browser:
Chapter 1 Introduction 25
Main Window
Unsupported Browsers
Internet Explorer 6 and earlier versions are unsupported, known to have issues, and login will not complete.
Main Window
Changing a filesystem's properties by moving it into another project using the Projects side panel.
Overview
The BUI provides an uncluttered environment for visualizing system behavior and identifying performance issues with the appliance.
Masthead
The masthead contains several interface elements for navigation and notification, as well as primary functionality. At left, from top to bottom, are the Sun logo, a hardware model badge, and hardware power off and restart buttons. Across the right, again from top to bottom: login identification, logout, help, main navigation, and subnavigation.
26
Main Window
Navigation
Use main navigation links to view between the Configuration, Maintenance, Shares, Status, and Analytics areas of the BUI. Use sub-navigation links to access features and functions within each area.
Alerts
System alerts appear in the Masthead as they are triggered. If multiple alerts are triggered sequentially, refer to the list of recent alerts found on the Dashboard screen or the full log available on the Maintenance: Logs screen.
Session Annotation
If you provide a session annotation, it appears beneath your login ID and the logout control. To change your session annotation for subsequent administrative actions without logging out, click on the text link. See Configuration: Users for details about session annotations.
Title Bar
The title bar appears below the Masthead and provides local navigation and functions that vary depending on the current view.
For example, the Identity mapping service title bar enables the following:
Navigation to the full list of services through the side panel Controls to enable or disable the Identity Mapping service A view of Identity Mapping uptime Navigation to the Properties, Rules and Logs screens for your Identity Mapping service Button to Apply configuration changes made on the current screen
27
Chapter 1 Introduction
Main Window
Move Shares
To move Shares between Projects, click the move appropriate Project in the side panel. icon and drag a filesystem Share to the
Note that dragging a share into another project will change its properties if they are set to be inherited from its parent project.
Object Name
To change a Share name, click the rename icon in the highlighted table row for the Share.
Main Window
Remove a list item or property entry Click the remove Save changes Undo saved changes Delete an item from a list Search for an item in a list Sort by list headings Move or drag an item Rename an item View details about your system Automatically open side panel Send BUI feedback
Click the Apply button Click the Revert button Click the trash Click the search icon (hover the mouse over the item row to see the icon) icon at the top right of the list
Click on the bold sub-headings to re-sort the list Click the move Click the rename icon icon
Oracle logo or click the model badge to go to the oracle.com web page for your mod Drag an item to the side panel Click the Let us know link at the bottom right of any screen to send us your suggestions about the interface or any other aspect of the appliance
Permissions
When setting permissions, the RWX boxes are clickable targets. Clicking on the access group label (User, Group, Other) toggles all permissions for that label on and off.
Chapter 1 Introduction
29
Main Window
Modal Dialogs
All modal dialogs have titles and buttons that identify and commit or cancel the current action at top, and content below. The modal content area follows the same interface conventions as the main content area, but are different in that they must be dismissed using the buttons in the title bar before other actions can be performed.
30
Icons
Icons
General Usage
Icons indicate system status and provide access to functionality, and in most cases serve as buttons to perform actions when clicked. It is useful to hover your mouse over interface icons to view the tooltip. The tables below provide a key to the conventions of the user interface.
Status
The status lights are basic indicators of system health and service state:
Icon Description Icon Description
on off
warning disabled
Basic Usage
The following icons are found throughout the user interface, and cover most of the basic functionality:
Icon* Description Icon* Description
-----
Chapter 1 Introduction
31
Icons
Icon*
Description
Icon*
Description
remove cancel/close --error alert on/off toggle restart -locate disable/offline lock ---wait spinner reverse direction sever
-----
revert info sort list column (down) sort list column (up) first page previous page next page last page
--
Networking
These icons indicate the state of network devices and type of network datalinks:
Icon Description Icon Description
active network device inactive network device network datalink network datalink VLAN network datalink aggregation network datalink aggregation VLAN
active Infiniband port inactive Infiniband port network datalink (IB partition)
32
Icons
Dashboard Thresholds
The following icons indicate the current state of monitored statistics with respect to user-configurable thresholds set from within Settings.
Icon Description Icon Description
Analytics
This set of icons is used in a toolbar to manipulate display of information within Analytics worksheets.
Icon Description Icon Description
back forward forward to now pause zoom out zoom in show one minute show one hour
show minimum show maximum show line graph show mountain graph crop outliers sync worksheet to this statistic unsync worksheet statistics drilldown
Chapter 1 Introduction
33
Icons
Icon
Description
Icon
Description
export statistical data (download to client) save statistical data archive dataset send worksheet with support bundle
Identity Mapping
These icons indicate the type of role being applied when mapping users and groups between Windows and Unix.
Icon* Description Icon* Description
Miscellaneous Icons
The following icons are used to distinguish different types of objects and provide information of secondary importance.
Icon Description Icon Description
34
CLI
CLI
CLI Introduction
The command line is an incredibly efficient and powerful tool for scripting repetitive administrative tasks. The appliance presents a command-line interface available through either the serial console, or SSH. There are several situations in which the preferred interaction with the system is command-line, as follows:
Network unavailability - If the network is unavailable, browser-based management is impossible; the only vector for management is the serial console, which can only accommodate a text-based interface Expediency - Starting a browser may be prohibitively time-consuming, especially if you only want to examine a particular aspect of the system or make a quick configuration change Precision - In some situations, the information provided by the browser may be more qualitative than quantitative in nature, and you need a more precise answer Automation - Browser-based interaction cannot be easily automated; if you have repetitive or rigidly defined tasks, script the tasks
When navigating through the CLI, there are two principles to be aware of:
Tab completion is used extensively - if you are not sure what to type in any given context, pressing the Tab key will provide you with possible options. Throughout the documentation, pressing Tab is presented as the word "tab" in bold italics. Help is always available - the help command provides context-specific help. Help on a particular topic is available by specifying the topic as an argument to help, for example help commands. Available topics are displayed by tab-completing the help command, or by typing help topics.
Contexts
general
help
properties script
Contexts
CLI Contexts
A central principle in the CLI is the context in which commands are executed. The context dictates which elements of the system can be managed, and which commands are available. Contexts have a tree structure in which contexts may themselves contain nested contexts and the structure generally mirrors that of the views in the BUI.
Root Context
The initial context upon login is the root context, and serves as the parent or ancestor of all contexts. To navigate to a context, execute the name of the context as a command. For example, the functionality available in the Configuration view in the browser is available in the configuration context of the CLI. From the root context, this can be accessed by typing it directly:
dory:> configuration dory:configuration>
Note that the prompt changes to reflect the context, with the context provided between the colon and the greater-than sign in the prompt.
Child Contexts
The show command shows child contexts. For example, from the configuration context:
dory:configuration> show Children: net services version users roles preferences alerts storage => => => => => => => => Configure networking Configure services Display system version Configure administrative users Configure administrative roles Configure user preferences Configure alerts Configure Storage
These child contexts correspond to the views available under the Configuration view in the browser, including Network, Services and Users, Preferences and so on. To select one of these child contexts, type its name:
dory:configuration> preferences dory:configuration preferences>
36 Sun ZFS Storage 7000 System Administration Guide November 2010
Contexts
Navigate to a descendant context directly from an ancestor by specifying the intermediate contexts separated with spaces. For example, to navigate directly to configuration preferences from the root context, simply type it:
dory:> configuration preferences dory:configuration preferences>
UID 31992 0
To select the user named bmc, issue the command select bmc:
dory:configuration users> select bmc dory:configuration users bmc>
Alternately, select and destroy can in some contexts be used to select an entity based on its properties. For example, one could select log entries issued by the reboot module in the maintenance logs system context by issuing the following command:
dory:maintenance logs system> select module=reboot dory:maintenance logs system entry-034> show Properties: timestamp = 2010-8-14 06:24:41 module = reboot priority = crit text = initiated by root on /dev/console syslogd: going down on signal 15
As with other commands, select may be appended to a context-changing command. For example, to select the user named bmc from the root context:
dory:> configuration users select bmc dory:configuration users bmc>
Contexts
Note that this will return to the previous context, which is not necessarily the parent context, as follows:
dory:> configuration users select bmc dory:configuration users bmc> done dory:>
The done command can be used multiple times to backtrack to earlier contexts:
dory:> configuration dory:configuration> users dory:configuration users> select bmc dory:configuration users bmc> done dory:configuration users> done dory:configuration> done dory:>
And as with the UNIX command, "cd /" moves to the root context:
dory:> configuration dory:configuration> users dory:configuration users> select bmc dory:configuration users bmc> cd / dory:>
And as with its UNIX analogue, "cd ../.." may be used to navigate to the grandparent context:
dory:> configuration dory:configuration> users dory:configuration users> select bmc dory:configuration users bmc> cd ../.. dory:configuration>
Contexts
dory:> configtab dory:> configuration utab dory:> configuration users setab dory:> configuration users select tab bmc root dory:> configuration users select btab dory:> configuration users select bmcenter dory:configuration users bmc>
If there is input following a command that changes context, that command will be executed in the target context, but control will return to the calling context. For example, to get preferences from the root context without changing context, append the get command to the context navigation commands:
dory:> configuration preferences get locale = C login_screen = status/dashboard session_timeout = 15 session_annotation = advanced_analytics = false
Uncommitted Contexts
When creating a new entity in the system, the context associated with the new entity will often be created in an uncommitted state. For example, create a threshold alert by executing the create command from the configuration alerts threshold context:
dory:> configuration alerts thresholds create dory:configuration alerts threshold (uncommitted)>
The (uncommitted) in the prompt denotes that this an uncommitted context. An uncommitted entity is committed via the commit command; any attempt to navigate away from the uncommitted context will prompt for confirmation:
dory:configuration alerts threshold (uncommitted)> cd / Leaving will abort creation of "threshold". Are you sure? (Y/N)
Chapter 1 Introduction 39
Properties
When committing an uncommitted entity, the properties associated with the new entity will be validated, and an error will be generated if the entity cannot be created. For example, the creation of a new threshold alert requires the specification of a statistic name; failure to set this results in an error:
dory:configuration alerts threshold (uncommitted)> commit error: missing value for property "statname"
To resolve the problem, address the error and reattempt the commit:
dory:configuration alerts threshold (uncommitted)> set statname=cpu.utilization statname = cpu.utilization (uncommitted) dory:configuration alerts threshold (uncommitted)> commit error: missing value for property "limit" dory:configuration alerts threshold (uncommitted)> set limit=90 limit = 90 (uncommitted) dory:configuration alerts threshold (uncommitted)> commit dory:configuration alerts thresholds> list THRESHOLD LIMIT TYPE STATNAME threshold-000 90 normal cpu.utilization
Properties
CLI Properties
Properties are typed name/value pairs that are associated with a context. Properties for a given context can be ascertained by running the "help properties" command. Following is an example of retrieving the properties associated with a user's preferences:
dory:configuration preferences> help properties Properties that are valid in this context: locale login_screen session_timeout session_annotation advanced_analytics => Locality => Initial login screen => Session timeout => Current session annotation => Make available advanced analytics statistics
Getting Properties
The properties of a given context can be retrieved with the get command. Following is an example of using the get command to retrieve a user's preferences:
40 Sun ZFS Storage 7000 System Administration Guide November 2010
Properties
dory:configuration preferences> get locale = C login_screen = status/dashboard session_timeout = 15 session_annotation = advanced_analytics = false
Tab Completion
The get command will tab complete with the names of the available properties. For example, to see a list of available properties for the iSCSI service:
dory:> configuration services iscsi get tab <status> isns_server radius_secret isns_access radius_access radius_server target_chap_name target_chap_secret
Setting Properties
The set command will set a property to a specified value, with the property name and its value separated by an equals sign. For example, to set the login_screen property to be "shares":
dory:configuration preferences> set login_screen=shares login_screen = shares (uncommitted)
Note that in the case of properties that constitute state on the appliance, setting the property does not change the value, but rather records the set value and indicates that the value of the property is uncommitted.
Properties
If you attempt to leave a context that contains uncommitted properties, you will be warned that leaving will abandon the set property values, and will be prompted to confirm that you with to leave. For example:
dory:configuration preferences> set login_screen=maintenance/hardware login_screen = maintenance/hardware (uncommitted) dory:configuration preferences> done You have uncommitted changes that will be discarded. Are you sure? (Y/N)
Immutable Properties
Some properties are immutable; you can get their values, but you cannot set them. Attempts to set an immutable property results in an error. For example, attempting to set the immutable space_available property of the default project:
dory:> shares select default dory:shares default> get space_available space_available = 1.15T
42 Sun ZFS Storage 7000 System Administration Guide November 2010
Scripting
dory:shares default> set space_available=100P error: cannot set immutable property "space_available"
Some other properties are only immutable in certain conditions. For these properties, the set command is not valid. For example, if the user named bmc is a network user, the fullname property will be immutable:
dory:> configuration users select bmc set fullname="Rembrandt Q. Einstein" error: cannot set immutable property "fullname"
Scripting
Batching Commands
The simplest scripting mechanism is to batch appliance shell commands. For example, to automatically take a snapshot called "newsnap" in the project "myproj" and the filesystem "myfs", put the following commands in a file:
shares select myproj select myfs snapshots snapshot newsnap
Then ssh onto the appliance, redirecting standard input to be the file:
% ssh root@dory < myfile.txt
In many shells, you can abbreviate this by using a "here file", where input up to a token is sent to standard input. Following is the above example in terms of a here file:
% ssh root@dory << EOF shares select myproj select myfs snapshots snapshot newsnap EOF
This mechanism is sufficient for the simplest kind of automation, and may be sufficient if wrapped in programmatic logic in a higher-level shell scripting language on a client, but it generally leaves much to be desired.
Scripting
While batching commands is sufficient for the simplest of operations, it can be tedious to wrap in programmatic logic. For example, if you want to get information on the space usage for every share, you must have many different invocations of the CLI, wrapped in a higher level language
Chapter 1 Introduction 43
Scripting
on the client that parsed the output of specific commands. This results in slow, brittle automation infrastructure. To allow for faster and most robust automation, the appliance has a rich scripting environment based on ECMAScript 3. An ECMAScript tutorial is beyond the scope of this document, but it is a dynamically typed language with a C-like syntax that allows for:
Conditional code flow (if/else) Iterative code flow (while, for, etc.) Structural and array data manipulation via first-class Object and Array types Perl-like regular expressions and string manipulation (split(), join(), etc.) Exceptions Sophisticated functional language features like closures
As the script environment prompt, you can input your script, finally entering "." alone on a line to execute it:
dory:> script ("." to run)> for (i = 10; i > 0; i--) ("." to run)> printf("%d... ", i); ("." to run)> printf("Blastoff!\n"); ("." to run)> . 10... 9... 8... 7... 6... 5... 4... 3... 2... 1... Blastoff!
If your script is a single line, you can simply provide it as an argument to the script command, making for an easy way to explore scripting:
dory:> script print("It is now " + new Date()) It is now Tue Oct 14 2009 05:33:01 GMT+0000 (UTC)
get
Gets the value of the specified property. Note that this function returns the value in native form, e.g. dates are returned as Date objects. Returns an array of tokens corresponding to the dynamic children of the current context.
list
44
Scripting
Function
Description
run
Runs the specified command in the shell, returning any output as a string. Note that if the output contains multiple lines, the returned string will contain embedded newlines. Returns an array of the property names for the current node. Takes two string arguments, setting the specified property to the specified value.
props set
The built-in dump function dumps the argument out, without expanding any embedded newlines. ECMAScript's string handling facilities can be used to take apart output. For example, splitting the above based on whitespace:
dory:> configuration version script dump(run(get boot_time).split(/\s+/)) [', boot_time, =, 2009-10-12, 07:02:17, ']
Assuming the above is saved as a "uptime.aksh", you could run it this way:
% ssh root@dory < uptime.aksh Pseudo-terminal will not be allocated because stdin is not a terminal.
Chapter 1 Introduction 45
Scripting
The message about pseudo-terminal allocation is due to the ssh client; the issue that this message refers to can be dealt with by specifying the "-T" option to ssh.
Here's the output of running the script, assuming it were saved to a file named "space.aksh":
% ssh root@koi < space.aksh Password: admin/accounts 18432 266617007104 admin/exports 18432 266617007104 admin/primary 18432 266617007104 admin/traffic 18432 266617007104 admin/workflow 18432 266617007104 aleventhal/hw_eng 18432 266617007104 bcantrill/analytx 1073964032 266617007104 bgregg/dashbd 18432 266617007104 bgregg/filesys01 26112 107374156288 bpijewski/access_ctrl 18432 266617007104 ...
If one would rather a "pretty printed" (though more difficult to handle programmatically) variant of this, one could directly parse the output of the get command:
script run(shares); projects = list();
46
Scripting
printf(%-40s %-10s %-10s\n, SHARE, USED, AVAILABLE); for (i = 0; i < projects.length; i++) { run(select + projects[i]); shares = list(); for (j = 0; j < shares.length; j++) { run(select + shares[j]); share = projects[i] + / + shares[j]; used = run(get space_data).split(/\s+/)[3]; avail = run(get space_available).split(/\s+/)[3]; printf(%-40s %-10s %-10s\n, share, used, avail); run(cd ..); } run(cd ..); }
And here's some of the output of running this new script, assuming it were named "prettyspace.aksh":
% ssh root@koi < prettyspace.aksh Password: SHARE admin/accounts admin/exports admin/primary admin/traffic admin/workflow aleventhal/hw_eng bcantrill/analytx bgregg/dashbd bgregg/filesys01 bpijewski/access_ctrl ...
USED 18K 18K 18K 18K 18K 18K 1.00G 18K 25.5K 18K
AVAILABLE 248G 248G 248G 248G 248G 248G 248G 248G 100G 248G
Scripting
Here's the output of running the script, assuming it were saved to a file named "svcinfo.aksh":
% ssh root@koi < space.aksh Password: cifs disabled dns online ftp disabled http disabled identity online idmap online ipmp online iscsi online ldap disabled ndmp online nfs online nis online ntp online scrk online sftp disabled smtp online snmp disabled ssh online tags online vscan disabled
Generating Output
Reporting state on the system requires generating output. Scripts have several built-in functions made available to them to generate output:
Function Description
dump
Dumps the specified argument to the terminal, without expanding embedded newlines. Objects will be displayed in a JSON-like format. Useful for debugging. Prints the specified object as a string, followed by a newline. If the object does not have a toString method, it will be printed opaquely. Like C's printf(3C), prints the specified arguments according to the specified formatting string.
printf
code - a numeric code associated with the error message - a human-readable message associated with the error
Exceptions can be caught and handled, or they may be thrown out of the script environment. If a script environment has an uncaught exception, the CLI will display the details. For example:
48 Sun ZFS Storage 7000 System Administration Guide November 2010
Scripting
dory:> script run(not a cmd) error: uncaught error exception (code EAKSH_BADCMD) in script: invalid command "not a cmd" (encountered while attempting to run command "not a cmd")
You could see more details about the exception by catching it and dumping it out:
dory:> script try { run(not a cmd) } catch (err) { dump(err); } { toString: <function>, code: 10004, message: invalid command "not a cmd" (encountered while attempting to run command "not a cmd") }
This also allows you to have rich error handling, for example:
#!/usr/bin/ksh -p ssh -T root@dory <<EOF script try { run(shares select default select $1); } catch (err) { if (err.code == EAKSH_ENTITY_BADSELECT) { printf(error: "$1" is not a share in the + default project\n); exit(1); } throw (err); } printf("default/$1": compression is %s\n, get(compression)); exit(0); EOF
If this script is named "share.ksh" and run with an invalid share name, a rich error message will be generated:
% ksh ./share.ksh bogus error: "bogus" is not a share in the default project
Automating Access
Whether using batched commands or scripting (or some combination), automated infrastructure requires automated access to the appliance. This should be done by creating users, giving them necessary authorizations, and uploading SSH keys.
Chapter 1 Introduction
49
50
C H A P T E R
Status
Status
Introduction
The Status section provides a summary of appliance status and configuration options. Refer to the following sections for conceptual and procedural information about appliance status views and related service configuration: The Status > Dashboard screen provides a view of storage, memory, services, hardware, activity, and recent alerts. The Status > Settings screen enables you to change the graphs that appear on the Dashboard and to customize the threshold settings associated with the weather icons shown for each graph on the Dashboard.
51
Dashboard
The Status > NDMP screen provides a view of any configured NDMP devices and recent activity for each NDMP session.
Dashboard
Links
The Status Dashboard provides links to all the main screens of the browser user interface (BUI). Over 100 visible items on the Dashboard link to associated BUI screens indicated by a boarder or highlighted text that appears on mouse-over. The sections that follow describe the areas of the Dashboard in detail.
Usage
The Usage area of the Dashboard provides a summary of your storage pool and main memory usage. The pool name may be clicked to change the pool which is displayed on the status screen, should multiple pools be configured on the appliance.
52
Dashboard
Storage
The name of the pool appears at the top right of the Usage area. To the left is a pie-chart of used and available space. To go to the Shares screen for the pool, click the Storage pie-chart.
Memory
To the left is a pie-chart showing memory usage by component. To go to the Analytics worksheet for dynamic memory usage broken down by application name, click the Memory pie-chart.
Summary Pool Usage
Used Avail
Space used by this pool including data and snapshots. Amount of physical disk space available. Space available for file data (as reported in the Shares screen) will be less than this, due to the consumption of filesystem metadata.
Compression Current compression ratio achieved by this pool. Ratio will display 1x if compression is disabled. Dedup Current data deduplication ratio achieved by this pool. Ratio will display 1x if data deduplication is disabled.
Cache
Unused Bytes not currently in use. After booting, this value will decrease as space is used by the filesystem cache. Mgmt Other Kernel Bytes in use by the appliance management software. Bytes in use by miscellaneous operating system software. Bytes in use by the operating system kernel.
Chapter 2 Status
53
Dashboard
Note that users need the analytics/component create+read authorization to view the memory usage. Without this authorization, the memory details will not appear on the Dashboard.
Services
This area of the Dashboard shows the status of services on the appliance, with a light icon to
Icons
Most services will be green indicating that the service is online, or grey indicating that the service is disabled. See the icon status section for a reference of all possible states and icon colors.
Links
To go to the associated configuration screen, click on a service name. The Properties screen appears with configurable fields, restart, enable, and disable icons, and a link to the associated Logs screen for the service.
Hardware
This area of the Dashboard shows an overview of hardware on the appliance.
Faults
If there is a known fault, the amber fault
54
icon appears.
Dashboard
Links
To go to the Hardware Maintenance screen for a detailed look at hardware state, click the name of a hardware component.
Activity
The activity area of the Dashboard shows graphs of eight performance statistics by default. The example in this section shows Disk operations/sec. The statistical average is plotted in blue and the maximum appears in light grey.
To go to the Analytics worksheet for an activity, click one of the four graphs (day, hour, minute, second) for the statistic you want to evaluate. To view the average for each graph, mouse-over a graph and the average appears in the tooltip. The weather icon in the upper-left provides a report of activity according to thresholds you can customize for each statistic on the Status Settings screen.
Graphs
Summary of Statistic Graphs
A bar chart, with each bar representing one day. A bar chart, with each bar representing one hour.
60 minute graph (60m) A line plot, representing activity over one hour (also visible as the first one-hour bar in the 24 hour graph). 1 second graph A line plot, representing instantaneous activity reporting.
Average
The average for the selected plot is shown numerically above the graph. To change the average that appears, select the average you want, either 7d, 24h, or 60m.
Chapter 2 Status 55
Dashboard
Vertical Scale
The vertical scale of all graphs is printed on the top right, and all graphs are scaled to this same height. The height is calculated from the selected graph (plus a margin). The height will rescale based on activity in the selected graph, with the exception of utilization graphs which have a fixed height of 100%. Since the height can rescale, 60 minutes of idle activity may look similar to 60 minutes of busy activity. Always check the height of the graphs before trying to interpret what they mean. Understanding some statistics may not be obvious - you might wonder, for a particular appliance in your environment, whether 1000 NFSv3 ops/sec is considered busy or idle. This is where the 24 hour and 7 day plots can help, to provide historic data next to the current activity for comparison. The plot height is calculated from the selected plot. By default, the 60-minute plot is selected. So, the height is the maximum activity during that 60 minute interval (plus a margin). To rescale all plots to span the highest activity during the previous 7 days, select 7d. This makes it easy to see how current activity compares to the last day or week.
Weather
The weather icon is intended to grab your attention when something is unusually busy or idle. To go to the weather threshold configuration page, click the weather icon. There is no good or bad threshold, rather the BUI provides a gradient of levels for each activity statistic. The statistics on which weather icons are based provide an approximate understanding for appliance performance that you should customize to your workload, as follows:
Different environments have different acceptable levels for performance (latency), and so there is no one-size-fits-all threshold. The statistics on the Dashboard are based on operations/sec and bytes/sec, so you should use Analytics worksheets for an accurate understanding of system performance.
Recent Alerts
This section shows the last four appliance alerts. Click the box to go to the maintenance logs screen to examine all recent alerts in detail.
56 Sun ZFS Storage 7000 System Administration Guide November 2010
Dashboard
CLI
A text version of the Status > Dashboard screen is available from the CLI by typing status dashboard:
walu:> status dashboard Storage: pool_0: Used 10.0G bytes Avail 6.52T bytes State online Compression 1x Memory: Cache Unused Mgmt Other Kernel Services: ad dns http idmap iscsi ndmp nis routing snmp tags Hardware: CPU Disks Memory Activity: CPU Disk iSCSI NDMP NFSv3 NFSv4 Network SMB 550M 121G 272M 4.10G 1.90G bytes bytes bytes bytes bytes disabled online online online online online online online online online online faulted online 1 %util 32 ops/sec 0 ops/sec 0 bytes/sec 0 ops/sec 0 ops/sec 13K bytes/sec 0 ops/sec smb ftp identity ipmp ldap nfs ntp scrk ssh vscan Cards Fans PSU Sunny Sunny Sunny Sunny Sunny Sunny Sunny Sunny disabled disabled online online disabled online online maintenance online online online online online
Recent Alerts: 2009-10-13 07:46: A cluster interconnect link has been restored.
The previous descriptions in the BUI section apply, with the following differences:
The activity plots aren't rendered in text (although we have thought about using aalib). The storage usage section will list details for all available pools in the CLI, whereas the BUI only has room to summarize one.
Settings
caji:> status activity show Activity: CPU 10 %util Disk 478 ops/sec iSCSI 0 ops/sec NDMP 0 bytes/sec NFSv3 681 ops/sec NFSv4 0 ops/sec Network 22.8M bytes/sec SMB 0 ops/sec caji:>
Sunny Partly Cloudy Sunny Sunny Partly Cloudy Sunny Partly Cloudy Sunny
Tasks
Dashboard Tasks
Running the Dashboard Continuously
You might experience browser memory issues if you leave the Dashboard screen open in a browser continuously (24x7). The browser will increase in size (memory leaks), and need to be closed and reopened. Browsers are fairly good at managing memory when browsing through different websites (and opening and closing tabs); the issue is that the Dashboard screen is left running and not closed, which opens and reopens images for the activity plots. To reduce the browser memory growth (which will degrade image rendering performance), disable the memory cache in Firefox, as follows:
1 2 3
Settings
Introduction
The Status > Settings screen enables you to customize the Status Dashboard, including the statistics that appear and thresholds that indicate activity through the weather icons.
BUI
58
Settings
Layout
Use the layout tab to select the graphs that appear in the dashboard activity area, as defined in the following table.
Name Units Description
operations/sec Average number of SMB operations. utilization Average cycles the appliance CPUs are busy. CPU cycles includes memory wait cycles.
operations/sec Average number of operations to the physical storage devices. operations/sec Average number of HTTP operations. operations/sec Average number of iSCSI operations. Average bytes/sec across all physical network interfaces. Average NDMP network bytes.
operations/sec Average number of NFSv2 operations. operations/sec Average number of NFSv3 operations. operations/sec Average number of NFSv4 operations. bytes/sec bytes/sec Average number of FTP bytes. Average number of SFTP bytes.
Note that to reduce the netowrk traffic required to refresh the Dashboard, configure some of the activity graphs as "<empty>".
Thresholds
Use the Thresholds screen to configure the dashboard activity weather icons. The defaults provided are based on heavy workloads, and may not be suitable for your environment.
Chapter 2 Status
59
Settings
The weather icon that appears on the Dashboard is closest to the threshold value setting for the current activity - measured as a 60 second average. For example, if CPU utilization was at 41%, by default, the Cloudy weather icon would appear because its threshold is 40% (closest to the actual activity). Select the Custom radio button to configure thresholds and be sure to configure them in the order they appear on the screen.
CLI
The dashboard currently cannot be configured from the CLI. Settings saved in the BUI will apply to the dashboard that is visible from the CLI.
Tasks
The following are examples tasks for this topic, with enumerated steps.
BUI
Changing the Displayed Activity Statistics
1 2 3
Go to the Status > Settings > Layout screen. Choose the statistics you want to display on the Dashboard from the drop-down menus. To save your choices, click the Apply button.
60
NDMP
Go to the Status > Settings > Thresholds screen. Choose the statistic to configure from the drop-down menu. Click the Custom radio button. Customize the values in the list, in the order they appear. Some statistics will provide a Units drop-down, so that Kilo/Mega/Giga can be selected. To save your configuration, click the Apply button.
NDMP
BUI
This page summarizes NDMP status, if the NDMP service has been configured and is active. Both backup devices and recent client activity are shown.
Devices
NDMP devices are listed here.
Field Description Examples
Type of NDMP device Path of the NDMP device Device vendor name Device product name
Recent activity
This section summarizes recent NDMP activity.
Field Description Examples
ID Active
49 No
Chapter 2 Status
61
NDMP
Field
Description
Examples
Remote Client Authenticated Data State Mover State Current Operation Progress
192.168.1.219:4760
Shows if the client has completed authentication yet Yes, No See Data State See Mover State Current NDMP operation A progress bar for this backup Active, Idle, ... Active, Idle, ... Backup, Restore, None
Active: The data is being backed up or restored. Idle: Backup or restore has not yet started or has already finished. Connected: Connection is established, but backup or restore has not yet begun. Halted: Backup or restore has finished successfully or has failed or aborted. Listen: Operation is waiting to receive a remote connection.
Active: Data is being read from or written to the tape. Idle: Tape operation has not yet started or has already finished. Paused: Tape has reached the end or is waiting to be changed. Halted: Read/write operation has finished successfully or has failed or aborted. Listen: Operation is waiting to receive a remote connection.
CLI
NDMP status is not currently available from the CLI.
62
C H A P T E R
Configuration
Configuration
Introduction
This section describes how various properties of the appliance are configured, including network interfaces, services, and user accounts as follows.
Initial - initial configuration Network - networking Services - data services SAN - storage area network configuration Cluster - clustering Users - user accounts and access control Preferences - user preferences Alerts - custom alerts Storage - reconfigure storage devices
63
Initial
For details about configuring or managing shares, see the Shares section. To backup the current configuration before making changes, use the Backup button on the Maintenance System screen.
Initial
Initial Configuration
The initial configuration consists of six configuration steps. 1. 2. 3. 4. 5. 6. Network DNS Time Name Services (NIS, LDAP, Active Directory) Storage Registration & Support
Prerequisites
The initial configuration of the system is conducted after powering it on for the first time and establishing a connection, as documented in the Installation section, also available as a PDF on http://wikis.sun.com/display/fishworks/Documentation. (http://wikis.sun.com/display/ fishworks/Documentation.) Note that the option to perform initial configuration of a cluster is only available in the BUI. If electing this option, read the clustering documentation included in the Sun ZFS Storage 7000 Administration Guide at http://wikis.sun.com/display/fishworks (http://wikis.sun.com/ display/fishworks) before beginning initial configuration for detailed additional steps that are required for successful cluster setup. Pay careful attention to the Clustering Considerations for Networking section. Alternatively, cluster-capable appliances may be initially configured for standalone operation using the following procedure, and re-configured for cluster operation at a later time.
Summary
This procedure will configure networking connectivity, several client network services, and the layout of the storage pool for standalone operation. When completed, the appliance is ready for use - but will not have any shares configured for remote clients to access. To create shares or revisit settings, refer to the Shares and Configuration sections of the Sun ZFS Storage 7000 System Administration Guide on http://wikis.sun.com/display/fishworks. (http://wikis.sun.com/display/fishworks.)
64 Sun ZFS Storage 7000 System Administration Guide November 2010
Initial
This procedure may be repeated at a later time by clicking the "INITIAL SETUP" button on the Maintenance > System screen or by entering the maintenance system setup context in the CLI.
BUI
The BUI initial configuration is the preferred method and provides a screen for each of the initial configuration steps.
Click Start to begin basic configuration of network, time directory and support services. Click Commit to save the configuration and go to the next screen. Arrows beneath the Commit button can be used to revisit previous steps, and change the configuration if desired.
Chapter 3 Configuration
65
Initial
CLI
Alternatively, use the CLI to step through the initial configuration sections. Each step begins by printing its help, which can be reprinted by typing help. Use the done command to complete each step.
In this example, the existing settings are checked (which were obtained from the DHCP server), and accepted by typing done. To customize them at this point, enter each context (datalinks, devices and interfaces) and type help to see available actions for that context. See the Network page for additional documentation or refer to the System Administration Guide at http://wikis.sun.com/display/fishworks. (http://wikis.sun.com/display/fishworks.) Pay careful attention to the Clustering Considerations for Networking section if you will configure clustering.
aksh: starting configuration with "net" ... Configure Networking. Configure the appliance network interfaces. The first network interface has been configured for you, using the settings you provided at the serial console. Subcommands that are valid in this context: datalinks devices interfaces help [topic] => Manage datalinks => Manage devices => Manage interfaces => Get context-sensitive help. If [topic] is specified, it must be one of "builtins", "commands", "general", "help" or "script". => Show information pertinent to the current context => Abort this task (potentially resulting in a misconfigured system) => Finish operating on "net"
66
Initial
caji:maintenance system setup net> devices show Devices: DEVICE nge0 nge1 nge2 nge3 UP true false false false MAC 0:14:4f:8d:59:aa 0:14:4f:8d:59:ab 0:14:4f:8d:59:ac 0:14:4f:8d:59:ad SPEED 1000 Mbit/s 0 Mbit/s 0 Mbit/s 0 Mbit/s
caji:maintenance system setup net> datalinks show Datalinks: DATALINK CLASS nge0 device LINKS nge0 LABEL Untitled Datalink
caji:maintenance system setup net> interfaces show Interfaces: INTERFACE STATE CLASS LINKS nge0 up ip nge0 ADDRS 192.168.2.80/22 LABEL Untitled Interface
Refer to the DNS section of the System Administration Guide at http://wikis.sun.com/display/ fishworks (http://wikis.sun.com/display/fishworks) for additional documentation on DNS.
Configure DNS. Configure the Domain Name Service. Subcommands that are valid in this context: help [topic] => Get context-sensitive help. If [topic] is specified, it must be one of "builtins", "commands", "general", "help", "script" or "properties". => Show information pertinent to the current context => Commit current state, including any changes => Abort this task (potentially resulting in a misconfigured system) => Finish operating on "dns" => Get value for property [prop]. ("help properties" for valid properties.) If [prop] is not specified, returns values for all properties. => Set property [prop] to [value]. ("help properties" for valid properties.) For properties taking list values, [value] should be a comma-separated list of values.
set [prop]
caji:maintenance system setup dns> show Properties: <status> = online domain = sun.com
Chapter 3 Configuration 67
Initial
servers = 192.168.1.4 caji:maintenance system setup dns> set domain=sf.fishworks.com domain = sf.fishworks.com (uncommitted) caji:maintenance system setup dns> set servers=192.168.1.5 servers = 192.168.1.5 (uncommitted) caji:maintenance system setup dns> commit caji:maintenance system setup dns> done aksh: done with "dns", advancing configuration to "ntp" ...
Configure Network Time Protocol (NTP) to synchronize the appliance time clock. See the NTP section of the System Administration Guide at http://wikis.sun.com/display/fishworks (http://wikis.sun.com/display/fishworks) for additional documentation.
Configure Time. Configure the Network Time Protocol. Subcommands that are valid in this context: help [topic] => Get context-sensitive help. If [topic] is specified, it must be one of "builtins", "commands", "general", "help", "script" or "properties". => Show information pertinent to the current context => Commit current state, including any changes => Abort this task (potentially resulting in a misconfigured system) => Finish operating on "ntp" => Enable the ntp service => Disable the ntp service => Get value for property [prop]. ("help properties" for valid properties.) If [prop] is not specified, returns values for all properties. => Set property [prop] to [value]. ("help properties" for valid properties.) For properties taking list values, [value] should be a comma-separated list of values.
set [prop]
caji:maintenance system setup ntp> set servers=0.pool.ntp.org servers = 0.pool.ntp.org (uncommitted) caji:maintenance system setup ntp> commit caji:maintenance system setup ntp> done aksh: done with "ntp", advancing configuration to "directory" ...
Refer to the NIS, LDAP and Active Directory sections of the System Administration Guide at http://wikis.sun.com/display/fishworks (http://wikis.sun.com/display/fishworks) for additional documentation.
Configure Name Services. Configure directory services for users and groups. You can configure and enable each directory service independently, and you can configure more than one directory service.
68 Sun ZFS Storage 7000 System Administration Guide November 2010
Initial
Subcommands that are valid in this context: nis ldap ad help [topic] => Configure NIS => Configure LDAP => Configure Active Directory => Get context-sensitive help. If [topic] is specified, it must be one of "builtins", "commands", "general", "help" or "script". => Show information pertinent to the current context => Abort this task (potentially resulting in a misconfigured system) => Finish operating on "directory"
caji:maintenance system setup directory> nis caji:maintenance system setup directory nis> show Properties: <status> = online domain = sun.com broadcast = true ypservers = caji:maintenance system setup directory nis> set domain=fishworks domain = fishworks (uncommitted) caji:maintenance system setup directory nis> commit caji:maintenance system setup directory nis> done caji:maintenance system setup directory> done aksh: done with "directory", advancing configuration to "support" ...
Configure storage pools that are characterized by their underlying data redundancy, and provide space that is shared across all filesystems and LUNs. See the Storage section of the System Administration Guide at http://wikis.sun.com/display/fishworks (http://wikis.sun.com/display/fishworks) for additional documentation.
Configure Storage. Subcommands that are valid in this context: help [topic] => Get context-sensitive help. If [topic] is specified, it must be one of "builtins", "commands", "general", "help", "script" or "properties". => Show information pertinent to the current context => Commit current state, including any changes => Finish operating on "storage" => Configure the storage pool => Unconfigure the storage pool
69
Network
=> Add additional storage to the storage pool => Search for existing or destroyed pools to import => Start or stop a scrub => Get value for property [prop]. ("help properties" for valid properties.) If [prop] is not specified, returns values for all properties. => Change current pool
set pool=[pool]
caji:maintenance system setup storage> show Properties: pool = pool-0 status = online profile = mirror log_profile = cache_profile = caji:maintenance system setup storage> done aksh: done with "storage", advancing configuration to "support" ...
Network
70
Network
Configuring networking
Network Configuration
The Networking Configuration features permit you to create a variety of advanced networking setups out of your physical network ports, including link-aggregations, virtual LANs (VLANs), and multipathing groups. You can then define any number of IPv4 and IPv6 addresses for these abstractions, for use in connecting to the various data services on the system. There are four components to system's network configuration:
Devices - Physical network ports. These correspond to your physical network connections or IP on Infiniband (IPoIB) partitions. Datalinks - The basic construct for sending and receiving packets. Datalinks may correspond 1:1 with a device (that is, with a physical network port) or IB Partition, or you may define Aggregation and VLAN datalinks composed of other devices and datalinks. Interface - The basic construct for IP configuration and addressing. Each IP interface is associated with a single datalink, or is defined to be an IP MultiPathing (IPMP) group comprised of other interfaces. Routing - IP routing configuration. This controls how the system will direct IP packets.
In this model, network devices represent the available hardware - they have no configurable settings. Datalinks are a layer 2 entity, and must be created to apply settings such as LACP to these network devices. Interfaces are a layer 3 entity containing the IP settings, which they make available via a datalink. This model has separated network interface settings into two parts datalinks for layer 2 settings, and interfaces for layer 3 settings. To show this with an example, the following configuration is for a 4-way link aggregation:
Devices Datalink Interface
deimos (192.168.2.80/22)
Chapter 3 Configuration
71
Network
The datalink entity (which we named "aggr1") groups the network devices in a configurable way (LACP aggregation policy). The interface entity (which we named "deimos") provides configurable IP address settings, which it makes available on the network via the datalink. The network devices (named "nge0", "nge1", ..., by the system) have no direct settings. Datalinks are required to complete the network configuration, whether they apply specific settings to the network devices or not. An example of a single IP address on a single port (common configuration) is:
Devices Datalink Interface
nge0
datalink1
deimos (192.168.2.80/22)
Devices
These are created by the system to represent the available network or Infiniband ports. They have no configuration settings of their own.
Datalinks
These manage devices, and are used by interfaces. They support:
VLANs - Virtual LANs to improve local network security and isolation. LACP - Link Aggregation Control Protocol, to bundle multiple network devices to behave as one. This improves performance (multiplies bandwidth) and reliability (can survive network port failure), however the appliance must be connected to a switch that supports LACP and has it enabled for those ports. IB Partitions - Infiniband partitions to connect to logically isolated IB fabric domains.
Custom name for the datalink. For example: "internal", "external", "adminnet", etc. Use VLAN headers VLAN ID Use a large MTU (~9000 bytes, depending on the hardware and device driver), to improve network performance. Successful use of this option requires that attached switches support this feature. Once the Jumbo Frames option is enabled and the new network configuration is committed to the system, you can return to the network screen and view the datalink status to see the exact MTU value in bytes that was selected. Aggregate multiple network devices
LACP Aggregation
72
Network
Property
Description
LACP Policy
Policy for picking outbound port. L2 hashes the source and destination MAC address; L3 uses the source and destination IP address; L4 uses the source and destination transport level port Switch communication mode. Active mode will send and receive LACP messages to negotiate connections and monitor the link status. Passive mode will listen for LACP messages only. Off mode will use the aggregated link but not detect link failure or switch configuration changes. Some network switch configurations, including Cisco Etherchannel, do not use the LACP protocol: the LACP mode should be set to "off" when using non-LACP aggregation in your network. For Active mode, this is the interval between LACP messages Use IB partitions This property designates the partition (fabric domain) in which the underlying port device is a member. The partition key (pkey) is found on and configured by the subnet manager. The pkey may be defined before configuring the subnet manager but the datalink will remain "down" until the subnet partition has been properly configured with the port GUID as a member. It is important to keep partition membership for HCA ports consistent with IPMP and clustering rules on the sub-net manager.
LACP Mode
Interfaces
These configure IP addresses via datalinks. They support:
IPv4 and IPv6 protocols. IPMP - IP MultiPathing, to improve network reliability by allowing IP addresses to automatically migrate from failed to working datalinks.
Custom name for the interface Allow connections to the appliance administration BUI or CLI over this interface. If your network environment included a separate administration network, this could be enabled for the administration network only to improve security Enable this interface to be used for IP traffic. If an interface is disabled, the appliance will no longer send or receive IP traffic over it, or make use of any IP addresses configured on it. At present, disabling an active IP interface in an IPMP group will not trigger activation of a standby interface. Either "Static Address List" manually entered, or "DHCP" for dynamically requested One or more IPv4 addresses in CIDR notation (192.168.1.1/24)
Enable Interface
Chapter 3 Configuration
73
Network
Property
Description
Either "Static Address List" manually entered, or "IPv6 AutoConfiguration" to use automatically generated link-local address (and site-local if an IPv6 router responds) One or more IPv6 addresses in CIDR notation (1080::8:800:200C:417A/32) Configure IP multipathing, where a pool of datalinks can be used for redundancy
IP MultiPathing (IPMP)
IP MultiPathing groups are used to provide IP addresses that will remain available in the event of a IP interface failure (such a physical wire disconnection or a failure of the connection between a network device and its switch) or in the event of a path failure between the system and its network gateways. The system detects failures by monitoring the IP interface's underlying datalink for link-up and link-down notifications, and optionally by probing using test addresses that can be assigned to each IP interface in the group, described below. Any number of IP interfaces can be placed into an IPMP group so long as they are all on the same link (LAN, IB partition, or VLAN), and any number of highly-available addresses can be assigned to an IPMP group. Each IP interface in an IPMP group is designated either <i>active</i> or <i>standby</i>:
Active: The IP interface will be used to send and receive data so long as IPMP has determined it is functioning correctly. Standby: The IP interface will only be used to send and receive data if an active interface (or a previously-activated standby) stops functioning.
Multiple active and standby IP interfaces can be configured, but each IPMP group must be configured with at least one active IP interface. IPMP will strive to activate as many standbys as necessary to preserve the configured number of active interfaces. For example, if an IPMP group is configured with two active interfaces and two standby interfaces and all interfaces are functioning correctly, only the two active interfaces will be used to send and receive data. If an active interface fails, one of the standby interfaces will be activated. If the other active interface fails (or the activated standby fails), the second standby interface will be activated. If the active interfaces are subsequently repaired, the standby interfaces will again be deactivated. If probe-based failure detection is enabled on an IP interface (i.e., a test address is configured), the system will determine which target systems to probe dynamically. First, the routing table will be scanned for gateways (routers) on the same subnet as the IP interface's test address and up to five will be selected. If no gateways on the same subnet were found, the system will send a multicast ICMP probe (to 224.0.01. for IPv4 or ff02::1 for IPv6) and select the first five systems on the same subnet that respond. Therefore, for network failure detection and repair using IPMP, you should be sure that at least one neighbor on each link or the default gateway responds to ICMP echo requests. IPMP works with both IPv4 and IPv6 address configurations. In the case of IPv6, the interface's link-local address is used as the test address.
74 Sun ZFS Storage 7000 System Administration Guide November 2010
Network
The system will probe selected target systems in round-robin fashion. If five consecutive probes are unanswered, the IP interface will be considered failed. Conversely, if ten consecutive probes are answered, the system will consider a previously-failed IP interface as repaired. You can set the system's IPMP probe failure detection time from the IPMP screen. This time indirectly controls the probing rate and the repair interval -- for instance, a failure detection time of 10 seconds means that the system will send probes at roughly two second intervals and that the system will need 20 seconds to detect a probe-based interface repair. You cannot directly control the system's selected targeted systems, though it can be indirectly controlled through the routing table. The system will monitor the routing table and automatically adjust its selected target systems as necessary. For instance, if the system using multicast-discovered targets but a route is subsequently added that has a gateway on the same subnet as the IP interface's test address, the system will automatically switch to probing the gateway. Similarly, if multicast-discovered targets are being probed, the system will periodically refresh its set of chosen targets (e.g., because some previously-selected targets have become unresponsive). Step by step instructions for building IPMP groups can be found in the Tasks section below.
Routing
The system provides a single IP routing table, consisting of a collection of routing table entries. When an IP packet needs to be sent to a given destination, the system selects the routing entry whose destination most closely matches the packet's destination address (subject to the system's multihoming policy -- see below). It then uses the information in the routing entry to determine what IP interface to send the packet on and -- if the destination is not directly reachable -- the next-hop gateway to use. If no routing entries match the destination, the packet will be dropped. If multiple routing entries tie for closest match (and are not otherwise prioritized by multihoming policy), the system will load-spread across those entries on a per-connection basis.
Chapter 3 Configuration 75
Network
Routing Entries
The routing table is comprised of routing entries, each of which has the following fields:
Field Description Examples
Destination Range of IP destination 192.168.0.0/22 addresses (in CIDR notation) that can match the route Gateway Next hop (IP address) to send the packet to (except for "system" routes -- see below) Internet protocol Origin of the route IP interface the packet will be sent on 192.168.2.80
A routing entry with a "destination" field of 0.0.0.0/0 will match any packet (if no other route matches more precisely), and is thus known as a 'default' route. In the BUI, default routes are distinguished from non-default routes by an additional property:
Kind Route kind Default, Network
As above, a given packet will be sent on the IP interface specified in the routing entry's "interface" field. If an IPMP interface is specified, then one of the active IP interfaces in the IPMP group will be chosen randomly on a per-connection basis and automatically refreshed if the chosen IP interface subsequently becomes unusable. Conversely, if a given IP interface is part of an IPMP group, it cannot be specified in the "interface" field because such a route would not be highly-available. Routing entries come from a number of different origins, as identified by the "type" field. Although the origin of a routing entry has no bearing on how it is used by the system, its origin does control if and how it can be edited or deleted. The system supports the following types of routes:
76
Network
Type
Description
Static System
Created and managed by the appliance administrator. Created automatically by the appliance as part of enabling an IP interface. A system route will be created for each IP subnet the appliance can directly reach. Since these routes are directly reachable, the "gateway" field instead identifies the appliance's IP address on that subnet. Created automatically by the appliance part of enabling an IP interface that is configured to use DHCP. A DHCP route will be created for each default route provided by the DHCP server. Created automatically by the appliance via the RIP and RIPng dynamic routing protocols (if enabled).
DHCP
Dynamic
One additional type identifies a static route that cannot currently be used:
Inactive Previously-created static route associated with a disabled or offline IP interface.
Routing Properties
Property Description
Multihoming model
Controls the system policy for accepting and transmitting IP packets when multiple IP interfaces are simultaneously enabled. Allowed values are "loose" (default), "adaptive", and "strict". See the discussion below.
If a system is configured with more than one IP interface, then there may be multiple equivalent routes to a given destination, forcing the system to choose which IP interface to send a packet on. Similarly, a packet may arrive on one IP interface, but be destined to an IP address that is hosted on another IP interface. The system's behavior in such situations is determined by the selected multihoming policy. Three policies are supported:
Policy Description
Loose
Do not enforce any binding between an IP packet and the IP interface used to send or receive it: 1) An IP packet will be accepted on an IP interface so long as its destination IP address is up on the appliance. 2) An IP packet will be transmitted over the IP interface tied to the route that most specifically matches an IP packet's destination address, without any regard for the IP addresses hosted on that IP interface. If no eligible routes exist, drop the packet.
Chapter 3 Configuration
77
Network
Policy
Description
Adaptive
Identical to loose, except prefer routes with a gateway address on the same subnet as the packet's source IP address: 1) An IP packet will be accepted on an IP interface so long as its destination IP address is up on the appliance. 2) An IP packet will be transmitted over the IP interface tied to the route that most specifically matches an IP packet's destination address. If multiple routes are equally specific, prefer routes that have a gateway address on the same subnet as the packet's source address. If no eligible routes exist, drop the packet. Require a strict binding between an IP packet and the IP interface used to send or receive it: 1) An IP packet will be accepted on an IP interface so long as its destination IP address is up on that IP interface. 2) An IP packet will only be transmitted over an IP interface if its source IP address is up on that IP interface. To enforce this, when matching against the available routes, the appliance will ignore any routes that have gateway addresses on a different subnet from the packet's source address. If no eligible routes remain, drop the packet.
Strict
When selecting the multihoming policy, a key consideration is whether any of the appliance's IP interfaces will be dedicated to administration (for example, for dedicated BUI access) and thus accessed over a separate administration network. In particular, if a default route is created to provide remote access to the administration network, and a separate default route is created to provide remote access to storage protocols, then the default system policy of "loose" may cause the administrative default route to be used for storage traffic. By switching the policy to "adaptive" or "strict", the appliance will consider the IP address associated with the request as part of selecting the route for the reply. If no route can be found on the same IP interface, the "adaptive" policy will cause the system to use any available route, whereas the "strict" policy will cause the system to drop the packet.
BUI
When using the BUI to reconfigure networking, the system makes every effort to preserve the current networking connection to your browser. However, some network configuration changes such as deleting the specific address to which your browser is connected, will unavoidably cause the browser to lose its connection. For this reason it is recommended that you assign a particular IP address and network device for use by administrators and always leave the address configured. You can also perform particularly complex network reconfiguration tasks from the CLI over the serial console if necessary. The following icons are used in the Configuration->Network section:
icon description
78
Network
icon
description
Edit datalink/interface/route settings Destroy datalink/interface/route Drag-and-drop icon connected network port connected network port with I/O activity disconnected network port (link down, cable problem?) active Infiniband port active Infiniband port with I/O activity inactive Infiniband port (down, init, or arm state) Infiniband partition device is up Infiniband partition device is down (subnet manager problem) network datalink network datalink VLAN network datalink aggregation network datalink aggregation VLAN network datalink IB partition interface is being used to send and receive packets (either up or degraded) interface has been disabled by the user interface is offline (owned by the cluster peer) interface has failed or has been configured with a duplicate IP address
Chapter 3 Configuration
79
Network
At top right is local navigation for Configuration, Addresses and Routing, which display alternate configuration views.
Configuration
The Configuration page is shown by default, and lists Devices, Datalinks and Interfaces, along with buttons for administration. Mouse-over an entry to expose an additional icon, and click on any entry to highlight other components that are associated with it. The Devices list shows links status on the right, as well as an icon to reflect the state of the network port. If ports appear disconnected, check that they are plugged into the network properly. To configure an IP address on a network devices, first create a datalink, and then create an icon may be used to do both, which will display dialogs interface to use that datalink. The for the Datalink and Interface properties. There is more than one way to configure a network interface. Try clicking on the icon for a device, then dragging it to the datalink table. Then drag the datalink over to the interfaces table. Other moves are possible. This can be helpful for complex configurations, where valid moves are highlighted.
Addresses
This page shows a summary table of the current network configuration, with fields:
Field Description Example
Datalink name and detail summary Interface name and details summary
Routing
This page provides configuration of the IP routing table and associated properties, as discussed above. By default, all entries in the routing table are shown, but the table can be filtered by type by using the subnavigation bar.
CLI
Network configuration is under the configuration net, which has sub commands for devices, datalinks, interfaces, and routing. The show command can be used with each to show the current configuration:
80 Sun ZFS Storage 7000 System Administration Guide November 2010
Network
caji:> configuration net caji:configuration net> devices show Devices: DEVICE nge0 nge1 nge2 nge3 UP true true true true SPEED 1000 Mbit/s 1000 Mbit/s 1000 Mbit/s 1000 Mbit/s MAC 0:14:4f:9a:b9:0 0:14:4f:9a:b9:1 0:14:4f:9a:b8:fe 0:14:4f:9a:b8:ff
caji:configuration net> datalinks show Datalinks: DATALINK CLASS nge0 device LINKS nge0 LABEL datalink1
caji:configuration net> interfaces show Interfaces: INTERFACE STATE CLASS LINKS nge0 up ip nge0 ADDRS 192.168.2.80/22 LABEL caji
caji:configuration net> routing show Properties: multihoming = loose Routes: ROUTE DESTINATION route-000 0.0.0.0/0 route-001 192.168.0.0/22 GATEWAY 192.168.1.1 192.168.2.142 INTERFACE TYPE nge0 dhcp nge0 system
Type help in each section to see the relevant commands for creating and configuring datalinks, interfaces, and routes. The following demonstrates creating a datalink using the device command, and interface using the ip command:
caji:configuration net> datalinks caji:configuration net datalinks> device caji:configuration net datalinks device (uncommitted)> set links=nge1 links = nge1 (uncommitted) caji:configuration net datalinks device (uncommitted)> set label=datalink2 label = datalink2 (uncommitted) caji:configuration net datalinks device (uncommitted)> set jumbo=true jumbo = true (uncommitted) caji:configuration net datalinks device (uncommitted)> commit caji:configuration net datalinks> show Datalinks: DATALINK CLASS nge0 device nge1 device LINKS nge0 nge1 LABEL datalink1 datalink2
Network
caji:configuration net interfaces ip (uncommitted)> set label="caji2" label = caji2 (uncommitted) caji:configuration net interfaces ip (uncommitted)> set links=nge1 links = nge1 (uncommitted) caji:configuration net interfaces ip (uncommitted)> set v4addrs=10.0.1.1/8 v4addrs = 10.0.1.1/8 (uncommitted) caji:configuration net interfaces ip (uncommitted)> commit caji:configuration net interfaces> show Interfaces: INTERFACE STATE CLASS LINKS nge0 up ip nge0 nge1 up ip nge1 ADDRS 192.168.2.80/22 10.0.1.1/8 LABEL caji caji2
The following demonstrates creating a default route via 10.0.1.2 over the new nge1 IP interface:
caji:configuration net routing> create caji:configuration net route (uncommitted)> set family=IPv4 family = IPv4 (uncommitted) caji:configuration net route (uncommitted)> set destination=0.0.0.0 destination = 0.0.0.0 (uncommitted) caji:configuration net route (uncommitted)> set mask=0 mask = 0 (uncommitted) caji:configuration net route (uncommitted)> set interface=nge1 interface = nge1 (uncommitted) caji:configuration net route (uncommitted)> set gateway=10.0.1.2 gateway = 10.0.1.2 (uncommitted) caji:configuration net route (uncommitted)> commit
Tasks
BUI
Creating a single port interface
1 2 3 4 5 6 7
82
icon.
Optionally set name and jumbo frames. Choose a device from the Devices list. Click "APPLY". The datalink will appear in the Datalinks list. Click the Interface icon.
Set desired properties, and choose the datalink previously created. Click "APPLY". The interface will appear in the Interfaces list.
Sun ZFS Storage 7000 System Administration Guide November 2010
Network
The running appliance network configuration has not yet changed. When you are finished configuring interfaces, click "APPLY" at the top to commit the configuration.
Modifying an interface
1 2 3 4
Click the edit icon on either the datalink or the interface. Change settings to desired values. Click "APPLY" on the dialog. Click "APPLY" at the top of the page to commit the configuration.
Mouse over a device and click the drag-and-drop icon ( Drag it to the Datalink list and release. Optionally set name and jumbo frames. Click "APPLY". Now Drag the datalink over to the Interfaces list. Set desired properties, and click "APPLY".
).
icon.
Optionally set the datalink name. Select LACP Aggregation. Select two or more devices from the Devices list, and click "APPLY". Click the Interfaces icon.
Set desired properties, choose the aggregated link from the Datalinks list, and click "APPLY".
Chapter 3 Configuration 83
Network
detection
1
Create one or more "underlying" IP interfaces that will be used as components of the IPMP group. Each interface must have an IP address to be used as the probe source (see separate task to create a single-port interfaces above). Click the Interface icon.
2 3 4 5
Optionally change the name of the interface. Click the IP MultiPathing Group check box. Click the Use IPv4 Protocol or/and the Use IPv6 Protocol and specify the IP addresses for the IPMP interface. Choose the interfaces created in the fist step from the Interfaces list. Set each chosen interface to be either "Active" or "Standby", as desired. Click "APPLY".
6 7 8
Create one or more "underlying" IP interfaces with the IP address 0.0.0.0/8 to be used as the components of the IPMP group (see separate task to create a single-port interfaces above). Click the Interface icon.
2 3 4 5
Optionally change the name of the interface. Click the IP MultiPathing Group check box. Click the Use IPv4 Protocol or/and the Use IPv6 Protocol and specify the IP addresses for the IPMP interface. Choose the interfaces created in the first step from the Interfaces list. Set each chosen interface to be either "Active" or "Standby", as desired. Click "APPLY".
Sun ZFS Storage 7000 System Administration Guide November 2010
6 7 8
84
Network
Mouse-over a device in the Devices list. Click the icon, and drag the device onto an aggregation datalink, and release.
Mouse-over an interface in the Interfaces list. Click the icon, and drag the device onto an IPMP interface, and release.
icon.
Click the IB Partition checkbox Choose a device from the Partition Devices list. Click "APPLY". The new partition datalink will appear in the Datalinks list. Click the Interface icon.
Set desired properties, and choose the datalink previously created. Click "APPLY". The interface will appear in the Interfaces list. The running appliance network configuration has not yet changed. When you are finished configuring interfaces, click "APPLY" at the top to commit the configuration.
Network
3 4
Fill in the properties as described earlier. Click "ADD". The new route will appear in the table.
Go to Configuration->Network->Routing Mouse-over the route entry, then click the trash icon on the right.
CLI
Adding a static route
1 2 3 4
Go to configuration network routing. Enter create. Type show to list required properties, and set each. Enter commit.
Go to configuration network routing. Type show to list routes, and route names (eg, route-002). Enter destroy route name.
Storage
Storage
Introduction
Storage is configured in pools that are characterized by their underlying data redundancy, and provide space that is shared across all filesystems and LUNs. More information about how storage pools relate to individual filesystems or LUNs can be found in the Shares section. Each node can have any number of pools, and each pool can be assigned ownership independently in a cluster. While arbitrary number of pools are supported, creating multiple pools with the same redundancy characteristics owned by the same cluster head is not advised. Doing so will result in poor performance, suboptimal allocation of resources, artificial partitioning of storage, and additional administrative complexity. Configuring multiple pools on the same host is only recommended when drastically different redundancy or performance characteristics are desired, for example a mirrored pool and a RAID-Z pool. With the ability to control access to log and cache devices on a per-share basis, the recommended mode of operation is a single pool. Pools can be created by configuring a new pool, or importing an existing pool. Importing an existing pool is only used to import pools previously configured on a Sun Storage 7000 appliance, and is useful in case of accidental reconfiguration, moving of pools between head nodes, or due to catastrophic head failure. When allocating raw storage to pools, keep in mind that filling pools completely will result in significantly reduced performance, especially when writing to shares or LUNs. These effects typically become noticeable once the pool exceeds 80% full, and can be significant when the pool exceeds 90% full. Therefore, best results will be obtained by overprovisioning by approximately 20%. The Shares UI can be used to determine how much space is currently being used.
Configure
This action configures the storage pool. In the BUI, this is done by clicking the button next to the list of pools, at which point you are prompted for the name of the new pool. In the CLI, this is done by the config command, which takes the name of the pool as an argument. After the task is started, storage configuration falls into two different phases: verification and configuration.
Storage
and drive types, with the ability to change the number of disks to allocate to the new pool. By default, the maximum number of disks are allocated, but this number can be reduced in anticipation of creating multiple pools. In an expandable system, JBODs are displayed in a list along with the head node, and allocation can be controlled within each JBOD. For each JBOD, the system must import available disks, a process that can take a significant amount of time depending the number and configuration of JBODs. Disks within the system chassis can be allocated individually (as with cache devices), but JBODs must be allocated as either 'whole' or 'half'. In general, whole JBODs are the preferred unit for managing storage, but half JBODs can be used where storage needs are small, or where NSPF is needed in a smaller configuration. Attempting to commit this step using chassis with missing or failed devices will result in a warning. Once you configure a storage pool in this manner, you will never be able to add the missing or broken disk. Therefore it is important that all devices must be connected and functioning before continuing past the verification step.
Profile Configuration
Once verification is completed, the next step involves choosing a storage profile that reflects the RAS and performance goals of your setup. The set of possible profiles presented depends on your available storage. The following table lists all possible profiles and their description.
Data Profile Description
RAID in which each stripe contains two parity disks. This yields high capacity and high availability, as data remains available even with the failure of any two disks. The capacity and availability come at some cost to performance: parity needs to be calculated on writes (costing both CPU and I/O bandwidth) and many concurrent I/Os need to be performed to access a single block (reducing available I/O operations). The performance effects on read operations are often greatly diminished when cache is available. Data is mirrored, reducing capacity by half, but yielding a highly reliable and high-performing system. Recommended when space is considered ample, but performance is at a premium (for example, database storage).
Mirrored
88
Storage
Data Profile
Description
RAID in which each stripe is kept to three data disks and a single parity disk. At normal stripe widths, single parity RAID offers few advantages over double parity RAID -- and has the major disadvantage of only being able to survive a single disk failure. However, at narrow stripe widths, this single parity RAID configuration can fill a gap between mirroring and double parity RAID: its narrow width offers better random read performance than the wider stripe double parity configuration, but it does not have quite the capacity cost of a mirrored configuration. While this configuration may be an appropriate compromise in some situations, it is generally not recommended unless capacity and random read performance must be carefully balanced: those who need more capacity are encouraged to opt for a wider, double-parity configuration; those for whom random read performance is of paramount importance are encouraged to consider either a mirrored configuration or (if the workload is amenable to it) a double parity RAID configuration with sufficient memory and dedicated cache devices to service the workload without requiring disk-based I/O. Data is striped across disks, with no redundancy whatsoever. While this maximizes both performance and capacity, it comes at great cost: a single disk failure will result in data loss. This configuration is not recommended, and should only be used when data loss is considered to be an acceptable trade off for marginal gains in capacity and performance. RAID in which each stripe has three disks for parity, and for which wide stripes are configured to maximize for capacity. Wide stripes can exacerbate the performance effects of double parity RAID: while bandwidth will be acceptable, the number of I/O operations that the entire system can perform will be greatly diminished. Resilvering data after one or more drive failures can take significantly longer due to the wide stripes and low random I/O performance. As with other RAID configurations, the presence of cache can mitigate the effects on read performance. Data is triply mirrored, reducing capacity by one third, but yielding a very highly reliable and high-performing system. This configuration is intended for situations in which maximum performance, and availability are required while capacity is much less important (for example, database storage). Compared with a two-way mirror, a three-way mirror adds additional protection against disk failures and latent disk failures in particular during reconstruction for a previous failure.
Striped
Triple mirrored
For expandable systems, some profiles may be available with an 'NSPF' option. This stands for 'no single point of failure' and indicates that data is arranged in mirrors or RAID stripes such that a pathological JBOD failure will not result in data loss. Note that systems are already configured with redundancy across nearly all components. Each JBOD has redundant paths, redundant controllers, and redundant power supplies and fans. The only failure that NSPF protects against is disk backplane failure (a mostly passive component), or gross administrative misconduct (detaching both paths to one JBOD). In general, adopting NSPF will result in lower capacity, as it has more stringent requirements on stripe width.
Chapter 3 Configuration
89
Storage
Log devices can also have one of two different profiles: striped or mirrored. The data on log devices is only used in the event of node failure, so in order to lose data with an unmirrored log device it is necessary for both the device to fail and the node to reboot within a few seconds. This constitutes a double failure, but using mirrored log devices can make this effectively impossible, requiring two simultaneous device failures and node failure within a very small time window. Hot spares are allocated as a percentage of total pool size and are independent of the profile chosen (with the exception of striped, which doesn't support hot spares). Because hot spares are allocated for each storage configuration step, it is much more efficient to configure storage as a whole than it is to add storage in small increments. In a cluster, cache devices are available only to the node which has the storage pool imported. In a cluster, it is possible to configure cache devices on both nodes to be part of the same pool. To do this, takeover the pool on the passive node, and then add storage and select the cache devices. This has the effect of having half the global cache devices configured at any one time. While the data on the cache devices will be lost on failover, the new cache devices can be used on the new node. Note: earlier software versions supported a double parity RAID configuration with wide stripes. This has been supplanted by the triple parity RAID, wide stripe configuration as it adds significantly better reliability. Pools configured with double parity RAID with wide stripes under a previous software version continue to be supported but newly configured or reconfigured pools cannot select that option.
Import
This allows you to import an existing storage pool, as well as any inadvertently unconfigured pools. This can be used after a factory reset or service operation to recover user data. Importing a pool requires iterating over all attached storage devices and discovering any existing state. This can take a significant amount of time, during which no other storage configuration activities can take place. To import a pool in the BUI, click the 'IMPORT' button in the storage configuration screen. To import a pool in the CLI, use the 'import' command. Once the discovery phase has completed, you will be presented with a list of available pools, including some identifying characteristics. If the storage has been destroyed or is incomplete, the pool will not be importable. Unlike storage configuration, the pool name is not specified at the beginning, but rather when selecting the pool. By default, the previous pool name is used, but you can change the pool name, either by clicking the name in the BUI or setting the 'name' property in the CLI.
Add
Use this action to add additional storage to your existing pool. The verification step is identical to the verification step during initial configuration. The storage must be added using the same profile that was used to configure the pool initially. If there is insufficient storage to configure the system with the current profile, some attributes can be sacrificed. For example, adding a
90 Sun ZFS Storage 7000 System Administration Guide November 2010
Storage
single JBOD to a double parity RAID-Z NSPF config makes it impossible to preserve NSPF characteristics. However, you can still add the JBOD and create RAID stripes within the JBOD, sacrificing NSPF in the process.
Unconfig
This will remove any active filesystems and LUNs and unconfigure the storage pool, making the raw storage available for future storage configuration. This process can be undone by importing the unconfigured storage pool, provided the raw storage has not since been used as part of an active storage pool.
Scrub
This will initiate the storage pool scrub process, which will verify all content to check for errors. If any unrecoverable errors are found, either through a scrub or through normal operation, the BUI will display the affected files. The scrub can also be stopped if necessary.
Tasks
BUI
Configuring a Storage Pool
There are three different ways to arrive at this task: either during initial configuration of the appliance; or at the Configuration->Storage screen.
1 2 3
Click the
Enter a name for the storage pool At the "Allocate and verify storage" screen, configure the JBOD allocation for the storage pool. JBOD allocation may be none, half or all. If no JBODs are detected, check your JBOD cabling and power. Click "COMMIT". On the "Configure Added Storage" screen, select the desired data profile. Each is rated in terms of availability, performance and capacity, to help find the best configuration for your business needs. Click "COMMIT".
Chapter 3 Configuration 91
4 5
SAN
SAN
SAN
The SAN configuration screen allows you to connect your appliance to your SAN (Storage Area Network). A SAN is made up of three basic components:
A client which will access the storage on the network A storage appliance which will provide the storage on the network A network to link the client to the storage
These three components remain the same regardless of which protocol is used on the network. In some cases, the network may even be a cable between the initiator and the target, but in most cases, there is some type of switching involved.
Terminology
To configure the appliance to operate on a SAN, it is essential to understand some basic terms:
Term Description
Logical Unit
A term used to describe a component in a storage system. Uniquely numbered, this creates what is referred to as a Logicial Unit Number, or LUN. A storage system, being highly configurable, may contain many LUNS. These LUNs, when associated with one or more SCSI targets, forms a unique SCSI device, a device that can be accessed by one or more SCSI initiators. A storage system end-point that provides a service of processing SCSI commands and I/O requests from an initiator. A target is created by the storage system's administrator, and is identified by unique addressing methods. A target, once configured, consists of zero or more logical units. A set of targets. LUNs are exported over all the targets in one specific target group. An application or production system end-point that is capable of initiating a SCSI session, sending SCSI commands and I/O requests. Initiators are also identified by unique addressing methods. A set of initiators. When an initiator group is associated with a LUN, only initiators from that group may access the LUN.
Target
Initiator group
92
SAN
Term
Description
FC iSCSI iSER
Fibre Channel, a protocol for sharing SCSI based storage over a storage area network (SAN), consisting of fiber-optic cables, FC switches and HBAs. Internet SCSI, a protocol for sharing SCSI based storage over IP networks. iSCSI Extension for RDMA, a protocol that maps the iSCSI protocol over a network that provides RDMA services (i.e. InfiniBand). The iSER protocol is transparently selected by the iSCSI subsystem, based on the presence of correctly configured IB hardware. In the CLI and BUI, all iSER-capable components (targets and initiators) are managed as iSCSI components. SCSI RDMA Protocol, a protocol for sharing SCSI based storage over a network that provides RDMA services (i.e. InfiniBand).
SRP
BUI
The following screenshot shows the Configuration > SAN screen. Use the Target and Initiator links to navigate. Then, click the Fibre Channel Ports, iSCSI Targets, or SRP Targets links to operate on targets by protocol type.
Chapter 3 Configuration
93
SAN
The above screenshot demonstrates creating a new FC target group by moving a discovered target to the Fibre Channel target list. The following screenshot shows the Shares > Shares > Protocols screen. Use the Target Group or Initiator Group menus to associate a LUN.
94
Terms
CLI
Use the configuration san context of the CLI to operate on targets and initiators by protocol type. Then, use the shares CLI context to create LUNs and associate them with target and initiator groups.
Terms
SAN Terminology
The purpose of this section is to familiarize the reader with the various concepts involved in configuring a SAN (storage area network). Before getting into the details of how to configure and manage block storage on the appliance, it would be useful to understand some terms.
Chapter 3 Configuration
95
Terms
Term
Description
SCSI Target
A SCSI Target is a storage system end-point that provides a service of processing SCSI commands and I/O requests from an initiator. A SCSI Target is created by the storage system's administrator, and is identified by unique addressing methods. A SCSI Target, once configured, consists of zero or more logical units. A SCSI Initiator is an application or production system end-point that is capable of initiating a SCSI session, sending SCSI commands and I/O requests. SCSI Initiators are also identified by unique addressing methods (See SCSI Targets). A Logical Unit is a term used to describe a component in a storage system. Uniquely numbered, this creates what is referred to as a Logicial Unit Number, or LUN. A storage system, being highly configurable, may contain many LUNS. These LUNs, when associated with one or more SCSI Targets, forms a unique SCSI device, a device that can be accessed by one or more SCSI Initiators. Internet SCSI, a protocol for sharing SCSI based storage over IP networks. iSCSI Extension for RDMA, a protocol that maps the iSCSI protocol over a network that provides RDMA services (i.e. InfiniBand). The iSER protocol is transparently selected by the iSCSI subsystem, based on the presence of correctly configured IB hardware. In the CLI and BUI, all iSER-capable components (targets and initiators) are managed as iSCSI components. Fibre Channel, a protocol for sharing SCSI based storage over a storage area network (SAN), consisting of fiber-optic cables, FC switches and HBAs. SCSI RDMA Protocol, a protocol for sharing SCSI based storage over a network that provides RDMA services (i.e. InfiniBand). An iSCSI qualified name, the unique identifier of a device in an iSCSI network. iSCSI uses the form iqn.date.authority:uniqueid for IQNs. For example, the appliance may use the IQN: iqn.1986-03.com.sun:02:c7824a5b-f3ea-6038-c79d-ca443337d92c to identify one of its iSCSI targets. This name shows that this is an iSCSI device built by a company registered in March of 1986. The naming authority is just the DNS name of the company reversed, in this case, "com.sun". Everything following is a unique ID that Sun uses to identify the target. When using the iSCSI protocol, the target portal refers to the unique combination of an IP address and TCP port number by which an initiator can contact a target. When using the iSCSI protocol, a target portal group is a collection of target portals. Target portal groups are managed transparently; each network interface has a corresponding target portal group with that interface's active addresses. Binding a target to an interface advertises that iSCSI target using the portal group associated with that interface. Challenge-handshake authentication protocol, a security protocol which can authenticate a target to an initiator, an initiator to a target, or both. A system for using a centralized server to perform CHAP authentication on behalf of storage nodes.
SCSI Initiator
Logical Unit
iSCSI iSER
FC SRP IQN
CHAP RADIUS
96
FC
Term
Description
A set of targets. LUNs are exported over all the targets in one specific target group. A set of initiators. When an initiator group is associated with a LUN, only initiators from that group may access the LUN.
Each LUN has several properties which control how the volume is exported. See the Protocols section for more information.
FC
Fibre Channel
Fibre Channel (FC) is a gigabit-speed networking technology used nearly exclusively as a transport for SCSI. FC is one of several block protocols supported by the appliance; to share LUNs via FC, the appliance must be equipped with one or more optional FC cards.
Target Configuration
By default, all FC ports are used by the appliance to connect to a tape SAN for purposes of backup; to enable sharing via FC, one or more FC ports must be configured to be in target mode. Configuring a port to be in target mode requires the appliance to be reset, but multiple ports may be configured to be in target mode simultaneously. The mode of a port will be preserved across any subsequent reboots or upgrades. You must have root permissions to change the mode of a port. Each FC port is assigned a World Wide Name (WWN), and -- as with other block protocols -FC targets may be grouped into target groups, allowing port bandwidth to be dedicated to specific LUNs or groups of LUNs. Once an FC port is configured as a target, the remotely discovered ports can be examined and verified.
Clustering Considerations
In a cluster, initiators will have two paths (or sets of paths) to each LUN: one path (or set of paths) will be to the head that has imported the storage associated with the LUN; the other path (or set of paths) will be to that head's clustered peer. The first path (or set of paths) are active; the second path (or set of paths) are standby; in the event of a takeover, the active paths will become unavailable, and the standby paths will (after a short time) be transitioned to be active, after which I/O will continue. This approach to multipathing is known as asymmetric logical unit access (ALUA) and -- when coupled with an ALUA-aware initiator -- allows cluster takeover to be transparent to higher-level applications.
Chapter 3 Configuration 97
FC
Initiator Configuration
Initiators are identified by their WWN, and as with other block protocols, aliases can be created for initiators. To aid in creating aliases for FC initiators, a WWN can be selected from the WWNs of discovered ports. Further, and as with other block protocols, initiators can be collected into groups. When a LUN is associated with a specific initiator group, the LUN will only be visible to initiators in the group. In most FC SANs, LUNs will always be associated with the initiator group that corresponds to the system(s) for which the LUN has been created.
Switch Considerations
In general, the FC target works with off-the-shelf FC switches. In particular, the following switches have been tested and are known to work:
Switch vendor Model
All models supporting speeds of 4 Gb/sec and/or 8 Gb/sec All models supporting speeds of 4 Gb/sec and/or 8 Gb/sec All models supporting speeds of 4 Gb/sec and/or 8 Gb/sec.
Clustering Considerations
As discussed in target clustering considerations, the appliance is an ALUA-compliant array. Properly configuring an FC initiator in an ALUA environment requires an ALUA-aware driver, and may require initiator-specific tuning. The following initiators have been tested and are known to work in a cluster:
Operating system HBA Additional information
QLogic, Emulex Configuration notes QLogic, Emulex Configuration notes QLogic, Emulex Configuration notes
Red Hat Enterprise Linux 5.4 QLogic, Emulex Configuration notes Oracle Enterprise Linux 5.4 VMware ESX 4.0 QLogic, Emulex Configuration notes QLogic, Emulex Configuration notes
Performance Considerations
FC performance can be observed via analytics, whereby one can breakdown operations or throughput by initiator, target, or LUN:
98
FC
For operations, one can also breakdown by offset, latency, size and SCSI command, allowing one to understand not just the what but the how and why of FC operations.
Troubleshooting
Queue Overruns
The appliance has been designed to utilize a global set of resources to service LUNs on each head. It is therefore not generally necessary to restrict queue depths on clients as the FC ports in the appliance can handle a large number of concurrent requests. Even so, there exists the remote possibility that these queues can be overrun, resulting in SCSI transport errors. Such queue overruns are often associated with one or more of the following:
Overloaded ports on the front end - too many hosts associated with one FC port and/or too many LUNs accessed through one FC port Degraded appliance operating modes, such as a cluster takeover in what is designed to be an active-active cluster configuration
Chapter 3 Configuration
99
FC
While the possibility of queue overruns is remote, it can be eliminated entirely if one is willing to limit queue depth on a per-client basis. To determine a suitable queue depth limit, one should take the number of target ports multiplied by the maximum concurrent commands per port (2048) and divide the product by the number of LUNs provisioned. To accommodate degraded operating modes, one should sum the number of LUNs across cluster peers to determine the number of LUNs, but take as the number of target ports the minimum of the two cluster peers. For example, in an active-active 7410 dual headed cluster with one head having 2 FC ports and 100 LUNs and the other head having 4 FC ports and 28 LUNs, one should take the pessimal maximum queue depth to be two ports times 2048 commands divided by 100 LUNs plus 28 LUNs -- or 32 commands per LUN. Tuning the maximum queue depth is initiator specific, but on Solaris, this is achieved by adjusting the global variable ssd_max_throttle.
Link-level Issues
To troubleshoot link-level issues such as broken or flakey optics or a poorly seated cable, look at the error statistics for each FC port: if any number is either significantly non-zero or increasing, that may be an indicator that link-level issues have been encountered, and that link-level diagnostics should be performed.
BUI
Changing modes of FC ports
To make use of FC ports, set them to Target mode on the Configuration > SAN screen of the BUI, using the drop-down menu shown in the screenshot below. You must have root permissions to perform this action. Note that in a cluster configuration, you will set ports to Target mode on each head node separately, see the clustering considerations section.
After setting desired ports to Target, click the Apply button. A confirmation message will appear notifying you that the appliance will reboot immediately. Confirm that you want to reboot.
100 Sun ZFS Storage 7000 System Administration Guide November 2010
FC
When the appliance boots, the active FC targets appear with the the move icon appears.
On the Initiators screen, drag initiators to the FC Initiator Groups list to create new groups or add to existing groups.
Chapter 3 Configuration 101
FC
Click the Apply button to commit the new Initiator Group. Now you can create a LUN that has exclusive access to the client initiator group.
CLI
Changing modes of FC ports
dory:configuration san targets fc> set targets="wwn.2101001B32A11639" targets = wwn.2101001B32A11639 (uncommitted) dory:configuration san targets fc> commit
FC
Targets: NAME MODE WWN PORT SPEED target-000 target wwn.2100001B32811639 PCIe 5: Port 1 4 Gbit/s target-001 initiator wwn.2101001B32A11639 PCIe 5: Port 2 0 Gbit/s target-002 initiator wwn.2100001B32812239 PCIe 2: Port 1 0 Gbit/s target-003 target wwn.2101001B32A12239 PCIe 2: Port 2 0 Gbit/s dory:configuration san targets fc> select target-000 dory:configuration san targets fc target-000> show Properties: wwn = wwn.2100001B32811639 port = PCIe 5: Port 1 mode = target speed = 4 Gbit/s discovered_ports = 6 link_failure_count = 0 loss_of_sync_count = 0 loss_of_signal_count = 0 protocol_error_count = 0 invalid_tx_word_count = 0 invalid_crc_count = 0 Ports: PORT WWN ALIAS MANUFACTURER port-000 wwn.2100001B3281A339 longjaw-1 QLogic Corporation port-001 wwn.2101001B32A1A339 longjaw-2 QLogic Corporation port-002 wwn.2100001B3281AC39 thicktail-1 QLogic Corporation port-003 wwn.2101001B32A1AC39 thicktail-2 QLogic Corporation port-004 wwn.2100001B3281E339 <none> QLogic Corporation port-005 wwn.2101001B32A1E339 <none> QLogic Corporation
FC
FCMPxIO
run(cd ..); } printf(Creating group for %s ... , group); run(groups); try { run(select name= + group); printf((already exists)\n); run(cd ..); } catch (err) { if (err.code != EAKSH_ENTITY_BADSELECT) throw err; run(create); set(name, group); run(set initiators= + initiators); run(commit); printf(done\n); } run(cd ..); }
FCMPxIO
Configuring FC Client Multipathing
The Sun ZFS Storage 7000 series uses Asymmetric Logical Unit Access (ALUA) to provide FC target multipathing support. Please refer to SCSI Primary Commands (SPC) definition on t10 at http://www.t10.org (http://www.t10.org) if you need more information. The following instructions provide a guide for setting up the FC host clients that are connected to a FC target enabled clustered appliance.
FCMPxIO
PathVerifyEnabled
Enables path verification by MPIO on all paths every N seconds . N depends on the value set in PathVerificationPeriod.
Disabled
Enabled
PathVerificationPeriod Used to indicate the periodicity (in seconds) with which MPIO has been requested to 30 seconds 5 seconds perform path verification. This field is only used if PathVerifyEnabled = TRUE. RetryInterval Specifies the interval of time after which a failed request is retried (after the DSM has decided so, and assuming that the IO has been retried less number of times than RetryCount). Specifies the number of times a failed IO occurs before the DSM determines that a failing request must be retried. Controls the amount of time (in seconds) that the multipath pseudo-LUN will continue to remain in system memory, even after losing all paths to the device. 1 second 5 seconds
RetryCount PDORemovePeriod
300
Errata:
Emulex HBAs and Windows Server 2008: When using a Windows Server 2008 client equipped with Emulex HBAs, a change to the HBA driver parameter is required. In order to ensure uninterrupted I/O during a cluster failover/failback operation, you must modify the Emulex HBA NodeTimeout value, setting it to 0. Use the Emulex OCManager Utility, available from http://www.emulex.com (http://www.emulex.com) to adjust this parameter.
106
FCMPxIO
3. Modify /etc/multipath.conf to enable SUN arrays by adding the following lines under the devices sections.
device { vendor product
"SUN" "Sun Storage 7310" or "Sun Storage 7410" (depending on storage system) getuid_callout "/sbin/scsi_id -g -u -s /block/%n" prio_callout "/sbin/mpath_prio_alua /dev/%n" hardware_handler "0" path_grouping_policy group_by_prio failback immediate no_path_retry queue rr_min_io 100 path_checker tur rr_weight uniform }
5. Run the multipath command after the SCSI bus rescan is finished to verify multipath I/O is enabled. Note that standby paths will be shown as due to a known Linux bug. For this reason, it is recommended that users verify the paths are actually operational before putting the system into production. For more details, refer to the Troubleshooting section below.
#multipath ll sdd: checker msg is "tur checker reports path is down" mpath1 (3600144f094f0bd0300004b31c88f0001) dm-2 SUN,Sun Storage 7410 (or 7310) [size=20G][features=1 queue_if_no_path][hwhandler=0][rw] \_ round-robin 0 [prio=50][active] \_ 2:0:0:0 sdb 8:16 [active][ready] \_ round-robin 0 [prio=0][enabled] \_ 2:0:1:0 sdd 8:48 [failed][faulty]
FCMPxIO
# esxcli nmp device list naa.600144f0ed81720500004bb3c1f60002 Device Display Name: SUN Fibre Channel Disk (naa.600144f0ed81720500004bb3c1f60002) Storage Array Type: VMW_SATP_DEFAULT_AA Storage Array Type Device Config: Path Selection Policy: VMW_PSP_FIXED Path Selection Policy Device Config: {preferred=vmhba0:C0:T1:L0;current=vmhba0:C0:T1:L0} Working Paths: vmhba0:C0:T1:L0
VMW_SATP_DEFAULT_AA is the default plugin. This plugin is not ALUA-capable. 2. Verify the correct Vendor and Model string for the specific Sun Storage 7000 with the dmesg command.
# dmesg | grep SUN [ 29.826974] Vendor: SUN Model: Sun Storage 7410 Rev: 1.0
3. Add a rule to enable the ALUA plugin for the Sun Storage 7000 by using the esxcli nmp satp addrule command.
# esxcli nmp satp addrule -s VMW_SATP_ALUA -e "Sun Storage 7000" -V "SUN" -M "Sun Storage 7410" -c "tpgs_on"
or
# esxcli nmp satp addrule -s VMW_SATP_ALUA -e "Sun Storage 7000" -V "SUN" -M "Sun Storage 7310" -c "tpgs_on"
5. Reboot the VMware ESX server. When server has rebooted, check to ensure the correct plugin is now in effect with the esxcli nmp device list command.
# esxcli nmp device list naa.600144f0ed81720500004bb3c1f60002 Device Display Name: SUN Fibre Channel Disk (naa.600144f0ed81720500004bb3c1f60002) Storage Array Type: VMW_SATP_ALUA Storage Array Type Device Config: {implicit_support=on;explicit_support=off; explicit_allow=on;alua_followover=on;{TPG_id=0,TPG_state=STBY}{TPG_id=1,TPG_state=AO}} Path Selection Policy: VMW_PSP_MRU Path Selection Policy Device Config: Current Path=vmhba1:C0:T1:L0 Working Paths: vmhba1:C0:T1:L0
Troubleshooting
This section describes troubleshooting known issues. Multipath-tools version 0.4.7 bundled in RHEL 5.4 and OEL 5.4 is unable to recognize paths in ALUA standby access state In SCSI spec, a target port which is in standby state does not respond to Test Unit Ready command, so standby paths are shown as in multipath command output.
108 Sun ZFS Storage 7000 System Administration Guide November 2010
iSCSI
The fix for this problem is committed into the multipath-tool source tree on 2009-04-21 (which is later than its 0.4.8 official release). Users have to obtain the latest version of the multipath-tool source code from: http://christophe.varoqui.free.fr/ (http://christophe.varoqui.free.fr/) Users should get the latest source code from its git repository. The multipath-tools-0.4.8.tar.bz2 tarball does not contain the fix. Finally, the status shown in multipath command output does not impact functionalities like I/O and failover/failback, so updating the package is not mandatory.
See Also
http://docs.sun.com/source/819-0139-12/ (http://docs.sun.com/source/819-0139-12/)
http://www.redhat.com/docs/manuals/csgfs/browse/4.6/DM_Multipath/index.html (http://www.redhat.com/docs/manuals/csgfs/browse/4.6/DM_Multipath/index.html)
iSCSI
Introduction
Internet SCSI is one of several block protocols supported by the appliance for sharing SCSI based storage.
Target Configuration
When using the iSCSI protocol, the target portal refers to the unique combination of an IP address and TCP port number by which an initiator can contact a target. When using the iSCSI protocol, a target portal group is a collection of target portals. Target portal groups are managed transparently; each network interface has a corresponding target portal group with that interface's active addresses. Binding a target to an interface advertises that iSCSI target using the portal group associated with that interface.
Chapter 3 Configuration 109
iSCSI
An IQN (iSCSI qualified name) is the unique identifier of a device in an iSCSI network. iSCSI uses the form iqn.date.authority:uniqueid for IQNs. For example, the appliance may use the IQN: iqn.1986-03.com.sun:02:c7824a5b-f3ea-6038-c79d-ca443337d92c to identify one of its iSCSI targets. This name shows that this is an iSCSI device built by a company registered in March of 1986. The naming authority is just the DNS name of the company reversed, in this case, "com.sun". Everything following is a unique ID that Sun uses to identify the target.
Target Property Description
Target IQN Alias Authentication mode CHAP name CHAP secret Network interfaces
The IQN for this target. The IQN can be manually specified or auto-generated. A human-readable nickname for this target. One of None, CHAP, or RADIUS. If CHAP authentication is used, the CHAP username. If CHAP authentication is used, the CHAP secret. The interfaces whose target portals are used to export this target.
In addition to those properties, the BUI indicates whether a target is online or offline:
icon description
Clustering Considerations
On clustered platforms, targets which have at least one active interface on that cluster node will be online. Take care when assigning interfaces to targets; a target may be configured to use portal groups on disjoint head nodes. In that situation, the target will be online on both heads yet will export different LUNs depending on the storage owned by each head node. As network interfaces migrate between cluster heads as part of takeover/failback or ownership changes, iSCSI targets will move online and offline as their respective network interfaces are imported and exported. Targets which are bound to an IPMP interface will be advertised only via the addresses of that IPMP group. That target will not be reachable via that group's test addresses. Targets bound to interfaces built on top of a LACP aggregation will use the address of that aggregation. If a LACP aggregation is added to an IPMP group, a target can no longer use that aggregation's interface, as that address will become an IPMP test address.
110 Sun ZFS Storage 7000 System Administration Guide November 2010
iSCSI
Initiator Configuration
iSCSI initiators have the following configurable properties.
Property Description
The IQN for this initiator. A human-readable nickname for this initiator. Enables or disables CHAP authentication If CHAP authentication is used, the CHAP username. If CHAP authentication is used, the CHAP secret.
What initiators (and their IQNs) will be accessing the SAN? If you plan on using CHAP authentication, what CHAP credentials does each initiator use? How many iSCSI disks (LUNs) are required, and how big should they be? Do the LUNs need to be shared between multiple initiators?
To allow the Appliance to perform CHAP authentication using RADIUS, the following pieces of information must match:
The Appliance must specify the address of the RADIUS server and a secret to use when communicating with this RADIUS server The RADIUS server (e.g. in its clients file) must have an entry giving the address of this Appliance and specifying the same secret as above The RADIUS server (e.g. in its users file) must have an entry giving the CHAP name and matching CHAP secret of each initiator If the initiator uses its IQN name as its CHAP name (the recommended configuration) then the Appliance does not need a separate Initiator entry for each Initiator box -- the RADIUS server can perform all authentication steps. If the initiator uses a separate CHAP name, then the Appliance must have an Initiator entry for that initiator that specifies the mapping from IQN name to CHAP name. This Initiator entry does NOT need to specify the CHAP secret for the initiator.
Chapter 3 Configuration
iSCSI
A basic configuration for an iSCSI host is a server with two NICs that are dedicated to iSCSI traffic. The NICs are configured by using IPMP. Additional NICs are provided for non-iSCSI traffic to optimize performance. Active multipathing can only be achieved by using the Solaris iSCSI MS/T feature, and the failover and redundancy of an IPMP configuration. *If one NIC fails in an IPMP configuration, IPMP handles the failover. The MPxIO driver does not notice the failure. In a non-IPMP configuration, the MPxIO driver fails and offlines the path. *If one target port fails in an IPMP configuration, the MPxIO driver notices the failure and provides the failover. In a non-IPMP configuration, the MPxIO driver notices the failure and provides the failover. For more information about using the Solaris iSCSI MS/T feature with IPMP and multipathing, see SunSolve Infodoc 207607, Understanding an iSCSI MS/T multi-path configuration. For information about configuring multiple sessions per target, see How to Enable Multiple iSCSI Sessions for a Target in the following document: http://docs.sun.com/app/docs/doc/ 817-5093/gcawf (http://docs.sun.com/app/docs/doc/817-5093/gcawf) For information about configuring IPMP, see Part VI, IPMP, in System Administration Guide: IP Services, in the following document: http://docs.sun.com/app/docs/doc/ 816-4554/ipmptm-1 (http://docs.sun.com/app/docs/doc/816-4554/ipmptm-1)
Troubleshooting
For tips on troubleshooting common iSCSI misconfiguration, see the iSCSI section.
Observing Performance
iSCSI performance can be observed via analytics, whereby one can breakdown operations or throughput by initiator, target, or LUN.
BUI
Creating an Analytics Worksheet
To create an analytics worksheet for observing operations by initiator, complete the following: 1. Go to the Analytics screen. 2. Click the add icon for Add Statistic.
A menu of all statistics appears. 3. Select iSCSI operations > Broken down by initiator under the Protocols section of the menu.
112 Sun ZFS Storage 7000 System Administration Guide November 2010
iSCSI
A graph of the current operations by initiator appears. 4. To observe more detailed analytics, select the initiator from the field to the left of the graph and click the icon.
CLI
Adding an iSCSI target with an auto-generated IQN
ahi:configuration san targets iscsi> create ahi:configuration san targets iscsi target (uncommitted)> set alias="Target 0" ahi:configuration san targets iscsi target (uncommitted)> set auth=none ahi:configuration san targets iscsi target (uncommitted)> set interfaces=nge1 ahi:configuration san targets iscsi target (uncommitted)> commit ahi:configuration san targets iscsi> list TARGET ALIAS target-000 Target 0 | +-> IQN iqn.1986-03.com.sun:02:daf0161f-9f5d-e01a-b5c5-e1efa9578416
SRP
set chapsecret=123456789012abc ahi:configuration san initiators iscsi initiator (uncommitted)> commit ahi:configuration san initiators iscsi> list NAME ALIAS initiator-000 Init 0 | +-> INITIATOR iqn.2001-02.com.acme:initiator12345
SRP
Introduction
SCSI RDMA Protocol, is a protocol supported by the appliance for sharing SCSI based storage over a network that provides RDMA services (i.e. InfiniBand).
Target configuration
SRP ports are shared with other IB port services such as IPoIB and RDMA. The SRP service may only operate in target mode. SRP targets have the following configurable properties.
114 Sun ZFS Storage 7000 System Administration Guide November 2010
SRP
Property
Description
Target EUI
The Extended Unique Identifier (EUI) for this target. The EUI is automatically assigned by the system and is equal to the HCA GUID over which the SRP port service is running. A human-readable nickname for this target.
Alias
In addition to those properties, the BUI indicates whether a target is online or offline:
icon description
Clustering Considerations
On clustered platforms, peer targets should be configured into the same target group for highly available (multi-pathed) configurations. SRP multipathed I/O is an initiator-side configuration option.
Initiator configuration
SRP initiators have the following configurable properties.
Property Description
The EUI for this initiator. A human-readable nickname for this initiator.
Observing Performance
SRP performance can be observed via analytics, whereby one can breakdown operations or throughput by initiator or target. {{Server}}/wiki/images/cfg_san_srp.png
Multipathing Considerations
The following sections provide a guide for setting up host clients.
SRP
2. Run the install.pl script with --all option. Note that the the all option will install SRP and associated tools. If the command fails because of package dependency, review the results and install all the packages it asks for, including 'gcc', if listed. 3. After the install is complete, read all of the SRP Release notes, as follows:
4. The Release Notes recommend using the -n flag for all srp_daemon invocations.
To execute SRP daemon as a daemon you may execute run_srp_daemon. Provide with it the same options used for running srp_daemon. This script is found under /usr/local/ofed/sbin/ or <prefix>/sbin/. Be sure only one instance of run_srp_daemon runs per port. To execute SRP daemon as a daemon on all the ports, execute srp_daemon.sh (found under /usr/local/ofed/sbin/ or <prefix>/sbin/). Note that srp_daemon.sh sends its log to /var/log/srp_daemon.log.
5. To configure this script to execute automatically when the InfiniBand driver starts, alter one of the values as follows:
OR
Change the value of SRPHA_ENABLE in /etc/infiniband/openib.conf to "yes". Note that the latter option also enables SRP High Availability.
Edit /etc/infiniband/openib.conf and set SRPHA_ENABLE to "yes". Restart multipathd and OpenIB, or reboot the initiator system, as follows:
8. To display all the available SRP target IO Controllers on the network, use one of the following:
srp_daemon -a -o -v ibsrpdm
116 Sun ZFS Storage 7000 System Administration Guide November 2010
SRP
9. To add SCSI devices corresponding to a particular target, connect to appropriate device directory:
cd /sys/class/infiniband_srp/srp-mthca0-1
10. Enumerate the remote IO Controllers in a format that add_target will expect using one of the following, use -n below if you want to set the initiator-extension automatically:
srp_daemon -o -c
OR
ibsrpdm -c
11. Echo the appropriate line of output onto the system file add_target:
echo id_ext=0003ba0001002eac,ioc_guid=0003ba0001002eac,\ dgid=fe800000000000000003ba0001002ead,\ pkey=ffff,service_id=0003ba0001002eac > add_target
12. Use contents of /var/log/messages to determine which scsi device corresponds to each added target
On some Linux, lsscsi should show the newly created device. Using the -H and -v options gives more device information, alternatively run:
cat /proc/scsi/scsi
13. Now you can do something with the device, such as:
mkfs /dev/sdd
This can happen when the I/O path to the active target is interrupted via a link failure or cluster takeover. Workaround: To resume performance, I/O should be stopped on the initiator and a new session established to the target. From that point, I/O may be started and continue with the original level of throughput.
Linux SRP initiator may keep session open after a cluster takeover and multi-path failover.
I/Os will continue but the srp_daemon will report that it has not connected to the takeover target. This problem can be seen by running:
srp_daemon -o -c -n -i <ib-device> -p <port-num>
Chapter 3 Configuration 117
SRP
The srp_daemon will report those targets to which it has not already connected. The expected behavior is for the srp_daemon to show the failed controller. Workaround: Restart the srp_daemon.
The client message log will report SRP failures and I/O errors in /var/log/messages:
Jan 27 11:57:03 ib-client-2 kernel: host11: SRP abort called Jan 27 11:57:37 ib-client-2 kernel: host11: ib_srp: failed send status 12 Jan 27 11:57:37 ib-client-2 kernel: ib_srp: host11: add qp_in_err timer Jan 27 11:57:37 ib-client-2 kernel: host11: ib_srp: failed send status 5 Jan 27 11:57:38 ib-client-2 kernel: host11: SRP abort called Jan 27 11:57:38 ib-client-2 kernel: host11: SRP reset_device called Jan 27 11:57:38 ib-client-2 kernel: host11: ib_srp: SRP reset_host called state 0 qp_err 1 Jan 27 11:57:58 ib-client-2 kernel: host11: SRP abort called Jan 27 11:57:58 ib-client-2 kernel: host11: SRP reset_device called Jan 27 11:57:58 ib-client-2 kernel: host11: ib_srp: SRP reset_host called state 0 qp_err 1 Jan 27 11:58:02 ib-client-2 kernel: host11: ib_srp: srp_qp_in_err_timer called Jan 27 11:58:02 ib-client-2 kernel: host11: ib_srp: srp_qp_in_err_timer flushed reset - done Jan 27 11:58:02 ib-client-2 kernel: host11: ib_srp: Got failed path rec status -22 Jan 27 11:58:02 ib-client-2 kernel: host11: ib_srp: Path record query failed Jan 27 11:58:02 ib-client-2 kernel: host11: ib_srp: reconnect failed (-22), removing target port. Jan 27 11:58:08 ib-client-2 kernel: scsi 11:0:0:0: scsi: Device offlined - not ready after error recovery Jan 27 11:58:08 ib-client-2 multipathd: sdc: tur checker reports path is down Jan 27 11:58:08 ib-client-2 multipathd: checker failed path 8:32 in map mpath148 Jan 27 11:58:08 ib-client-2 multipathd: mpath148: Entering recovery mode: max_retries=200 Jan 27 11:58:08 ib-client-2 multipathd: mpath148: remaining active paths: 0 Jan 27 11:58:08 ib-client-2 multipathd: sdc: remove path (uevent) Jan 27 11:58:08 ib-client-2 multipathd: mpath148: map in use Jan 27 11:58:08 ib-client-2 multipathd: mpath148: cant flush Jan 27 11:58:08 ib-client-2 multipathd: mpath148: Entering recovery mode: max_retries=200 Jan 27 11:58:08 ib-client-2 multipathd: dm-2: add map (uevent) Jan 27 11:58:08 ib-client-2 multipathd: dm-2: devmap already registered Jan 27 11:58:08 ib-client-2 kernel: scsi 11:0:0:0: scsi: Device offlined - not ready after error recovery Jan 27 11:58:08 ib-client-2 last message repeated 49 times Jan 27 11:58:08 ib-client-2 kernel: scsi 11:0:0:0: rejecting I/O to dead device Jan 27 11:58:08 ib-client-2 kernel: device-mapper: multipath: Failing path 8:32. Jan 27 11:58:08 ib-client-2 kernel: scsi 11:0:0:0: rejecting I/O to dead device
Device mapper state may become out of date preventing devices being added to the map table.
SRP
ib-client-1:~ # multipath -d reload: maguro2LUN (3600144f08068363800004b6075db0001) n/a SUN,Sun Storage 7310 [size=40G][features=0][hwhandler=0][n/a] \_ round-robin 0 [prio=50][undef] \_ 18:0:0:1 sde 8:64 [undef][ready] \_ round-robin 0 [prio=1][undef] \_ 17:0:0:1 sdc 8:32 [failed][ghost]
Workaround: The client must be rebooted to clear the stale device mapper state.
Upon cluster takeover, a multipath device may not swtich to the standby path as expected. The problem is with the SRP initiator. The initiator is in an infinite loop write, fail, abort, reset device, reset target operations. When this problem happens, the following messages will be logged in the /var/log/messages log:
Jan 26 Device Jan 26 Device Jan 26 Jan 26 Jan 26 Jan 26 Jan 26 17:42:12 mysystem kernel: sd 13:0:0:0: [sdd] not ready: Sense Key : Not Ready [current] 17:42:12 mysystem kernel: sd 13:0:0:0: [sdd] not ready: Add. Sense: Logical unit not accessible, target port in standby state 17:42:12 mysystem kernel: end_request: I/O error, dev sdd, sector 512248 17:42:12 mysystem kernel: scsi host13: SRP abort called 17:42:12 mysystem kernel: scsi host13: SRP reset_device called 17:42:12 mysystem kernel: scsi host13: ib_srp: SRP reset_host called state 0 qp_err 0 17:42:21 mysystem multipathd: 8:48: mark as failed
VMWare 4.0
The VMware Native MultiPath Plugin (nmp) has two components that can be changed on a device by device, path by path, or array basis.
SRP
To manually change this you need to use the ESX CLI to add a rule to have the ALUA plugin claim the 7000 luns.
# esxcli nmp satp addrule -s VMW_SATP_ALUA \ -e "Sun Storage 7000" -V "SUN" -M "Sun Storage 7410" -c "tpgs_on" options are: -s -e -V -M -c VMW_SATP_ALUA - for the ALUA SATP description of the rule Vendor Model claim option for Target Portal Group (7000 seems to support implicit)
If no luns have been scanned/discovered, you can simply rescan the adapter to find new luns, they should be claimed by the ALUA plugin. If luns are already present, reboot the ESX host. After the reboot, we should see the luns being listed under the VMW_SATP_ALUE array type.
# esxcli nmp device list naa.600144f096bb823800004b707f2d0001 Device Display Name: Local SUN Disk (naa.600144f096bb823800004b707f2d0001) Storage Array Type: VMW_SATP_ALUA Storage Array Type Device Config: {implicit_support=on;explicit_support=off;explicit_allow=on; alua_followover=on; {TPG_id=0,TPG_state=AO}{TPG_id=1,TPG_state=STBY}} Path Selection Policy: VMW_PSP_MRU Path Selection Policy Device Config: Current Path=vmhba_mlx4_1.1.1:C0:T1:L0 Working Paths: vmhba_mlx4_1.1.1:C0:T1:L0
Relevant lun path lists should show a Active and a Standby path
# esxcli nmp path list gsan.80fe53553e0100282100-gsan.80fe8f583e0100282100 -naa.600144f096bb823800004b707f2d0001 Runtime Name: vmhba_mlx4_1.1.1:C0:T2:L0 Device: naa.600144f096bb823800004b707f2d0001 Device Display Name: Local SUN Disk (naa.600144f096bb823800004b707f2d0001) Group State: standby Storage Array Type Path Config: {TPG_id=1,TPG_state=STBY,RTP_id=256,RTP_health=UP} Path Selection Policy Path Config: {non-current path} gsan.80fe53553e0100282100-gsan.80fe73583e0100282100 -naa.600144f096bb823800004b707f2d0001 Runtime Name: vmhba_mlx4_1.1.1:C0:T1:L0 Device: naa.600144f096bb823800004b707f2d0001 Device Display Name: Local SUN Disk (naa.600144f096bb823800004b707f2d0001) Group State: active Storage Array Type Path Config: {TPG_id=0,TPG_state=AO,RTP_id=2,RTP_health=UP} Path Selection Policy Path Config: {current path}
120 Sun ZFS Storage 7000 System Administration Guide November 2010
SRP
The esxcl nmp path list command should report an active and a standby path one each for the SRP targets in a cluster configuration.
[root@ib-client-5 vmware]# esxcli nmp path list gsan.80fe53553e0100282100-gsan.80fe8f583e0100282100naa.600144f096bb823800004b707f2d0001 Runtime Name: vmhba_mlx4_1.1.1:C0:T2:L0 Device: naa.600144f096bb823800004b707f2d0001 Device Display Name: Local SUN Disk (naa.600144f096bb823800004b707f2d0001) Group State: standby Storage Array Type Path Config: {TPG_id=1,TPG_state=STBY,RTP_id=256,RTP_health=UP} Path Selection Policy Path Config: {non-current path} gsan.80fe53553e0100282100-gsan.80fe73583e0100282100naa.600144f096bb823800004b707f2d0001 Runtime Name: vmhba_mlx4_1.1.1:C0:T1:L0 Device: naa.600144f096bb823800004b707f2d0001 Device Display Name: Local SUN Disk (naa.600144f096bb823800004b707f2d0001) Group State: active Storage Array Type Path Config: {TPG_id=0,TPG_state=AO,RTP_id=2,RTP_health=UP} Path Selection Policy Path Config: {current path}
When this problem occurs, the active or standby path may not be shown in the output of esxcli nmp path list. Workaround: None
When this problem happens, the Linux guest system log will report in its /var/log/messages log:
Feb 10 16:10:00 ib-client-5 vmkernel: 1:21:41:36.385 cpu3:4421)<3>ib_srp: Send tsk_mgmt target[vmhba_mlx4_1.1.1:2] out of TX_IU head 769313 tail 769313 lim 0
BUI
This section describes instructions for using the BUI to configure iSER and SRP targets and initiators.
SRP
1. To configure ibd interfaces, select the ibd interface (or ipmp), and drag it to the Datalinks list to create the datalink on the Configuration > Network screen. Then drag the Datalink to the Interfaces list to create a new interface.
2. To create an iSER target, got to the Configuration > SAN screen. Click the iSCSI Targets link add icon to add a new iSER target with an alias. and then click the 3. To create a target group, drag the target you just created to the iSCSI Target Group list.
122
SRP
4. To create an initiator, click the Initiator link and then click the iSCSI initiators link. Click the add icon to add a new initiator. Enter the Initiator IQN and an alias and click OK. While creating an initiator group is optional, if you don't create a group, the LUN associated with the target will be available to all initiators. To create a group, drag the initiator to the iSCSI Initiator Groups list.
add icon 5. To create a LUN, go to the Shares screen and click the LUN link. Then click the and associate the new LUN with target or initiator groups you created already using the Target Group and Initiator Groups menu.
Chapter 3 Configuration
123
SRP
6. Two client initiators are supported: RedHat 4 and SUSE 11, use any method to discover iSER LUNs on the client.
5. (Optional) To create an initiator and initiator group on the Initiator screen, click the collect GUID from initiator, assign it a name, and drag it to initiator group.
6. To create a LUN and associate it with the SRP target and initiators you created in the previous steps, go to the Shares screen. 7. Click the LUN link and then click the LUN icon. Use the Target Group and Initiator Group menus on the Create LUN dialog to select the SRP groups to associate with the LUN. The following SRP initiators have been tested and are known to work:
CLI
The following example demonstrates how to create an SRP target group named targetSRPgroup using the CLI configuration san targets srp groups context:
swallower:configuration san targets srp groups> create swallower:configuration san targets srp group (uncommitted)> set name=targetSRPgroup name = targetSRPgroup (uncommitted) swallower:configuration san targets srp group (uncommitted)> set targets=eui.0002C903000489A4 targets = eui.0002C903000489A4 (uncommitted) swallower:configuration san targets srp group (uncommitted)> commit swallower:configuration san targets srp groups> list GROUP NAME group-000 targetSRPgroup
124 Sun ZFS Storage 7000 System Administration Guide November 2010
Users
The following example demonstrates how to create a LUN and associate it with the targetSRPgroup using the CLI shares CLI context:
swallower:shares default> lun mylun swallower:shares default/mylun (uncommitted)> set targetgroup=targetSRPgroup targetgroup = targetSRPgroup (uncommitted) swallower:shares default/mylun (uncommitted)> set volsize=10 volsize = 10 (uncommitted) swallower:shares default/mylun (uncommitted)> commit swallower:shares default> list Filesystems: NAME SIZE MOUNTPOINT test 38K /export/test LUNs: NAME SIZE GUID mylun 10G 600144F0E9D19FFB00004B82DF490001
Users
Introduction
This section describes users who may administer the appliance, roles to manage authorizations granted to users, and how to add them to the system using the BUI or CLI. Users can either be:
Local users - all their account information is saved on the appliance. Directory users - this uses existing NIS or LDAP accounts, and saves supplemental authorization settings on the appliance. This allows existing NIS or LDAP users to be granted privileges to login and administer the appliance.
Roles
A role is a collection of privileges that can be assigned to users. It may be desirable to create administrator and operator roles, with different authorization levels. Staff members may be assigned any role that is suitable for their needs, without assigning unnecessary privileges. The use of roles is considered to be much more secure than the use of shared administrator passwords, for example, giving everyone the root password. Roles restrict users to necessary authorizations only, and also attribute their actions to their individual username in the Audit log.
Chapter 3 Configuration 125
Users
By default, a role called "Basic administration" exists, which contains very basic authorizations.
Authorizations
Authorizations allow users to perform specific tasks, such as creating shares, rebooting the appliance, and updating the system software. Authorizations are grouped into Scopes, and each scope may have a set of optional filters to narrow the scope of the authorization. For example, rather than an authorization to restart all services, a filter can be used so that this authorization can restart the HTTP service only. Available scopes are as follows, with a single example authorization and an example filter (if available) for each scope:
Scope Example Authorization Example Filter
Active Directory Alerts Analytics Clustering Hardware Networking Projects and shares Roles Services Shares property schema System Update Users Worksheet
Join an Active Directory domain Configure alert filters and thresholds Read a statistic with this drilldown present Failback resources to a cluster peer Online and offline disks
Configure networking devices, datalinks, and interfaces . Change general properties of projects and shares Configure authorizations for a role Restart a service Modify property schema Reboot the appliance Update system software Change a password Modify worksheet Pool, project, share Role name Service name . Appliance name . Username Worksheet name
Browse the scopes in the BUI to see what other authorizations exist. There are currently over fifty different authorizations available, and additional authorizations may be added in future appliance software updates.
126
Users
Properties
The following properties may be set when managing users and roles.
Users
All of the following properties may be set when adding a user, and a subset of these when editing a user:
Property Description
Directory (access credentials from NIS or LDAP), or Local (save user on this appliance) Unique name for user User description For Local users, type the initial password in both of these fields If enabled, when users login to the appliance they must provide a text description of the purpose of their login. This annotation may be used to track work performed for requests in a ticketing system, and the ticket ID can be used as the session annotation. The session annotation appears in the Audit log. If enabled, the user will only be able to view the screen in the "Kiosk screen" setting. This may be used for restrict a user to only see the dashboard, for example. A kiosk user will not be able to access the appliance via the CLI. Screen that this kiosk user is restricted to, if "Kiosk user" is enabled The roles possessed by this user These authorizations are excluded from those normally available due to the selected roles
Kiosk user
Roles
These properties may be set when managing roles:
Property Description
Name of the role as it will be shown in lists Verbose description of role if desired Authorizations for this role
Chapter 3 Configuration
127
Users
BUI
The BUI Users page lists both users and groups, along with buttons for administration. Mouse-over an entry to expose its clone, edit and destroy buttons. Double-click an entry to view its edit screen. The buttons are as follows:
icon description
Add new user/role. This will display a new dialog where the required properties may be entered. Displays a search box. Enter a search string and hit enter to search the user/role lists for that text, and only display entries that match. Click this icon again or "Show All" to return to the full listings. Clone user/role. Add a new user/role starting with fields based on the values from this entry Edit user/role Remove user/role/authorization
Refer to the Tasks for required steps to add users, roles and authorizations.
CLI
The actions possible in the BUI are also available in the CLI. Type help as you navigate through user, role, and authorization administration to list the available commands. To demonstrate the CLI user and roles interface, the following example adds the NIS user "brendan" to the system, and grants the authorization to restart the HTTP service. This includes creating a role for this authorization. We will start by creating the role, which we will call "webadmin":
caji:> configuration roles caji:configuration roles> role webadmin caji:configuration roles webadmin (uncommitted)> set description="web server administrator" description = web server administrator (uncommitted) caji:configuration roles webadmin (uncommitted)> commit caji:configuration roles> show Roles: NAME basic webadmin
128
Users
Now that we have created the webadmin role, we will add the authorization to restart the HTTP service; This example also shows the output of tab-completion, which lists valid input and is useful when determining what are valid scopes and filter options:
caji:configuration roles> select webadmin caji:configuration roles webadmin> authorizations caji:configuration roles webadmin authorizations> create caji:configuration roles webadmin auth (uncommitted)> set scope=tab ad cluster net schema update alert hardware replication stat user appliance nas role svc worksheet caji:configuration roles webadmin auth (uncommitted)> set scope=svc scope = svc caji:configuration roles webadmin auth (uncommitted)> show Properties: scope = svc service = * allow_administer = false allow_configure = false allow_restart = false caji:configuration roles webadmin auth (uncommitted)> set service=tab * ftp ipmp nis ssh ad http iscsi ntp tags smb identity ldap routing vscan datalink:nge0 idmap ndmp scrk dns interface:nge0 nfs snmp caji:configuration roles webadmin auth (uncommitted)> set service=http service = http (uncommitted) caji:configuration roles webadmin auth (uncommitted)> set allow_restart=true allow_restart = true (uncommitted) caji:configuration roles webadmin auth (uncommitted)> commit caji:configuration roles webadmin authorizations> list NAME OBJECT PERMISSIONS auth-000 svc.http restart
Now that the role has been created, we can enter the users section to create our user "brendan" and assign the role "webadmin":
caji:configuration roles webadmin authorizations> cd ../../.. caji:configuration> users caji:configuration users> netuser brendan caji:configuration users> show Users: NAME Brendan Gregg Super-User USERNAME brendan root UID 130948 0 TYPE Dir Loc
caji:configuration users> select brendan caji:configuration users brendan> show Properties: logname = brendan fullname = Brendan Gregg initial_password = ************* require_annotation = false
Chapter 3 Configuration 129
Users
roles = basic kiosk_mode = false kiosk_screen = status/dashboard Children: exceptions => Configure this users exceptions preferences => Configure user preferences caji:configuration users brendan> set roles=basic,webadmin roles = basic,webadmin (uncommitted) caji:configuration users brendan> commit
The user brendan should now be able to login using their NIS password, and restart the HTTP service on the appliance.
Tasks
The following are example tasks for user and role administration. If you wish to use the CLI, it can help to practice these tasks in the BUI first - which is more intuitive and will help convey concepts.
BUI
Adding an administrator
1
Check that an appropriate administrator role is listed in the Roles list. If not, add a role (see separate task). Click the add icon next to Users.
2 3 4 5
Set user properties. Click the checkbox for the administrator role. Click the Add button at the top of the dialog. The new user appears in the Users list.
Adding a role
1 2 3 4
130
Click the
Set the name of the role, and description. Add authorizations to the role (see separate task). Click the Add button at the top of the dialog. The new role appears in the Roles list.
Sun ZFS Storage 7000 System Administration Guide November 2010
Users
Select "Scope". If filters are available for this scope, they will appear beneath the Scope selector. Select filters if appropriate. Click the checkbox for all authorizations you wish to add. Click the Add button in the Authorization section. The authorizations will be added to the bottom list of the dialog box.
Mouse-over the authorization in the bottom list, and click the Click the Apply button at the top of the dialog.
CLI
Adding an administrator
1 2
Go to configuration roles. Type show. Find a role with appropriate administration authorizations by running select on each role and then authorizations show. If an appropriate role does not exist, start by creating the role (see separate task). Go to configuration users. For Directory users (NIS, LDAP), type netuser followed by the existing username you wish to add. For Local users, type user followed by the username you wish to add; then type show to see the properties that need to be set and set them, then type commit. At this point you have a created user, but haven't customized all their properties yet. Type select followed by their username. Now type show to see the full list of preferences. Roles and authorization exceptions may now be added, as well as user preferences.
Chapter 3 Configuration 131
3 4
Users
Adding a role
1 2 3 4
Go to configuration roles. Type role followed by the role name you wish to create. Set the description, then commit the role. Add authorizations to the role (see separate task).
Go to configuration roles. Type select followed by the role name. Type authorizations. Type create to add an authorization Type set scope= followed by the scope name. Use tab-completion to see the list. Type show to see both available filters and authorizations. set the desired authorizations to true, and set the filters (if available). Tab-completion helps show which filter settings are valid. Type commit. The authorization has now been added.
Go to configuration roles. Type select followed by the role name. Type authorizations. Type show to list authorizations. Type destroy followed by the authorization name (eg, "auth-001"). The authorization has now been destroyed.
Sun ZFS Storage 7000 System Administration Guide November 2010
132
Preferences
Generic
Adding a user who can only view the dashboard
1 2 3
Add either a Directory or Local user (see separate task). Set Kiosk mode to true, and check that the Kiosk screen is set to "status/dashboard". The user should now be able to login, but only view the dashboard.
Preferences
Introduction
This section contains preference settings for your locality, session properties, and SSH keys.
Property Description
First page the BUI will load after a successful login. By default this is the Status Dashboard. C by default. C and POSIX Localities support only ASCII characters or plain text. ISO 8859-1 supports the following languages: Afrikaans, Basque, Catalan, Danish, Dutch, English, Faeroese, Finnish, French, Galician, German, Icelandic, Irish, Italian, Norwegian, Portuguese, Spanish and Swedish. Time after navigating away from the BUI that the browser will automatically logout the session Annotation text added to audit logs This will make available additional statistics in Analytics RSA/DSA public keys. Text comments can be associated with the keys to help administrators track why they were added. In the BUI, these keys apply only for the current user; to add keys for other users, use the CLI.
Session timeout Current session annotation Advanced analytics statistics SSH Public Keys
BUI
When logged into the BUI, you can set the above preferences for your account, but you cannot set other user account preferences.
Chapter 3 Configuration 133
Preferences
CLI
Preferences may be set in the CLI under configuration users. The following example shows enabling advanced analytics for the "brendan" user account:
caji:> configuration users caji:configuration users> select brendan caji:configuration users brendan> preferences caji:configuration users brendan preferences> show Properties: locale = C login_screen = status/dashboard session_timeout = 15 advanced_analytics = false Children: keys => Manage SSH public keys caji:configuration users brendan preferences> set advanced_analytics=true advanced_analytics = true (uncommitted) caji:configuration users brendan preferences> commit
Set your own preferences in the CLI under configuration preferences. The following example shows setting a session annotation for your own account:
twofish:> configuration preferences twofish:configuration preferences> show Properties: locale = C login_screen = status/dashboard session_timeout = 15 session_annotation = advanced_analytics = false Children: keys => Manage SSH public keys twofish:configuration preferences> set session_annotation="Editing my user preferences" session_annotation = Editing my user preferences (uncommitted) twofish:configuration preferences> commit
Alerts
caji:configuration preferences key (uncommitted)> commit caji:configuration preferences keys> show Keys: NAME MODIFIED key-000 10/12/2009 10:54:58 TYPE DSA COMMENT fw-log1
The key text is just the key text itself (usually hundreds of characters), without spaces.
Alerts
Introduction
This section describes system Alerts, how they are customized, and where to find alert logs. To monitor statistics from Analytics, create custom threshold alerts. To configure the system to respond to certain types of alerts, use Alert actions. Important appliance events trigger alerts, which includes hardware and software faults. These alerts appear in the Maintenance Logs, and may also be configured to execute any of the Alert actions. Alerts are grouped into the following categories:
Category Description
Cluster Custom Hardware Events Hardware Faults NDMP operations Network Phone home Remote replication Service failures Thresholds ZFS pool
Cluster events, including link failures and peer errors Events generated from the custom alert configuration Appliance boot and hardware configuration changes Any hardware fault Backup and restore, start and finished events. This group is available as "NDMP: backup only" and "NDMP: restore only", for just backup or restore events Network port, datalink, and IP interface events and failures Support bundle upload events Send and receive events and failures. This group is available as "Remote replication: source only" and "Remote replication: target only", for just source or target events Software Service failure events Custom alerts based on Analytics statistics Storage pool events, including scrub and hot space activation
Chapter 3 Configuration
135
Alerts
Actions
The following actions are supported.
Send Email
An email containing the alert details can be sent. The configuration requires an email address and email subject line. The following is a sample email sent based on a threshold alert:
From [email protected] Mon Oct 13 15:24:47 2009 Date: Mon, 13 Oct 2009 15:24:21 +0000 (GMT) From: Appliance on caji <[email protected]> Subject: High CPU on caji To: [email protected] SUNW-MSG-ID: AK-8000-TT, TYPE: Alert, VER: 1, SEVERITY: Minor EVENT-TIME: Mon Oct 13 15:24:12 2009 PLATFORM: i86pc, CSN: 0809QAU005, HOSTNAME: caji SOURCE: svc:/appliance/kit/akd:default, REV: 1.0 EVENT-ID: 15a53214-c4e7-eae4-dae6-a652a51ea29b DESC: cpu.utilization threshold of 90 is violated. AUTO-RESPONSE: None. IMPACT: The impact depends on what statistic is being monitored. REC-ACTION: The suggested action depends on what statistic is being monitored. SEE: https://192.168.2.80:215/#maintenance/alert=15a53214-c4e7-eae4-dae6-a652a51ea29b
Details on how the appliance sends mail can be configured on the SMTP service screen.
Alerts
Resume/Suspend Dataset
Analytics Datasets may be resumed or suspended. This is particularly useful when tracking down sporadic performance issues, and when enabling these datasets 24x7 is not desirable. For example: imagine you noticed a spike in CPU activity once or twice a week, and other analytics showed an associated drop in NFS performance. You enable some additional datasets, but you don't quite have enough information to prove what the problem is. If you could enable the NFS by hostname and filename datasets, you are certain you will understand the cause a lot better. However those particular datasets can be heavy handed - leaving them enabled 24x7 will degrade performance for everyone. This is where the resume/suspend dataset actions may be of use. A threshold alert could be configured to resume paused NFS by hostname and filename datasets, only when the CPU activity spike is detected; a second alert can be configured to then suspend those datasets, after a short interval of data is collected. The end result - you collect the data you need only during the issue, and minimize the performance impact of this data collection.
Resume/Suspend Worksheet
These actions are to resume or suspend an entire Analytics Worksheet, which may contain numerous datasets. The reasons for doing this are similar to those for resuming and suspending datasets.
Threshold Alerts
These are alerts based on the statistics from Analytics. The following are properties when creating threshold alerts:
Property Description
The threshold statistic is from Analytics, and is self descriptive (eg, "Protocol: NFSv4 operations per second") defines how the threshold value is compared to the current statistic Duration which the current statistic value must exceed/fall below the threshold These properties may be set so that the threshold is only sent during certain times of day - such as business hours
Chapter 3 Configuration
137
Alerts
Property
Description
Repost alert every ... this condition persists. Also post alert when this condition clears for at least ...
If enabled, this will re-execute the alert action (such as sending email) every set interval while the threshold breech exists Send a followup alert if the threshold breech clears for at least the set interval
The "Add Threshold Alert" dialog has been organized so that it can be read as though it is a paragraph describing the alert. The default reads: Threshold CPU: percent utilization exceeds 95 percent Timing for at least 5 minutes only between 0:00 and 0:00 only during weekdays Repost alert every 5 minutes while this condition persists. Also post alert when this condition clears for at least 5 minutes
BUI
At the top of the Configuration->Alerts page are tabs for "Alert Actions" and "Threshold Alerts". See the Tasks for step by step instructions for configuring these in the BUI.
CLI
Alerts can also be configured from the CLI. Enter the configuration alerts and type help.
Tasks
BUI
Adding an alert action
1 2 3
Click the add icon next to "Alert actions". Select the Category, or pick "All events" for everything. Either pick All Events, or a Subset of Events. If the subset is selected, customize the checkbox list to match the desired alerts events.
Sun ZFS Storage 7000 System Administration Guide November 2010
138
Workflows
4 5
Use the drop down menu in "Alert actions" to select which alert type. Enter details for the Alert action. The "TEST" button can be clicked to create a test alert and execute this alert action (useful for checking if email or SNMP is configured correctly) The add icon next to "Alert actions" can be clicked to add multiple alerts actions. Click "ADD" at the top right.
6 7
Click the add icon next to "Threshold alerts". Pick the statistic to monitor. You can use Analytics to view the statistic to check if it is suitable. Pick exceeds/falls below, and the desired value. Enter the Timing details. The defaults will post the alert only if the threshold has been breached for at least 5 minutes, will repost every 5 minutes, and post after the threshold has cleared for 5 minutes. Select the Alert action from the drop down menu, and fill out the required fields on the right. If desired, continue to add Alert actions by clicking the add icon next to "Alert actions". Click "APPLY" at the top of the dialog.
5 6 7
Workflows
Introduction
A workflow is a script that is uploaded to and managed by the appliance by itself. Workflows can be parameterized and executed in a first-class fashion from either the browser interface or the command line interface. Workflows may also be optionally executed as alert actions or at a designated time. As such, workflows allow for the appliance to extended in ways that capture specific policies and procedures, and can be used (for example) to formally encode best practices for a particular organization or application. A workflow is embodied in a valid ECMAscript file, containing a single global variable, workflow. This is an Object that must contain at least three members:
Chapter 3 Configuration 139
Workflows
Required member
Type
Description
Name of the workflow Description of workflow Function that executes the workflow
Uploading this workflow will result in a new workflow named "Hello world"; executing the workflow will result in the output "hello world!"
Workflow parameters
Workflows that do not operate on input have limited scope; many workflows need to be parameterized to be useful. This is done by adding a parameters member to the global workflow object. The parameters member is in turn an object that is expected to have a member for each parameter. Each parameters member must have the following members:
Required Member Type Description
label type
String String
140
Workflows
Boolean ChooseOne EmailAddress File Host HostName HostPort Integer NetAddress NodeName NonNegativeInteger Number Password Permissions Port Size String StringList
A boolean value One of a number of specified values An e-mail address A file to be transferred to the appliance A valid host, as either a name or dotted decimal A valid hostname A valid, available port An integer A network address A name of a network node An integer that is greater than or equal to zero Any number -- including floating point A password POSIX permissions A port number A size A string A list of strings
Based on the specified types, an appropriate input form will be generated upon execution of the workflow. For example, here is a workflow that has two parameters, the name of a business unit (to be used as a project) and the name of a share (to be used as the share name):
var workflow = { name: New share, description: Creates a new share in a business unit, parameters: { name: { label: Name of new share, type: String }, unit: { label: Business unit, type: String
Chapter 3 Configuration 141
Workflows
} }, execute: function (params) { run(shares select + params.unit); run(filesystem + params.name); run(commit); return (Created new share " + params.name + "); } };
If you upload this workflow and execute it, you will be prompted with a dialog box to fill in the name of the share and the business unit. When the share has been created, a message will be generated indicating as much.
Constrained parameters
For some parameters, one does not wish to allow an arbitrary string, but wishes to rather limit input to one of a small number of alternatives. These parameters should be specified to be of type ChooseOne, and the object containing the parameter must have two additional members:
Required Member Type Description
options optionlabels
Array Array
An array of strings that specifies the valid options An array of strings that specifies the labels associated with the options specified in options
Using the ChooseOne parameter type, we can enhance the previous example to limit the business unit to be one of a small number of predefined values:
var workflow = { name: Create share, description: Creates a new share in a business unit, parameters: { name: { label: Name of new share, type: String }, unit: { label: Business unit, type: ChooseOne, options: [ development, finance, qa, sales ], optionlabels: [ Development, Finance, Quality Assurance, Sales/Administrative ], } }, execute: function (params) { run(shares select + params.unit); run(filesystem + params.name); run(commit); return (Created new share " + params.name + "); } };
142 Sun ZFS Storage 7000 System Administration Guide November 2010
Workflows
When this workflow is executed, the unit parameter will not be entered by hand -- it will be selected from the specified list of possible options.
Optional parameters
Some parameters may be considered optional in that the UI should not mandate that these parameters are set to any value to allow execution of the workflow. Such a parameter is denoted via the optional field of the parameters member:
Optional Member Type Description
optional
Boolean
If set to true, denotes that the parameter need not be set; the UI may allow the workflow to be executed without a value being specified for the parameter.
If a parameter is optional and is unset, its member in the parameters object passed to the execute function will be set to undefined.
Error Handling
If, in the course of executing a workflow, an error is encountered, an exception will be thrown. If the exception is not caught by the workflow itself (or if the workflow throws an exception that is not otherwise caught), the workflow will fail, and the information regarding the exception will be displayed to the user. To properly handle errors, exceptions should be caught and processed. For example, in the previous example, an attempt to create a share in a non-existent project results in an uncaught exception. This example could be modified to catch the offending error, and create the project in the case that it doesn't exist:
var workflow = { name: Create share, description: Creates a new share in a business unit, parameters: { name: { label: Name of new share, type: String }, unit: { label: Business unit, type: ChooseOne, options: [ development, finance, qa, sales ], optionlabels: [ Development, Finance, Quality Assurance, Sales/Administrative ], } }, execute: function (params) { try { run(shares select + params.unit); } catch (err) { if (err.code != EAKSH_ENTITY_BADSELECT) throw (err);
Chapter 3 Configuration 143
Workflows
/* * We havent yet created a project that corresponds to * this business unit; create it now. */ run(shares project + params.unit); run(commit); run(shares select + params.unit); } run(filesystem + params.name); run(commit); return (Created new share " + params.name + "); } };
Input validation
Workflows may optionally validate their input by adding a validate member that takes as a parameter an object that contains the workflow parameters as members. The validate function should return an object where each member is named with the parameter that failed validation, and each member's value is the validation failure message to be displayed to the user. To extend our example to give a crisp error if the user attempts to create an extant share:
var workflow = { name: Create share, description: Creates a new share in a business unit, parameters: { name: { label: Name of new share, type: String }, unit: { label: Business unit, type: ChooseOne, options: [ development, finance, qa, sales ], optionlabels: [ Development, Finance, Quality Assurance, Sales/Administrative ], } }, validate: function (params) { try { run(shares select + params.unit); run(select + params.name); } catch (err) { if (err.code == EAKSH_ENTITY_BADSELECT) return; } return ({ name: share already exists }); }, execute: function (params) { try { run(shares select + params.unit); } catch (err) { if (err.code != EAKSH_ENTITY_BADSELECT)
144 Sun ZFS Storage 7000 System Administration Guide November 2010
Workflows
throw (err); /* * We havent yet created a project that corresponds to * this business unit; create it now. */ run(shares project + params.unit); set(mountpoint, /export/ + params.unit); run(commit); run(shares select + params.unit); } run(filesystem + params.name); run(commit); return (Created new share " + params.name + "); } };
Execution auditing
Workflows may emit audit records by calling the audit function. The audit function's only argument is a string that is to be placed into the audit log.
Execution reporting
For complicated workflows that may require some time to execute, it can be useful to provide clear progress to the user executing the workflow. To allow the execution of a workflow to be reported in this way, the execute member should return an array of steps. Each array element must contain the following members:
Required Member Type Description
step execute
String Function
String that denotes the name of the execution step Function that executes the step of the workflow
As with the execute function on the workflow as a whole, the execute member of each step takes as its argument an object that contains the parameters to the workflow. As an example, here is a workflow that creates a new project, share, and audit record over three steps:
var steps = [ { step: Checking for associated project, execute: function (params) { try { run(shares select + params.unit); } catch (err) { if (err.code != EAKSH_ENTITY_BADSELECT) throw (err); /* * We havent yet created a project that corresponds to
Chapter 3 Configuration 145
Workflows
* this business unit; create it now. */ run(shares project + params.unit); set(mountpoint, /export/ + params.unit); run(commit); run(shares select + params.unit); } } }, { step: Creating share, execute: function (params) { run(filesystem + params.name); run(commit); } }, { step: Creating audit record, execute: function (params) { audit(created " + params.name + " in " + params.unit); } } ]; var workflow = { name: Create share, description: Creates a new share in a business unit, parameters: { name: { label: Name of new share, type: String }, unit: { label: Business unit, type: ChooseOne, options: [ development, finance, qa, sales ], optionlabels: [ Development, Finance, Quality Assurance, Sales/Administrative ], } }, validate: function (params) { try { run(shares select + params.unit); run(select + params.name); } catch (err) { if (err.code == EAKSH_ENTITY_BADSELECT) return; } return ({ name: share already exists }); }, execute: function (params) { return (steps); } };
Versioning
There are two aspects of versioning with respect to workflows: the first is the expression of the version of the appliance software that the workflow depends on, and the second is the expression of the version of the workflow itself. Versioning is expressed through two optional members to the workflow:
146 Sun ZFS Storage 7000 System Administration Guide November 2010
Workflows
Optional Member
Type
Description
required
String String
The minimum version of the appliance software required to run this workflow, including the minimum year, month, day, build and branch. Version of this workflow, in dotted decimal (major.minor.micro) form.
version
Appliance versioning
To express a minimally required version of the appliance software, add the optional required field to your workflow. The appliance is versioned in terms of the year, month and day on which the software was built, followed by a build number and then a branch number, expressed as "year.month.day.build-branch". For example "2009.04.10,12-0" would be the twelfth build of the software originally build on April 10th, 2009. To get the version of the current appliance kit software, run the "configuration version get version" CLI command, or look at the "Version" field in the system view in the BUI. Here's an example of using the required field:
var workflow = { name: Configure FC, description: Configures fibre channel target groups, required: 2009.12.25,1-0, ...
If a workflow requires a version of software that is newer than the version loaded on the appliance, the attempt to upload the workflow will fail with a message explaining the mismatch.
Workflow versioning
In addition to specifying the required version of the appliance software, workflows themselves may be versioned with the version field. This string denotes the major, minor and micro numbers of the workflow version, and allows multiple versions of the same workflow to exist on the machine. When uploading a workflow, any compatible, older versions of the same workflow are deleted. A workflow is deemed to be compatible if it has the same major number, and a workflow is considered to be older if it has a lower version number. Therefore, uploading a workflow with a version of "2.1" will remove the same workflow with version "2.0" (or version "2.0.1") but not "1.2" or "0.1".
Workflows
Required Member
Type
Description
The class of the alert. The code of the alert. An object describing the alert. Time of alert.
The items member of the parameters object has the following members:
Required Member Type Description
The URL of the web page describing the alert The action that should be taken by the user in response to the alert. The impact of the event that precipitated the alert. A human-readable string describing the alert. The severity of the event that precipitated the alert.
148
Workflows
audit(attempting failover in response to alert + uuid); try { run(configuration cluster); } catch (err) { audit(could not get clustered state; aborting); return; } if ((state = get(state)) != clustered) { audit(state is + state + ; aborting); return; } if ((state = get(peer_state)) != clustered) { audit(peer state is + state + ; aborting); return; } run(cd /); run(confirm maintenance system reboot); } };
Workflows
throw (err); } } }, { step: Finding disks of specified type, execute: function (params) { /* * In this step, we will iterate over all chassis, and for * each chassis iterates over all disks in the chassis, * looking for disks that match the specified type. */ var chassis, name, disks; var i, j; run(cd /); run(maintenance hardware); chassis = list(); params.disks = []; for (i = 0; i < chassis.length; i++) { run(select + chassis[i]); name = get(name); run(select disk); disks = list(); for (j = 0; j < disks.length; j++) { run(select + disks[j]); if (get(use) == params.type) { params.disks.push(name + / + get(label)); } run(cd ..); } run(cd ../..); } if (params.disks.length === 0) throw (No + params.type + disks found); run(cd /); } }, { step: Creating worksheet, execute: function (params) { /* * In this step, were ready to actually create the worksheet * itself: we have the disks of the specified type and * we know that we can create the worksheet. Note that we * create several datasets: first, I/O bytes broken down * by disk, with each disk of the specified type highlighted * as a drilldown. Then, we create a separate dataset for * each disk of the specified type. Finally, note that we * arent saving the datasets -- well let the user do that * from the created worksheet if they so desire. (It would * be straightforward to add a boolean parameter to this
150 Sun ZFS Storage 7000 System Administration Guide November 2010
Workflows
* workflow that allows that last behavior to be optionally * changed.) */ var disks = [], i; run(analytics worksheets); run(create " + params.worksheet + "); run(select name=" + params.worksheet + "); run(dataset); run(set name=io.bytes[disk]); for (i = 0; i < params.disks.length; i++) disks.push(" + params.disks[i] + "); run(set drilldowns= + disks.join(,)); run(commit); for (i = 0; i < params.disks.length; i++) { run(dataset); run(set name="io.bytes[disk= + params.disks[i] + ]"); run(commit); } } } ]; var workflow = { name: Disk drilldown, description: Creates a worksheet that drills down on system, + cache, or log devices, parameters: { type: { label: Create a new worksheet drilling down on, type: ChooseOne, options: [ cache, log, system ], optionlabels: [ Cache, Log, System ] }, overwrite: { label: Overwrite the worksheet if it exists, type: Boolean } }, execute: function (params) { return (steps); } };
BUI
Workflows are uploaded to the appliance by clicking on the plus icon, and they are executed by clicking on the row specifying the workflow.
CLI
Workflows are manipulated in the maintenance workflows section of the CLI.
Chapter 3 Configuration 151
Workflows
Downloading workflows
Workflows are downloaded to the appliance via the download command, which is similar to the mechanism used for software updates:
dory:maintenance workflows> download dory:maintenance workflows download (uncommitted)> get url = (unset) user = (unset) password = (unset)
You must set the "url" property to be a valid URL for the workflow. This may be either local to your network or over the internet. The URL can be either HTTP (beginning with "http://") or FTP (beginning with "ftp://"). If user authentication is required, it may be a part of the URL (e.g. "ftp://myusername:mypasswd@myserver/export/foo"), or you may leave the username and password out of the URL and instead set the user and password properties.
dory:maintenance workflows download (uncommitted)> set url= ftp://foo/example1.akwf url = ftp://foo/example1.akwf dory:maintenance workflows download (uncommitted)> set user=bmc user = bmc dory:maintenance workflows download (uncommitted)> set password Enter password: password = ******** dory:maintenance workflows download (uncommitted)> commit Transferred 138 of 138 (100%) ... done
Viewing workflows
To list workflows, use the list command from the maintenance workflows context:
dory:maintenance workflows> list WORKFLOW NAME OWNER workflow-000 Hello world root SETID ORIGIN false <local>
To get a workflow's properties, use the get command from within the context of the selected workflow:
dory:maintenance workflow-000> get name = Hello world description = Bids a greeting to the world owner = root origin = <local> setid = false alert = false scheduled = false
152 Sun ZFS Storage 7000 System Administration Guide November 2010
Cluster
Executing workflows
To execute a workflow, use the execute command from within the context of the selected workflow. If the workflow takes no parameters, it will simply execute:
dory:maintenance workflow-000> execute hello world!
If the workflow takes parameters, the context will become a captive context in which parameters must be specified:
dory:maintenance workflow-000> execute dory:maintenance workflow-000 execute (uncommitted)> get type = (unset) overwrite = (unset)
Any attempt to commit the execution of the workflow without first setting the requisite parameters will result in an explicit failure:
dory:maintenance workflow-000 execute (uncommitted)> commit error: cannot execute workflow without setting property "type"
To execute the workflow, set the specified parameters, and then use the commit command:
dory:maintenance workflow-000 type dory:maintenance workflow-000 overwrite dory:maintenance workflow-000 execute (uncommitted)> set type=system = system execute (uncommitted)> set overwrite=true = true execute (uncommitted)> commit
If the workflow has specified steps, those steps will be displayed via the CLI, e.g.:
dory:maintenance workflow-000 execute (uncommitted)> commit Checking for existing worksheet ... done Finding disks of specified type ... done Creating worksheet ... done
Cluster
Clustering
The Sun ZFS Storage 7000 supports cooperative clustering of appliances. This strategy can be part of an integrated approach to availability enhancement that may also include client-side load balancing, proper site planning, proactive and reactive maintenance and repair, and the single-appliance hardware redundancy built into all Sun ZFS Storage 7000 series appliances. Because the clustering feature relies on shared access to storage resources, it is available only on the Sun ZFS Storage 7310, 7320, 7410, 7420 and 7720. You will be unable to configure clustering on other appliance models, or if the two heads are not of the same model.
Chapter 3 Configuration 153
Cluster
This section is presented in several segments, beginning with background material helpful in the planning process. Understanding this material is critical to performing the configuration and maintenance tasks described in later segments and more generally to a successful unified storage deployment experience.
Remote replication of data, which can be used for disaster recovery at one or more geographically remote sites, Client-side mirroring of data, which can be done using redundant iSCSI LUNs provided by multiple arbitrarily located storage servers, Load balancing, which is built into the NFS protocol and can be provided for some other protocols by external hardware or software (applies to read-only data),
154
Cluster
Redundant hardware components including power supplies, network devices, and storage controllers, Fault management software that can identify failed components, remove them from service, and guide technicians to repair or replace the correct hardware, Network fabric redundancy provided by LACP and IPMP functionality, and Redundant storage devices (RAID).
Additional information about other availability features can be found in the appropriate sections of this document.
Drawbacks
When deciding between a clustered and standalone Sun ZFS Storage 7000 series configuration, it is important to weigh the costs and benefits of clustered operation. It is common practice throughout the IT industry to view clustering as an automatic architectural decision, but this thinking reflects an idealized view of clustering's risks and rewards promulgated by some vendors in this space. In addition to the obvious higher up-front and ongoing hardware and support costs associated with the second head, clustering also imposes additional technical and operational risks. Some of these risks can be mitigated by ensuring that all personnel are thoroughly trained in cluster operations; others are intrinsic to the concept of clustered operation. Such risks include:
The potential for application intolerance of protocol-dependent behaviors during takeover, The possibility that the cluster software itself will fail or induce a failure in another subsystem that would not have occurred in standalone operation, Increased management complexity and a higher likelihood of operator error when performing management tasks, The possibility that multiple failures or a severe operator error will induce data loss or corruption that would not have occurred in a standalone configuration, and Increased difficulty of recovering from unanticipated software and/or hardware states.
These costs and risks are fundamental, apply in one form or another to all clustered or cluster-capable products on the market (including the Sun ZFS Storage 7000 series), and cannot be entirely eliminated or mitigated. Storage architects must weigh them against the primary benefit of clustering: the opportunity to reduce periods of unavailability from hours or days to minutes or less in the rare event of catastrophic hardware or software failure. Whether that cost/benefit analysis will favor the use of clustering in a Sun ZFS Storage 7000 series deployment will depend on local factors such as SLA terms, available support personnel and their qualifications, budget constraints, the perceived likelihood of various possible failures, and the appropriateness of alternative strategies for enhancing availability. These factors are highly site-, application-, and business-dependent and must be assessed on a case-by-case basis. Understanding the material in the rest of this section will help you make appropriate choices during the design and implementation of your unified storage infrastructure.
Chapter 3 Configuration 155
Cluster
Terminology
The terms defined here are used throughout the document. In most cases, they are explained in greater context and detail along with the broader concepts involved. The cluster states and resource types are described in the next section. Refer back to this section for reference as needed.
export: the process of making a resource inactive on a particular head failback: the process of moving from AKCS_OWNER state to AKCS_CLUSTERED, in which all foreign resources (those assigned to the peer) are exported, then imported by the peer import: the process of making a resource active on a particular head peer: the other appliance in a cluster rejoin: to retrieve and resynchronize the resource map from the peer resource: a physical or virtual object present, and possibly active, on one or both heads takeover: the process of moving from AKCS_CLUSTERED or AKCS_STRIPPED state to AKCS_OWNER, in which all resources are imported
Subsystem Design
The clustering subsystem incorporated into the Sun ZFS Storage 7000 series consists of three main building blocks (see Illustration 1). The cluster I/O subsystem and the hardware device provide a transport for inter-head communication within the cluster and are responsible for monitoring the peer's state. This transport is used by the resource manager, which allows data service providers and other management subsystems to interface with the clustering system. Finally, the cluster management user interfaces provide the setup task, resource allocation and assignment, monitoring, and takeover and failback operations. Each of these building blocks is described in detail in the following sections.
156
Cluster
Clustered heads never communicate using external service or administration network interfaces, and the interconnects form a secure private network. Messages fall into two general categories: regular heartbeats used to detect the failure of a remote head, and higher-level traffic associated with the resource manager and the cluster management subsystem. Heartbeats are sent, and expected, on all three links; they are transmitted continuously at fixed intervals and are never acknowledged or retransmitted as all heartbeats are identical and contain no unique information. Other traffic may be sent over any link, normally the fastest available at the time of transmission, and this traffic is acknowledged, verified, and retransmitted as required to maintain a reliable transport for higher-level software. Regardless of its type or origin, every message is sent as a single 128-byte packet and contains a data payload of 1 to 68 bytes and a 20-byte verification hash to ensure data integrity. The serial links run at 115200 bps with 9 data bits and a single start and stop bit; the Ethernet link runs at 1Gbps. Therefore the effective message latency on the serial links is approximately 12.2ms. Ethernet latency varies greatly; while typical latencies are on the order of microseconds, effective latencies to the appliance management software can be much higher due to system load. Normally, heartbeat messages are sent by each head on all three cluster I/O links at 50ms intervals. Failure to receive any message is considered link failure after 200ms (serial links) or 500ms (Ethernet links). If all three links have failed, the peer is assumed to have failed; takeover arbitration will be performed. In the case of a panic, the panicking head will transmit a single notification message over each of the serial links; its peer will immediately begin takeover regardless of the state of any other links. Given these characteristics, the clustering subsystem normally can detect that its peer has failed within:
Chapter 3 Configuration 157
Cluster
550ms, if the peer has stopped responding or lost power, or 30ms, if the peer has encountered a fatal software error that triggered an operating system panic.
All of the values described in this section are fixed; as an appliance, the Sun ZFS Storage System does not offer the ability (nor is there any need) to tune these parameters. They are considered implementation details and are provided here for informational purposes only. They may be changed without notice at any time.
158
Cluster
Several other resource types exist; these are implementation details that are not exposed to administrators. One such type is the symbiote, which allows one resource to follow another as it is imported and exported. The most important use of this resource type is in representing the disks and flash devices in the storage pool. These resources are known as disksets and must always be imported before the ZFS pool they contain. Each diskset consists of half the disks in an external storage enclosure; a clustered storage system may have any number of disksets attached (depending on hardware support), and each ZFS pool is formed from the storage devices in one or more disksets. Because disksets may contain ATA devices, they must be explicitly imported and exported to avoid certain affiliation-related behaviors specific to ATA devices used in multipathed environments. Representing disks as resources provides a simple way to perform these activities at the right time. When an administrator sets or changes the ownership of a storage pool, the ownership assignment of the disksets associated with it is transparently changed at the same time. Like all symbiotes, diskset resources do not appear in the cluster configuration user interface.
Resource icon Omnipresent Taken over on failure
No None Yes No
Yes N/A No
When a new resource is created, it is initially assigned to the head on which it is being created. This ownership cannot be changed unless that head is in the AKCS_OWNER state; it is therefore necessary either to create resources on the head which should own them normally or to take over before changing resource ownership. It is generally possible to destroy resources from either head, although destroying storage pools that are exported is not possible. Best results will usually be obtained by destroying resources on the head which currently controls them, regardless of which head is the assigned owner.
Chapter 3 Configuration 159
Cluster
Most configuration settings, including service properties, users, roles, identity mapping rules, SMB autohome rules, and iSCSI initiator definitions are replicated on both heads automatically. Therefore it is never necessary to configure these settings on both heads, regardless of the cluster state. If one appliance is down when the configuration change is made, it will be replicated to the other when it rejoins the cluster on next boot, prior to providing any service. There are a small number of exceptions:
Share and LUN definitions and options may be set only on the head which has control of the underlying pool, regardless of the head to which that pool is ordinarily assigned. The "Identity" service's configuration (i.e., the appliance name and location) is not replicated. Names given to chassis are visible only on the head on which they were assigned. Each network route is bound to a specific interface. If each head is assigned an interface with an address in a particular subnet, and that subnet contains a router to which the appliances should direct traffic, a route must be created for each such interface, even if the same gateway address is used. This allows each route to become active individually as control of the underlying network resources shifts between the two heads. See Networking Considerations for more details. SSH host keys are not replicated and are never shared. Therefore if no private administrative interface has been configured, you may expect key mismatches when attempting to log into the CLI using an address assigned to a node that has failed. The same limitations apply to the SSL certificates used to access the BUI.
The basic model, then, is that common configuration is transparently replicated, and administrators will assign a collection of resources to each appliance head. Those resource assignments in turn form the binding of network addresses to storage resources that clients expect to see. Regardless of which appliance controls the collection of resources, clients are able to access the storage they require at the network locations they expect.
UNCONFIGURED OWNER
A system that has no clustering at all is in this state. The system is either being set up or the cluster setup task has never been completed. Clustering is configured, and this node has taken control of all shared resources in the cluster. A system enters this state immediately after cluster setup is completed from its user interface, and when it detects that its peer has failed (i.e. after a take-over). It remains in this state until an administrator manually executes a fail-back operation.
160
Cluster
State
icon
CLI/BUI Expression
Description
STRIPPED
Clustering is configured, and this node does not control any shared resources. A system is STRIPPED immediately after cluster setup is completed from the user interface of the other node, or following a reboot, power disconnect, or other failure. A node remains in this state until an administrator manually executes a fail-back operation. Clustering is configured, and both nodes own shared resources according to their resource assignments. If each node owns a ZFS pool and is in the CLUSTERED state, then the two nodes form what is commonly called an active-active cluster. The appliance has recently rebooted, or the appliance management software is restarting after an internal failure. Resource state is being resynchronized. The peer appliance is powered off or rebooting, all its cluster interconnect links are down, or clustering has not yet been configured.
CLUSTERED
Active
Transitions among these states take place as part of two operations: takeover and failback. Takeover can occur at any time; as discussed above, takeover is attempted whenever peer failure is detected. It can also be triggered manually using the cluster configuration CLI or BUI. This is useful for testing purposes as well as to perform rolling software upgrades (upgrades in which one head is upgraded while the other provides service running the older software, then the second head is upgraded once the new software is validated). Finally, takeover will occur when a head boots and detects that its peer is absent. This allows service to resume normally when one head has failed permanently or when both heads have temporarily lost power. Failback never occurs automatically. When a failed head is repaired and booted, it will rejoin the cluster (resynchronizing its view of all resources, their properties, and their ownership) and proceed to wait for an administrator to perform a failback operation. Until then, the original surviving head will continue to provide all services. This allows for a full investigation of the problem that originally triggered the takeover, validation of a new software revision, or other administrative tasks prior to the head returning to production service. Because failback is disruptive to clients, it should be scheduled according to business-specific needs and processes. There is one exception: Suppose that head A has failed and head B has taken over. When head A rejoins the cluster, it becomes eligible to take over if it detects that head B is absent or has failed. The principle is that it is always better to provide service than not, even if there has not yet been an opportunity to investigate the original problem. So while failback to a previously-failed head will never occur automatically, it may still perform takeover at any time. When you set up a cluster, the initial state consists of the node that initiated the setup in the OWNER state and the other node in the STRIPPED state. After performing an initial failback operation to hand the STRIPPED node its portion of the shared resources, both nodes are CLUSTERED. If both cluster nodes fail or are powered off, then upon simultaneous startup they will arbitrate and one of them will become the OWNER and the other STRIPPED.
Chapter 3 Configuration 161
Cluster
During failback all foreign resources (those assigned to the peer) are exported, then imported by the peer. A pool that cannot be imported because it is faulted will trigger reboot of the STRIPPED node. An attempt to failback with a faulted pool can reboot the STRIPPED node as a result of the import failure.
Cluster
Total throughput Up to 50% of total CPU resources, All CPU and DRAM resources can be used to provide service at any one time. Up to 50% of all network connectivity can be used at any one time (dark network devices are (nominal 50% of DRAM, and 50% of total operation) network connectivity can be used to required on each head to support failover). provide service at any one time. This is straightforward: only a single head is ever servicing client requests, so the other is idle. Total throughput No change in throughput relative to (failed over) nominal operation. I/O latency (failed over) ReadZilla is not available during failed-over operation, which may significantly increase latencies for read-heavy workloads that fit into available read cache. Latency of write operations is unaffected. 100% of the surviving head's resources will be used to provide service. Total throughput relative to nominal operation may range from approximately 40% to 100%, depending on utilization during nominal operation.
ReadZilla is not available during failed-over operation, which may significantly increase latencies for read-heavy workloads that fit into available read cache. Latency of both read and write operations may be increased due to greater contention for head resources. This is caused by running two workloads on the surviving head instead of the usual one. When nominal workloads on each head approach the head's maximum capabilities, latencies in the failed-over state may be extremely high. Only the storage allocated to a particular pool can be used by that pool's shares and LUNs. Storage is not shared across pools, so if one pool fills up while the other has free space, some storage may be wasted.
Storage flexibility All available physical storage can be used by shares and LUNs.
Chapter 3 Configuration
163
Cluster
Variable
Network connectivity
All network devices in each head can Only half of all network devices in each head can be used while that head is providing be used while that head is providing service. Therefore each pool can be connected to only half as many physically disjoint service. In the 7410C, up to three networks. expansion slots plus 4 built-in network devices can be used concurrently to provide connectivity to the single pool.
A second important consideration for storage is the use of pool configurations with no single point of failure (NSPF). Since the use of clustering implies that the application places a very high premium on availability, there is seldom a good reason to configure storage pools in a way that allows the failure of a single JBOD to cause loss of availability. The downside to this approach is that NSPF configurations require a greater number of JBODs than do configurations with a single point of failure; when the required capacity is very small, installation of enough JBODs to provide for NSPF at the desired RAID level may not be economical.
Network interfaces may be configured as either singleton or private resources, provided they have static IP configuration (interfaces configured to use DHCP can only be private; the use of DHCP in clusters is discouraged). When configured as a singleton resource, all of the datalinks and devices used to construct an interface may be active on only one head at any given time. Likewise, corresponding devices on each head must be attached to the same networks in order for service to be provided correctly in the failed-over state. A concrete example of this is shown in Illustration 5. When constructing network interfaces from devices and datalinks, it is essential to proper cluster operation that each singleton interface have a device with the same identifier and capabilities available on both heads. Since device identifiers depend on the device
164 Sun ZFS Storage 7000 System Administration Guide November 2010
Cluster
type and the order in which it is first detected by the appliance, any two clustered heads MUST have identical hardware installed. Furthermore, each slot in both heads must be populated with identical hardware, and slots must be populated in the same order on both heads. Your qualified Sun reseller or service representative can assist in planning hardware upgrades that will meet these requirements. A route is always bound explicitly to a single network interface. Routes are represented within the resource manager as replicas, but can become active only when the interfaces they are bound to are operational. Therefore, a route bound to an interface that is currently in standby mode (exported) will have no effect until that interface is activated during the process of takeover. This becomes important when two pools are configured and must be made available to a common subnet. In this case, if that subnet is home to a router that should be used by the appliances to reach one or more other networks, then a separate route (for example, a second default route), must be configured and bound to each of the active and standby interfaces attached to that subnet.
Example: Interface e1000g3 is assigned to 'alice' and e1000g4 is assigned to 'bob'. Each interface has an address in the 172.16.27.0/24 network and will be used to provide service to clients in the 172.16.64.0/22 network, reachable via 172.16.27.1. Two routes should be created to 172.16.64.0/22 via 172.16.27.1; one should be bound to e1000g3 and the other to e1000g4.
It is often advantageous to assign each clustered head an IP address most likely on a dedicated management network to be used only for administration, and to designate as a private resource the interface on which this address is configured. This ensures that it will be possible to reach any functioning head from the management network, even if it is currently in the AKCS_STRIPPED state and awaiting failback. This is especially important if services such as LDAP and Active Directory are in use that require access to other network resources even when the head is not itself providing service. If this is not practical, it is especially important that the service processor be attached to a reliable network and/or serial terminal concentrator so that the head can be managed using the system console. If neither of these actions is taken, it will be impossible to manage or monitor a newly-booted head until failback has completed. Conversely, the need may also arise to monitor or manage whichever head is currently providing service (or service for a particular storage pool). This is most likely to be useful when it is necessary to modify some aspect of the storage itself; e.g., to modify a share property or create a new LUN. This can be achieved either by using one of the service interfaces to perform administrative tasks or by allocating a separate singleton interface to be used only for the purpose of managing the pool to which it is matched. In either case, the interface should be assigned to the same head as the pool it will be used to manage.
Cluster
appliance. The network topology should include IPMP to protect against network failures at the link level with a broader plan for redundancy for HCAs, switches and subnet managers.
To ensure proper cluster configuration, each head must be populated with identical HCAs in identical slots. Furthermore, each corresponding HCA port must be configured into the same partition (pkey) on the subnet manager with identical membership privileges and attached to the same network. To reduce complexity and ensure proper redundancy, it is recommended that each port belong to only one partition in the Infiniband sub-network. Network interfaces may be configured as either singleton or private resources, provided they have static IP configuration. When configured as a singleton resource, all of the IB partition datalinks and devices used to construct an interface may be active on only one head at any given time. A concrete example of this is shown in the illustration above. Changes to partition membership for corresponding ports must happen at the same time and in a manner consistent with the clustering rules above. Your qualified Sun reseller or service representative can assist in planning hardware upgrades that will meet these requirements.
The following illustration shows cluster configuration on the 7410 for host redundancy.
166
Cluster
The following illustration shows cluster configuration for subnet manager redundancy. Greater redundancy is achieved by connecting two dual-port HCAs to a redundant pair of server switches.
Chapter 3 Configuration
167
Cluster
redundancy (only a single link is required to avoid triggering takeover), the appliance software will also perform an arbitration procedure to determine which head should continue with takeover. A number of arbitration mechanisms are employed by similar products; typically they entail the use of quorum disks (using SCSI reservations) or quorum servers. To support the use of ATA disks without the need for additional hardware, the Sun ZFS Storage 7000 series uses a different approach relying on the storage fabric itself to provide the required mutual exclusivity. The arbitration process consists of attempting to perform a SAS ZONE LOCK command on each of the visible SAS expanders in the storage fabric, in a predefined order. Whichever appliance is successful in its attempts to obtain all such locks will proceed with takeover; the other will reset itself. Since a clustered appliance that boots and detects that its peer is unreachable will attempt takeover and enter the same arbitration process, it will reset in a continuous loop until at least one cluster I/O link is restored. This ensures that the subsequent failure of the other head will not result in an extended outage. These SAS zone locks are released when failback is performed or approximately 10 seconds has elapsed since the head in the AKCS_OWNER state most recently renewed its own access to the storage fabric. This arbitration mechanism is simple, inexpensive, and requires no additional hardware, but it relies on the clustered appliances both having access to at least one common SAS expander in the storage fabric. Under normal conditions, each appliance has access to all expanders, and arbitration will consist of taking at least two SAS zone locks. It is possible, however, to construct multiple-failure scenarios in which the appliances do not have access to any common expander. For example, if two of the SAS cables are removed or a JBOD is powered down, each appliance will have access to disjoint subsets of expanders. In this case, each appliance will successfully lock all reachable expanders, conclude that its peer has failed, and attempt to proceed with takeover. This can cause unrecoverable hangs due to disk affiliation conflicts and/or severe data corruption. Note that while the consequences of this condition are severe, it can arise only in the case of multiple failures (often only in the case of 4 or more failures). The clustering solution embedded in the Sun ZFS Storage 7000 series appliances is designed to ensure that there is no single point of failure, and to protect both data and availability against any plausible failure without adding undue cost or complexity to the system. It is still possible that massive multiple failures will cause loss of service and/or data, in much the same way that no RAID layout can protect against an unlimited number of disk failures.
168
Cluster
Fortunately, most such failure scenarios arise from human error and are completely preventable by installing the hardware properly and training staff in cluster setup and management best practices. Administrators should always ensure that all three cluster I/O links are connected and functional (see illustration), and that all storage cabling is connected as shown in the setup poster delivered with your appliances. It is particularly important that two paths are detected to each JBOD (see illustration) before placing the cluster into production and at all times afterward, with the obvious exception of temporary cabling changes to support capacity increases or replacement of faulty components. Administrators should use alerts to monitor the state of cluster interconnect links and JBOD paths and correct any failures promptly. Ensuring that proper connectivity is maintained will protect both availability and data integrity if a hardware or software component fails.
Chapter 3 Configuration
169
Cluster
iSCSI behavior during service interruptions is initiator-dependent, but initiators will typically recover if service is restored within a client-specific timeout period. Check your initiator's documentation for additional details. The iSCSI target will typically be able to provide service as soon as takeover is complete, with no additional delays. SMB, FTP, and HTTP/WebDAV are connection-oriented protocols. Because the session states associated with these services cannot be transferred along with the underlying storage and network connectivity, all clients using one of these protocols will be disconnected during a takeover or failback, and must reconnect after the operation completes. While several factors affect takeover time (and its close relative, failback time), in most configurations these times will be dominated by the time required to import the diskset resource(s). Typical import times for each diskset range from 15 to 20 seconds, linear in the number of disksets. Recall that a diskset consists of one half of one JBOD, provided the disk bays
170 Sun ZFS Storage 7000 System Administration Guide November 2010
Cluster
in that half-JBOD have been populated and allocated to a storage pool. Unallocated disks and empty disk bays have no effect on takeover time. The time taken to import diskset resources is unaffected by any parameters that can be tuned or altered by administrators, so administrators planning clustered deployments should either:
limit installed storage so that clients can tolerate the related takeover times, or adjust client-side timeout values above the maximum expected takeover time.
Note that while diskset import usually comprises the bulk of takeover time, it is not the only factor. During the pool import process, any intent log records must be replayed, and each share and LUN must be shared via the appropriate service(s). The amount of time required to perform these activities for a single share or LUN is very small on the order of tens of milliseconds but with very large share counts this can contribute significantly to takeover times. Keeping the number of shares relatively small - a few thousand or fewer - can therefore reduce these times considerably. Failback time is normally greater than takeover time for any given configuration. This is because failback is a two-step operation: first, the source appliance exports all resources of which it is not the assigned owner, then the target appliance performs the standard takeover procedure on its own assigned resources only. Therefore it will always take longer to failback from head A to head B than it will take for head A to take over from head B in case of failure. This additional failback time is much less dependent upon the number of disksets being exported than is the takeover time, so keeping the number of shares and LUNs small can have a greater impact on failback than on takeover. It is also important to keep in mind that failback is always initiated by an administrator, so the longer service interruption it causes can be scheduled for a time when it will cause the lowest level of business disruption. Note: Estimated times cited in this section refer to software/firmware version 2009.04.10,1-0. Other versions may perform differently, and actual performance may vary. It is important to test takeover and its exact impact on client applications prior to deploying a Sun ZFS Storage 7000 series clustered appliance in a production environment.
Setup Procedure
When setting up a cluster from two new appliances, perform the following steps: 1. Connect power and at least one Ethernet cable to each appliance. 2. Cable together the cluster interconnect controllers as described below under Node Cabling. You can also proceed with cluster setup and add these cables dynamically during the setup process. 3. Cable together the HBAs to the shared JBOD(s) as shown in the JBOD Cabling diagrams in the setup poster that came with your Sun ZFS Storage system.
Chapter 3 Configuration 171
Cluster
4. Power on both appliances - but do not begin configuration. Select only one of the two appliances from which you will perform configuration; the choice is arbitrary. This will be referred to as the primary appliance for configuration purposes. Connect to and access the serial console of that appliance, and perform the initial tty-based configuration on it in the same manner as you would when configuring a standalone appliance. Note: Do not perform the initial tty-based configuration on the secondary appliance; it will be automatically configured for you during cluster setup. 5. On the primary appliance, enter either the BUI or CLI to begin cluster setup. Cluster setup can be selected as part of initial setup if the cluster interconnect controller has been installed. Alternately, you can perform standalone configuration at this time, deferring cluster setup until later. In the latter case, you can perform the cluster configuration task by clicking the Setup button in Configuration->Cluster. 6. At the first step of cluster setup, you will be shown a diagram of the active cluster links: you should see three solid blue wires on the screen, one for each connection. If you don't, add the missing cables now. Once you see all three wires, you are ready to proceed by clicking the Commit button. 7. Enter the appliance name and initial root password for the second appliance (this is equivalent to performing the initial serial console setup for the new appliance). When you click the Commit button, progress bars will appear as the second appliance is configured. 8. If you are setting up clustering as part of initial setup of the primary appliance, you will now be prompted to perform initial configuration as you would be in the single-appliance case. Note: all configuration changes you make will be propagated automatically to the other appliance. Proceed with initial configuration, taking into consideration the following restrictions and caveats: 9. # Network interfaces configured via DHCP cannot be failed over between heads, and therefore cannot be used by clients to access storage. Therefore, be sure to assign static IP addresses to any network interfaces which will be used by clients to access storage. If you selected a DHCP-configured network interface during tty-based initial configuration, and you wish to use that interface for client access, you will need to change its address type to Static before proceeding. 10. # Best practices include configuring and assigning a private network interface for administration to each head, which will enable administration via either head over the network (BUI or CLI) regardless of the cluster state. 11. # If routes are needed, be sure to create a route on an interface that will be assigned to each head. See the previous section for a specific example. 12. Proceed with initial configuration until you reach the storage pool step. Each storage pool can be taken over, along with the network interfaces clients use to reach that storage pool, by the cluster peer when takeover occurs. If you create two storage pools, each head will normally provide clients with access to the pool assigned to it; if one of the heads fails, the other will provide clients with access to both pools. If you create a single pool, the head which is not assigned a pool will provide service to clients only when its peer has failed. Storage pools are assigned to heads at the time you create them; the storage configuration
172 Sun ZFS Storage 7000 System Administration Guide November 2010
Cluster
dialog offers the option of creating a pool assigned to each head independently. Note: The smallest unit of storage that may be assigned to a pool is half a JBOD. Therefore, if you have only a single JBOD and wish to create two pools, you must use the popup menu to select Half of your JBOD for each pool. Additionally, it is not possible to create two pools if you have attached only a single half-populated JBOD. If you choose to create two pools, there is no requirement that they be the same size; any subdivision of available storage is permitted. 13. After completing basic configuration, you will have an opportunity to assign resources to each head. Typically, you will need to assign only network interfaces; storage pools were automatically assigned during the storage configuration step. 14. Commit the resource assignments and perform the initial fail-back from the Cluster User Interface, described below. If you are still executing initial setup of the primary appliance, this screen will appear as the last in the setup sequence. If you are executing cluster setup manually after an initial setup, go to the Configuration/Cluster screen to perform these tasks. Refer to Cluster User Interface below for the details.
Node Cabling
Clustered head nodes must be connected together using the cluster interconnect controller. This device is installed in slot PCIe0 in the Sun Storage 7310 and ZFS Storage 7320. The cluster controller is installed in slot PCIe5 in the Sun Storage 7410 and slot PCIeC in the ZFS Storage 7420/7720.
The controller provides three redundant links that enable the heads to communicate: two serial links (the outer two connectors) and an Ethernet link (the middle connector). Using straight-through Cat 5-or-better Ethernet cables, (three 1m cables ship with your cluster configuration), connect the head node according to the diagram at left. The cluster cabling can be performed either prior to powering on either head node, or can be performed live while executing the cluster setup guided task. The user interface will show the status of each link, as shown later in this page. You must have established all three links before cluster configuration will proceed.
Chapter 3 Configuration 173
Cluster
JBOD Cabling
You will need to attach your JBODs to both appliances before beginning cluster configuration. See Installation: Cabling Diagrams or follow the Quick Setup poster that shipped with your system.
BUI
The Configuration->Cluster view provides a graphical overview of the status of the cluster card, the cluster head node states, and all of the resources.
A thumbnail picture of each system, with the system whose administrative interface is being accessed shown at left. Each thumbnail is labeled with the canonical appliance name, and its current cluster state (the icon above, and a descriptive label). A thumbnail of each cluster card connection that dynamically updates with the hardware: a solid line connects a link when that link is connected and active, and the line disappears if that connection is broken or while the other system is restarting/rebooting. A list of the PRIVATE and SINGLETON resources (see Introduction, above) currently assigned to each system, shown in lists below the thumbnail of each cluster node, along with various attributes of the resources. For each resource, the appliance to which that resource is assigned (that is, the appliance that will provide the resource when both are in the CLUSTERED state). When the current appliance is in the OWNER state, the owner field is shown as a pop-up menu that can be edited and then committed by clicking Apply. For each resource, a lock icon indicating whether or not the resource is PRIVATE. When the current appliance is in either of the OWNER or CLUSTERED states, a resource can be locked to it (made PRIVATE) or unlocked (made a SINGLETON) by clicking the lock icon and then clicking Apply. Note that PRIVATE resources belonging to the remote peer will not be displayed on either resource list.
Cluster
Button
Description
If the cluster is not yet configured, execute the cluster setup guided task, and then return to the current screen. See above for a detailed description of this task. Upgrade a node to standalone operation by unconfiguring the cluster. See below for a detailed description of this task. If resource modifications are pending (rows highlighted in yellow), commit those changes to the cluster. If resource modifications are pending (rows highlighted in yellow), revert those changes and show the current cluster configuration. If the current appliance (left-hand side) is the OWNER, fail-back resources owned by the other appliance to it, leaving both nodes in the CLUSTERED state (active/active). If the current appliance (left-hand side) is either CLUSTERED or STRIPPED, force the other appliance to reboot, and take-over its resources, making the current appliance the OWNER
Unconfiguring Clustering
Unconfiguring clustering is a destructive operation that returns one of the clustered storage controllers to its factory default configuration and reassigns ownership of all resources to the surviving peer. There are two reasons to perform cluster unconfiguration: 1. You no longer wish to use clustering; instead, you wish to configure two independent storage appliances. 2. You are replacing a failed storage controller with new hardware or a storage controller with factory-fresh appliance software (typically this replacement will be performed by your service provider). The steps for unconfiguring a cluster are as follows: 1. Select the storage controller that will be reset to its factory configuration. Note that if replacing a failed storage controller, you can skip to step 3, provided that the failed storage controller will not be returned to service at your site. 2. From the system console of the storage controller that will be reset to its factory configuration, perform a factory reset. 3. The storage controller will reset, and its peer will begin takeover normally. Prior to allowing the factory-reset storage controller to begin booting (i.e., prior to progressing beyond the boot menu), power it off and wait for its peer to complete takeover. 4. Detach the cluster interconnect cables (see above) and detach the powered-off storage controller from the cluster's external storage enclosures.
Chapter 3 Configuration 175
Cluster
5. On the remaining storage controller, click the Unconfig button on the Configuration -> Clustering screen. All resources will become assigned to that storage controller, and the storage controller will no longer be a member of any cluster. The detached storage controller, if any, can now be attached to its own storage, powered on, and configured normally. If you are replacing a failed storage controller, attach the replacement to the remaining storage controller and storage and begin the cluster setup task described above. Note: If your cluster had 2 or more pools, ownership of all pools will be assigned to the remaining storage controller after unconfiguration. In software versions prior to 2010.Q1.0.0, this was not a supported configuration; if you are running an older software version, you must do one of: destroy one or both pools, attach a replacement storage controller, perform the cluster setup task described above, and reassign ownership of one of the pools to the replacement storage controller, or upgrade to 2010.Q1.0.0 or a later software release which contains support for multiple pools per storage controller.
176
C H A P T E R
Services
Services
The Services screen features a side panel for quick navigation between services.
Introduction
The following services may be configured on the appliance:
Data
Service Description
NFS
177
Services
Service
Description
iSCSI SMB FTP HTTP NDMP Remote Replication Shadow Migration SFTP SRP TFTP Virus Scan
LUN access via the iSCSI protocol Filesystem access via the SMB protocol Filesystem access via the FTP protocol Filesystem access via the HTTP protocol NDMP host service Remote replication Shadow data migration Filesystem access via the SFTP protocol Block access via the SRP protocol Filesystem access via the TFTP protocol Filesystem virus scanning
Directory
Service Description
Authenticate users and groups from a NIS service Authenticate users and groups from a LDAP directory Authenticate users with a Microsoft Active Directory Server Map between windows entities and Unix IDs
System
Service Description
Domain name service client RIP and RIPng dynamic routing protocols IP MultiPathing for IP fail-over Network time protocol client Product registration and support configuration Product inventory support
178
Services
Service
Description
Configure outgoing mail server SNMP for sending traps on alerts and serving appliance status information Syslog Relay for sending syslog messages on alerts, and forwarding service syslog messages System name and location
Remote Access
Service Description
SSH
BUI
The BUI services page lists the services in the above groups, along with state information and buttons for administration. Double clicking a service line will take you to the service screen. The buttons are:
icon description
Go to service screen to configure properties and view logs. Appears on mouse-over Service is enabled and working normally Service is offline or disabled Service has a problem and requires operator attention Enable/disable service Restart service Enable/disable not available for this service Restart currently unavailable (enable the service first)
See the Basic Usage section of the User Interface guide for the full reference of these icons.
Chapter 4 Services
179
Services
Selecting a Service
To go to a service screen, click the status icon on the left - which will change to an arrow icon on mouse over. Service screens allow service properties to be configured. A side panel of all services can be revealed by clicking the icon on the left of the left-most "Services" title. Reclicking this icon will hide the panel.
Enabling a Service
If the service is not online, click the power icon and the service should come online
Disabling a Service
If the service is online, click the power icon and the service should go offline
Setting Properties
Properties can be set by changing them in the BUI and then clicking "APPLY". The "REVERT" button will reset the properties to their previous state, before editing.
Times when a service changed state Error messages from the service
Look to the top right for "Properties" and "Logs", click "Logs" to change to the log viewer. If "Logs" is not visible, the service does not provide logs. The log content is custom to each individual service, and subject to change with future updates to the appliance software. The following are example messages that are commonly used in this version of the appliance:
Example Log Message Description
Executing start method Method "start" exited with status 0 Method "refresh" exited with status 0 Executing stop method Enabled
The service is starting up The service reported a successful start (0 == success) The service successfully refreshed its configuration based on its service settings The service is being shut down The service state was checked to see if it should be started (such as during system boot), and it was found to be in the enabled state
180
Services
Description
Disabled
The service state was checked to see if it should be started (such as during system boot), and it was found to be in the disabled state
The system was booted at 21:05, and there is an event in the log to show that this service was found to be enabled. At 21:07:37 this service began startup, which completed at 21:13:38 - some six minutes later. Due to the nature of NTP and system clock adjustment, this service can take minutes to complete start up, as shown by the log.
CLI
The CLI services section is under configuration services. The show command shows the current state of all services:
caji:> configuration services caji:configuration services> show Services: ad => smb => dns => dynrouting => ftp => http => identity => idmap => ipmp => iscsi => ldap => ndmp => nfs => nis => ntp => replication => scrk => sftp => shadow => smtp => snmp => ssh => syslog => tags => tftp => vscan =>
disabled disabled online online disabled disabled online online online online disabled online online disabled disabled online disabled disabled online online disabled online disabled online disabled disabled
Chapter 4 Services
181
Services
Children: ad smb dns dynrouting ftp http identity idmap ipmp iscsi ldap ndmp nfs nis ntp replication scrk sftp shadow smtp snmp srp ssh syslog tags tftp vscan routing => => => => => => => => => => => => => => => => => => => => => => => => => => => => Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Configure Active Directory SMB DNS Dynamic Routing FTP HTTP System Identity Identity Mapping IPMP iSCSI LDAP NDMP NFS NIS NTP Remote Replication Phone Home SFTP Shadow Migration SMTP SNMP SRP SSH Syslog Service Tags TFTP Virus Scan Routing Table
Selecting a Service
Select a service by entering its name. For example, to select nis:
caji:configuration services> nis caji:configuration services nis>
Once selected, its state can be viewed, it can be enabled and disabled, and properties may be set.
Enabling a Service
Use the enable command:
caji:configuration services nis> enable
182 Sun ZFS Storage 7000 System Administration Guide November 2010
Services
Disabling a Service
Use the disable command:
caji:configuration services nis> disable
Setting Properties
Properties can be changed by using the set command. After setting the properties to the desired values, use commit to save and activate the configuration:
caji:configuration services nis> domain = caji:configuration services nis> caji:configuration services nis> Properties: <status> = domain = broadcast = ypservers = set domain="mydomain" mydomain (uncommitted) commit show online mydomain true
Property names are similar to those shown in the BUI, but usually shorter and sometimes abbreviated.
Service Help
Type help to see all commands for a service:
caji:configuration services nis> help Subcommands that are valid in this context: help [topic] => Get context-sensitive help. If [topic] is specified, it must be one of "builtins", "commands", "general", "help", "script" or "properties". => Show information pertinent to the current context => Commit current state, including any changes => Finish operating on "nis" => Enable the nis service => Disable the nis service => Get value for property [prop]. ("help properties" for valid properties.) If [prop] is not specified, returns values for all properties.
Chapter 4 Services
183
NFS
set [prop]
=> Set property [prop] to [value]. ("help properties" for valid properties.) For properties taking list values, [value] should be a comma-separated list of values.
NFS
Introduction
NFS (Network File System) is an industry standard protocol to share files over a network. NFS versions 2, 3, and 4 are supported. For more information on how the filesystem namespace is constructed, see the filesystem namespace section.
Properties
Property Description
Minimum supported version Maximum supported version Maximum # of server threads Grace period
Controls which versions of NFS are supported Controls which versions of NFS are supported Maximum number of concurrent NFS requests. This should at least cover the number of concurrent NFS clients that is anticipated. Allowed range is 20 to 1000 Seconds that all clients have to reclaim locks after an appliance reboot. During this period, the NFS service only processes reclaims of old locks. All other requests for service must wait until the grace period is over, which by default is 90. Reducing this value allows NFS clients to resume operation more quickly after a server reboot, but it increases the probability that a client is not able to recover all its locks. Allowed range is 15 to 600 Use DNS domain when mapping NFSv4 user and group identities. Override the DNS domain with this string when mapping NFSv4 users and group identities. Enable NFSv4 delegation. Delegation allows clients to cache files locally and make modifications without contacting the server. This option is on by default and typically results in better performance, but in rare circumstances can cause problems. Disabling this setting should only be done after careful performance measurements of your particular workload and validation that the setting has a measurable performance benefit. This option only affects NFSv4 mounts.
DNS domain for NFSv4 identity Custom NFSv4 identity domain Enable NFSv4 delegation
184
NFS
Property
Description
Kerberos realm
A realm is logical network, similar to a domain, that defines a group of systems that are under the same master KDC. Realm names can consist of any ASCII string. Usually, the realm name is the same as your DNS domain name, except that the realm name is in uppercase. This convention helps differentiate problems with the Kerberos service from problems with the DNS namespace, while using a name that is familiar. Each realm must include a server that maintains the master copy of the principal database. The most significant difference between a master KDC and a slave KDC is that only the master KDC can handle database administration requests. For instance, changing a password or adding a new principal must be done on the master KDC. Contains duplicate copies of the principal database. Both the master KDC server and the slave KDC server create tickets that are used to establish authentication. Identifies the client. By convention, a principal name is divided into three components: the primary, the instance, and the realm. A principal can be specified as joe, joe/admin, or joe/[email protected]. Password for admin principal.
Changing services properties is documented in the BUI and CLI sections of Services. Setting the NFS minimum and maximum versions to the same value will cause the appliance to only communicate with clients using that version. This may be useful if you find an issue with one NFS version or the other (such as the performance characteristics of that NFS version with your workload), and wish to force clients to only use the version that works best.
Kerberos realms
Configuring a Kerberos realm will create certain service principals and add the necessary keys to the system's local keytab. The NTP service must be configured before configuring Kerberized NFS. The following service principals are created and updated to support Kerberized NFS:
host/[email protected] nfs/[email protected]
If the system is configured in a cluster, principals and keys are generated for each cluster node:
host/[email protected] nfs/[email protected] host/[email protected] nfs/[email protected]
If these principals have already been created, configuring the realm will reset the password for each of those principals. If the system is already joined to an Active Directory domain, the system cannot be configured as part of a Kerberos realm.
Chapter 4 Services 185
NFS
For information on setting up KDCs and Kerberized clients, see http://docs.sun.com/app/docs/ doc/816-4557/setup-8 (http://docs.sun.com/app/docs/doc/816-4557/setup-8)?a=view. After setting NFS properties for Kerberos, change the Security mode on the Shares > Filesystem > Protocols screen to a mode using Kerberos.
Logs
These logs are available for the NFS service:
Log Description
network-nfs-server:default
appliance-kit-nfsconf:default Log of appliance NFS configuration events network-nfs-cbd:default network-nfs-mapid:default network-nfs-status:default Log for the NFSv4 callback daemon Log for the NFSv4 mapid daemon - which maps NFSv4 user and group credentials Log for the NFS statd daemon - which assists crash and recovery functions for NFS locks
network-nfs-nlockmgr:default og for the NFS lockd daemon - which supports record locking operations for files L
Analytics
NFS activity can be monitored in detail in the Analytics section. This includes monitoring:
NFS operations per second ... by type of operation (read/write/...) ... by share name ... by client hostname ... by accessed filename ... by access latency
CLI
The following table describes the mapping between CLI properties and the BUI property descriptions above.
186 Sun ZFS Storage 7000 System Administration Guide November 2010
NFS
CLI Property
BUI Property
version_min version_max nfsd_servers grace_period mapid_dns mapid_domain enable_delegation krb5_realm krb5_kdc krb5_kdc2 krb5_admin
Minimum supported version Maximum supported version Maximum # of server threads Grace period DNS domain for NFSv4 identity Custom NFSv4 identity domain Enable NFSv4 delegation Kerberos Realm Kerberos master KDC Kerberos slave KDC Kerberos admin principal
Tasks
NFS Tasks
Sharing a filesystem over NFS
1 2 3 4
Go to Configuration->Services Check that the NFS service is enabled and online. If not, enable the service. Select or add a share in the Shares screen. Go to the "Protocols" section, and check that NFS sharing is enabled. This screen also allows configuration of the NFS share mode (read/read+write).
Chapter 4 Services
187
iSCSI
iSCSI
Introduction
When you configure a LUN on the appliance you can export that volume over an Internet Small Computer System Interface (iSCSI) target. The iSCSI service allows iSCSI initiators to access targets using the iSCSI protocol. The service supports discovery, management, and configuration using the iSNS protocol. The iSCSI service supports both unidirectional (target authenticates initiator) and bidirectional (target and initiator authenticate each other) authentication using CHAP. Additionally, the service supports CHAP authentication data management in a RADIUS database. The system performs authentication first, and authorization second, in two independent steps.
Properties
Property Description
Use iSNS iSNS Server Use RADIUS RADIUS Server RADIUS Server Secret
Whether iSNS discovery is enabled An iSNS server Whether RADIUS is enabled A RADIUS server The RADIUS server's secret
Changing services properties is documented in the BUI and CLI sections of services. The CLI property names are shorter versions of those listed above.
Authentication
If the local initiator has a CHAP name and a CHAP secret, the system performs authentication. If the local initiator does not have the CHAP properties, the system does not perform any authentication and therefore all initiators are eligible for authorization.
Authorization
The iSCSI service allows you to specify a global list of initiators that you can use within initiator groups.
188 Sun ZFS Storage 7000 System Administration Guide November 2010
SMB
CLI
For examples of administering iSCSI initiators and targets, see the SAN section.
Tips
Troubleshooting
If your initiator cannot connect to your target:
Make sure the IQN of the initiator matches the IQN identified in the initiators list. Check that IP address of iSNS server is correct and that the iSNS server is configured. Check that the IP address of the target is correct on the initiator side. Check that initiator CHAP names and secrets match on both sides. Make sure that the target CHAP name and secret do not match those of any of the initiators. Check that the IP address and secret of the RADIUS server are correct, and that the RADIUS server is configured. Check that the initiator accessing the LUN is a member of that LUN's initiator group. Check that the targets exporting that LUN are online. Check that the LUN's operational status is online. Check the logical unit number for each LUN.
SMB
Introduction
The SMB service provides access to filesystems using the SMB protocol. Filesystems must be configured to share using SMB from the Shares configuration.
Chapter 4 Services
189
SMB
Properties
Property Description
Authentication modes supported (LM, NTLM, LMv2, NTLMv2). For more information on the supported authentication modes within each compatibility level, consult the Solaris Express Reference Manual Collection for smb. The preferred domain controller to use when joining an Active Directory domain. If this controller is not available, Active Directory will rely on DNS SRV records and the Active Directory site to locate an appropriate domain controller. The site to use when joining an Active Directory domain. A site is a logical collection of machines which are all connected with high bandwidth, low latency network links. When this property is configured and the preferred domain controller is not specified, joining an Active Directory domain will prefer domain controllers located in this site over external domain controllers.
Maximum # of server threads The maximum number of simultaneous server threads (workers). Default is 1024. Enable Dynamic DNS Enable Oplocks Choose whether the appliance will use Dynamic DNS to update DNS records in the Active Directory domain. Default is off. Choose whether the appliance will grant Opportunistic Locks to SMB clients. This will improve performance for most clients. Default is on. The SMB server grants an oplock to a client process so that the client can cache data while the lock is in place. When the server revokes the oplock, the client flushes its cached data to the server.
Restrict anonymous access to If this option is enabled, clients must authenticate to the SMB service before receiving share list a list of shares. If disabled, anonymous clients may access the list of shares. System Comment Idle Session Timeout Primary WINS server Secondary WINS server Excluded IP addreses from WINS SMB Signing Enabled Meaningful text string. Timeout setting for session inactivity. Primary WINS address configured in the TCP/IP setup. Secondary WINS address configured in the TCP/IP setup. IP addresses excluded from registration with WINS. Enables interoperability with SMB clients using the SMB signing feature. If a packet has been signed, the signature will be verified. If a packet has not been signed it will be accepted without signature verification (if SMB signing is not required - see below). When SMB signing is required, all SMB packets must be signed or they will be rejected, and clients that do not support signing will be unable to connect to the server.
Changing service properties is documented in the BUI and CLI sections of services. The CLI property names are shorter versions of those listed above.
190 Sun ZFS Storage 7000 System Administration Guide November 2010
SMB
Share Properties
Several share properties must be set in certain ways when exporting a share over SMB.
Property Description
Case sensitivity Reject non UTF-8 Non-Blocking Mandatory Locking Resource name Share-level ACL
SMB clients expect case-insensitive behavior, so this property must be "mixed'" or "'insensitive". If non-UTF-8 filenames are allowed in a filesystem, SMB clients may function incorrectly. This property must be enabled to allow byte range locking to function correctly. The name by which clients refer to the share. For information about how this name is inherited from a project, see the Protocols documentation. An ACL which adds another layer of access control beyond the ACLs stored in the filesystem. For more information on this property, see the Protocols documentation.
The case sensitivity and reject non UTF-8 properties can only be set when creating a share.
NFS/SMB Interoperability
The appliance supports NFS and SMB clients accessing the same shares concurrently. To correctly configure the appliance for NFS/SMB interoperability, you must configure the following components: 1. 2. 3. 4. Configure the Active Directory service. Establish an identity mapping strategy and configure the service. Configure SMB. Configure access control, ACL entries, and ACL inheritance on shares.
Note that SMB and NFSv3 do not use the same access control model. For best results, configure the ACL on the root directory from a SMB client as the SMB access control model is a more verbose model.
DFS Namespaces
The Distributed File System (DFS) is a virtualization technology delivered over the SMB and MSRPC protocols. DFS allows administrators to group shared folders located on different servers by transparently connecting them to one or more DFS namespaces. A DFS namespace is a virtual view of shared folders in an organization. An administrator can select which shared folders to present in the namespace, design the hierarchy in which those folders appear and
Chapter 4 Services 191
SMB
determine the names that the shared folders show in the namespace. When a user views the namespace, the folders appear to reside in a single, high-capacity file system. Users can navigate the folders in the namespace without needing to know the server names or shared folders hosting the data. Only one share per system may be provisioned as a standalone DFS namespace. Domain-based DFS namespaces are not supported. Note that one DFS namespace may be provisioned per cluster, even if each cluster node has a separate storage pool. To provision a SMB share as a DFS namespace, use the DFS management MMC snap-in to create a standalone namespace. When the appliance is not joined to an Active Directory domain, additional configuration is necessary to allow Workgroup users to modify DFS namespaces. To enable an SMB local user to create or delete a DFS namespace, that user must have a separate local account created on the server. In the example below, the steps allow the SMB local user dfsadmin to manipulate DFS namespaces. 1. Create a local user account on the server for user dfsadmin. Be sure to use the same password as when the local user was first created on the Windows machine. 2. Add dfsadmin to the local SMB group Administrators. 3. Login as dfsadmin on the Windows machine from which the DFS namespace will be modified.
Autohome Rules
The autohome share feature eliminates the administrative task of defining and maintaining home directory shares for each user that accesses the system through the SMB protocol. Autohome rules map SMB clients to home directories. There are three kinds of autohome rules:
Type Description
This autohome rule queries NIS or LDAP for a user's home directory, then exports that directory to the SMB client as its home directory. An autohome rule which finds home directories based on wildcard characters. When substituting for the user's name, "&" matches the user. An autohome rule which provides a home directory for a particular user.
A name service switch autohome rule and an autohome rule for all users cannot exist at the same time.
Local Groups
Local groups are groups of domain users which confer additional privileges to those users.
192 Sun ZFS Storage 7000 System Administration Guide November 2010
SMB
Group
Description
Administrators can bypass file permissions to change the ownership on files. Backup Operators can bypass file access controls to backup and restore files.
MMC Integration
The Microsoft® Management Console (MMC) is an extensible framework of registered components, known as snap-ins, that provide comprehensive management features for both the local system and remote systems on the network. Computer Management is a collection of Microsoft Management Console tools, that may be used to configure, monitor and manage local and remote services and resources. In order to use the MMC functionality on the Sun ZFS Storage 7000 appliances in workgroup mode, be sure to add the Windows administrator who will use the management console to the Administrators local group on the appliance. Otherwise you may receive an Access is denied or similar error on the administration client when attempting to connect to the appliance using the MMC. The Sun ZFS Storage 7000 appliances support the following Computer Management facilities:
Event Viewer
Display of the Application log, Security log, and System log are supported using the Event Viewer MMC snap-in. These logs show the contents of the alert, audit, and system logs of the Sun ZFS Storage 7000 system. Following is a screen capture that illustrates the Application log and the properties dialog for an error event.
Chapter 4 Services
193
SMB
Share Management
Support for share management includes the following:
Listing shares Setting ACLs on shares Changing share permissions Setting the description of a share
Adding or Deleting a share Setting client side caching property Setting maximum allowed or number of users property
194
SMB
Viewing local SMB users and groups Listing user connections, including listing the number of open files per connection Closing user connections Listing open files, including listing the number of locks on the file and file open mode Closing open files
Chapter 4 Services
195
SMB
Services
Support includes listing of services of the Sun ZFS Storage 7000 system. Services cannot be enabled or disabled using the Computer Management MMC application. Following is a screen capture that illustrates General properties for the vscan Service.
196
SMB
To ensure that only the appropriate users have access to administrative operations there are some access restrictions on the operations performed remotely using MMC.
USERS ALLOWED OPERATIONS
Chapter 4 Services
197
SMB
USERS
ALLOWED OPERATIONS
List open files and close files, disconnect user connections, view services and event log.
CLI
The following are examples of SMB administration at the CLI.
Autohome rules may be created using wildcard characters. The & character matches the users' username, and the ? character matches the first letter of the users' username. The following uses wildcards to match all users:
twofish:configuration services twofish:configuration services twofish:configuration services twofish:configuration services twofish:configuration services ou=Engineering,CN=myhome" twofish:configuration services twofish:configuration services RULE NSS USER rule-000 false Bill ou=Engineering,CN=myhome smb> rule rule rule rule create (uncommitted)> (uncommitted)> (uncommitted)> (uncommitted)> set set set set use_nss=false user=* directory=/export/?/& container="dc=com,dc=fishworks,
The name service switch may also be used to create autohome rules:
twofish:configuration services twofish:configuration services twofish:configuration services ou=Engineering,CN=myhome" twofish:configuration services twofish:configuration services
198
smb> create rule (uncommitted)> set use_nss=true rule (uncommitted)> set container="dc=com,dc=fishworks, rule (uncommitted)> commit smb> list
SMB
DIRECTORY
CONTAINER dc=com,dc=fishworks,
Tasks
This section provides instructions for how to configure and enable the Sun ZFS Storage 7000 appliances for file sharing over SMB from initial configuration using the BUI.
SMB Tasks
Initial Configuration
Initial configuration of the appliance may be completed using the BUI or the CLI and should take less than 20 minutes. Initial Setup may also be performed again later using the Maintenance > System contexts of the BUI or CLI. Initial configuration will take you through the following BUI steps, in general.
1 2
Configure Network Devices, Datalinks, and Interfaces. Create interfaces using the Datalink add or Interface devices to the datalink or interface lists. icons or by using drag-and-drop of
3 4 5 6 7 8
Set the desired properties and click the Apply button to add them to the list. Set each interface to active or standby as appropriate. Click the Apply button at the top of the page to commit your changes. Configure DNS. Provide the base domain name. Provide the IP address of at least one server that is able to resolve hostname and server records in the Active Directory portion of the domain namespace.
Chapter 4 Services 199
SMB
9 10 11
Configure NTP authentication keys to ensure clock synchronization. Click the icon to add a new key.
Specify the number, type, and private value for the new key and apply the changes. The key appears as an option next to each specified NTP server. Associate the key with the appropriate NTP server and apply the changes. To ensure clock synchronization, configure the appliance and the SMB clients to use the same NTP server. Specify Active Directory as the directory service for users and groups. Set the directory domain. Click the Apply button to commit your changes. Configure a storage pool. Click the icon to add a new pool.
12
13 14 15 16 17 18 19
Set the pool name. On the "Allocate and verify storage" screen, configure the JBOD allocation for the storage pool. JBOD allocation may be none, half or all. If no JBODs are detected, check your JBOD cabling and power. Click the Commit button to advance to the next screen. On the "Configure Added Storage" screen, select the desired data profile. Each is rated in terms of availability, performance and capacity. Use these ratings to determine the best configuration for your business needs. Click the Commit button to activate the configuration. Configure Remote Support. If the appliance is not directly connected to the internet, configure an HTTP proxy through which the remote support service may communicate with Sun. Enter your Sun Online Account user name and password. A privacy statement will be displayed for your review. Choose which of your inventory teams to register with. The default team for each account is the same as the account user name, prefixed with a '$'.
Sun ZFS Storage 7000 System Administration Guide November 2010
20 21
22 23 24
25
26
200
SMB
27
Create an account for the appliance in the Active Directory domain. Refer to Active Directory documentation for detailed instructions. On the Configuration > Services > Active Directory screen, click the Join Domain button. Specify the Active Directory domain, administrative user, administrative password and click the Apply button to commit the changes.
2 3
Create a Project. On the Shares screen, click the icon to expand the Projects panel.
Click the Add... link to add a new project. Specify the Project name and apply the change. Select the new project from the Projects panel. Click the Click the icon to add a filesystem. icon for the filesystem.
Click the General link and deselect the Inherit from project checkbox. Choose a mountpoint under /export, even though SMB shares are accessed by resource name. On the Protocols screen for the project, set the resource name to on. Enable sharesmb and share-level ACL for the Project. Click the Apply button to activate the configuration.
FTP
Set SMB properties according to the recommendations in the properties section of this page and click the Apply button to activate the configuration. Click the Autohome link on the Configuration > Services > SMB screen to set autohome rules to map SMB clients to home directories according to the descriptions in the Autohome rules section above and click the Apply button to activate the configuration. icon to Click the Local Groups link on the Configuration > Services > SMB screen and use the add administrators or backup operator users to local groups according to the descriptions in the Local Groups section above and click the Apply button to activate the configuration.
FTP
Introduction
The FTP (File Transfer Protocol) service allows filesystem access from FTP clients. Anonymous logins are not allowed, users must authenticate with whichever name service is configured in Services.
Properties
FTP Properties
General Settings
Property Description
Port (for incoming connections) Maximum # of connections ("0" for unlimited) Turn on delay engine to prevent timing attacks Default login root
The port FTP listens on. Default is 21 This is the maximum number of concurrent FTP connections. Set this to cover the anticipated number of concurrent users. By default this is 30, since each connection creates a system process and allowing too many (thousands) could constitute a DoS attack This inserts small delays during authentication to fool attempts at user name guessing via timing measurements. Turning this on will improve security The FTP login location. The default is "/" and points to the top of the shares hierarchy. All users will be logged into this location after successfully authenticating with the FTP service
202
FTP
Property
Description
Logging level
Permissions to mask from File permissions to remove when files are created. Group and world write are masked newly created files and by default, to prevent recent uploads from being writeable by everyone dirs
Security Settings
Property Description
Enable SSL/TLS Port for incoming SSL/TLS connections Permit root login Maximum # of allowable login attempts
Allow SSL/TLS encrypted FTP connections. This will ensure that the FTP transaction is encrypted. Default is disabled. The port that the SSL/TLS encrypted FTP service listens on. Default is 21. Allow FTP logins for the root user. This is off by default, since FTP authentication is plain text which poses a security risk from network sniffing attacks The number of failed login attempts before an FTP connection is disconnected, and the user must reconnect to try again. By default this is 3
Changing services properties is documented in the BUI and CLI sections of Services. The CLI property names are shorter versions of those listed above.
Logs
Log Description
Logs FTP events, including successful logins and unsuccessful login attempts File transfer log Logs FTP events related to SSL/TLS encryption
Chapter 4 Services
203
HTTP
Tasks
FTP Tasks
Allowing FTP access to a share
1 2 3 4
Go to Configuration->Services Check that the FTP service is enabled and online. If not, enable the service. Select or add a share in the Shares screen. Go to the "Protocols" section, and check that FTP access is enabled. This is also where the mode of access (read/read+write) can be set.
HTTP
Introduction
The HTTP service provides access to filesystems using the HTTP and HTTPS protocols and the HTTP extension WebDAV (Web based Distributed Authoring and Versioning). This allows clients to access shared filesystems through a web browser, or as a local filesystem if their client software supports it. The URL to access these HTTP and HTTPS shares have the following formats respectively: http://hostname/shares/mountpoint/share_name https://hostname/shares/mountpoint/share_name The HTTPS server uses a self-signed security certificate.
Properties
Property Description
Clients must authenticate before share access is allowed, and files they create will have their ownership. If this is not set, files created will be owned by the HTTP service with user "nobody". See the section on authentication below. Select which access methods to support HTTP, HTTPS, or both.
Protocols
204
HTTP
Property
Description
HTTP Port (for incoming connections) HTTPS Port (for incoming secure connections)
Changing services properties is documented in the BUI and CLI sections of services.
Logs
Log Description
network-http:apache22
NDMP
Tasks
HTTP Tasks
Allowing HTTP access to a share
1 2 3 4
Go to Configuration->Services Check that the HTTP service is enabled and online. If not, enable the service. Select or add a share in the Shares screen. Go to the "Protocols" section, and check that HTTP access is enabled. This is also where the mode of access (read/read+write) can be set.
NDMP
Introduction
The NDMP (Network Data Management Protocol) service enables the system to participate in NDMP-based backup and restore operations controlled by a remote NDMP client called a Data Management Application (DMA). Using NDMP, appliance user data (i.e., data stored in administrator-created shares on the appliance) can be backed up and restored to both locally attached tape devices and remote systems. Locally-attached tape devices can also be exposed to the DMA for backing up and restoring remote systems. NDMP cannot be used to backup and restore system configuration data. Use the [[Maintenance:System:ConfigurationBackup|Configuration Backup/Restore]] feature for that.
NDMP
configured in the DMA, these devices are available for backup and restore of the appliance or other systems on the same network. After adding tape drives or changers to the system or removing such devices from the system, a reboot may be required before the changes will be recognized by the NDMP service. After that, the DMA may need to be reconfigured because tape device names may have changed. In remote configurations, the tape devices are not physically connected to the system being backed up and restored (the data server) but rather to the system running the DMA or a separate system (the tape server). These are commonly called "3-way configurations" because the DMA controls two other systems. In these configurations the data stream is transmitted between the data server and the tape server over an IP network.
File-based for filesystems only. Supports file history and direct access recovery (DAR). File-based for filesystems only. Supports file history and direct access recovery (DAR). Share-based for both filesystems and volumes. Does not support file history or direct access recovery (DAR), but may be faster for some datasets. Only supported with NDMPv4.
There is no standard NDMP data stream format, so backup streams generated on the appliance can only be restored on 7000-series appliances running compatible software. Future versions of appliance software can generally restore streams backed up from older versions of the software, but the reverse is not necessarily true. For example, the "zfs" backup type is new in 2010.Q3 and systems running 2010.Q1 or earlier cannot restore backup streams created using type "zfs" under 2010.Q3.
NDMP
of that share under that path is backed up. In both cases, other shares mounted inside the specified share under the backup path will not be backed up; these shares must be specified separately for backup. Snapshots If the backup path specifies a live filesystem (e.g., /export/code) or a path contained within a live filesystem (e.g., /export/code/src), the appliance immediately takes a new snapshot and backs up the given path from that snapshot. When the backup completes, the snapshot is destroyed. If the backup path specifies a snapshot (e.g., /export/code/.zfs/snapshot/mysnap), no new snapshot is created and the system backs up from the specified snapshot. Share metadata To simplify backup and restore of complex share configurations, "dump" and "tar" backups include share metadata for projects and shares associated with the backup path. This metadata describes the share configuration on the appliance, including protocol sharing properties, quota properties, and other properties configured on the Shares screen. (This is not to be confused with filesystem metadata like directory structure and file permissions, which is also backed up and restored with NDMP.) For example, if you back up /export/proj, the share metadata for all shares whose mountpoints start with /export/proj will be backed up, as well as the share metadata for their parent projects. Similarly, if you back up /export/someshare/somedir, and a share is mounted at /export/someshare, that share and its project's share metadata will be backed up. When restoring, if the destination of the restore path is not contained inside an existing share, projects and shares in the backup stream will be recreated as needed with their original properties as stored in the backup. For example, if you back up /export/foo, which contains project proj1 and shares share1 and share2, and then destroy the project and restore from the backup, then these two shares and the project will be recreated with their backed-up properties as part of the restore operation. During a restore, if a project exists that would have been automatically recreated, the existing project is used and no new project is automatically created. If a share exists that would have been automatically recreated, and if its mountpoint matches what the appliance expects based on the original backup path and the destination of the restore, then the existing share is used and no new share is automatically created. Otherwise, a new share is automatically created from the metadata in the backup. If a share with the same name already exists (but has a different mountpoint), then the newly created share will be given a unique name starting with "ndmp-" and with the correct mountpoint. It is recommended that you either restore a stream whose datasets no longer exist on the appliance, allowing the appliance to recreate datasets as specified in the backup stream, or precreate a destination share for restores. Either of these practices avoids surprising results related to the automatic share creation described above.
208 Sun ZFS Storage 7000 System Administration Guide November 2010
NDMP
or in the CLI as the value of the canonical_name property. Canonical names do not begin with a leading '/', but when configuring the backup path the canonical name must be prefixed with '/'. Both projects and shares can be specified for backup using type "zfs". If the canonical name is specified as-is, then a new snapshot is created and used for the backup. A specific snapshot can be specified for backup using the '@snapshot' suffix, in which case no new snapshot is created and the specified snapshot is backed up. For examples:
Canonical name Shares backed up
New snapshot of the local project called "default" and all of its shares. Named snapshot "yesterday" of local project "default", and all of its shares having snapshot "yesterday".
New snapshot of share "code" in local project "default". "code" could be a filesystem volume.
pool-0/local/default/code@yesterday Named snapshot "yesterday" of share "code" in local project "default". "code" could a filesystem or volume.
Because level-based incremental backups using the "zfs" backup type require a base snapshot from the previous incremental, the default behavior for level backups for which a new snapshot is created is to keep the new snapshot so that it can be used for subsequent incremental backups. If the DMA indicates that the backup will not be used for subsequent incremental backups by setting UPDATE=n, the newly created snapshot is destroyed after the backup. Existing user snapshots are never destroyed after a backup. See "Incremental backups" below for details. Share metadata
Chapter 4 Services 209
NDMP
Share metadata (i.e., share configuration) is always included in "zfs" backups. When restoring a full backup with type "zfs", the destination project or share must not already exist. It will be recreated from the metadata in the backup stream. When restoring an incremental backup with type "zfs", the destination project or share must already exist. Its properties will be updated from the metadata in the backup stream. See "Incremental backups" below for details.
Incremental backups
The appliance supports level-based incremental backups for all of the above backup types. To specify a level backup, DMAs typically specify the following three environment variables:
Variable Details
Integer from 0 to 9 identifying the backup level. Specifies a particular incremental backup set. Multiple sets of level incremental backups can be used concurrently by specifying different values for DMP_NAME. Indicates whether this backup can be used as the base for subsequent incremental backups
By definition, a level-N backup includes all files changed since the previous backup of the same backup set (specified by "DMP_NAME") of the same share using LEVEL less than N. Level-0 backups always include all files. If UPDATE has value "y" (the default), then the current backup is recorded so that future backups of level greater than N will use this backup as a base. These variables are typically managed by the DMA and need not be configured directly by administrators. Below is a sample incremental backup schedule:
Day Details
Level-0 backup. Backup contains all files in the share. Level-1 backup. Backup contains all files changed since the last full (monthly) backup Level-2 backup. Backup contains all files changed since the last level-1 backup
To recover the filesystem's state as it was on the 24th of the month, an administrator typically restores the Level-0 backup from the 1st of the month to a new share, then restores the Level-1 backup from the 21st of the month, and then restores the Level-2 backup from the 24th of the month. To implement level-based incremental backups the appliance must keep track of the level backup history for each share. For "tar" and "dump" backups, the level backup history is maintained in the share metadata. Incremental backups traverse the filesystem and include files
210 Sun ZFS Storage 7000 System Administration Guide November 2010
NDMP
modified since the time of the previous level backup. At restore time, the system simply restores all the files in the backup stream. In the above example, it would therefore be possible to restore the Level-2 backup from the 24th onto any filesystem and the files contained in that backup stream will be restored even though the target filesystem may not match the filesystem where the files were backed up. However, best practice suggests using a procedure like the above which starts from an empty tree restores the previous level backups in order to recover the original filesystem state. To implement efficient level-based incremental backups for type "zfs", the system uses a different approach. Backups that are part of an incremental set do not destroy the snapshot used for the backup but rather leave it on the system. Subsequent incremental backups use this snapshot as a base to quickly identify the changed filesystem blocks and generate the backup stream. As a consequence, the snapshots left by the NDMP service after a backup must not be destroyed if you want to create subsequent incremental backups. Another important consequence of this behavior is that in order to restore an incremental stream, the filesystem state must exactly match its state at the base snapshot of the incremental stream. In other words, in order to restore a level-2 backup, the filesystem must look exactly as it did when the previous level-1 backup completed. Note that the above commonly-used procedure guarantees this because when restoring the Level-2 backup stream from the 24th, the system is exactly as it was when the Level-1 backup from the 21st completed because that backup has just been restored. The NDMP service will report an error if you attempt to restore an incremental "zfs" backup stream to a filesystem whose most recent snapshot doesn't match the base snapshot for the incremental stream, or if the filesystem has been changed since that snapshot. You can configure the NDMP service to rollback to the base snapshot just before the restore begins by specifying the NDMP environment variable "ZFS_FORCE" with value "y" or by configuring the "Rollback datasets" property of the NDMP service (see Properties below).
Properties
The NDMP service configuration consists of the following properties:
Property Description
Used to authenticate the DMA (Data Management Application) Enables the system to locate files by position rather than by sequential search during restore operations. Enabling this option reduces the time it takes to recover a small number of files from many tapes. You must specify this option at backup time in order to be able to recover individual files later
Chapter 4 Services
211
NDMP
Property
Description
Ignore file metadata changes for incremental backups Restore full absolute path for partial restore (v3 only) NDMP version TCP port Default restore pool(s)
Directs the system to backup only files in which content has changed, ignoring files for which only metadata, such as permissions or ownership, has changed. This option only applies to incremental "tar" and "dump" backups and is disabled by default Specifies that when a file is restored, the complete absolute path to that file is also restored (instead of just the file itself). This option is disabled by default. The version of NDMP that your DMA supports The NDMP default connection port is 10000. NDMPv3 always uses this port. NDMPv4 allows a different port if needed. When doing a full restore using types "tar" or "dump", the system will re-create datasets if there is not already a share mounted at the target. Because the NDMP protocol specifies only the mountpoint, the system will by default choose a pool in which to recreate any projects and shares. On a system with multiple pools, this property allows the user to explicitly specify one or more pools. Multiple pools need only be specified in a cluster with active pools on each head, and it is the responsibility of the user to make sure that this list is kept in sync with any storage configuration changes. If none of the pools exist or are online, then the system will select a default pool at random. Only applies to backups with type "zfs". Determines whether when restoring an incremental backup the system rolls back the target project and share to the snapshot used as the base for the incremental restore. If the project and shares are rolled back, then any changes made since that snapshot will be lost. This setting is normally controlled by the DMA via the "ZFS_FORCE" environment variable (see "Incremental Backups" above) but this property can be used to override the DMA setting to always rollback these datasets or never roll them back. Not rolling them back will cause the restore to fail unless they have already been manually rolled back. This property is intended for use with DMAs that do not allow administrators to configure custom environment variables like ZFS_FORCE. Specifies whether the DMA expects SystemV or BSD semantics. The default is SystemV, which is recommended for most DMAs. This option is only applicable for locally attached tape drives exported via NDMP. Consult your DMA documentation for which mode your DMA expects. Changing this option only changes which devices are exported when the DMA scans for devices, so you will need to reconfigure the tape devices in your DMA after changing this setting.
Changing services properties is documented in the BUI and CLI sections of Services.
212
SFTP
Logs
Log Description
system-ndmpd:default
SFTP
Introduction
The SFTP (SSH File Transfer Protocol) service allows filesystem access from SFTP clients. Anonymous logins are not allowed, users must authenticate with whichever name service is configured in Services.
Properties
Property Description
Port (for incoming connections) Permit root login Logging level SFTP Keys
The port SFTP listens on. Default is 218 Allow SFTP logins for the root user. This is on by default, since SFTP authentication is encrypted and secure The verbosity of SFTP log messages RSA/DSA public keys for SFTP authentication. Text comments can be associated with the keys to help administrators track why they were added.
Changing services properties is documented in the BUI and CLI sections of Services. The CLI property names are shorter versions of those listed above.
SFTP Port
The SFTP service uses a non-standard port number for connections to the appliance. This is to avoid conflicts with administrative SSH connections to port 22. By default, the SFTP port is 218 and must be specified on the SFTP client prior to connecting. For example, an OpenSolaris client using SFTP, would connect with the following command:
Chapter 4 Services 213
Virus Scan
Logs
Log Description
network-sftp:default
Tasks
SFTP Tasks
Allowing SFTP access to a share
1 2 3 4
Go to Configuration->Services Check that the SFTP service is enabled and online. If not, enable the service. Select or add a share in the Shares screen. Go to the "Protocols" section, and check that SFTP access is enabled. This is also where the mode of access (read/read+write) can be set.
Virus Scan
Introduction
The Virus Scan service will scan for viruses at the filesystem level. When a file is accessed from any protocol, the Virus Scan service will first scan the file, and both deny access and quarantine the file if a virus is found. Once a file has been scanned with the latest virus definitions, it is not rescanned until it is next modified. Files accessed by NFS clients that have cached file data or been delegated read privileges by the NFSv4 server may not be immediately quarantined.
214 Sun ZFS Storage 7000 System Administration Guide November 2010
Virus Scan
Properties
Property Description
Files larger than this size will not be scanned, to avoid significant performance penalties. These large files are unlikely to be executable themselves (such as database files), and so are less likely to pose a risk to vulnerable clients. The default value is 1GB. Enabled by default, this allows access to files larger than the maximum scan size (which are therefore unscanned prior to being returned to clients). Administrators at a site with more stringent security requirements may elect to disable this option and increase the maximum file size, so that all accessible files are known to be scanned for viruses.
Changing services properties is documented in the BUI and CLI sections of services. The CLI property names are shorter versions of those listed above.
File Extensions
This section allows control over which files are or are not scanned, based on filename pattern matching. The default value, "*", will cause all files to be scanned (impacting performance on all file access). It may suit your environment to scan only a subset of files deemed to pose the greatest risk. For example, to scan all high-risk filename patterns, including zip files, but not files whose names match the pattern "data-archive*.zip", one might configure this setting as follows:
Action Pattern
Note that "Don't Scan *" is required to prevent scanning of all other file types not explicitly included in the scan list.
Chapter 4 Services 215
Virus Scan
Scanning Engines
In this section, specify which scanning engines to use. A scanning engine is an external third-party virus scanning server which the appliance contacts using ICAP (Internet Content Adaptation Protocol, RFC 3507) to have files scanned.
Property Description
Use this scan engine Hostname or IP address of the scan engine server Maximum number of concurrent connections. Some scan engines operate better with connections limited to 8. Port for the scan engine
Logs
Log Description
vscan
Tasks
The following are example tasks. See the BUI and CLI sections for how these tasks apply to each interface method.
Go to Configuration->Services->Virus Scan. Set desired properties. Apply/commit the configuration. Go to Shares. Edit a filesystem or a project.
Sun ZFS Storage 7000 System Administration Guide November 2010
NIS
6 7
NIS
Introduction
Network Information Service (NIS) is a name service for centralized management. The appliance can act as a NIS client for users and groups, so that:
NIS users can login to FTP and HTTP/WebDAV. NIS users can be granted privileges for appliance administration. The appliance supplements NIS information with its own privilege settings.
Properties
Property Description
NIS domain to use The appliance will send a NIS broadcast to locate NIS servers for that domain NIS server hostnames or IP addresses
Changing services properties is documented in the BUI and CLI sections of Services. The appliance will connect to the first NIS server listed or found using broadcast, and switch to the next if it stops responding.
Logs
Log Description
NIS client service log Log of the appliance name service, through which NIS queries are made Log of the appliance domainname configurator
Chapter 4 Services
217
LDAP
Tasks
The following are example tasks. See the BUI and CLI sections for how these tasks apply to each interface method.
NIS Tasks
Adding an appliance administrator from NIS
If you have an existing user in NIS who would like to login using their NIS credentials and administer the appliance:
1 2 3 4 5 6 7
Go to Configuration->Services->NIS Set the NIS domain and server properties. Apply/commit the configuration. Go to Configuration->Users Add user with type "directory" Set username to their NIS username Continue with the instructions in Users for adding authorizations to this user.
LDAP
Introduction
LDAP (Lightweight Directory Access Protocol) is a directory service for centralizing management of users, groups, hostnames and other resources (called objects). This service on the appliance acts as an LDAP client so that:
LDAP users can login to FTP and HTTP/WebDAV. LDAP user names (instead of numerical ids) can be used to configure root directory ACLs on a share. LDAP users can be granted privileges for appliance administration. The appliance supplements LDAP information with its own privilege settings.
218
LDAP
Properties
Consult your LDAP server administrator for the appropriate settings for your environment.
Property Description
Use TLS (Transport Layer Security, the descendant of SSL) to establish secure connections to the LDAP server Distinguished name of the base object, the starting point for directory searches. Which objects in the LDAP directory are searched, relative to the base object. Search results can be limited only to objects directly beneath the base search object (one-level) or they can include any object beneath the base search object (subtree). The default is one-level. Method used to authenticate the appliance to the LDAP server. The appliance supports Simple (RFC 4513), SASL/DIGEST-MD5, and SASL/GSSAPI authentication. If the Simple authentication method is used, SSL/TLS should be enabled so that the user's DN and password are not sent in plaintext. When using the SASL/GSSAPI authentication method, only the self bind credential level is available. Credentials used to authenticate the appliance to the LDAP server. "Anonymous" gives the appliance access only to data that is available to everyone. "Proxy" directs the service to bind via a specified account. "Self" authenticates the appliance using local authentication. Self authentication can only be used with the SASL/GSSAPI authentication method. Distinguished name of account used for proxy authentication. Password for account used for proxy authentication. Schema used by the appliance. This property allows administrators to override the default search descriptor, attribute mappings, and object class mappings for users and groups. See "Custom Mappings" below. List of LDAP servers to use. If only one server is specified, the appliance will only use that one server and LDAP services will be unavailable if that server fails. If multiple servers are specified, any functioning server may be used at any time without preference. If any server fails, another server in the list will be used. LDAP services will remain available unless all specified servers fail.
Authentication method
Servers
Changing services properties is documented in the BUI and CLI sections of Services.
Custom Mappings
To lookup users and groups in the LDAP directory, the appliance uses a search descriptor and must know which object classes correspond to users and groups and which attributes correspond to the properties needed. By default, the appliance uses object classes specified by
Chapter 4 Services 219
LDAP
RFC 2307 (posixAccount and posixGroup) and the default search descriptors shown below, but this can be customized for different environments. The base search DN used in the examples below is dc=example,dc=com:
Search descriptor Default value Example
users groups
The search descriptor, object classes, and attributes used can be customized using the Schema definition property. To override the default search descriptor, enter the entire DN you wish to use. The appliance will use this value unmodified, and will ignore the values of the Base search DN and Search scope properties. To override user and group attributes and objects, choose the appropriate tab ("Users" or "Groups") and specify mappings using the default = new syntax, where default is the default value and new is the value you want to use. For examples:
To use unixaccount instead of posixAccount as the user object class, enter posixAccount = unixaccount in Object class mappings on the Users tab. To use employeenumber instead of uid as the attribute for user objects, enter uid = employeenumber in Attribute mappings on the Users tab. To use unixgroup instead of posixGroup as the group object class, type posixGroup = unixgroup in Object class mappings on the Groups tab. To use groupaccount instead of cn as the attribute for group objects, enter cn = groupaccount in Attribute mappings on the Groups tab.
Logs
Log Description
appliance-kit-nsswitch:default og of the appliance name service, through which LDAP queries are made L
Tasks
The following are example tasks. See the BUI and CLI sections for how these tasks apply to each interface method.
220 Sun ZFS Storage 7000 System Administration Guide November 2010
Active Directory
LDAP Tasks
Adding an appliance administrator from LDAP
If you have an existing user in LDAP who would like to login using their LDAP credentials and administer the appliance:
1 2 3 4 5 6 7
Go to Configuration->Services->LDAP Set the LDAP service properties. Apply/commit the configuration. Go to Configuration->Users Add user with type "directory" Set username to their LDAP username Continue with the instructions in Users for adding authorizations to this user.
Active Directory
Introduction
The Active Directory service provides access to a Microsoft Active Directory database, which stores information about users, groups, shares, and other shared objects. This service has two modes: domain and workgroup mode, which dictate how SMB users are authenticated. When operating in domain mode, SMB clients are authenticated through the AD domain controller. In workgroup mode, SMB clients are authenticated locally as local users. See Users for more information on local users.
Properties
Join Domain
The following table describes properties associated with joining an Active Directory domain.
Chapter 4 Services 221
Active Directory
Property
Description
Active Directory Domain Administrative User Administrative Password Additional DNS Search Path
An Active Directory domain An AD user who has credentials to create a computer account in Active Directory The administrative user's password When this optional property is specified, DNS queries are resolved against this domain, in addition to the primary DNS domain and the Active Directory domain.
Join Workgroup
The following table describes the configurable property for joining a workgroup.
Property Description
Windows Workgroup
A workgroup
Changing services properties is documented in the BUI and CLI sections of services. The CLI property names are shorter versions of those listed above.
LDAP Signing
There is no configuration option for LDAP signing, as that option is negotiated automatically when communicating with a domain controller. LDAP signing operates on communication between the storage appliance and the domain controller, whereas SMB signing operations on communication between SMB clients and the storage appliance.
222 Sun ZFS Storage 7000 System Administration Guide November 2010
Active Directory
Windows Server 2003 Windows Server 2008 SP1 Windows Server 2008 SP1 Windows Server 2008 SP2 Windows Server 2008 R2
all 2009.Q2 3.1 and earlier 2009.Q2 4.0 and later 2009.Q2 4.0 and later 2009.Q2 4.0 and later
none Apply hotfix for KB957441 as needed. (See section B.) Must apply hotfix for KB951191; apply hotfix for KB957441 as needed. (See sections A and B.) See Section C. See Section C.
Active Directory
BUI
Use the "JOIN DOMAIN" button to join a domain, and the "JOIN WORKGROUP" button to join a workgroup.
CLI
To demonstrate the CLI interface, the following example will view the existing configuration, join a workgroup, and then join a domain.
twofish:> configuration services ad twofish:configuration services ad> show Properties: <status> = online mode = domain domain = eng.fishworks.com Children: domain => Join an Active Directory domain workgroup => Join a Windows workgroup
Observe that the appliance is currently operating in the domain "eng.fishworks.com". Following is an example of leaving that domain and joining a workgroup.
twofish:configuration services ad> workgroup twofish:configuration services ad workgroup> set workgroup=WORKGROUP twofish:configuration services ad workgroup> commit twofish:configuration services ad workgroup> done twofish:configuration services ad> show Properties: <status> = disabled mode = workgroup workgroup = WORKGROUP
Following is an example of configuring the site and preferred domain controller in preparation for joining another domain.
twofish:configuration services ad> done twofish:> configuration services smb twofish:configuration services smb> set ads_site=sf twofish:configuration services smb> set pdc=192.168.3.21 twofish:configuration services smb> commit twofish:configuration services smb> show Properties: <status> = online lmauth_level = 4 pdc = 192.168.3.21 ads_site = sf twofish:configuration services smb> done
Following is an example of joining the new domain after the properties are configured.
224 Sun ZFS Storage 7000 System Administration Guide November 2010
Active Directory
twofish:> configuration services ad twofish:configuration services ad> domain twofish:configuration services ad domain> set domain=fishworks.com twofish:configuration services ad domain> set user=Administrator twofish:configuration services ad domain> set password=******* twofish:configuration services ad domain> set searchdomain=it.fishworks.com twofish:configuration services ad domain> commit twofish:configuration services ad domain> done twofish:configuration services ad> show Properties: <status> = online mode = domain domain = fishworks.com
Tasks
See the BUI and CLI sections for how these tasks apply to each interface method.
Configure an Active Directory site in the SMB context. (optional) Configure a preferred domain controller in the SMB context. (optional) Enable NTP, or ensure that the clocks of the appliance and domain controller are synchronized to within five minutes. Ensure that your DNS infrastructure correctly delegates to the Active Directory domain, or add your domain contoller's IP address as an additional name server in the DNS context. Configure the Active Directory domain, administrative user, and administrative password. Apply/commit the configuration.
5 6
Joining a Workgroup
1 2
Identity Mapping
Identity Mapping
Concepts
The identity mapping services manages Windows and Unix user identities simultaneously by using both traditional Unix UIDs (and GIDs) and Windows SIDs. The SMB service uses the identity mapping service to associate Windows and Unix identities. When the SMB service authenticates a user, it uses the identity mapping service to map the user's Windows identity to the appropriate Unix identity. If no Unix identity exists for a Windows user, the service generates a temporary identity using an ephemeral UID and GID. These mappings allow a share to be exported and accessed concurrently by SMB and NFS clients. By associating Windows and Unix identities, an NFS and SMB client can share the same identity, thereby allowing access to the same set of files. In the Windows operating system, an access token contains the security information for a login session and identifies the user, the user's groups, and the user's privileges. Administrators define Windows users and groups in a Workgroup, or in a SAM database, which is managed on an Active Directory domain controller. Each user and group has a SID. An SID uniquely identifies a user or group both within a host and a local domain, and across all possible Windows domains. Unix creates user credentials based on user authentication and file permissions. Administrators define Unix users and groups in local password and group files or in a name or directory service, such as NIS and LDAP. Each Unix user and group has a UID and a GID. Typically, the UID or GID uniquely identifies a user or group within a single Unix domain. However, these values are not unique across domains. The identity mapping service creates and maintains a database of mappings between SIDs, UIDs, and GIDs. Three different mapping approaches are available, as described in the following table:
Retrieve mapping information from a Active Directory database using IDMU properties Retrieve mapping information from a Active Directory or LDAP database Configure mappings with name-based mappings
226
Identity Mapping
Method
Description
Ephemeral mapping
When IDMU mapping is enabled, that method takes precedence over all other mapping methods. If directory-based mapping is enabled, that mapping approach will take precedence over the other approaches. If directory-based mapping is not available, then the service will attempt to map an identity the name-based approach. If no name-based rule is available for a given identity, the service will fallback on creating an ephemeral mapping.
IDMU
Microsoft offers a feature called "Identity Management for Unix", or IDMU. This software is available for Windows Server 2003, and is bundled with Windows Server 2003 R2 and later. This feature is part of what was called "Services For Unix" in its unbundled form. The primary use of IDMU is to support Windows as a NIS/NFS server. IDMU adds a "UNIX Attributes" panel to the Active Directory Users and Computers user interface that lets the administrator specify a number of UNIX-related parameters: UID, GID, login shell, home directory, and similar for groups. These parameters are made available through AD through a schema similar to (but not the same as) RFC2307, and through the NIS service. When the IDMU mapping mode is selected, the identity mapping service consumes these Unix attributes to establish mappings between Windows and Unix identities. This approach is very similar to directory-based mapping, only the identity mapping service queries the property schema established by the IDMU software instead of allowing a custom schema. When this approach is used, no other directory-based mapping may take place.
Directory-based Mapping
Directory-based mapping involves annotating an LDAP or Active Directory object with information about how the identity maps to an equivalent identity on the opposite platform. These extra attributes associated with the object must be configured in the following properties.
Directory-Based Mapping
Chapter 4 Services
227
Identity Mapping
Property
Description
AD Attribute - Unix User Name AD Attribute - Unix Group Name Native LDAP Attribute Windows User Name
The name in the AD database of the equivalent Unix user name The name in the AD database of the equivalent Unix group name The name in the LDAP database of the equivalent Windows identity
Changing services properties is documented in the BUI and CLI sections of services. The CLI property names are shorter versions of those listed above. For information on augmenting the Active Directory or the LDAP schemas, see the section Directory-Based Identity Mapping for Users and Groups (Task Map) in the Solaris CIFS Administration Guide on www.docs.sun.com.
Name-based Mapping
The name-based mapping approach involves creating various rules which map identities by name. These rules establish equivalences between Windows identities and Unix identities.
Mapping type Mapping direction Windows domain Windows entity Unix entity Unix type
Whether this mapping grants or denies credentials The mapping direction. A mapping may map credentials in both directions, only from Windows to Unix, or only from Unix to Windows The Active Directory domain of the Windows identity The name of the Windows identity The name of the Unix identity The type of the Unix identity, either a user or a group
228
Identity Mapping
Case Sensitivity
Windows names are case-insensitive and Unix names are case-sensitive. The user names JSMITH, JSmith, and jsmith are equivalent names in Windows, but they are three distinct names in Unix. Case sensitivity affects name mappings differently depending on the direction of the mapping.
For a Windows-to-Unix mapping to produce a match, the case of the Windows username must match the case of the Unix user name. For example, only Windows user name "jsmith" matches Unix user name "jsmith". Windows user name "Jsmith" does not match. An exception to the case matching requirement for Windows-to-Unix mappings occurs when the mapping uses the wildcard character, "*" to map multiple user names. If the identity mapping service encounters a mapping that maps Windows user *@some.domain to Unix user "*", it first searches for a Unix name that matches the Windows name as-is. If it does not find a match, the service converts the entire Windows name to lower case and searches again for a matching Unix name. For example, the windows user name "[email protected]" maps to Unix user name "jsmith". If, after lowering the case of the Windows user name, the service finds no match, the user does not obtain a mapping. You can create a rule to match strings that differ only in case. For example, you can create a user-specific mapping to map the Windows user "[email protected]" to Unix user "jSmith". Otherwise, the service assigns an ephemeral ID to the Windows user. For a Unix-to-Windows mapping to produce a match, the case does not have to match. For example, Unix user name "jsmith" matches any Windows user name with the letters "JSMITH" regardless of case.
Mapping Persistence
When the identity mapping service provides a name mapping, it stores the mapping for 10 minutes, at which point the mapping expires. Within its 10-minute life, a mapping is persistent across restarts of the identity mapping service. If the SMB server requests a mapping for the user after the mapping has expired, the service re-evaluates the mappings. Changes to the mappings or to the name service directories do not affect existing connections within the 10-minute life of a mapping. The service evaluates mappings only when the client tries to connect to a share and there is no unexpired mapping.
Domain-Wide Rules
A domain-wide mapping rule matches some or all of the names in a Windows domain to Unix names. The user names on both sides must match exactly (except for case sensitivity conflicts, which are subject to the rules discussed earlier). For example, you can create a bidirectional rule to match all Windows users in "myDomain.com" to Unix users with the same name, and vice-versa. For another example you can create a rule that maps all Windows users in "myDomain.com" in group "Engineering" to Unix users of the same name. You cannot create domain-wide mappings that conflict with other mappings.
Chapter 4 Services 229
Identity Mapping
Deny Mappings
Deny mapping rules prevent users from obtaining any mapping, including an ephemeral ID, from the identity mapping service. You can create domain-wide or user-specific deny mappings for Windows users and for Unix users. For example, you can create a mapping to deny access to SMB shares for all Unix users in the group "guest". You cannot create deny mappings that conflict with other mappings.
Maps Windows identity to Unix identity, and Unix identity to Windows identity Maps Windows identity to Unix identity Maps Unix identity to Windows identity Prevents Windows identity from obtaining credentials Prevents Unix identity from obtaining credentials
Ephemeral Mapping
If no name-based mapping rule applies for a particular user, that user will be given temporary credentials through an ephemeral mapping unless they are blocked by a deny mapping. When a Windows user with an ephemeral Unix name creates a file on the system, Windows clients accessing the file using SMB see that the file is owned by that Windows identity. However, NFS clients see that the file is owned by "nobody".
Best Practices
Configuring fine-grained identity mapping rules only applies when you want to have the same user access a common set of files as both an NFS and SMB client. If NFS and SMB clients are accessing disjoint filesystems, there's no need to configure any identity mapping rules.
230
Identity Mapping
Reconfiguring the identity mapping service has no effect on active SMB sessions. Connected users remain connected, and their previous name mapping is available for authorizing access to additional shares for up to 10 minutes. To prevent unauthorized access you must configure the mappings before you export shares. The security that your identity mappings provide is only as good as their synchronization with your directory services. For example, if you create a name-based mapping that denies access to a particular user, and the user's name changes, the mapping no longer denies access to that user. You can only have one bidirectional mapping for each Windows domain that maps all users in the Windows domain to all Unix identities. If you want to create multiple domain-wide rules, be sure to specify that those rules map only from Windows to Unix. Use the IDMU mapping mode instead of directory-based mapping whenever possible.
Testing Mappings
The Mappings tab in the BUI shows how various identities are mapped given the current set of rules. By specifying a Windows entity or Unix entity, the entity will be mapped to its corresponding identity on the opposite platform. The resulting information in the User Properties and Group Properties sections displays information about the mapping identity, including the source of the mapping.
Examples
Here is a example of adding two name-based rules in the CLI. The first example creates a bi-directional name-based mapping between a Windows user and Unix user.
twofish:> configuration services idmap twofish:configuration services idmap> create twofish:configuration services idmap (uncommitted)> set windomain=eng.fishworks.com twofish:configuration services idmap (uncommitted)> set winname=Bill twofish:configuration services idmap (uncommitted)> set direction=bi twofish:configuration services idmap (uncommitted)> set unixname=wdp twofish:configuration services idmap (uncommitted)> set unixtype=user twofish:configuration services idmap (uncommitted)> commit twofish:configuration services idmap> list MAPPING WINDOWS ENTITY DIRECTION UNIX ENTITY idmap-000 [email protected] (U) == wdp (U)
The next example creates a deny mapping to prevent all Windows users in a domain from obtaining credentials.
twofish:configuration services idmap> create twofish:configuration services idmap (uncommitted)> list Properties:
Chapter 4 Services 231
Identity Mapping
= = = = =
twofish:configuration services idmap (uncommitted)> set windomain=guest.fishworks.com twofish:configuration services idmap (uncommitted)> set winname=* twofish:configuration services idmap (uncommitted)> set direction=win2unix twofish:configuration services idmap (uncommitted)> set unixname= twofish:configuration services idmap (uncommitted)> set unixtype=user twofish:configuration services idmap (uncommitted)> commit twofish:configuration services idmap> list MAPPING WINDOWS ENTITY DIRECTION UNIX ENTITY idmap-000 [email protected] (U) == wdp (U) idmap-001 *@guest.fishworks.com (U) => "" (U)
Tasks
The following are example tasks. See the BUI and CLI sections for how these tasks apply to each interface method.
Join an Active Directory domain. Configure directory-based mapping (optional). Configure deny mappings. Configure name-based mappings.
Configure whether the mapping grants or denies credentials. Configure the domain and name for the Windows identity. Configure the direction of the mapping. Configure the name and type for the Unix identity. Apply/commit the configuration
Sun ZFS Storage 7000 System Administration Guide November 2010
DNS
DNS
Introduction
The DNS (Domain Name Service) client provides the ability to resolve IP addresses to hostnames and vice versa, and is always enabled on the appliance. Optionally, secondary hostname resolution via NIS and/or LDAP, if configured and enabled, may be requested for hostnames and addresses that cannot be resolved using DNS. Hostname resolution is used throughout the appliance user interfaces, including in audit logs to indicate the location from which a user performed an auditable action and in Analytics to provide statistics on a per-client basis. The configurable properties for the DNS client include a base domain name and a list of servers, specified by IP address. You must supply a domain name and at least one server address; the server must be capable of returning an NS (NameServer) record for the domain you specify, although it need not itself be authoritative for that domain. You will receive an error message if your DNS server(s) do not meet this requirement.
Properties
Property Description
DNS Domain DNS Server(s) Allow IPv4 non-DNS resolution Allow IPv6 non-DNS resolution
Domain name to search first when performing partial hostname lookups One or more DNS servers. IP addresses must be used. IPv4 addresses may be resolved to hostnames, and hostnames to IPv4 addresses, using NIS and/or LDAP if configured and enabled. IPv4 and IPv6 addresses may be resolved to hostnames, and hostnames to IPv4 and IPv6 addresses, using NIS and/or LDAP if configured and enabled.
Changing services properties is documented in the BUI and CLI sections of Services.
CLI
The CLI includes builtins for nslookup and getent hosts, which can be used to test that hostname resolution is working:
Chapter 4 Services 233
DNS
caji:> nslookup deimos 192.168.1.109 deimos.sf.fishworks.com caji:> getent hosts deimos 192.168.1.109 deimos.sf.fishworks.com
Logs
Log Description
Non-DNS Resolution
DNS is a standard, enterprise-grade, highly-scalable and reliable mechanism for mapping between hostnames and IP addresses. Use of working DNS servers is a best practice and will generally yield the best results. In some environments, there may be a subset of hosts that can be resolved only in NIS or LDAP maps. If this is the case in your environment, enable non-DNS host resolution and configure the appropriate directory service(s). If LDAP is used for host resolution, the hosts map must be located at the standard DN in your database: ou=Hosts,(Base DN), and must use the standard schema. When this mode is used with NFS sharing by netgroups, it may be necessary for client systems to use the same hostname resolution mechanism configured on the appliance, or NFS sharing exceptions may not work correctly. When non-DNS host resolution is enabled, DNS will still be used. Only if an address or hostname cannot be resolved using DNS will NIS (if enabled) and then LDAP (if enabled) be used to resolve the name or address. This can have confusing and seemingly inconsistent results. Therefore, if you must use non-DNS resolution, best results will likely be achieved by disabling DNS (see next section) and using NIS or LDAP exclusively for host resolution. You can validate host resolution results using the 'getent' CLI command described above.
234 Sun ZFS Storage 7000 System Administration Guide November 2010
IPMP
DNS-Less Operation
If the appliance will be unable to access any DNS servers from its installed location in the network, you may elect to operate without DNS by supplying the server 127.0.0.1. Use of this mode is strongly discouraged; several features will not work correctly, including:
Analytics will be unable to resolve client addresses to hostnames. The Active Directory feature will not function (you will be unable to join a domain). Use of SSL-protected LDAP will not work properly with certificates containing hostnames. Alert and threshold actions that involve sending e-mail can only be sent to mail servers on an attached subnet, and all addresses must be specified using the mail server's IP address. Some operations may take longer than normal due to hostname resolution timeouts.
These limitations may be partially mitigated by using an alternate host resolution service; see "Non-DNS Resolution" above.
IPMP
Introduction
IPMP (Internet Protocol Network Multipathing) allows multiple network interfaces to be grouped as one, for both improved network bandwidth and reliability (interface redundancy). Some properties can be configured in this section. For the configuration of network interfaces in IPMP groups, see the Network section.
Properties
Property Description
Time for IPMP to declare a network interface has failed, and to fail over its IP addresses Allow the service to resume connections to a repaired interface
Changing services properties is documented in the BUI and CLI sections of Services.
Chapter 4 Services 235
NTP
Logs
Log Description
network-initial:default
Tasks
To configure IPMP, enable this service and follow the instructions in the Network section.
NTP
Introduction
The Network Time Protocol (NTP) service can be used to keep the appliance clock accurate. This is important for recording accurate timestamps in the filesystem, and for protocol authentication. The appliance records times using the UTC timezone. The times that are displayed in the BUI use the timezone offset of your browser.
Properties
Property Description Examples
224.0.1.1
Enter one or more NTP servers (and their corresponding authentication keys, if any) 0.pool.ntp.org for the appliance to contact directly Enter one or more NTP authentication keys for the appliance to use when authenticating the validity of NTP servers. See the Authentication section below.
Changing services properties is documented in the BUI and CLI sections of Services.
Validation
If an invalid configuration is entered, a warning message is displayed and the configuration is not committed. This will happen if:
236
NTP
An NTP server address is used, but that server does not respond properly to NTP.
Authentication
To prevent against NTP spoofing attacks from rogue servers, NTP has a private key encryption scheme whereby NTP servers are associated with a private key that is used by the client to verify their identity. These keys are not used to encrypt traffic, and they are not used to authenticate the client -- they are only used by the NTP client (that is, the appliance) to authenticate the NTP server. To associate a private key with an NTP server, the private key must first be specified. Each private key has a unique integer associated with it, along with a type and key. The type must be one of the following:
Type Description Example
DES NTP
A 64 bit hexadecimal number in DES format A 64 bit hexadecimal number in NTP format
A 1-to-8 character ASCII string, using the MD5 authentication scheme. md5secret
After the keys have been specified, an NTP server can be associated with a particular private key. For a given key, all of the key number, key type and private key values must match between client and server for an NTP server to be authenticated.
BUI
To add NTP authentication keys in the BUI, click on the plus icon and specify the key number, type and private value for the new key. After the key has been added, it will appear as an option next to each specified NTP server.
CLI
Under configuration services ntp, edit authorizations with the authkey command:
clownfish:configuration services ntp> authkey clownfish:configuration services ntp authkey>
From this context, new keys can be added with the create command:
clownfish:configuration services ntp authkey> create clownfish:configuration services ntp authkey-000 (uncommitted)> get keyno = (unset) type = (unset) key = (unset) clownfish:configuration services ntp authkey-000 (uncommitted)> set keyno=1 keyno = 1 (uncommitted)
Chapter 4 Services 237
NTP
clownfish:configuration services ntp authkey-000 (uncommitted)> set type=A type = A (uncommitted) clownfish:configuration services ntp authkey-000 (uncommitted)> set key=coconuts key = ******** (uncommitted) clownfish:configuration services ntp authkey-000 (uncommitted)> commit clownfish:configuration services ntp authkey>
To associate authentication keys with servers via the CLI, the serverkeys property should be set to a list of values in which each value is a key to be associated with the corresponding server in the servers property. If a server does not use authentication, the corresponding server key should be set to 0. For example, to use the key created above to authenticate the servers "gefilte" and "carp":
clownfish:configuration services ntp> set servers=gefilte,carp servers = gefilte,carp (uncommitted) clownfish:configuration services ntp> set serverkeys=1,1 serverkeys = 1,1 (uncommitted) clownfish:configuration services ntp> commit clownfish:configuration services ntp>
To authenticate the server "gefilte" with key 1, "carp" with key 2 and "dory" with key 3:
clownfish:configuration services ntp> set servers=gefilte,carp,dory servers = gefilte,carp,dory (uncommitted) clownfish:configuration services ntp> set serverkeys=1,2,3 serverkeys = 1,2,3 (uncommitted) clownfish:configuration services ntp> commit clownfish:configuration services ntp>
To authenticate the servers "gefilte" and "carp" with key 1, and to additionally have an unauthenticated NTP server "dory":
clownfish:configuration services ntp> set servers=gefilte,carp,dory servers = gefilte,carp,dory (uncommitted) clownfish:configuration services ntp> set serverkeys=1,1,0 serverkeys = 1,1,0 (uncommitted) clownfish:configuration services ntp> commit clownfish:configuration services ntp>
BUI Clock
To the right of the BUI screen are times from both the appliance (Server Time) and your browser (Client Time). If the NTP service is not online, the "SYNC" button can be clicked to set the appliance time to match your client browser time.
Tips
If you are sharing filesystems using SMB, the client clocks must be synchronized to within five minutes of the appliance clock to avoid user authentication errors. One way to ensure clock synchronization is to configure the appliance and the SMB clients to use the same NTP server.
238 Sun ZFS Storage 7000 System Administration Guide November 2010
Remote Replication
Log
Description
network-ntp:default
Tasks
NTP Tasks
BUI Clock Synchronization
This will set the appliance time to match the time of your browser.
1 2
Remote Replication
Introduction
The remote replication service facilitates replication of projects and shares to and from other Sun Storage 7000 appliances. This functionality is described in detail in the Replication documentation. When this service is enabled, the appliance will receive replication updates from other appliances as well as send replication updates for local projects and shares according to their configured actions. When the service is disabled, incoming replication updates will fail and no local projects and shares will be replicated. This service doesn't have any properties, but it does allow administrators to view the appliances which have replicated data to this appliance (under Sources) and configure the appliances to which this appliance can replicate (under Targets). Details on managing remote replication can be found in the Replication documentation.
Chapter 4 Services
239
Dynamic Routing
Dynamic Routing
RIP and RIPng Dynamic Routing Protocols
The RIP (Routing Information Protocol) is a distance-vector dynamic routing protocol that is used by the appliance to automatically configure optimal routes based on messages received from other RIP-enabled on-link hosts (typically routers). The appliance supports both RIPv1 and RIPv2 for IPv4, and RIPng for IPv6. Routes that are configured via these protocols are marked as type "dynamic" in the routing table. Accordingly, disabling this service will cause all dynamic routes to be removed from the routing table. RIP and RIPng listen on UDP ports 520 and 521 respectively.
Logs
Log Description
network-routing-route:default RIP service events Logs network-routing-ripng:quagga RIPng service events Logs
Phone Home
Introduction
The Phone Home service screen is used to manage the appliance registration as well as the Phone Home remote support service.
Registration connects your appliance with Sun's inventory portal, through which you can manage your Sun gear. Registration is also a prerequisite for using the Phone Home service. The Phone Home service communicates with Sun support to provide: * Fault reporting - the system reports active problems to Sun for automated service response. Depending on the nature of the fault, a support case may be opened. Details of these events can be viewed in Problems. * Heartbeats - daily heartbeat messages are sent to Sun to indicate that the system is up and running. Sun support may notify the technical contact for an account when one of the activated systems fails to send a heartbeat for too long. * System configuration - periodic messages are sent to Sun describing current software and hardware versions and configuration as well as storage configuration. No user data or metadata is transmitted in these messages.
240
Phone Home
Properties
Changing service properties is documented in the BUI and CLI sections of services. The phone home service is known as scrk within the CLI.
Web Proxy
If the appliance is not directly connected to the Internet, you may need to configure an HTTP proxy through which the phone home service can communicate with Sun. These proxy settings will also be used to upload support bundles. See System Maintenance for more details on support bundles.
Property Description
Connect via a web proxy Web proxy hostname or IP address, and port Web proxy username Web proxy password
Registration
To register the appliance for the first time, you must provide a Sun Online Account and specify one of that account's inventory teams into which to register the appliance. Using the BUI: 1. Enter your Sun Online Account user name and password. A privacy statement will be displayed for your review. It can be viewed at any time later in both the BUI and CLI. 2. The appliance will validate the credentials and allow you to choose which of your inventory teams to register with. The default team for each account is the same as the account user name, prefixed with a '$'. 3. Commit your changes.
Chapter 4 Services 241
SNMP
In the CLI, this process involves configuring several properties of the service: 1. Set soa_id and soa_password to the user name and password for your Sun Online Account, respectively. 2. Commit your changes. 3. Set domain_name to the name of the inventory team in which you wish to register the appliance. 4. Commit your changes. Once registered, the appliance cannot be unregistered, but the registration can be changed.
Click 'Change account...' to change the Sun Online Account used by the appliance. You can then select one of that account's inventory teams. Commit your changes. To use the same account but register in a different inventory team, use the drop-down box to select a different inventory team. Commit your changes.
Status
Property Description
Service state
If the phone home service is enabled before a valid Sun Online account has been entered, it will appear in the maintenance state. You must enter a valid Sun Online account to use the phone home service.
Logs
There is a log of Phone Home events in Maintenance->Logs->Phone Home.
SNMP
Introduction
The SNMP (Simple Network Management Protocol) service provides two different functions on the appliance:
242
SNMP
Both SNMP versions 1 and 2c are available when this service is enabled.
Properties
Property Description
SNMP community name This is the community string that SNMP clients must provide when connecting Authorized network Appliance contact The network which is allowed to query the SNMP server, in CIDR notation. To block all clients, use 127.0.0.1/8 (localhost only); to allow all clients, use 0.0.0.0/0 The string served by MIB-II OID .1.3.6.1.2.1.1.4.0. Setting this to a person or department's name will help SNMP clients determine who is responsible for this appliance The hostnames or IP addresses for sending SNMP traps to. Custom SNMP traps can be configured in the Alerts section. Set this to 127.0.0.1
Trap destinations
Changing services properties is documented in the BUI and CLI sections of services. The CLI property names are shorter versions of those listed above. After changing properties, restart the SNMP service. The SNMP service also provides the MIB-II location string. This property is sourced from the System Identity configuration.
MIBs
If the SNMP services is online, authorized networks will have access to the following MIBs (Management Information Bases):
MIB Purpose
MIB-II system - generic system information, including hostname, contact and location MIB-II interfaces - network interface statistics MIB-II IP - Internet Protocol information, including IP addresses and route table Sun Enterprise MIB (SUN-MIB.mib.txt) Sun FM - fault management statistics (MIB file linked below) Sun AK - appliance information and statistics (MIB file linked below)
Chapter 4 Services
243
SNMP
Sun FM MIB
The Sun FM MIB (SUN-FM-MIB.mib) provides access to SUN Fault Manager information such as:
Active problems on the system Fault Manager events Fault Manager configuration information
Fault Management problems Fault Management fault events Fault Management module configuration Fault Management faulty resources
See the MIB file linked above for the full descriptions.
Sun AK MIB
The Sun AK MIB (SUN-AK-MIB.mib) provides the following information:
product description string and part number appliance software version appliance and chassis serial numbers install, update and boot times cluster state share status - share name, size, used and available bytes
See the MIB file linked above for the full descriptions.
244 Sun ZFS Storage 7000 System Administration Guide November 2010
SMTP
Tasks
The following are example tasks for SNMP. See the BUI and CLI sections for how these tasks apply to each interface method.
SNMP Tasks
Configuring SNMP to serve appliance status
1 2 3 4
Set the community name, authorized network and contact string. If desired, set the trap destination to a remote SNMP host, else set this to 127.0.0.1. Apply/commit the configuration. Restart the service.
Set the community name, contact string, and trap destination(s). If desired, set the authorized network to allow SNMP clients, else set this to 127.0.0.1/8. Apply/commit the configuration. Restart the service.
SMTP
Introduction
The SMTP service sends all mail generated by the appliance, typically in response to alerts as configured on the Alerts screen. The SMTP service does not accept external mail - it only sends mail generated automatically by the appliance itself. By default, the SMTP service uses DNS (MX records) to determine where to send mail. If DNS is not configured for the appliance's domain, or the destination domain for outgoing mail does not have DNS MX records setup properly, the appliance can be configured to forward all mail through an outgoing mail server, commonly called a smarthost.
Chapter 4 Services 245
Service Tags
Properties
Property Description
Send mail through smarthost Smarthost hostname Allow customized from address Custom from address
If enabled, all mail is sent through the specified outgoing mail server. Otherwise, DNS is used to determine where to send mail for a particular domain. Outgoing mail server hostname. If enabled, the From address for email is set to the Custom from address property. It may be desirable to customize this if the default From address is being identified as spam, for example. The From address to use for outbound email.
Changing services properties is documented in the BUI and CLI sections of Services. When changing properties, you can use Alerts to send a test email to verify that the properties are correct. A common reason for undelivered email is misconfigured DNS, which prevents the appliance from determining which mail server to deliver the mail to; as described earlier, a smarthost could be used if DNS cannot be configured.
Logs
Log Description
network-smtp:sendmail mail
Logs the SMTP service events Log of SMTP activity (including mails sent)
Service Tags
Introduction
Service Tags are used to facilitate product inventory and support, by allowing the appliance to be queried for data such as:
246
System Identity
You can register the service tags with Sun service, allowing you to easily keep track of your Sun equipment and also expedite service calls. The service tags are enabled by default.
Properties
Property Description
UDP port used for service tag discovery. Default is 6481 TCP port used to query service tag data. Default is 6481
Changing services properties is documented in the BUI and CLI sections of services.
System Identity
Introduction
This service provides configuration for the system name and location. There may be a need to change these if the appliance is moved to a different network location, or repurposed.
Properties
Property Description
System Name
A single canonical identifying name for the appliance that is shown in the user interface. This name is separate from any DNS names that are used to connect to the system (which would be configured on remote DNS servers). This name can be changed at any time A text string to describe the where the appliance is physically located. If SNMP is enabled, this will be exported as the syslocation string in MIB-II
System Location
Changing services properties is documented in the BUI and CLI sections of services.
Chapter 4 Services
247
SSH
Logs
Log Description
system-identity:node
SSH
Introduction
The SSH (Secure Shell) service allows users to login to the appliance CLI and perform most of the same administrative actions that can be performed in the BUI. The SSH service can also be used as means of executing automated scripts from a remote host, such as for retrieving daily logs or Analytics statistics.
Properties
Property Description Examples
The number of bits in the ephemeral key. Ephemeral key regeneration interval, in seconds.
768 3600
Login grace period The SSH connection will be disconnected after this many seconds if the client has 120 failed to authenticate. Permit root login Allows the root user to login using SSH. yes
Changing services properties is documented in the BUI and CLI sections of services. The CLI property names are similar to those listed above.
Logs
Log Description
248
Shadow Migration
Tasks
The following are example tasks. See the BUI and CLI sections for how these tasks apply to each interface method.
SSH Tasks
Disabling root SSH access
1 2
Shadow Migration
Introduction
The shadow migration service allows for automatic migration of data from external or internal sources. This functionality is described in great detail in the Shadow Migration shares documentation. The service itself only controls automatic background migration. Regardless of whether the service is enabled or not, data will be migrated synchronously for in-band requests. The service should only be disabled for testing purposes, or if the load on the system due to shadow migration is too great. When disabled, no filesystems will ever finish migrating. The primary purpose of the service is to allow tuning of the number of threads dedicated to background migration.
Properties
Property Description
Number of Threads
Number of threads to devote to background migration of data. These threads are global to the entire machine, and increasing the number can increase concurrency and the overall speed of migration at the expense of increased resource consumption (network, I/O, and CPU).
Changing services properties is documented in the BUI and CLI sections of services.
Chapter 4 Services 249
Syslog
Syslog
Introduction
The Syslog Relay service provides two different functions on the appliance:
Alerts can be configured to send Syslog messages to one or more remote systems. Services on the appliance that are syslog capable will have their syslog messages forwarded to remote systems.
A syslog message is a small event message transmitted from the appliance to one or more remote systems (or as we like to call it: intercontinental printf). The message contains the following elements:
A facility describing the type of system component that emitted the message A severity describing the severity of the condition associated with the message A timestamp describing the time of the associated event in UTC A hostname describing the canonical name of the appliance A tag describing the name of the system component that emitted the message. See below for details of the message format. A message describing the event itself. See below for details of the message format.
Syslog receivers are provided with most operating systems, including Solaris and Linux. A number of third-party and open-source management software packages also support Syslog. Syslog receivers allow administrators to aggregate messages from a number of systems on to a single management system and incorporated into a single set of log files. The Syslog Relay can be configured to use the "classic" output format described by RFC 3164, or the newer, versioned output format described by RFC 5424. Syslog messages are transmitted as UDP datagrams. Therefore they are subject to being dropped by the network, or may not be sent at all if the sending system is low on memory or the network is sufficiently congested. Administrators should therefore assume that in complex failure scenarios in a network some messages may be missing and were dropped.
250 Sun ZFS Storage 7000 System Administration Guide November 2010
Syslog
Properties
Property Description
The version of the Syslog protocol to use, either Classic or Modern The list of destination IPv4 and IPv6 addresses to which messages are relayed.
Changing services properties is documented in the BUI and CLI sections of services. The CLI property names are shorter versions of those listed above. After changing properties, restart the Syslog service.
Message Format
The Syslog protocol itself does not define the format of the message payload, leaving it up to the sender to include any kind of structured data or unstructured human-readable string that is appropriate. Sun Storage appliances use the syslog subsystem tag ak to indicate a structured, parseable message payload, described next. Other subsystem tags indicate arbitrary human-readable text, but administrators should consider these string forms unstable and subject to change without notice or removal in future releases of the Sun Storage software.
Chapter 4 Services 251
Syslog
Facility
ak idmap smbd
Generic tag for appliance subsystems. All alerts will be tagged ak, indicating a SUNW-MSG-ID follows. Identity Mapping service for POSIX and Windows identity conversion. SMB Data Protocol for accessing shares.
SUNW-MSG-ID
The stable Sun Fault Message Identifier associated with the alert. Each system condition and fault diagnosis that produces an administrator alert is assigned a persistent, unique identifier in Sun's Fault Message catalog. These identifiers can be easily read over the phone or scribbled down in your notebook, and link to a corresponding knowledge article found at sun.com/msg/. The type of condition. This will be one of the labels: Fault, indicating a hardware component or connector failure; Defect indicating a software defect or misconfiguration; Alert, indicating a condition not associated with a fault or defect, such as the completion of a backup activity or remote replication. The version of this encoding format itself. This description corresponds to version "1" of the SUNW-MSG-ID format. If a "1" is present in the VER field, parsing code may assume that all of the subsequent fields will be present. Parsing code should be written to handle or ignore additional fields if a decimal integer greater than one is specified. The severity of the condition associated with the problem that triggered the alert. The list of severities is shown below. The time corresponding to this event. The time will be in the form "Day Mon DD HH:MM:SS YYYY" in UTC. For example: Fri Aug 14 21:34:22 2009. The platform identifier for the appliance. This field is for Sun Service use only. The chassis serial number of the appliance. The canonical name of the appliance as defined by the System Identity configuration. The subsystem within the appliance software that emitted the event. This field is for Sun Service use only. The internal revision of the subsystem. This field is for Sun Service use only.
TYPE
VER
252
Syslog
Field Name
Description
EVENT-ID
The Universally Unique Identifier (UUID) associated with this event. Sun's Fault Management system associates a UUID with each alert and fault diagnosis such that administrators can gather and correlated multiple messages associated with a single condition, and detect duplicate messages. Sun Service personnel can use the EVENT-ID to retrieve additional postmortem information associated with the problem that may help Sun respond to the issue. Description of the condition associated with the event. The automated response to the problem, if any, by the Fault Management software included in the system. Automated responses include capabilities such as proactively offlining faulty disks, DRAM memory chips, and processor cores. The recommended service action. This will include a brief summary of the recommended action, but administrators should consult the knowledge article and this documentation for information on the complete repair procedure.
DESC AUTO-RESPONSE
REC-ACTION
LOG_WARNING A condition occurred that does not currently impair service, but the condi to be corrected before it becomes more severe. LOG_ERR LOG_CRIT A condition occurred that does impair service but not seriously.
A condition occurred that seriously impairs service and requires immedia correction.
Syslog
Solaris syslogd only understands the Classic Syslog protocol. Refer to the Solaris syslog.conf(4) man page for information on how to configure filtering and logging of the received messages. By default, Solaris syslogd records messages to /var/adm/messages and a test alert would be recorded as follows:
Aug 14 21:34:22 poptart.sf.fishpong.com poptart ak: SUNW-MSG-ID: AK-8000-LM, \ TYPE: alert, VER: 1, SEVERITY: Minor\nEVENT-TIME: Fri Aug 14 21:34:22 2009\n\ PLATFORM: i86pc, CSN: 12345678, HOSTNAME: poptart\n\ SOURCE: jsui.359, REV: 1.0\n\ EVENT-ID: 92dfeb39-6e15-e2d5-a7d9-dc3e221becea\n\ DESC: A test alert has been posted.\n\ AUTO-RESPONSE: None.\nIMPACT: None.\nREC-ACTION: None.
Some Linux distributions have an ipfilter packet filter that will reject syslog UDP packets by default, and the filter must be modified to permit them. On these distributions, use a command similar to the following to add an INPUT rule to accept syslog UDP packets:
# iptables -I INPUT 1 -p udp --sport 514 --dport 514 -j ACCEPT
By default, Linux syslogd records messages to /var/log/messages and a test alert would be recorded as follows:
Aug 12 22:03:15 192.168.1.105 poptart ak: SUNW-MSG-ID: AK-8000-LM, \ TYPE: alert, VER: 1, SEVERITY: Minor EVENT-TIME: Wed Aug 12 22:03:14 2009 \ PLATFORM: i86pc, CSN: 12345678, HOSTNAME: poptart SOURCE: jsui.3775, REV: 1.0 \ EVENT-ID: 9d40db07-8078-4b21-e64e-86e5cac90912 \ DESC: A test alert has been posted. AUTO-RESPONSE: None. IMPACT: None. \ REC-ACTION: None.
254
C H A P T E R
Shares
Shares
Editing general properties for a filesystem. Shares with similar characteristics can be grouped together as a Project.
Introduction
The storage appliance exports filesystems as shares, which are managed in this section of the appliance. Shares can be grouped into projects for common administrative purposes, including space management and common settings.
Concepts - general information about organizing storage and managing share properties Shadow Migration - automatically migrate data locally or from remote servers
255
Concepts
Space Management - manage space use on a per-share or per-user basis with quotas and reservations Filesystem Namespace - information about how the filesystem namespace is managed and exported Shares - manage filesystems and LUNs General - manage general properties on shares Protocols - manage protocol (NFS, SMB, iSCSI, etc) settings Access - manage user-based access control on filesystems Snapshots - manage automatic and manual snapshots on shares Projects - manage projects General - manage general properties on projects Protocols - manage protocol settings on projects Access - manage user-based access control on projects Snapshots - manage automatic and manual snapshots on projects Replication - configure data replication to other appliances Replication - manage replication sources targeting this appliance Schema - define customized properties for use with shares and projects
Concepts
Storage Pools
The appliance is based on the ZFS filesystem. ZFS groups underlying storage devices into pools, and filesystems and LUNs allocate from this storage as needed. Before creating filesystems or LUNs, you must first configure storage on the appliance. Once a storage pool is configured, there is no need to statically size filesystems, though this behavior can be achieved by using quotas and reservations. While multiple storage pools are supported, this type of configuration is generally discouraged because it provides significant drawbacks as described in the storage configuration section. Multiple pools should only be used where the performance or reliability characteristics of two different profiles are drastically different, such as a mirrored pool for databases and a RAID-Z pool for streaming workloads. When multiple pools are active on a single host, the BUI will display a drop-down list in the menu bar that can be used to switch between pools. In the CLI, the name of the current pool will be displayed in parenthesis, and can be changed by setting the 'pool' property. If there is only a
256 Sun ZFS Storage 7000 System Administration Guide November 2010
Concepts
single pool configured, then these controls will be hidden. When multiple pools are selected, the default pool chosen by the UI is arbitrary, so any scripted operation should be sure to set the pool name explicitly before manipulating any shares.
Projects
All filesystems and LUNs are grouped into projects. A project defines a common administrative control point for managing shares. All shares within a project can share common settings, and quotas can be enforced at the project level in addition to the share level. Projects can also be used solely for grouping logically related shares together, so their common attributes (such as accumulated space) can be accessed from a single point. By default, the appliance creates a single default project when a storage pool is first configured. It is possible to create all shares within this default project, although for reasonably sized environments creating additional projects is strongly recommended, if only for organizational purposes.
Shares
Shares are filesystems and LUNs that are exported over supported data protocols to clients of the appliance. Filesystems export a file-based hierarchy and can be accessed over SMB, NFS, HTTP/WebDav, and FTP. LUNs export block-based volumes and can be accessed over iSCSI or Fibre Channel. The project/share tuple is a unique identifier for a share within a pool. Multiple projects can contain shares with the same name, but a single project cannot contain shares with the same name. A single project can contain both filesystems and LUNs, and they share the same namespace.
Properties
All projects and shares have a number of associated properties. These properties fall into the following groups:
Property Type Description
Inherited
This is the most common type of property, and represents most of the configurable project and share properties. Shares that are part of a project can either have local settings for properties, or they can inherit their settings from the parent project. By default, shares inherit all properties from the project. If a property is changed on a project, all shares that inherit that property are updated to reflect the new value. When inherited, all properties have the same value as the parent project, with the exception of the mountpoint and SMB properties. When inherited, these properties concatenate the project setting with their own share name.
Chapter 5 Shares
257
Concepts
Property Type
Description
These properties represent statistics about the project and share and cannot be changed. The most common properties of this type are space usage statistics. These properties (quota and reservation) apply to both shares and projects, but are not inherited. A project with a quota of 100G will be enforced across all shares, but each individual share will have no quota unless explicitly set. These properties can be specified at filesystem or LUN creation time, but cannot be changed once the share has been created. These properties control the on-disk data structures, and include internationalization settings, case sensitivity, and volume block size. These properties are set on a project, but do not affect the project itself. They are used to populate the initial settings when creating a filesystem or LUN, and can be useful when shares have a common set of non-inheritable properties. Changing these properties do not affect existing shares, and the properties can be changed before or after creating the share. These properties apply only to filesystems, and are convenience properties for managing the root directory of the filesystem. They cannot be set on projects. These access control properties can also be set by in-band protocol operations. These properties apply only to LUNs and are not inherited. They cannot be set on projects. These are user defined properties. For more information, see the schema section.
Project default
Filesystem local
Snapshots
A snapshot is a point-in-time copy of a filesystem or LUN. Snapshots can be created manually or by setting up an automatic schedule. Snapshots initially consume no additional space, but as the active share changes, previously unreferenced blocks will be kept as part of the last snapshot. Over time, the last snapshot will take up additional space, with a maximum equivalent to the size of the filesystem at the time the snapshot was taken. Filesystem snapshots can be accessed over the standard protocols in the .zfs/snapshot snapshot at the root of the filesystem. This directory is hidden by default, and can only be accessed by explicitly changing to the .zfs directory. This behavior can be changed in the Snapshot view, but may cause backup software to backup snapshots in addition to live data. LUN Snapshots cannot be accessed directly, though they can be used as a rollback target or as the source of a clone. Project snapshots are the equivalent of snapshotting all shares within the project, and snapshots are identified by name. If a share snapshot that is part of a larger project snapshot is renamed, it will no longer be considered part of the same snapshot, and if any snapshot is renamed to have the same name as a snapshot in the parent project, it will be treated as part of the project snapshot.
258 Sun ZFS Storage 7000 System Administration Guide November 2010
Shadow Migration
Shares support the ability to rollback to previous snapshots. When a rollback occurs, any newer snapshots (and clones of newer snapshots) will be destroyed, and the active data will be reverted to the state when the snapshot was taken. Snapshots only include data, not properties, so any property settings changed since the snapshot was taken will remain.
Clones
A clone is a writable copy of a share snapshot, and is treated as an independent share for administrative purposes. Like snapshots, a clone will initially take up no extra space, but as new data is written to the clone, the space required for the new changes will be associated with the clone. Clones of projects are not supported. Because space is shared between snapshots and clones, and a snapshot can have multiple clones, a snapshot cannot be destroyed without also destroying any active clones.
Shadow Migration
Shadow Data Migration
A common task for administrators is to move data from one location to another. In the most abstract sense, this problem encompasses a large number of use cases, from replicating data between servers to keeping user data on laptops in sync with servers. There are many external tools available to do this, but the Sun Storage 7000 series of appliances has two integrated solutions for migrating data that addresses the most common use cases. The first, remote replication, is intended for replicating data between one or more appliances, and is covered separately. The second, shadow migration, is described here. Shadow migration is a process for migrating data from external NAS sources with the intent of replacing or decommissioning the original once the migration is complete. This is most often used when introducing a Sun Storage 7000 appliance into an existing environment in order to take over file sharing duties of another server, but a number of other novel uses are possible, outlined below.
Shadow Migration
small enough to be sent within a single downtime window. At this point the original share is made read-only, the final delta is sent to the new host, and all clients are updated to point to the new location. The most common way of accomplishing this is through the rsync tool, though other integrated tools exist. This mechanism has several drawbacks:
The anticipated downtime, while small, is not easily quantified. If a user commits a large amount of change immediately before the scheduled downtime, this can increase the downtime window. During migration, the new server is idle. Since new servers typically come with new features or performance improvements, this represents a waste of resources during a potentially long migration period. Coordinating across multiple filesystems is burdensome. When migrating dozens or hundreds of filesystems, each migration will take a different amount of time, and downtime will have to be scheduled across the union of all filesystems.
The migration appliance represents a new physical machine, with associated costs (initial investment, support costs, power and cooling) and additional management overhead. The migration appliance represents a new point of failure within the system. The migration appliance interposes on already migrated data, incurring extra latency, often permanently. These appliances are typically left in place, though it would be possible to schedule another downtime window and decommission the migration appliance.
Shadow Migration
260
Shadow Migration
Shadow migration uses interposition, but is integrated into the appliance and doesn't require a separate physical machine. When shares are created, they can optionally "shadow" an existing directory, either locally or over NFS. In this scenario, downtime is scheduled once, where the source appliance X is placed into read-only mode, a share is created with the shadow property set, and clients are updated to point to the new share on the Sun Storage 7000 appliance. Clients can then access the appliance in read-write mode. Once the shadow property is set, data is transparently migrated in the background from the source appliance locally. If a request comes from a client for a file that has not yet been migrated, the appliance will automatically migrate this file to the local server before responding to the request. This may incur some initial latency for some client requests, but once a file has been migrated all accesses are local to the appliance and have native performance. It is often the case that the current working set for a filesystem is much smaller than the total size, so once this working set has been migrated, regardless of the total native size on the source, there will be no perceived impact on performance. The downside to shadow migration is that it requires a commitment before the data has finished migrating, though this is the case with any interposition method. During the migration, portions of the data exists in two locations, which means that backups are more complicated, and snapshots may be incomplete and/or exist only on one host. Because of this, it is extremely important that any migration between two hosts first be tested thoroughly to make sure that identity management and access controls are setup correctly. This need not test the entire data migration, but it should be verified that files or directories that are not world readable are migrated correctly, ACLs (if any) are preserved, and identities are properly represented on the new system. Shadow migration is implemented using on-disk data within the filesystem, so there is no external database and no data stored locally outside the storage pool. If a pool is failed over in a cluster, or both system disks fail and a new head node is required, all data necessary to continue shadow migration without interruption will be kept with the storage pool.
Chapter 5 Shares 261
Shadow Migration
In order to properly migrate data, the source filesystem or directory *must be read-only*. Changes made to files source may or may not be propagated based on timing, and changes to the directory structure can result in unrecoverable errors on the appliance. Shadow migration supports migration only from NFS sources. NFSv4 shares will yield the best results. NFSv2 and NFSv3 migration are possible, but ACLs will be lost in the process and files that are too large for NFSv2 cannot be migrated using that protocol. Migration from SMB sources is not supported. Shadow migration of LUNs is not supported.
For directories, clients requests are blocked until the entire directory is migrated. For files, only the portion of the file being requested is migrated, and multiple clients can migrate different portions of a file at the same time. Files and directories can be arbitrarily renamed, removed, or overwritten on the shadow filesystem without any effect on the migration process. For files that are hard links, the hard link count may not match the source until the migration is complete. The majority of file attributes are migrated when the directory is created, but the on-disk size (st_nblocks in the UNIX stat structure) is not available until a read or write operation is done on the file. The logical size will be correct, but a du(1) or other command will report a zero size until the file contents are actually migrated. If the appliance is rebooted, the migration will pick up where it left off originally. While it will not have to re-migrate data, it may have to traverse some already-migrated portions of the local filesystem, so there may be some impact to the total migration time due to the interruption. Data migration makes use of private extended attributes on files. These are generally not observable except on the root directory of the filesystem or through snapshots. Adding, modifying, or removing any extended attribute that begins with SUNWshadow will have undefined effects on the migration process and will result in incomplete or corrupt state. In addition, filesystem-wide state is stored in the .SUNWshadow directory at the root of the filesystem. Any modification to this content will have a similar affect. Once a filesystem has completed migration, an alert will be posted, and the shadow attribute will be removed, along with any applicable metadata. After this point, the filesystem will be indistinguishable from a normal filesystem.
262
Shadow Migration
Data can be migrated across multiple filesystems into a singe filesystem, through the use of NFSv4 automatic client mounts (sometimes called "mirror mounts") or nested local mounts.
The migration source and target appliance must have the same name service configuration. The migration source and target appliance must have the same NFSv4 mapid domain The migration source must support NFSv4. Use of NFSv3 is possible, but some loss of information will result. Basic identity information (owner and group) and POSIX permissions will be preserved, but any ACLs will be lost. The migration source must be exported with root permissions to the appliance.
If you see files or directories owned by "nobody", it likely means that the appliance does not have name services setup correctly, or that the NFSv4 mapid domain is different. If you get 'permission denied' errors while traversing filesystems that the client should otherwise have access to, the most likely problem is failure to export the migration source with root permissions.
The BUI also allows the alternate form <host>:/<path> for NFS mounts, which matches the syntax used in UNIX systems. The BUI also sets the protocol portion of the setting (file:// or nfs://) via the use of a pull down menu. When creating a filesystem, the server will verify that the path exists and can be mounted.
Shadow Migration
The shadow migration service can be disabled, but this should only be used for testing purposes, or when the active of shadow migration is overwhelming the system to the point where it needs to be temporarily stopped. When the shadow migration service is disabled, synchronous requests are still migrated as needed, but no background migration occurs. With the service disabled no shadow migration will ever complete, even if all the contents of the filesystem are read manually. It is highly recommended to always leave the service enabled.
Handling errors
Because shadow migration requires committing new writes to the server prior to migration being complete, it is very important to test migration and monitor for any errors. Errors encountered during background migration are kept and displayed in the BUI as part of shadow migration status. Errors encountered during other synchronous migration are not tracked, but will be accounted for once the background process accesses the affected file. For each file, the remote filename as well as the specific error are kept. Clicking on the information icon next to the error count will bring up this detailed list. The error list is not updated as errors are fixed, but simply cleared by virtue of the migration completing successfully. Shadow migration will not complete until all files are migrated successfully. If there are errors, the background migration will continually retry the migration until it succeeds. This allows the administrator to fix any errors (such as permission problems), let the migration complete, and be assured of success. If the migration cannot complete due to persistent errors, the migration can be canceled, leaving the local filesystem with whatever data was able to be migrated. This should only be used as a last resort - once migration has been canceled, it cannot be resumed.
Monitoring progress
Monitoring progress of a shadow migration is difficult given the context in which the operation runs. A single filesystem can shadow all or part of a filesystem, or multiple filesystems with nested mountpoints. As such, there is no way to request statistics about the source and have any confidence in them being correct. In addition, even with migration of a single filesystem, the methods used to calculate the available size is not consistent across systems. For example, the remote filesystem may use compression, or it may or not include metadata overhead. For these reasons, it's impossible to display an accurate progress bar for any particular migration. The appliance provides the following information that is guaranteed to be accurate:
Local size of the local filesystem so far Logical size of the data copied so far Time spent migrating data so far
These values are made available in the BUI and CLI through both the standard filesystem properties as well as properties of the shadow migration node (or UI panel). If you know the size of the remote filesystem, you can use this to estimate progress. The size of the data copied consists only of plain file contents that needed to be migrated from the source. Directories, metadata, and extended attributes are not included in this calculation. While the size of the data
264 Sun ZFS Storage 7000 System Administration Guide November 2010
Shadow Migration
migrated so far includes only remotely migrated data, resuming background migration may traverse parts of the filesystem that have already been migrated. This can cause it to run fairly quickly while processing these initial directories, and slow down once it reaches portions of the filesystem that have not yet been migrate. While there is no accurate measurement of progress, the appliance does attempt to make an estimation of remaining data based on the assumption of a relatively uniform directory tree. This estimate can range from fairly accurate to completely worthless depending on the dataset, and is for information purposes only. For example, one could have a relatively shallow filesystem tree but have large amounts of data in a single directory that is visited last. In this scenario, the migration will appear almost complete, and then rapidly drop to a very small percentage as this new tree is discovered. Conversely, if that large directory was processed first, then the estimate may assume that all other directories have a similarly large amount of data, and when it finds them mostly empty the estimate quickly rises from a small percentage to nearly complete. The best way to measure progress is to setup a test migration, let it run to completion, and use that value to estimate progress for filesystem of similar layout and size.
Canceling migration
Migration can be canceled, but should only be done in extreme circumstances when the source is no longer available. Once migration has been canceled, it cannot be resumed. The primary purpose is to allow migration to complete when there are uncorrectable errors on the source. If the complete filesystem has finished migrated except for a few files or directories, and there is no way to correct these errors (i.e. the source is permanently broken), then canceling the migration will allow the local filesystem to resume status as a 'normal' filesystem. To cancel migration in the BUI, click the close icon next to the progress bar in the left column of the share in question. In the CLI, migrate to the shadow node beneath the filesystem and run the cancel command.
Shadow Migration
Shadow Migration
Tasks
Testing potential shadow migration
Before attempting a complete migration, it is important to test the migration to make sure that the appliance has appropriate permissions and security attributes are translated correctly. 1. Configure the source so that the Sun Storage 7000 appliance has root access to the share. This typically involves adding an NFS host-based exception, or setting the anonymous user mapping (the latter having more significant security implications). 2. Create a share on the local filesystem with the shadow attribute set to 'nfs://<host>/<snapshotpath>' in the CLI or just '<host>/<snapshotpath>' in the BUI (with the protocol selected as 'NFS'). The snapshot should be read-only copy of the source. If no snapshots are available, a read-write source can be used, but may result in undefined errors. 3. Validate that file contents and identity mapping is correctly preserved by traversing the file structure. 4. If the data source is read-only (as with a snapshot), let the migration complete and verify that there were no errors in the transfer.
Space Management
2. Configure the source so that the Sun Storage 7000 appliance has root access to the share. This typically involves adding an NFS host-based exception, or setting the anonymous user mapping (the latter having more significant security implications). 3. Configure the source to be read-only. This step is technically optional, but it is much easier to guarantee compliance if it's impossible for misconfigured clients to write to the source while migration is in progress. 4. Create a share on the local filesystem with the shadow attribute set to 'nfs://<host>/<path>' in the CLI or just '<host>/<path>' in the BUI (with the protocol selected as 'NFS'). 5. Reconfigure clients to point at the local share on the SS7000. At this point shadow migration should be running in the background, and client requests should be serviced as necessary. You can observe the progress as described above. Multiple shares can be created during a single scheduled downtime through scripting the CLI.
Space Management
Introduction
The behavior of filesystems and LUNs with respect to managing physical storage is different on the 7000 series than on many other systems. As described in the Concepts page, the appliance leverages a pooled storage model where all filesystems and LUNs share common space. Filesystems never have an explicit size assigned to them, and only take up as much space as they need. LUNs reserve enough physical space to write the entire contents of the device, unless they are thinly provisioned, in which case they behave like filesystems and use only the amount of space physically consumed by data. This system provides maximum flexibility and simplicity of management in an environment when users are generally trusted to do the right thing. A stricter environment, where user's data usage is monitored and/or restricted, requires more careful management. This section describes some of the tools available to the administrator to control and manage space usage.
Terms
Before getting into details, it is important to understand some basic terms used when talking about space usage on the appliance.
268
Space Management
Logical Data
The amount of space logically consumed by a filesystem. This does not factor into compression, and can be viewed as the theoretical upper bound on the amount of space consumed by the filesystem. Copying the filesystem to another appliance using a different compression algorithm will not consume more than this amount. This statistic is not explicitly exported and can generally only be computed by taking the amount of physical space consumed and multiplying by the current compression ratio.
Referenced Data
This represents the total amount of space referenced by the active share, independent of any snapshots. This is the amount of space that the share would consume should all snapshots be destroyed. This is also the amount of data that is directly manageable by the user over the data protocols.
Snapshot Data
This represents the total amount of data currently held by all snapshots of the share. This is the amount of space that would be free should all snapshots be destroyed.
Quota
A quota represents a limit on the amount of space that can be consumed by any particular entity. This can be based on filesystem, project, user, or group, and is independent of any current space usage.
Reservation
A reservation represents a guarantee of space for a particular project or filesystem. This takes available space away from the rest of the pool without increasing the actual space consumed by the filesystem. This setting cannot be applied to users and groups. The traditional notion of a statically sized filesystem can be created by setting a quota and reservation to the same value.
Chapter 5 Shares 269
Space Management
Understanding snapshots
Snapshots present an interesting dilemma for space management. They represent the set of physical blocks referenced by a share at a given point in time. Initially, this snapshot consumes no additional space. But as new data is overwritten in the new share, the blocks in the active share will only contain the new data, and older blocks will be "held" by the most recent (and possibly older) snapshots. Gradually, snapshots can consume additional space as the content diverges in the active share. Some other systems will try to hide the cost of snapshots, by pretending that they are free, or by "reserving" space dedicated to holding snapshot data. Such systems try to gloss over the basic fact inherent with snapshots. If you take a snapshot of a filesystem of any given size, and re-write 100% of the data within the filesystem, by definition you must maintain references to twice the data as was originally in the filesystem. Snapshots are not free, and the only way other systems can present this abstraction is to silently destroy snapshots when space gets full. This can often be the absolute worst thing to do, as a process run amok rewriting data can cause all previous snapshots to be destroyed, preventing any restoration in the process. In the Sun Storage 7000 series, the cost of snapshots is always explicit, and tools are provided to manage this space in a way that best matches the administrative model for a given environment. Each snapshot has two associated space statistics: unique space and referenced space. The amount of referenced space is the total space consumed by the filesystem at the time the snapshot was taken. It represents the theoretical maximum size of the snapshot should it remain the sole reference to all data blocks. The unique space indicates the amount of physical space referenced only by the current snapshot. When a snapshot is destroyed, the unique space will be made available to the rest of the pool. Note that the amount of space consumed by all snapshots is not equivalent to the sum of unique space across all snapshots. With a share and a single snapshot, all blocks must be referenced by one or both of the snapshot or the share. With multiple snapshots, however, it's possible for a block to be referenced by some subset of snapshots, and not any particular snapshot. For example, if a file is created, two snapshots X and Y are taken, the file is deleted, and another snapshot Z is taken, the blocks within the file are held by X and Y, but not by Z. In this case, destroying X will not free up the space, but destroying both X and Y will. Because of this, destroying any snapshot can affect the unique space referenced by neighboring snapshots, though the total amount of space consumed by snapshots will always decrease. The total size of a project or share always accounts for space consumed by all snapshots, though the usage breakdown is also available. Quotas and reservations can be set at the project level to enforce physical constraints across this total space. In addition, quotas and reservations can be set at the filesystem level, and these settings can apply to only referenced data or total data. Whether or not quotas and reservations should be applied to referenced data or total physical data depends on the administrative environment. If users are not in control of their snapshots (i.e. an automatic snapshot schedule is set for them), then quotas should typically not include snapshots in the calculation. Otherwise, the user may run out of space but be confused when files cannot be deleted. Without an understanding of snapshots or means to manage those
270 Sun ZFS Storage 7000 System Administration Guide November 2010
Space Management
snapshots, it is possible for such a situation to be unrecoverable without administrator intervention. In this scenario, the snapshots represent an overhead cost that is factored into operation of the system in order to provide backup capabilities. On the other hand, there are environments where users are billed according to their physical space requirements, and snapshots represent a choice by the user to provide some level of backup that meets their requirements given the churn rate of their dataset. In these environments, it makes more sense to enforce quotas based on total physical data, including snapshots. The users understand the cost of snapshots, and can be provided a means to actively management them (as through dedicated roles on the appliance).
Data quotas
A data quota enforces a limit on the amount of space a filesystem or project can use. By default, it will include the data in the filesystem and all snapshots. Clients attempting to write new data will get an error when the filesystem is full, either because of a quota or because the storage pool is out of space. As described in the snapshot section, this behavior may not be intuitive in all situations, particularly when snapshots are present. Removing a file may cause the filesystem to write new data if the data blocks are referenced by a snapshot, so it may be the case that the only way to decrease space usage is to destroy existing snapshots. If the 'include snapshots' property is unset, then the quota applies only to the immediate data referenced by the filesystem, not any snapshots. The space used by snapshots is enforced by the project-level quota but is otherwise not enforced. In this situation, removing a file referenced by a snapshot will cause the filesystem's referenced data to decrease, even though the system as a whole is using more space. If the storage pool is full (as opposed to the filesystem reaching a preset quota), then the only way to free up space may be to destroy snapshots. Data quotas are strictly enforced, which means that as space usage nears the limit, the amount of data that can be written must be throttled as the precise amount of data to be written is not known until after writes have been acknowledged. This can affect performance when operating at or near the quota. Because of this, it is generally advisable to remain below the quota during normal operating procedures. Quotas are managed through the BUI under Shares -> General -> Space Usage -> Data. They are managed in the CLI as the quota and quota_snap properties.
Chapter 5 Shares 271
Space Management
Data reservations
A data reservation is used to make sure that a filesystem or project has at least a certain amount of available space, even if other shares in the system try to use more space. This unused reservation is considered part of the filesystem, so if the rest of the pool (or project) reaches capacity, the filesystem can still write new data even though other shares may be out of space. By default, a reservation includes all snapshots of a filesystem. If the 'include snapshots' property is unset, then the reservation only applies to the immediate data of the filesystem. As described in the snapshot section, the behavior when taking snapshots may not always be intuitive. If a reservation on filesystem data (but not snapshots) is in effect, then whenever a snapshot is taken, the system must reserve enough space for that snapshot to diverge completely, even if that never occurs. For example, if a 50G filesystem has a 100G reservation without snapshots, then taking the first snapshot will reserve an additional 50G of space, and the filesystem will end up reserving 150G of space total. If there is insufficient space to guarantee complete divergence of data, then taking the snapshot will fail. Reservations are managed through the BUI under Shares -> General -> Space Usage -> Data. They are managed in the CLI as the reservation and reservation_snap properties.
BUI
To view the current usage in the BUI, navigate to the "Shares -> General" page, under the "Space Usage -> Users and Groups" section. There you will find a text input with a dropdown type selection. This allows you to query the current usage of any given user or group, within a share or across a project. The following types are supported:
User or Group - Search users or groups, with a preference for users in the case of a conflict. Since most user names don't overlap with group names, this should be sufficient for most queries. User - Search users. Group - Search groups.
272
Space Management
Lookups are done as text is typed in the input. When the lookup is completed, the current usage will be displayed. In addition, the "Show All" link will bring up a dialog with a list of current usage of all users or groups. This dialog can only query for a particular type - users or groups and does not support querying both at the same time. This list displays the canonical UNIX and Windows name (if mappings are enabled), as well as the usage and (for filesystems) quota.
CLI
In the CLI, the users and groups commands can be used from the context of a particular project or share. From here, the show command can be used to display current usage in a tabular form. In addition, the usage for a particular user or group can be retrieved by selecting the particular user or group in question and issuing the get command.
clownfish:> shares select default clownfish:shares default> users clownfish:shares default users> list USER NAME USAGE user-000 root 325K user-001 ahl 9.94K user-002 eschrock 20.0G clownfish:shares default users> select name=eschrock clownfish:shares default user-002> get name = eschrock unixname = eschrock unixid = 132651 winname = (unset) winid = (unset) usage = 20.0G
User and group quotas can only be applied to filesystems. User and group quotas are implemented using delayed enforcement. This means that users will be able to exceed their quota for a short period of time before data is written to disk. Once the data has been pushed to disk, the user will receive an error on new writes, just as with the filesystem-level quota case. User and group quotas are always enforced against referenced data. This means that snapshots do not affect any quotas, and a clone of a snapshot will consume the same amount of effective quota, even though the underlying blocks are shared. User and group reservations are not supported.
273
Chapter 5 Shares
Space Management
User and group quotas, unlike data quotas, are stored with the regular filesystem data. This means that if the filesystem is out of space, you will not be able to make changes to user and group quotas. You must first make additional space available before modifying user and group quotas. User and group quotas are sent as part of any remote replication. It is up to the administrator to ensure that the name service environments are identical on the source and destination. NDMP backup and restore of an entire share will include any user or group quotas. Restores into an existing share will not affect any current quotas.
BUI
In the browser, user quotas are managed from the general tab, under Space Usage -> Users & Groups. As with viewing usage, the current usage is shown as you type a user or group. Once you have finished entering the user or group name and the current usage is displayed, the quota can be set by checking the box next to "quota" and entering a value into the size field. To disable a quota, uncheck the box. Once any changes have been applied, click the 'Apply' button to make changes. While all the properties on the page are committed together, the user and group quota are validated separately from the other properties. If an invalid user and group is entered as well as another invalid property, only one of the validation errors may be displayed. Once that error has been corrected, an attempt to apply the changes again will show the other error.
CLI
In the CLI, user quotas are managed using the 'users' or 'groups' command from share context. Quotas can be set by selecting a particular user or group and using the 'set quota' command. Any user that is not consuming any space on the filesystem and doesn't have any quota set will not appear in the list of active users. To set a quota for such a user or group, use the 'quota' command, after which the name and quota can be set. To clear a quota, set it to the value '0'.
clownfish:> shares select default select eschrock clownfish:shares default/eschrock> users clownfish:shares default/eschrock users> list USER NAME USAGE QUOTA user-000 root 321K user-001 ahl 9.94K user-002 eschrock 20.0G clownfish:shares default/eschrock users> select name=eschrock clownfish:shares default/eschrock user-002> get name = eschrock unixname = eschrock unixid = 132651 winname = (unset) winid = (unset) usage = 20.0G quota = (unset)
274 Sun ZFS Storage 7000 System Administration Guide November 2010
Filesystem Namespace
clownfish:shares default/eschrock user-002> set quota=100G quota = 100G (uncommitted) clownfish:shares default/eschrock user-002> commit clownfish:shares default/eschrock user-002> done clownfish:shares default/eschrock users> quota clownfish:shares default/eschrock users quota (uncomitted)> set name=bmc name = bmc (uncommitted) clownfish:shares default/eschrock users quota (uncomitted)> set quota=200G quota = 200G (uncommitted) clownfish:shares default/eschrock users quota (uncomitted)> commit clownfish:shares default/eschrock users> list USER NAME USAGE QUOTA user-000 root 321K user-001 ahl 9.94K user-002 eschrock 20.0G 100G user-003 bmc - 200G
Identity management
User and group quotas leverage the identity mapping service on the appliance. This allows users and groups to be specified as either UNIX or Windows identities, depending on the environment. Like file ownership, these identities are tracked in the following ways:
If there is no UNIX mapping, a reference to the windows ID is stored. If there is a UNIX mapping, then the UNIX ID is stored.
This means that the canonical form of the identity is the UNIX ID. If the mapping is changed later, the new mapping will be enforced based on the new UNIX ID. If a file is created by a Windows user when no mapping exists, and a mapping is later created, new files will be treated as a different owner for the purposes of access control and usage format. This also implies that if a user ID is reused (i.e. a new user name association created), then any existing files or quotas will appear to be owned by the new user name. It is recommended that any identity mapping rules be established before attempting to actively use filesystems. Otherwise, any change in mapping can sometimes have surprising results.
Filesystem Namespace
Filesystem namespace
Every filesystem on the appliance must be given a unique mountpoint which serves as the access point for the filesystem data. Projects can be given mountpoints, but these serve only as a tool to manage the namespace using inherited properties. Projects are never mounted, and do not export data over any protocol.
Chapter 5 Shares 275
Filesystem Namespace
All shares must be mounted under /export. While it is possible to create a filesystem mounted at /export, it is not required. If such a share doesn't exist, any directories will be created dynamically as necessary underneath this portion of the hierarchy. Each mountpoint must be unique within a cluster.
Nested mountpoints
It is possible to create filesystems with mountpoints beneath that of other filesystems. In this scenario, the parent filesystems are mounted before children and vice versa. The following cases should be considered when using nested mountpoints:
If the mountpoint doesn't exist, one will be created, owned by root and mode 0755. This mountpoint may or may not be torn down when the filesystem is renamed, destroyed, or moved, depending on circumstances. To be safe, mountpoints should be created within the parent share before creating the child filesystem. If the parent directory is read-only, and the mountpoint doesn't exist, the filesystem mount will fail. This can happen synchronously when creating a filesystem, but can also happen asynchronously when making a large-scale change, such as renaming filesystems with inherited mountpoints. When renaming a filesystem or changing its mountpoint, all children beneath the current mountpoint as well as the new mountpoint (if different) will be unmounted and remounted after applying the change. This will interrupt any data services currently accessing the share. Support for automatically traversing nested mountpoints depends on protocol, as outlined below.
NFSv2 / NFSv3
Under NFS, each filesystem is a unique export made visible via the MOUNT protocol. NFSv2 and NFSv3 have no way to traverse nested filesystems, and each filesystem must be accessed by its full path. While nested mountpoints are still functional, attempts to cross a nested mountpoint will result in an empty directory on the client. While this can be mitigated through the use of automount mounts, transparent support of nested mountpoints in a dynamic environment requires NFSv4.
NFSv4
NFSv4 has several improvements over NFSv3 when dealing with mountpoints. First is that parent directories can be mounted, even if there is no share available at that point in the hierarchy. For example, if /export/home was shared, it is possible to mount /export on the
276 Sun ZFS Storage 7000 System Administration Guide November 2010
Shares
client and traverse into the actual exports transparently. More significantly, some NFSv4 clients (including Linux) support automatic client-side mounts, sometimes referred to as "mirror mounts". With such a client, when a user traverses a mountpoint, the child filesystem is automatically mounted at the appropriate local mountpoint, and torn down when the filesystem is unmounted on the client. From the server's perspective, these are separate mount requests, but they are stitched together onto the client to form a seamless filesystem namespace.
SMB
The SMB protocol does not use mountpoints, as each share is made available by resource name. However, each filesystem must still have a unique mountpoint. Nested mountpoints (multiple filesystems within one resource) are not currently supported, and any attempt to traverse a mountpoint will result in an empty directory.
HTTP / HTTPS
Filesystems are exported under the /shares directory, so a filesystem at /export/home will appear at /shares/export/home over HTTP/HTTPS. Nested mountpoints are fully supported and are transparent to the user. The same behavior regarding conflicting share options described in the FTP protocol section also applies to HTTP.
Shares
BUI
The Shares UI is accessed from "Shares -> Shares". The default view shows shares across all projects on the system.
List of Shares
The default view is a list of all shares on the system. This list allows you to rename shares, move shares between projects, and edit individual shares. The shares are divided into two lists, "Filesystems" and "LUNs," that can be selected by switching tabs on this view. The following fields are displayed for each share:
Chapter 5 Shares 277
Shares
Field
Description
Name
Name of the share. If looking at all projects, this will include the project name as well. The share name is an editable text field. Clicking on the name will allow you to enter a new name. Hitting return or moving focus from the name will commit the change. You will be asked to confirm the action, as renaming shares requires disconnecting active clients. For filesystems, this is the total size of the filesystem. For LUNs it is the size of the volume, which may or may not be thinly provisioned. See the usage statistics for more information. Mountpoint of the filesystem. This is the path available over NFS, and the relative path for FTP and HTTP. Filesystems exported over SMB only use their resource name, though each still need a unique mountpoint somewhere on the system. The SCSI GUID for the LUN. See iSCSI for more information.
Size
Mountpoint
GUID
Move a share to a different project. If the project panel is not expanded, this will automatically expand the panel until the share is dropped onto a project. Edit an individual share (also accessible by double-clicking the row). Destroy the share. You will be prompted to confirm this action, as it will destroy all data in the share and cannot be undone.
Editing a Share
To edit a share, click on the pencil icon or double-click the row in the share list. This will select the share, and give several different tabs to choose from for editing properties of the share. The complete set of functionality can be found in the section for each tab:
The name of the share is presented in the upper left corner to the right of the project panel. The first component of the name is the containing project, and clicking on the project name will navigate to the [[Shares:Projects|project details]]. The name of the share can also be changed by clicking on the share name and entering new text into the input. You will be asked to confirm this action, as it will require disconnecting active clients of the share.
278
Shares
Usage Statistics
On the left side of the view (beneath the project panel when expanded) is a table explaining the current space usage statistics. These statistics are either for a particular share (when editing a share) or for the pool as a whole (when looking at the list of shares). If any properties are zero, then they are excluded from the table.
Available space
This statistic is implicitly shown as the capacity in terms of capacity percentage in the title. The available space reflects any quotas on the share or project, or the absolute capacity of the pool. The number shown here is the sum of the total space used and the amount of available space.
Referenced data
The amount of data referenced by the data. This includes all filesystem data or LUN blocks, in addition to requisite metadata. With compression, this value may be much less than the logical size of the data contained within the share. If the share is a clone of a snapshot, this value may be less than the physical storage it could theoretically include, and may be zero.
Snapshot data
The amount of space used by all snapshots of the share, including any project snapshots. This size is not equal to the sum of unique space consumed by all snapshots. Blocks that are referenced by multiple snapshots are not included in the per-snapshot usage statistics, but will show up in the share's snapshot data total.
Unused Reservation
If a filesystem has a reservation set, this value indicates the amount of remaining space that is reserved for the filesystem. This value is not set for LUNs. The appliance prevents other shares from consuming this space, guaranteeing the filesystem enough space. If the reservation does not include snapshots, then there must be enough space when taking a snapshot for the entire snapshot to be overwritten. For more information on reservations, see the general properties section.
Total space
The sum of referenced data, snapshot data, and unused reservation.
Static Properties
The left side of the shares view also shows static (create time) properties when editing a particular share. These properties are set at creation time, and cannot be modified once they are set.
Chapter 5 Shares 279
Shares
Compression ratio
If compression is enabled, this shows the compressions ratio currently achieved for the share. This is expressed as a multiplier. For example, a compression of 2x means that the data is consuming half as much space as the uncompressed contents. For more information on compression and the available algorithms, see the general properties section.
Case sensitivity
Controls whether directory lookups are case-sensitive or case-insensitive. It supports the following options:
BUI Value CLI Value Description
Mixed
mixed
Case sensitivity depends on the protocol being used. For NFS, FTP, and HTTP, lookups are case-sensitive. For SMB, lookups are case-insensitive. This is default, and prioritizes conformance of the various protocols over cross-protocol consistency. When using this mode, it's possible to create files that are distinct over case-sensitive protocols, but clash when accessed over SMB. In this situation, the SMB server will create a "mangled" version of the conflicts that uniquely identify the filename. All lookups are case-insensitive, even over protocols (such as NFS) that are traditionally case-sensitive. This can cause confusion for clients of these protocols, but prevents clients from creating name conflicts that would cause mangled names to be used over SMB. This setting should only be used where SMB is the primary protocol and alternative protocols are considered second-class, where conformance to expected standards is not an issue. All lookups are case-sensitive, even over SMB where lookups are traditionally case-insensitive. In general, this setting should not be used because the SMB server can deal with name conflicts via mangled names, and may cause Windows applications to behave strangely.
Insensitive
insensitive
Sensitive
sensitive
Shares
if a NFSv3 client creates a file or directory that is not a valid UTF-8 encoding. This property must be set to "on" if the normalization property is set to anything other than "none".
Normalization
This setting controls what unicode normalization, if any, is performed on filesystems and directories. Unicode supports the ability to have the same logical name represented by different encodings. Without normalization, the on-disk name stored will be different, and lookups using one of the alternative forms will fail depending on how the file was created and how it is accessed. If this property is set to anything other than "none" (the default), the "Reject non UTF-8" property must also be set to "on". For more information on how normalization works, and how the different forms work, see the Wikipedia entry on unicode normalization.
BUI Value CLI Value Description
No normalization is done. Normalization Form Canonical Composition (NFC) - Characters are decomposed and then recomposed by canonical equivalence. Normalization Form Canonical Decomposition (NFD) - Characters are decomposed by canonical equivalence. Normalization Form Compatibility Composition (NFKC) Characters are decomposed by compatability equivalence, then recomposed by canonical equivalence. Normalization Form Compatibility Decomposition (NFKD) Characters are decomposed by compatibility equivalence.
Form KD
formKD
Origin
If this is a clone, this is the name of the snapshot from which it was cloned.
Project Panel
In the BUI, the set of available projects is always available via the project panel at the left side of the view. To expand or collapse the project panel, click the triangle by the "Projects" title bar.
Chapter 5 Shares 281
Shares
Icon
Description
Selecting a project from the panel will navigate to the project view for the selected project. This project panel will also expand automatically when the move tool is clicked on a row within the share list. You can then drag and drop the share to move it between projects. The project panel also allows a shortcut for creating new projects, and reverting to the list of shares across all projects. Clicking the "All" text is equivalent to selecting the "Shares" item in the navigation bar. The project panel is a convenience for systems with a relatively small number of projects. It is not designed to be the primary interface for managing a large number of projects. For this task, see the Projects view.
Creating Shares
To create a share, view shares in a project or across all projects by selecting the "shares" sub-navigation entry. When selecting "Filesystems" or "LUNs," a plus icon will appear next to the name that will bring up a dialog to create the share. When creating a share, you can choose the target project from a pulldown menu, and provide a name for the share. The properties for each type of shares are defined elsewhere: For Filesystems:
User Group Permissions Mountpoint Reject non UTF-8 (create time only) Case sensitivity (create time only) Normalization (create time only)
For LUNs:
Volume size Thin provisioned Volume block size (create time only)
CLI
The shares CLI is under shares
282 Sun ZFS Storage 7000 System Administration Guide November 2010
Shares
Navigation
You must first select a project (including the default project) before selecting a share:
clownfish:> shares clownfish:shares> select default clownfish:shares default> select foo clownfish:shares default/foo> get Properties: aclinherit = restricted (inherited) aclmode = groupmask (inherited) atime = true (inherited) casesensitivity = mixed checksum = fletcher4 (inherited) compression = off (inherited) compressratio = 100 copies = 1 (inherited) creation = Mon Oct 13 2009 05:21:33 GMT+0000 (UTC) mountpoint = /export/foo (inherited) normalization = none quota = 0 quota_snap = true readonly = false (inherited) recordsize = 128K (inherited) reservation = 0 reservation_snap = true secondarycache = all (inherited) nbmand = false (inherited) sharesmb = off (inherited) sharenfs = on (inherited) snapdir = hidden (inherited) utf8only = true vscan = false (inherited) sharedav = off (inherited) shareftp = off (inherited) space_data = 43.9K space_unused_res = 0 space_snapshots = 0 space_available = 12.0T space_total = 43.9K root_group = other root_permissions = 700 root_user = nobody
Share Operations
A share is created by selecting the project and issuing the filesystem or lun command. The properties can be modified as needed before committing the changes:
clownfish:shares default> filesystem foo clownfish:shares default/foo (uncommitted)> get aclinherit = restricted (inherited) aclmode = groupmask (inherited) atime = true (inherited) checksum = fletcher4 (inherited) compression = off (inherited)
Chapter 5 Shares 283
Shares
copies = 1 (inherited) mountpoint = /export/foo (inherited) quota = 0 (inherited) readonly = false (inherited) recordsize = 128K (inherited) reservation = 0 (inherited) secondarycache = all (inherited) nbmand = false (inherited) sharesmb = off (inherited) sharenfs = on (inherited) snapdir = hidden (inherited) vscan = false (inherited) sharedav = off (inherited) shareftp = off (inherited) root_group = other (default) root_permissions = 700 (default) root_user = nobody (default) casesensitivity = (default) normalization = (default) utf8only = (default) quota_snap = (default) reservation_snap = (default) custom:int = (default) custom:string = (default) custom:email = (default) clownfish:shares default/foo (uncommitted)> set sharenfs=off sharenfs = off (uncommitted) clownfish:shares default/foo (uncommitted)> commit clownfish:shares default>
A share can be destroyed using the destroy command from the share context:
clownfish:shares default/foo> destroy This will destroy all data in "foo"! Are you sure? (Y/N) clownfish:shares default>
A share can be renamed from the project context using the rename command:
clownfish:shares default> rename foo bar clownfish:shares default>
A share can be moved between projects from the project context using the move command:
clownfish:shares default> move foo home clownfish:shares default>
User and group usage and quotas can be managed through the users or groups commands after selecting the particular project or share. For more information on how to manage user and group quotas, see the Space Management section.
284
Shares
Properties
The following properties are available in the CLI, with their equivalent in the BUI. Properties can be set using the standard CLI commands get and set. In addition, properties can be inherited from the parent project by using the unset command.
CLI Name Type BUI Name BUI Location
aclinherit aclmode atime casesensitivity checksum compression compresratio copies creation dedup exported
inherited inherited inherited create time inherited inherited read-only inherited read-only inherited inherited, replication packages only LUN local inherited LUN local read-only, LUN local inherited inherited inherited create time read-only
ACL inheritance behavior ACL behavior on mode change Update access time on read Case sensitivity Checksum Data compression Compression ratio Additional replication Data deduplication Export
Access Access General Static General General Static General General General
initiatorgroup logbias lunumber lunguid mountpoint nbmand nodestroy normalization origin quota
Non-blocking mandatory locking General Prevent destruction Normalization Origin General Static Static General
Chapter 5 Shares
285
Shares
CLI Name
Type
BUI Name
BUI Location
quota_snap readonly recordsize reservation reservation_snap root_group root_permissions root_user rstchown secondary cache shadow sharedav shareftp sharenfs sharesmb snapdir space_available space_data space_snapshots space_total space_unused_res sparse targetgroup utf8only volblocksize vscan
space management Quota / Include snapshots inherited inherited Read-only Database record size
General General General General General Access Access Access General General Static Protocols Protocols Protocols
space management Reservation space management Reservation / Include snapshots filesystem local filesystem local filesystem local inherited inherited create time inherited inherited inherited inherited inherited read-only read-only read-only read-only read-only LUN local LUN local create time create time inherited Group Permissions User Restrict ownership change Cache device usage Data Migration Source Protocols / HTTP / Share mdoe Protocols / FTP / Share mode Protocols / NFS / Share mode
Protocols / SMB / Resource name Protocols .zfs/snapshot visibility Available space Referenced data Snapshot data Total space Unused reservation Thin provisioned Target group Reject non UTF-8 Volume block size Virus scan Snapshots Usage Usage Usage Usage Usage General Protocols Static Static General
286
General
General
General Share Properties
This section of the BUI controls overall settings for the share that are independent of any particular protocol and are not related to access control or snapshots. While the CLI groups all properties in a single list, this section describes the behavior of the properties in both contexts. For information on how these properties map to the CLI, see the Shares CLI section.
Space Usage
Space within a storage pool is shared between all shares. Filesystems can grow or shrink dynamically as needed, though it is also possible to enforce space restrictions on a per-share basis. Quotas and reservations can be enforced on a per-filesystem basis. Quotas can also be enforced per-user and per-group. For more information on manging space usage for filesystems, including quotas and reservations, see the Space Management section.
Volume size
The logical size of the LUN as exported over iSCSI. This property is only valid for LUNs. This property controls the size of the LUN. By default, LUNs reserve enough space to completely fill the volume. See the Thin provisioned property for more information. Changing the size of a LUN while actively exported to clients may yield undefined results. It may require clients to reconnect and/or cause data corruption on the filesystem on top of the LUN. Check best practices for your particular iSCSI client before attempting this operation.
Thin provisioned
Controls whether space is reserved for the volume. This property is only valid for LUNs. By default, a LUN reserves exactly enough space to completely fill the volume. This ensures that clients will not get out-of-space errors at inopportune times. This property allows the volume size to exceed the amount of available space. When set, the LUN will consume only the space that has been written to the LUN. While this allows for thin provisioning of LUNs, most filesystems do not expect to get "out of space" from underlying devices, and if the share runs out of space, it may cause instability and/or data corruption on clients. When not set, the volume size behaves like a reservation excluding snapshots. It therefore has the same pathologies, including failure to take snapshots if the snapshot could theoretically diverge to the point of exceeding the amount of available space. For more information, see the Reservation property.
Chapter 5 Shares 287
General
Properties
These are standard properties that can either be inherited from the project or explicitly set on the share. The BUI only allows the properties to be inherited all at once, while the CLI allows for individual properties to be inherited.
Mountpoint
The location where the filesystem is mounted. This property is only valid for filesystems. The following restrictions apply to the mountpoint property:
Must be under /export. Cannot conflict with another share. Cannot conflict with another share on cluster peer to allow for proper failover.
When inheriting the mountpoint property, the current dataset name is appended to the project's mountpoint setting, joined with a slash ('/'). For example, if the "home" project has the mountpoint setting /export/home, then "home/bob" would inherit the mountpoint /export/home/bob. SMB shares are exported via their resource name, and the mountpoint is not visible over the protocol. However, even SMB-only shares must have a valid unique mountpoint on the appliance. Mountpoints can be nested underneath other shares, though this has some limitations. For more information, see the filesystem namespace section.
Read only
Controls whether the filesystem contents are read only. This property is only valid for filesystems. The contents of a read only filesystem cannot be modified, regardless of any protocol settings. This setting does not affect the ability to rename, destroy, or change properties of the filesystem. In addition, when a filesystem is read only, Access control properties cannot be altered, because they require modifying the attributes of the root directory of the filesystem.
General
property may yield performance improvements at the expense of standards conformance. These updates happen asynchronously and are grouped together, so its effect should not be visible except under heavy load.
Data deduplication
Controls whether duplicate copies of data are eliminated. Deduplication is synchronous, pool-wide, block-based, and can be enabled on a per project or share basis. Enable it by selecting the Data Deduplication checkbox on the general properties screen for projects or shares. The deduplication ratio will appear in the usage area of the Status Dashboard. Data written with deduplication enabled is entered into the deduplication table indexed by the data checksum. Deduplication forces the use of the cryptographically strong SHA-256 checksum. Subsequent writes will identify duplicate data and retain only the existing copy on disk. Deduplication can only happen between blocks of the same size, data written with the same record size. As always, for best results set the record size to that of the application using the data; for streaming workloads use a large record size. If your data doesn't contain any duplicates, enabling Data Deduplication will add overhead (a more CPU-intensive checksum and on-disk deduplication table entries) without providing any benefit. If your data does contain duplicates, enabling Data Deduplication will both save space by storing only one copy of a given block regardless of how many times it occurs. Deduplication necessarily will impact performance in that the checksum is more expensive to compute and the metadata of the deduplication table must be accessed and maintained. Note that deduplication has no effect on the calculated size of a share, but does affect the amount of space used for the pool. For example, if two shares contain the same 1GB file, each will appear to be 1GB in size, but the total for the pool will be just 1GB and the deduplication ratio will be reported as 2x. Performance Warning: by its nature, deduplication requires modifying the deduplication table when a block is written to or freed. If the deduplication table cannot fit in DRAM, writes and frees may induce significant random read activity where there was previously none. As a result, the performance impact of enabling deduplication can be severe. Moreover, for some
Chapter 5 Shares 289
General
cases -- in particular, share or snapshot deletion -- the performance degradation from enabling deduplication may be felt pool-wide. In general, it is not advised to enable deduplication unless it is known that a share has a very high rate of duplicated data, and that that duplicated data plus the table to reference it can comfortably reside in DRAM. To determine if performance has been adversely affected by deduplication, enable advanced analytics and then use analytics to measure "ZFS DMU operations broken down by DMU object type" and check for a higher rate of sustained DDT operations (Data Duplication Table operations) as compared to ZFS operations. If this is happening, more I/O is for serving the deduplication table rather than file I/O.
Data compression
Controls whether data is compressed before being written to disk. Shares can optionally compress data before writing to the storage pool. This allows for much greater storage utilization at the expense of increased CPU utilization. By default, no compression is done. If the compression does not yield a minimum space savings, it is not committed to disk to avoid unnecessary decompression when reading back the data. Before choosing a compression algorithm, it is recommended that you perform any necessary performance tests and measure the achieved compression ratio.
BUI value CLI value Description
Off LZJB (Fastest) GZIP-2 (Fast) GZIP (Default) GZIP-9 (Best Compression)
No compression is done A simple run-length encoding that only works for sufficiently simple inputs, but doesn't consume much CPU. A lightweight version of the gzip compression algorithm. The standard gzip compression algorithm. Highest achievable compression using gzip. This consumes a significant amount of CPU and can often yield only marginal gains.
Checksum
Controls the checksum used for data blocks. On the appliance, all data is checksummed on disk, and in such a way to avoid traditional pitfalls (phantom reads and write in particular). This allows the system to detect invalid data returned from the devices. The default checksum (fletcher4) is sufficient for normal operation, but paranoid users can increase the checksum strength at the expense of additional CPU load. Metadata is always checksummed using the same algorithm, so this only affects user data (files or LUN blocks).
290 Sun ZFS Storage 7000 System Administration Guide November 2010
General
BUI value
CLI value
Description
all metadata
All normal file or LUN data is cached, as well as any metadata. Only metadata is kept on cache devices. This allows for rapid traversal of directory structures, but retrieving file contents may require reading from the data devices. No data in this share is cached on the cache device. Data is only cached in the primary cache or stored on data devices.
none
General
BUI value
CLI value
Description
Latency Throughput
latency
Synchronous writes are optimized for latency, leveraging the dedicated log device(s), if any.
throughput Synchronous writes are optimized for throughput. Data is written to the primary data disks instead of the log device(s), and the writes are performed in a way that optimizes for total bandwidth of the system.
Additional replication
Controls number of copies stored of each block, above and beyond any redundancy of the storage pool. Metadata is always stored with multiple copies, but this property allows the same behavior to be applied to data blocks. The storage pool attempts to store these extra blocks on different devices, but it is not guaranteed. In addition, a storage pool cannot be imported if a complete logical device (RAID stripe, mirrored pair, etc) is lost. This property is not a replacement for proper replication in the storage pool, but can be reassuring for paranoid administrators.
BUI value CLI value Description
1 2 3
Default behavior. Store a single copy of data blocks. Store two copies of every data block. Store three copies of every data block.
Virus scan
Controls whether this filesystem is scanned for viruses. This property is only valid for filesystems.
292 Sun ZFS Storage 7000 System Administration Guide November 2010
Protocols
This property setting is independent of the state of the virus scan service. Even if the Virus Scan service is enabled, filesystem scanning must be explicitly enabled using this property. Similarly, virus scanning can be enabled for a particular share even if the service itself is off. For more information about configuration virus scanning, see the Virus Scan section.
Prevent destruction
When set, the share or project cannot be destroyed. This includes destroying a share through dependent clones, destroying a share within a project, or destroying a replication package. However, it does not affect shares destroyed through replication updates. If a share is destroyed on an appliance that is the source for replication, the corresponding share on the target will be destroyed, even if this property is set. To destroy the share, the property must first be explicitly turned off as a separate step. This property is off by default.
Custom Properties
Custom properties can be added as needed to attach user-defined tags to projects and shares. For more information, see the schema section.
Protocols
Shares Protocols
Each share has protocol-specific properties which define the behavior of different protocols for that share. These properties may be defined for each share or inherited from a share's project. The NFS, SMB, HTTP, and FTP properties apply only to filesystems, while the iSCSI properties apply only to LUNs. In the BUI, each protocol shows the path by which clients using that protocol will refer to the share. For example, the filesystem "fs0" on the server "twofish" would be available at the following locations:
Chapter 5 Shares 293
Protocols
Protocol
Location
For iSCSI, initiators can discover the target through one of the mechanisms described in the SAN documentation.
NFS
BUI Property CLI Property Description
Share mode Disable setuid/setgid file creation Prevent clients from mounting subdirectories Anonymous user mapping
off/ro/rw nosuid
Determines whether the share is available for reading only, for reading and writing, or neither. In the CLI, "on" is an alias for "rw". If this option is selected, clients will not be able to create files with the setuid (S_ISUID) and setgid (S_ISGID) bits set, nor to enable these bits on existing files via the chmod(2) system call. If this option is selected, clients will be prevented from directly mounting subdirectories. They will be forced to mount the root of the share. Note: this only applies to the NFSv2 and NFSv3 protocols not to NFSv4. Unless the "root" option is in effect for a particular client, the root user on that client is treated as an unknown user, and all attempts by that user to access the share's files will be treated as attempts by a user with this uid. The file's access bits and ACLs will then be evaluated normally. Sets the character set default for all clients. For more information, see the section on character set encodings. Sets the security mode for all clients.
nosub
anon
Exceptions to the overall sharing modes may be defined for clients or collections of clients. When a client attempts access, its access will be granted according to the first exception in the list that matches the client; or, if no such exception exists, according to the global share modes defined above. These client collections may be defined using one of three types:
294
Protocols
Type
CLI Prefix
Description
Example
Host(FQDN) or Netgroup
none
A single client whose IP address resolves to the specified fully-qualified name, or a netgroup containing fully-qualified names to which a client's IP address resolves All clients whose IP addresses resolve to a fully qualified name ending in this suffix
caji.sf.example.com
. @
sf.example.com
All clients whose IP addresses are within the 192.168.20.0/22 specified IP subnet, expressed in CIDR notation
For each specified client or collection of clients, you will then express two parameters: whether the client shall be permitted read-only or read-write access to the share, and whether the root user on the client shall be treated as the root user (if selected) or the unknown user. If netgroups are used, they will be resolved from NIS (if enabled) and then from LDAP (if enabled). If LDAP is used, the netgroups must be found at the default location, ou=Netgroup,(Base DN), and must use the standard schema. The username component of a netgroup entry typically has no effect on NFS; only the hostname is significant. Hostnames contained in netgroups must be canonical and, if resolved using DNS, fully qualified. That is, the NFS subsystem will attempt to verify that the IP address of the requesting client resolves to a canonical hostname that matches either the specified FQDN or one of the members of one of the specified netgroups. This match must be exact, including any domain components; otherwise, the exception will not match and the next exception will be tried. For more information on hostname resolution, see DNS. Management of netgroups can be complex; consider using IP subnet rules or DNS domain rules instead where possible.
CLI Considerations
In the CLI, all NFS share modes and exceptions are specified using a single options string for the "sharenfs" property. This string is a comma-separated list of values from the tables above. It should begin with one of "ro", "rw", or "off", as an analogue to the global share modes described for the BUI. For example,
set sharenfs=ro
sets the share mode for all clients to read-only. The root users on all clients will access the files on the share as if they were the generic "nobody" user. Either or both of the "nosuid" and "anon" options may also be appended. Remember that in the CLI, property values containing the "=" character must be quoted. Therefore, to define the mapping of all unknown users to the uid 153762, you might specify
set sharenfs="ro,anon=153762"
Chapter 5 Shares 295
Protocols
Additional exceptions can be specified by appending text of the form "option=collection", where "option" is one of "ro", "rw", and "root", defining the type of access to be granted to the client collection. The collection is specified by the prefix character from the table above and either a DNS hostname/domain name or CIDR network number. For example, to grant read-write access to all hosts in the sf.example.com domain and root access to those in the 192.168.44.0/24 network, you might use
set sharenfs="ro,anon=153762,rw=.sf.example.com,[email protected]/24"
Netgroup names can be used anywhere an individual fully-qualified hostname can be used. For example, you can permit read-write access to the "engineering" netgroup as follows:
set sharenfs="ro,rw=engineering"
Security modes are specified by appending text in the form "option=mode" where option is "sec" and mode is one of "sys", "krb5", "krb5:krb5i", or "krb5:krb5i:krb5p".
set sharenfs="sec=krb5"
Security Modes
Security modes are set on per-share basis and can have performance impact. The following table describes the Kerberos security settings.
Setting Description
krb5 krb5i
End-user authentication via Kerberos V5 krb5 plus integrity protection (data packets are tamper proof) krb5 plus privacy (data packets cannot be snooped or otherwise examined by a third party)
krb5p
krb5p cannot be used without also using krb5i and krb5, and krb5i cannot be used without also using krb5.
Protocols
This means that they can only be interpreted by clients using the same encoding. SMB, however, requires filenames to be stored as UTF-8 so that they can be interpreted on the server side. This makes it impossible to support arbitrary client encodings while still permitting access over SMB. In order to support such configurations, the character set encoding can be set share-wide or on a per-client basis. The following character set encodings are supported:
euc-cn euc-jp euc-jpms euc-kr euc-tw iso8859-1 iso8859-2 iso8859-5 iso8859-6 iso8859-7 iso8859-8 iso8859-9 iso8859-13 iso8859-15 koi8-r
The default behavior is to leave the character set encoding unspecified (pass-through). The BUI allows the character set to be chosen through the standard exception list mechanism. In the CLI, each character set itself becomes an option with one or more hosts, with '*' indicating the share-wide setting. For example, the following:
set sharenfs="rw,euc-kr=*"
Will share the filesystem with 'euc-kr' as the default encoding. The following:
set sharenfs="rw,euc-kr=host1.domain.com,euc-jp=host2.domain.com"
Use the default encoding for all clients except 'host1' and 'host2', which will use 'euc-kr' and 'euc-jp', respectively. The format of the host lists follows that of other CLI NFS options. Note that some NFS clients do not correctly support alternate locales; consult your NFS client documentation for details.
Chapter 5 Shares
297
Protocols
SMB
Property Description
Resource name
The name by which SMB clients refer to this share. The resource name "off" indicates no SMB client may access the share, and the resource name "on" indicates the share will be exported with the filesystem's name. An option which, when enabled, performs access-based enumeration. Access-based enumeration filters directory entries based on the credentials of the client. When the client does not have access to a file or directory, that file will be omitted from the list of entries returned to the client. This option is not enabled by default. A property which indicates whether this share is provisioned as a standalone DFS namespace. An ACL which is combined with the ACL of a file or directory in the share to determine the effective permissions for that file. By default, this ACL grants everyone full control. This ACL provides another layer of access control above the ACLs on files and allows for more sophisticated access control configurations. This property may only be set once the filesystem has been exported by configuring the SMB resource name. If the filesystem is not exported over the SMB protocol, setting the share-level ACL has no effect.
Use ABE
No two SMB shares on the same system may share the same resource name. Resource names inherited from projects have special behavior, see the projects section for details. Resource names must be less than 80 characters, and can contain any alphanumeric characters besides the following characters:
" / \ [ ] : | < > + ; , ? * =
When access-based enumeration is enabled, clients may see directory entries for files which they cannot open. Directory entries are filtered only when the client has no access to that file. For example, if a client attempts to open a file for read/write access but the ACL grants only read access, that open request will fail but that file will still be included in the list of entries.
SCSI
Property Description
The targets over which this LUN is exported The initiators which may access this LUN
298
Protocols
Property
Description
As LUNs are associated with target and initiator groups, they are assigned unique logical unit numbers. This property controls whether a logical unit must have number zero, or whether its number can be automatically assigned. No two LUNs which share the same target group and initiator group may share a logical unit number. The LU number assigned to this LUN. The operational status of this LUN. An offline LUN is inaccessible to initiators regardless of target or initiator configuration. A flag which fixes the LU number at its current value. When this flag is set, any change in target group or initiator group will not change the LU number, and any group change which creates a conflict will fail. When this flag is not set, any group change may reset the LU number to a value known not to cause a conflict. This setting controls whether the LUN caches writes. With this setting off, all writes are synchronous and if no log device is available, write performance suffers significantly. Turning this setting on can therefore dramatically improve write performance, but can also result in data corruption on unexpected shutdown unless the client application understands the semantics of a volatile write cache and properly flushes the cache when necessary. Consult your client application documentation before turning this on. A LUN's GUID is a globally-unique read-only identifier which identifies the SCSI device. This GUID will remain consistent within different head nodes and replicated environments.
GUID
HTTP
Property Description
Share mode
The HTTP share mode for this filesystem. One of none, read only, or read/write.
FTP
Property Description
Share mode
The FTP share mode for this filesystem. One of none, read only, or read/write.
Chapter 5 Shares
299
Access
SFTP
Property Description
Share mode
The SFTP share mode for this filesystem. One of none, read only, or read/write.
Access
Access Control
This view allows you to set options to control ACL behavior as well as control access to the root directory of the filesystem. This view is only available for filesystems.
User
The owner of the root directory. This can be specified as a user ID or user name. For more information on mapping Unix and Windows users, see the Identity Mapping service. For Unix-based NFS access, this can be changed from the client using the chown command.
Group
The group of the root directory. This can be specified as a group ID or group name. For more information on mapping Unix and Windows groups, see the Identity Mapping service. For Unix-based NFS access, this can be changed from the client using the chgrp command.
Permissions
Standard Unix permissions for the root directory. For Unix-based NFS access, this can be changed from the client using the chmod command. The permissions are divided into three types.
300 Sun ZFS Storage 7000 System Administration Guide November 2010
Access
Access type
Description
User that is the current owner of the directory. Group that is the current group of the directory. All other accesses.
R W X
Permission to list the contents of the directory. Permission to create files in the directory. Permission to look up entries in the directory. If users have execute permissions but not read permissions, they can access files explicitly by name but not list the contents of the directory.
In the BUI, selecting permissions is done by click on individual boxes. Alternatively, clicking on the label ("user," "group," or "other) will select (or deselect) all permissions within the label. In the CLI, permissions are specified as a standard Unix octal value, where each digit corresponds to (in order) user, group, and other. Each digit is the sum of read (4), write (2), and execute (1). So a permissions value of 743 would be the equivalent of user RWX, group R, other WX. As an alternative to setting POSIX permission bits at share creation time, administrators may instead select the "Use Windows Default Permissions" option, which will apply an ACL as described in the root directory ACL section below. This is a shortcut to simplify administration in environments that are exclusively or predominately managed by users with Windows backgrounds and is intended to provide behaviour similar to share creation on a Windows server.
ACL Behavior
For information on ACLs and how they work, see the root directory ACL documentation.
Chapter 5 Shares
301
Access
BUI Value
CLI Value
Description
Discard ACL Mask with user and group Do not change ACL
discard
All ACL entries that do not represent the mode of the directory or file are discarded.
groupmask User and group permissions are reduced such that they are no greater than owner permission bits. This is the default behavior. passthrough No changes are made to the ACL other than generating the necessary ACL entries to represent the new mode of the file or directory.
Do not inherit entries Only inherit deny entries Inherit all but "write ACL" and "change owner" Inherit all entries
No ACL entries are inherited. The file or directory is created according to the client and protocol being used. Only inheritable ACL entries specifying "deny" permissions are inherited. Removes the "write_acl" and "write_owner" permissions when the ACL entry is inherited, but otherwise leaves inheritable ACL entries untouched. This is the default. All inheritable ACL entries are inherited. The "passthrough" mode is typically used to cause all "data" files to be created with an identical mode in a directory tree. An administrator sets up ACL inheritance so that all files are created with a mode, such as 0664 or 0666.
passthrough
Inherit all but "execute" passthrough-x Same as 'passthrough', except that the owner, group, and everyone when not specified ACL entries inherit the execute permission only if the file creation mode also requests the execute bit. The "passthrough" setting works as expected for data files, but you might want to optionally include the execute bit from the file creation mode into the inherited ACL. One example is an output file that is generated from tools, such as "cc" or "gcc". If the inherited ACL doesn't include the execute bit, then the output executable from the compiler won't be executable until you use chmod(1) to change the file's permissions.
302
Access
Current owner of the directory. If the owner is changed, this ACE will apply to the new owner. Current group of the directory. If the group is changed, this ACE will apply to the new group. Any user. User named by the 'target' field. The user can be specified as a user ID or a name resolvable by the current name service configuration. Group named by the 'target' field. The group can be specified as a group ID or a name resolvable by the current name service configuration.
Mode
Description
Allow Deny
The permissions are explicitly granted to the ACE target. The permissions are explicitly denied to the ACE target.
Chapter 5 Shares
303
Access
Permission
Description
Read (r) Read Data/List Directory (x) Execute File/Traverse Directory (p) Append Data/Add Subdirectory (a) Read Attributes Permission to list the contents of a directory. When inherited by a file, permission to read the data of the file. Permission to traverse (lookup) entries in a directory. When inherited by a file, permission to execute the file. Permission to create a subdirectory within a directory. When inherited by a file, permission to modify the file's data, but only starting at the end of the file. This permission (when applied to files) is not currently supported. Permission to read basic attributes (non-ACLs) of a file. Basic attributes are considered to be the stat level attributes, and allowing this permission means that the user can execute ls and stat equivalents. Permission to read the extended attributes of a file or do a lookup in the extended attributes directory.
(w) Write Data/Add File Permission to add a new file to a directory. When inherited by a file, permission to modify a file's data anywhere in the file's offset range. This include the ability to grow the file or write to any arbitrary offset. (d) Delete (D) Delete Child (A) Write Attributes (W) Write Extended Attributes Admin (c) Read ACL/Permissions (C) Write ACL/Permissions (o) Change Owner Inheritance (f) Apply to Files Inherit to all newly created files in a directory. Permission to read the ACL. Permission to write the ACL or change the basic access modes. Permission to change the owner. Permission to delete a file. Permission to delete a file within a directory. Permission to change the times associated with a file or directory. Permission to create extended attributes or write to the extended attributes directory.
(d) Apply to Directories Inherit to all newly created directories in a directory. (i) Do not apply to self The current ACE is not applied to the current directory, but does apply to children. This flag requires one of "Apply to Files" or "Apply to Directories" to be set.
304
Snapshots
Permission
Description
The current ACE should only be inherited one level of the tree, to immediate children. This flag requires one of "Apply to Files" or "Apply to Directories" to be set.
When the option to use Windows default permissions is used at share creation time, an ACL with the following three entries is created for the share's root directory:
Type Action Access
Snapshots
Introduction
Snapshots are read only copies of a filesystem at a given point of time. For more information on snapshots and how they work, see the concepts page.
Snapshot Properties
.zfs/snapshot visible
Filesystem snapshots can be accessed over data protocols at .zfs/snapshot in the root of the filesystem. This directory contains a list of all snapshots on the filesystem, and they can be accessed just like normal filesystem data (in read only mode). By default, the '.zfs' directory is not visible when listing directory contents, but can be accessed by explicitly looking it up. This prevents backup software from inadvertently backing up snapshots in addition to new data.
BUI Value CLI Value Description
Hidden Visible
hidden visible
The .zfs directory is not visible when listing directory contents in the root of the filesystem. This is default. This .zfs directory appears like any other directory in the filesystem.
Chapter 5 Shares
305
Snapshots
BUI
Listing Snapshots
Under the "snapshots" tab is the list of active snapshots of the share. This list is divided into two tabs: the "Snapshots" tab is used for browsing and managing snapshots. The "Schedules" tab manages automatic snapshot schedules. Within the "Snapshots" tab, you can select between viewing all snapshots, only manual snapshots, or only scheduled snapshots. For each snapshot, the following fields are shown:
Field Description
Name
The name of the snapshot. For manual snapshots, this is the name provided when the snapshot was created. Manual snapshots can be renamed by clicking on the name and entering a new value. For automatic snapshots, this is a name of the form ".auto-<timestamp>", and these snapshots cannot be renamed. Other forms of automatic snapshots may be created beginning with ".rr" or "bk-". These snapshots are used internally for remote replication and NDMP backup, and will be removed once the appropriate operation has been completed. The date and time when the snapshot was created. The amount of unique space used by the snapshot. Snapshots begin initially referencing all the same blocks as the filesystem or LUN itself. As the active filesystem diverges, blocks that have been changed in the active share may remain held by one or more snapshots. When a block is part of multiple snapshots, it will be accounted in the share snapshot usage, but will not appear in the unique space of any particular snapshot. The unique space is blocks that are only held by a particular snapshot, and represents the amount of space that would be freed if the snapshot were to be destroyed. The total amount of space referenced by the snapshot. This represents the size of the filesystem at the time the snapshot was taken, and any snapshot can theoretically take up an amount of space equal to the total size as data blocks are rewritten. Show the number of clones of the snapshot. When the mouse is over a snapshot row with a non-zero number of clones, a "Show..." link will appear. Clicking this link will bring up a dialog box that displays the complete list of all clones.
Creation Unique
Total
Clones
Taking Snapshots
To create a manual snapshot, click the icon when the "Snapshots" tab is selected and the list of snapshots is shown. A dialog box will prompt for the snapshot name. Hitting the "apply" button will create the snapshot. There is no limit on the number of snapshots that can be taken, but each snapshot will consume some amount of resources (namely memory), so creating large numbers of snapshots can slow down the system, eventually grinding to a halt. The practical limit on the number of snapshots system-wide depends on the system configuration, but should be on the order of a hundred thousand or more.
306 Sun ZFS Storage 7000 System Administration Guide November 2010
Snapshots
Renaming a Snapshot
To rename a snapshot, click the name within the list of active snapshots. This will change to a text input box. After updating the name within the text input, hitting return or changing focus will commit the changes.
Destroying a Snapshot
To destroy a snapshot, click the icon when over the row for the target snapshot. Destroying a snapshot will require destroying any clones and their descendents. If this is the case, you will be prompted with a list of the clones that will be affected.
Cloning a Snapshot
A clone is a writable copy of a snapshot, and is managed like any other share. Like snapshots of filesystems, it initially consumes no additional space. As the data in the clone changes, it will consume more space. The original snapshot cannot be destroyed without also destroying the clone. Scheduled snapshots can be safely cloned, and scheduled snapshots with clones will be ignored if they otherwise should be destroyed. To create a clone, click the following values.
Property Description
icon for the source snapshot. A dialog will prompt for the
Destination project. By default, clones are created within the current project, but they can also be created in different projects (or later moved between projects). The name to give to the clone. By default, the all currently inherited properties of the filesystem will inherit from the destination project in the clone. Local settings are always preserved. Setting this property will cause any inherited properties to be preserved as local setting in the new clone.
Chapter 5 Shares
307
Snapshots
Property
Description
Mountpoint
When preserving local properties, the clone must be given a different mountpoint, as shares cannot save the same mountpoint. This option is only available when "Preserve local properties" is set.
Scheduled Snapshots
In addition to manual snapshots, you can configure automatic snapshots according to an arbitrary schedule. These snapshots are named '.auto-<timestamp>', and can be taken on half hour, hourly, daily, weekly, or monthly schedules. A schedule is a list of intervals and retention policies. To add a new interval, click the icon when viewing the "Schedules" tab. Each interval has the following properties.
Property Description
Frequency Offset
One of "half hour", "hour", "day", "week", or "month". This indicates how often the snapshot is taken. This specifies an offset within the frequency. For example, when selecting an hour frequency, snapshots can be taken at an explicit minute offset from the hour. For daily snapshots, the offset can specify hour and minute, and for weekly or monthly snapshots the offset can specify day, hour, and minute. Controls the retention policy for snapshots. Automatic snapshots can be kept forever (except for half hour and hour snapshots, which are capped at 48 and 24, respectively) or can be limited to a certain number. This limit will delete automatic snapshots for the given interval if they are older than the retention policy. This is actually enforced by the time they were taken, not an absolute count. So if you have hour snapshots and the appliance is down for a day, when you come back up all your hour snapshots will be deleted. Snapshots that are part of multiple intervals are only destroyed when no interval specifies that they should be retained.
Keep at most
Automatic snapshots can only be set on a project or a share, but not both. Otherwise, overlapping schedules and retention policies would make it impossible to guarantee both schedules. Removing an interval, or changing its retention policy, will immediately destroy any automatic snapshots not covered by the new schedule. Automatic snapshots with clones are ignored. Previous versions of the software allowed for automatic snapshots at the frequency of a minute. This proved to put undue strain on the system and was not generally useful. To help users avoid placing undue stress on the system, this feature was removed with the 2010.Q3 release. Snapshots can now only be specified at a period of once every half hour or longer. Existing minute periods will be preserved should the software be rolled back, and previous instances will expire according to the existing schedule, but no new snapshots will be taken. An alert will be posted if a share or project with this frequency is found.
308 Sun ZFS Storage 7000 System Administration Guide November 2010
Snapshots
CLI
To access the snapshots for a share, navigate to the share and run the snapshots command.
clownfish:> shares select default select builds clownfish:shares default/builds> snapshots clownfish:shares default/builds snapshots>
Listing Snapshots
Snapshots can be listed using the standard CLI commands.
clownfish:shares default/builds snapshots> list today yesterday clownfish:shares default/builds snapshots>
Taking Snapshots
To take a manual snapshot, use the snapshot command:
clownfish:shares default/builds snapshots> snapshot test clownfish:shares default/builds snapshots>
Renaming a Snapshot
To rename a snapshot, use the rename command:
clownfish:shares default/builds snapshots> rename test test2 clownfish:shares default/builds snapshots>
Destroying a Snapshot
To destroy a snapshot, use the destroy command:
clownfish:shares default/builds snapshots> select test2 clownfish:shares default/builds@test2> destroy This will destroy this snapshot. Are you sure? (Y/N) clownfish:shares default/builds snapshots>
You can also use the destroy command from the share context without selecting an individual snapshot:
clownfish:shares default/builds snapshots> destroy test2 This will destroy this snapshot. Are you sure? (Y/N) clownfish:shares default/builds snapshots>
Snapshots
clownfish:shares default/builds snapshots> select today clownfish:shares default/builds@today> rollback Rolling back will revert data to snapshot, destroying newer data. Active initiators will be disconnected. Continue? (Y/N) clownfish:shares default/builds@today>
Cloning a Snapshot
To clone a snapshot, use the clone command. This command will place you into an uncommitted share context identical to the one used to create shares. From here, you can adjust properties as needed before committing the changes to create the clone.
clownfish:shares default/builds snapshots> select today clownfish:shares default/builds@today> clone testbed clownfish:shares default/testbed (uncommitted clone)> get aclinherit = restricted (inherited) aclmode = groupmask (inherited) atime = true (inherited) checksum = fletcher4 (inherited) compression = off (inherited) copies = 1 (inherited) mountpoint = /export/testbed (inherited) quota = 0 (default) readonly = false (inherited) recordsize = 128K (inherited) reservation = 0 (default) secondarycache = all (inherited) nbmand = false (inherited) sharesmb = off (inherited) sharenfs = on (inherited) snapdir = hidden (inherited) vscan = false (inherited) sharedav = off (inherited) shareftp = off (inherited) root_group = other (default) root_permissions = 777 (default) root_user = nobody (default) quota_snap = true (default) reservation_snap = true (default) clownfish:shares default/testbed (uncommitted clone)> set quota=10G quota = 10G (uncommitted) clownfish:shares default/testbed (uncommitted clone)> commit clownfish:shares default/builds@today>
The command also supports an optional first argument, which is the project in which to create the clone. By default, the clone is created in the same project as the share being cloned.
Scheduled Snapshots
Automatic scheduled snapshots can be configured using the automatic command from the snapshot context. Once in this context, new intervals can be added and removed with the create and destroy commands. Each interval has a set of properties that map to the BUI view of the frequency, offset, and number of snapshots to keep.
310 Sun ZFS Storage 7000 System Administration Guide November 2010
Projects
clownfish:shares default/builds snapshots> automatic clownfish:shares default/builds snapshots automatic> create clownfish:shares default/builds snapshots automatic (uncommitted)> set frequency=day frequency = day (uncommitted) clownfish:shares default/builds snapshots automatic (uncommitted)> set hour=14 hour = 14 (uncommitted) clownfish:shares default/builds snapshots automatic (uncommitted)> set minute=30 minute = 30 (uncommitted) clownfish:shares default/builds snapshots automatic (uncommitted)> set keep=7 keep = 7 (uncommitted) clownfish:shares default/builds snapshots automatic (uncommitted)> get frequency = day (uncommitted) day = (unset) hour = 14 (uncommitted) minute = 30 (uncommitted) keep = 7 (uncommitted) clownfish:shares default/builds snapshots automatic (uncommitted)> commit clownfish:shares default/builds snapshots automatic> list NAME FREQUENCY DAY HH:MM KEEP automatic-000 day 14:30 7 clownfish:shares default/builds snapshots automatic> done clownfish:shares default/builds snapshots>
Projects
BUI
The Projects UI is accesssed from "Shares -> Projects". This presents a list of all projects on the system, although projects can be selected by using the project panel or by clicking the project name while editing a share within a project.
List of Projects
After navigating to the project view, you will be presented with a list of projects on the system. Alternatively, you can navigate to the shares screen and open the project panel for a shortcut to projects. The panel does not scale well to large numbers of projects, and is not a replacement for the complete project list. The following fields are displayed for each project:
Field Description
Name
Name of the share. The share name is an editable text field. Clicking on the name will allow you to enter a new name for the project. Hitting return or moving focus from the name will commit the change. You will be asked to confirm the action, as renaming shares requires disconnecting active clients. The total size of all shares within the project and unused reservation.
Size
Projects
Icon
Description
Edit an individual project (also accessible by double-clicking the row). Destroy the project. You will be prompted to confirm this action, as it will destroy all data in the share and cannot be undone.
Editing a Project
To edit a project, click on the pencil icon or double-click the row in the project list, or click on the name in the project panel. This will select the project, and give several different tabs to choose from for editing properties of the project. The complete set of functionality can be found in the section for each tab:
The name of the project is presented in the upper left corner to the right of the project panel. The name of the project can also be changed by clicking on the project name and entering new text into the input. You will be asked to confirm this action, as it will require disconnecting active clients of the project.
Usage Statistics
On the left side of the view (beneath the project panel when expanded) is a table explaining the current space usage statistics. If any properties are zero, then they are excluded from the table. The majority of these properties are identical between projects and shares, though there are some statistics that only have meaning for projects.
Available space
See the shares section.
Referenced data
Sum of all referenced data for all shares within the project, in addition to a small amount of project overhead. See the shares section for more information on how referenced data is calculated for shares.
Snapshot data
Sum of all snapshot data for all shares, and any project snapshot overhead. See the shares section for more information on how snapshot data is calculated for shares.
312 Sun ZFS Storage 7000 System Administration Guide November 2010
Projects
Unused Reservation
Unused reservation for the project. This only includes data not currently used for the project level reservation. It does not include unused reservations of any shares contained in the project.
Total space
The sum of referenced data, snapshot data, unused reservation, and unused reservation of shares.
Static Properties
The left side of the shares view also shows static properties when editing a particular project. These properties are read only, and cannot be modified.
Compression ratio
See the shares section for a complete description.
Creating Projects
To create a project, view the list of projects and click the button. Alternatively, the clicking the "Add..." button in the project panel will present the same dialog. Enter the project name and click apply to create the project.
CLI
The projects CLI is under shares
Navigation
To select a project, use the select command:
clownfish:> shares clownfish:shares> select default clownfish:shares default> get aclinherit = aclmode = atime = checksum = compression =
Chapter 5 Shares
Projects
compressratio = 100 copies = 1 creation = Thu Oct 23 2009 17:30:55 GMT+0000 (UTC) mountpoint = /export quota = 0 readonly = false recordsize = 128K reservation = 0 secondarycache = all nbmand = false sharesmb = off sharenfs = on snapdir = hidden vscan = false sharedav = off shareftp = off default_group = other default_permissions = 700 default_sparse = false default_user = nobody default_volblocksize = 8K default_volsize = 0 space_data = 43.9K space_unused_res = 0 space_unused_res_shares = 0 space_snapshots = 0 space_available = 12.0T space_total = 43.9K clownfish:shares default>
Project Operations
A project is created using the project command. The properties can be modified as needed before committing the changes:
clownfish:shares> project home clownfish:shares home (uncommitted)> get mountpoint = /export (default) quota = 0 (default) reservation = 0 (default) sharesmb = off (default) sharenfs = on (default) sharedav = off (default) shareftp = off (default) default_group = other (default) default_permissions = 700 (default) default_sparse = true (default) default_user = nobody (default) default_volblocksize = 8K (default) default_volsize = 0 (default) aclinherit = (default) aclmode = (default) atime = (default) checksum = (default) compression = (default) copies = (default) readonly = (default)
314 Sun ZFS Storage 7000 System Administration Guide November 2010
Projects
recordsize = (default) secondarycache = (default) nbmand = (default) snapdir = (default) vscan = (default) custom:contact = (default) custom:department = (default) clownfish:shares home (uncommitted)> set sharenfs=off sharenfs = off (uncommitted) clownfish:shares home (uncommitted)> commit clownfish:shares>
This command can also be run from within the project context after selecting a project. A project can be renamed using the rename command:
clownfish:shares> rename default home clownfish:shares>
Once the pool context has been select, projects and shares are managed within that pool using the standard CLI interfaces.
Properties
The following properties are available in the CLI, with their equivalent in the BUI. Properties can be set using the standard CLI commands get and set. In addition, properties can be inherited from the parent project by using the unset command.
CLI Name Type BUI Name BUI Location
aclinherit aclmode
inherited inherited
Access
Chapter 5 Shares
315
Projects
CLI Name
Type
BUI Name
BUI Location
atime checksum compression compressratio copies creation dedup default_group default_permissions default_sparse default_user default_volblocksize default_volsize mountpoint nbmand quota readonly recordsize reservation secondary cache sharedav shareftp sharenfs sharesmb snapdir
inherited inherited inherited read-only inherited read-only inherited creation default creation default creation default creation default creation default creation default inherited inherited space management inherited inherited space management inherited inherited inherited inherited inherited inherited
Update access time on read Checksum Data compression Compression ratio Additional replication Data deduplication Group Permissions Thin provisioned User Volume block size Volume size Mountpoint Non-blocking mandatory locking Quota Read-only Database record size Reservation Cache device usage Protocols / HTTP / Share mdoe Protocols / FTP / Share mode Protocols / NFS / Share mode Protocols / SMB / Resource name .zfs/snapshot visibility
General General General Static General General General General General General General General General General General General General General General Protocols Protocols Protocols Protocols Snapshots
316
General
CLI Name
Type
BUI Name
BUI Location
Available space Referenced data Snapshot data Total space Unused reservation Unused reservation of shares Virus scan
General
General Project Properties
This section of the BUI controls overall settings for the project that are independent of any particular protocol and are not related to access control or snapshots. While the CLI groups all properties in a single list, this section describes the behavior of the properties in both contexts. For information on how these properties map to the CLI, see the Projects CLI section.
Space Usage
Space within a storage pool is shared between all shares. Filesystems can grow or shrink dynamically as needed, though it is also possible to enforce space restrictions on a per-share basis. For more information on pooled storage, see the concepts page.
Quota
Sets a maximum limit on the total amount of space consumed by all filesystems and LUNs within the project. For more information, see the shares section. Unlike filesystems, project quotas cannot exclude snapshots, and can only be enforced across all shares and their snapshots.
Reservation
Guarantees a minimum amount of space for use across all filesystems and LUNs within the project. For more information, see the shares section. Unlike filesystems, project reservation cannot exclude snapshots, and can only be enforcedc across all shares and their snapshots.
Chapter 5 Shares 317
General
Inherited Properties
These are standard properties that can either be inherited by shares within the project. The behavior of these properties is identical to that at the shares level, and further documentation can be found in the shares section.
Mountpoint Read only Update access time on read Non-blocking mandatory locking Data compression Data deduplication Checksum Cache device usage Database record size Additional replication Virus scan
Custom Properties
Custom properties can be added as needed to attach user-defined tags to projects and shares. For more information, see the schema section.
318
Protocols
Protocols
Project Protocols
Each project has protocol-specific properties which define the behavior of different protocols for that shares within that project. In general, shares inherit protocol-specific properties in a straightforward manner. Exceptions and special cases are noted here. For protocol issues, refer to Troubleshooting Protocols.
NFS
NFS share properties are inherited normally, and described in the shares documentation.
SMB
Property Description
The name by which SMB clients refer to this share. An option which, when enabled, performs access-based enumeration. Access-based enumeration filters directory entries based on the credentials of the client. When the client does not have access to a file or directory, that file will be omitted from the list of entries returned to the client. This option is not enabled by default.
No two SMB shares on the same system may share the same resource name. When filesystems inherit resource names from a project, the share's resource name is constructed according to these rules:
Project's Resource Name Share's Resource Name
The contained filesystems are not exported over SMB. The contained filesystems are exported over SMB with their filesystem name as the resource name. A resource name of the form <project's resource name>_<filesystem name> is constructed for each filesystem.
iSCSI
iSCSI properties are not inherited.
Chapter 5 Shares 319
Access
HTTP
HTTP share properties are inherited normally, and described in the shares documentation.
FTP
FTP share properties are inherited normally, and described in the shares documentation.
Access
Access Control
This view provides control over inheritable properties that affect ACL behavior.
Snapshots
Introduction
Snapshots are read only copies of a filesystem at a given point of time. For more information on snapshots and how they work, see the concepts page. Projects snapshots consist of snapshots of every filesystem and LUN in the project, all with identical names. Shares can delete the snapshots individually, and creating a snapshot with the same name as a project snapshot, while supported, can result in undefined behavior as the snapshot will be considered part of the project snapshot with the same name.
Snapshot Properites
.zfs/snapshot visible
The behavior of this property is identical to its behavior at the share level.
320 Sun ZFS Storage 7000 System Administration Guide November 2010
Replication
BUI
Project level snapshots are administered in the same way as share level snapshots. The following actions are documented under the shares section.
Listing snapshots Taking snapshots Renaming a snapshot Destroying a snapshot Scheduled Snapshots
CLI
To access the snapshots for a project, navigate to the project and run the snapshots command.
clownfish:> shares select default clownfish:shares default> snapshots clownfish:shares default snapshots>
From this point, snapshots are administered in the same way as share level snapshots. The following actions are documented under the shares section.
Listing snapshots Taking snapshots Renaming a snapshot Destroying a snapshot Scheduled Snapshots
Replication
Remote Replication Introduction
Sun Storage 7000 appliances support snapshot-based replication of projects and shares from a source appliance to any number of target appliances manually, on a schedule, or continuously. The replication includes both data and metadata. Remote replication (or just "replication") is a general-purpose feature optimized for the following use cases:
Disaster recovery. Replication can be used to mirror an appliance for disaster recovery. In the event of a disaster that impacts service of the primary appliance (or even an entire datacenter), administrators activate service at the disaster recovery site, which takes over
321
Chapter 5 Shares
Replication
using the most recently replicated data. When the primary site has been restored, data changed while the disaster recovery site was in service can be migrated back to the primary site and normal service restored. Such scenarios are fully testable before such a disaster occurs.
Data distribution. Replication can be used to distribute data (such as virtual machine images or media) to remote systems across the world in situations where clients of the target appliance wouldn't ordinarily be able to reach the source appliance directly, or such a setup would have prohibitively high latency. One example uses this scheme for local caching to improve latency of read-only data (like documents). Disk-to-disk backup. Replication can be used as a backup solution for environments in which tape backups are not feasible. Tape backup might not be feasible, for example, because the available bandwidth is insufficient or because the latency for recovery is too high. Data migration. Replication can be used to migrate data and configuration between 7000 series appliances when upgrading hardware or rebalancing storage. Shadow migration can also be used for this purpose.
Snapshot-based. The replication subsystem takes a snapshot as part of each update operation and sends either the entire project contents up to the snapshot in the case of a full update. In the case of an incremental update, only the changes since the last replication snapshot for the same action are sent. Block-level. Each update operation traverses the filesystem at the block level and sends the appropriate filesystem data and metadata to the target. Asynchronous. Because replication takes snapshots and then sends them, data is necessarily committed to stable storage before replication even begins sending it. Continuous replication effectively sends continuous streams of filesystem changes, but it's still asynchronous with respect to NAS and SAN clients. Includes metadata. The underlying replication stream serializes both user data and ZFS metadata, including most properties configured on the Shares screen. These properties can be modified on the target after the first replication update completes, though not all take effect until the replication connection is severed. For example, to allow sharing over NFS to a different set of hosts than on the source. See Manging Replication Targets for details. Secure. The replication control protocol used among Sun Storage 7000 appliances is secured with SSL. Data can optionally be protected with SSL as well. Appliances can only replicate to/from other appliances after an initial manual authentication process, see Creating and Editing Targets below.
322
Replication
Concepts
Terminology
replication peer (or just peer, in this context): a Sun Storage 7000 appliance that has been configured as a replication source or target. replication source (or just source): an appliance peer containing data to be replicated to another appliance peer (the target). Individual appliances can act as both a source and a target, but are only one of these in the context of a particular replication action. replication target (or just target): an appliance peer that will receive and store data replicated from another appliance peer (the source). This term also refers to a configuration object on the appliance that enables it to replicate to another appliance. replication group (or just group): the set of datasets (exactly one project and some number of shares) which are replicated as a unit. See Project-level vs. Share-level below. replication action (or just action): a configuration object on a source appliance specifying a project or share, a target appliance, and policy options (including how often to send updates, whether to encrypt data on the wire, etc.). package: the target-side analog of an action; the configuration object on the target appliance that manages the data replicated as part of a particular action from a particular source. Each action on a source appliance is associated with exactly one package on a target appliance and vice versa. Loss of either object will require creating a new action/package pair (and a full replication update). full sync (or full update): a replication operation that sends the entire contents of a project and some of its shares. incremental update: a replication operation that sends only the differences in a project and its shares since the previous update (whether that one was full or incremental).
Targets
Before a source appliance can replicate to a target, the two systems must set up a replication peer connection that enables the appliances to identify each other securely for future communications. Administrators setup this connection by creating a new replication target on the Configuration > Services > Remote Replication screen on the source appliance. To create a new target, administrators specify three fields:
a name (used only to identify the target in the source appliance's BUI and CLI) a network address or hostname (to contact the target appliance) the target appliance's root password (to authorize the administrator to setup the connection on the target appliance)
The appliances then exchange keys used to securely identify each other in subsequent communications. These keys are stored persistently as part of the appliance's configuration and
Chapter 5 Shares 323
Replication
persist across reboots and upgrades. They will be lost if the appliance is factory reset or reinstalled. The root password is never stored persistently, so changing the root password on either appliance does not require any changes to the replication configuration. The password is never transmitted in the clear either because this initial identity exchange (like all replication control operations) is protected with SSL. By default, the replication target connection is not bidirectional. If an administrator configures replication from a source A to a target B, B cannot automatically use A as a target. However, the system supports reversing the direction of replication, which automatically creates a target for A on B (if it does not already exist) so that B can replicate back to A. To configure replication targets, see Configuring Replication below.
a replication group (a project and some number of shares) a target appliance a storage pool on the target appliance (used only during the initial setup) a frequency (which may be manual, scheduled, or continuous) additional options such as whether to encrypt the data stream on the wire
The group is specified implicitly by the project or share on which the action is configured (see Project-level versus Share-level Replication below). The target appliance and storage pool cannot be changed after the action is created, but the other options can be modified at any time. Generally, if a replication update is in progress when an option is changed, then the new value only takes effect when the next update begins. Actions are the primary unit of replication configuration on the appliance. Each action corresponds to a package on the target appliance that contains an exact copy of the source projects and shares on which the action is configured as of the start time of the last replication update. Administrators configure the frequency and other options for replication updates by modifying properties of the corresponding action. Creating the action on the source appliance creates the package on the target appliance in the specified storage pool, so the source must be able to contact the target when the action is initially created. The first update for each replication action sends a full sync (or full update): the entire contents of the action's project and shares are sent to the target appliance. Once this initial sync completes, subsequent replication updates are incremental: only the changes since the previous update are sent. The action (on the source) and package (on the target) keep track of which changes have been replicated to the target through named replication snapshots (see below).
324 Sun ZFS Storage 7000 System Administration Guide November 2010
Replication
Generally, as long as at least one full sync has been sent for an action and the action/package connection has not been corrupted due to a software failure or administrative action, replication updates will be incremental. The action and package are bound to each other. If the package is somehow corrupted or destroyed, the action will not be able to send replication updates, even if the target still has the data and snapshots associated with the action. Similarly, if the action is destroyed, the package will be unable to receive new replication updates (even if the source still has the same data and snapshots). The BUI and CLI warn administrators attempting to perform operations that would destroy the action-package connection. If an error or explicit administrative operation breaks the action-package connection such that an incremental update is no longer possible, administrators must sever or destroy the package and action and create a new action on the source. One special case of this needs explicit mention. The appliance avoids destroying data on the target unless explicitly requested by the administrator. As a result, if the initial replication update for an action fails for any reason after having replicated some data (thus leaving incomplete data inside the package), subsequent replication updates using the same action will fail because the appliance will not overwrite the already-received data. To resolve this, administrators should destroy the existing action and package and create a new action and package and start replication again. In software releases prior to 2010.Q1, action and replica configuration (like target configuration) was stored on the controller rather than as part of the project and share configuration in the storage pool. As a result, factory reset caused all such configuration to be destroyed. In 2010.Q1 and later releases, the action and package configuration is stored in the storage pool with the corresponding projects and shares and so will be available even after factory reset. However, target information will still be lost, and actions with missing targets currently cannot be configured to point to a new target.
Storage Pools
When the action is initially configured, the administrator is given a choice of which storage pool on the target should contain the replicated data. The storage pool containing an action cannot be changed once the action has been created. Creating the action creates the empty package on the target in the specified storage pool, and after this operation the source has no knowledge of the storage configuration on the target. It does not keep track of which pool the action is being replicated to, nor is it updated with storage configuration changes on the target. When the target is a clustered system, the chosen storage pool must be one owned by same head which owns the IP address used by the source for replication because only those pools are always guaranteed to be accessible when the source contacts the target using that IP address. This is exactly analogous to the configuration of NAS clients (NFS and SMB), where the IP address and path requested in a mount operation must obey the same constraint. When performing operations that change the ownership of storage pools and IP addresses in a cluster,
Chapter 5 Shares 325
Replication
administrators must consider the impact to sources replicating to the cluster. There is currently no way to move packages between storage pools or change the IP address associated with an action.
a project home and shares bill, cindi, and dave. home has replication configured with some number of actions home/bill and home/cindi inherit the project's replication configuration home/dave overrides the project's replication configuration, using its own configuration with some number of actions
This configuration defines the following replication groups, each of which is replicated as a single stream per action using snapshots taken simultaneously on the project and shares:
one project-level group including home, home/bill, and home/cindi. one share-level group including home and home/dave.
It is strongly recommended that project- and share-level replication be avoided within the same project because it can lead to surprising results (particularly when reversing the direction of replication). See the documentation for Managing Replication Packages for more details.
326
Replication
Configuring Replication
Be sure to read and understand the above sections on replication targets, actions, and packages before configuring replication.
In the CLI, navigate to the targets node to set or unset the target hostname, root_password, and label .
knife:> configuration services replication targets
Add new targets View the actions configured with the existing target Edit the unique identifier (label) for a target Destroy a target, if no actions are using it
Targets should not be destroyed while actions are using it. Such actions will be permanently broken. The system makes a best effort to enforce this but cannot guarantee that no actions exist in exported storage pools that are using a given target.
Replication
navigating to it in the CLI and selecting the "replication" node. These interfaces show the status of existing actions configured on the project or share and allow administrators to create new actions:
Replication actions have the following properties, which are presented slightly differently in the BUI and CLI:
Description
Target
Unique identifier for the replication target system. This property is specified when an action is initially configured and immutable thereafter.
328
Replication
Description
Pool Enabled Mode (CLI: continuous) and schedule Include Snapshots Limit bandwidth Use SSL State Last sync Last attempt Next update
Storage pool on the target where this project will be replicated. This property is specified when an action is initially configured and not shown thereafter. Whether the system will send updates for this action. Whether this action is being replicated continuously or at manual or scheduled intervals. See below for details. Whether replication updates include non-replication snapshots. See below for details. Specifies a maximum speed for this replication update (in terms of data transferred over the network per second). Whether to encrypt data on the wire using SSL. Using this feature can have a significant impact on per-action replication performance. Read-only property describing whether the action is currently idle, sending an update, or cancelling an update. Read-only property describing the last time an update was successfully sent. This value may be unknown if the system has not sent a successful update since boot. Read-only property describing the last time an update was attempted. This value may be unknown if the system has not attempted to send an update since boot. Read-only property describing when the next attempt will be made. This value could be a date (for a scheduled update), "manual," or "continuous."
Chapter 5 Shares
329
Replication
Reservation, compression, copies, deduplication, and caching. These properties can be changed on the replication target to effect different cost, flexibility, performance, or reliability policies on the target appliance from the source.
330
Replication
Mountpoint and sharing properties (e.g., sharenfs, SMB resource name, etc.). These properties control how shares are exported to NAS clients and can be changed to effect different security or protection policies on the target appliance from the source. Automatic snapshot policies. Automatic snapshot policies can be changed on the target system but these changes have no effect until the package is severed (see below). Automatic snapshots are not taken or destroyed on replicated projects and shares.
The BUI and CLI don't allow administrators to change immutable properties. For shares, a different icon is used to indicate that the property's inheritance cannot be changed:
Note that the deferred updates provided with the 2010.Q1 release must be applied on replication targets in order to modify properties on such targets. The system will not allow administrators to modify properties inside replication packages on systems which have not applied the 2010.Q1 deferred updates. Note that the current release does not support configuration of "chained" replication (that is, replicating replicated shares to another appliance).
BUI
Replication packages are displayed in the BUI as projects under the "Replica" filter:
Selecting a replication package for editing brings the administrator to the Shares view for the package's project. From here, administrators can manage replicated shares much like local shares with the exceptions described above. Package properties (including status) can be modified under the Replication tab (see below):
Chapter 5 Shares 331
Replication
The status icon on the left changes when replication has failed:
Packages are only displayed in the BUI after the first replication update has begun. They may not appear in the list until some time after the first update has completed.
CLI
Replication packages are organized in the CLI by source under shares replication sources. Administrators first select a source, then a package. Package-level operations can be performed on this node (see below), or the project can be selected to manage project properties and shares just like local projects and shares with the exceptions described above. For example:
loader:> shares replication sources loader:shares replication sources> show Sources: source-000 ayu PROJECT package-000 oldproj package-001 aproj1 STATE idle receiving LAST UPDATE unknown Sun Feb 21 2010 22:04:35 GMT+0000 (UTC)
loader:shares replication sources> select source-000 loader:shares replication source-000> select package-001 loader:shares replication source-000 package-001> show Properties: enabled = true state = receiving state_description = Receiving update last_sync = Sun Feb 21 2010 22:04:40 GMT+0000 (UTC) last_try = Sun Feb 21 2010 22:04:40 GMT+0000 (UTC)
332 Sun ZFS Storage 7000 System Administration Guide November 2010
Replication
Projects: aproj1 loader:shares replication source-000 package-001> select aproj1 loader:shares replication source-000 package-001 aproj1> get mountpoint mountpoint = /export loader:shares replication source-000 package-001 aproj1> get sharenfs sharenfs = on
Click this button to cancel the update. To cancel in-progress replication updates on the target using the CLI, navigate to the replication package (see above) and use the cancelupdate command. It is not possible to initiate updates from the target. Administrators must login to the source system to initiate a manual update.
Disabling a Package
Replication updates for a package can be disabled entirely, cancelling any ongoing update and causing new updates from the source appliance to fail. To toggle whether a package is disabled from the BUI, navigate to the package (see above), then icon. The status icon on the left should change click the Replication tab, and then click the to indicate the package's status (enabled, disabled, or failed). The package remains disabled until explicitly enabled by an administrator using the same button or the CLI. To toggle whether a package is disabled from the CLI, navigate to the package (see above), modify the enabled property, and commit your changes.
Chapter 5 Shares 333
Replication
Replication
working with files deleted in the most recent update will see errors. Clients working with files changed in the most recent update will immediately see the updated contents. Replicated filesystems are not exported by default. They are exported by modifying the "exported" property of the project or share using the BUI or CLI:
This property is inherited like other share properties. This property is not shown for local projects and shares because they are always exported. Additionally, severing replication (which converts the package into a local project) causes the package's shares to become exported. Replicated LUNs currently cannot be exported. They must be first cloned or the replication package severed in order to export their contents.
Severing Replication
A replication package can be converted into a local, writable project that behaves just like other local projects (i.e. without the management restrictions applied to replication packages) by severing the replication connection. After this operation, replication updates can no longer be received into this package, so subsequent replication updates of the same project from the source will need to send a full update with a new action (into a new package). Subsequent replication updates using the same action will fail because the corresponding package no longer exists on the target. This option is primarily useful when using replication to migrate data between appliances or in other scenarios that don't involve replicating the received data back to the source as part of a typical two-system disaster recovery plan. Replication can be severed from the BUI by navigating to the replication package (see above), button. The resulting dialog allows the clicking the Replication tab, and clicking the administrator to specify the name of the new local project. Replication can be severed from the CLI by navigating to the replication package (see above), and using the sever command. This command takes an optional argument specifying the name of the new local project. If no argument is specified, the original name is used. Because all local shares are exported, all shares in a package are exported when the package is severed, whether or not they were previously exported (see above). If there are mountpoint
Chapter 5 Shares 335
Replication
conflicts between replicated filesystems and other filesystems on the system, the sever operation will fail. These conflicts must be resolved before severing by reconfiguring the mountpoints of the relevant shares.
Replication
replication is reversed again, making the copy at the primary site writable. Production traffic is redirected back to the primary site. Replication is resumed from the primary to the secondary, restoring the initial relationship between the primary and secondary copies. When reversing the direction of replication for a package, it is strongly recommended that administrators first stop replication of that project from the source. If a replication update is in progress when an administrator reverses the direction of replication for a project, administrators cannot know which consistent replication snapshot was used to create the resulting project on the former target appliance (now source appliance). Replication can be reversed from the BUI by navigating to the replication package (see above), clicking the Replication tab, and clicking the button. The resulting dialog allows the administrator to specify the name of the new local project. Replication can be severed from the CLI by navigating to the replication package (see above), and using the reverse command. This command takes an optional argument specifying the name of the new local project. If no argument is specified, the original name is used. Because all local shares are exported, all shares in a package are exported when the package is reversed, whether or not they were previously exported (see above). If there are mountpoint conflicts between replicated filesystems and other filesystems on the system, the reverse operation will fail. These conflicts must be resolved before severing by reconfiguring the mountpoints of the relevant shares. Because this operation is typically part of the critical path of restoring production service, it is strongly recommended to resolve these mountpoint conflicts when the systems are first setup rather than at the time of DR failover.
Examples
Below is an example of cloning a received replication project, overriding both the project's and one share's mountpoint:
perch:> shares perch:shares> replication perch:shares replication> sources perch:shares replication sources> select source-000
Chapter 5 Shares 337
Replication
perch:shares replication source-000> select package-000 perch:shares replication source-000 package-000> clone perch:shares replication source-000 package-000 clone> set target_project=my_clone target_project = my_clone perch:shares replication source-000 package-000 clone> list CLONE PARAMETERS target_project = my_clone original_mountpoint = /export override_mountpoint = false mountpoint = SHARE MOUNTPOINT bob (inherited) myfs1 (inherited) perch:shares replication source-000 package-000 clone> set override_mountpoint=true override_mountpoint = true perch:shares replication source-000 package-000 clone> set mountpoint=/export/my_clone mountpoint = /export/my_clone perch:shares replication source-000 package-000 clone bob> select bob perch:shares replication source-000 package-000 clone bob> set override_mountpoint=true override_mountpoint = true perch:shares replication source-000 package-000 clone bob> set mountpoint=/export/bob mountpoint = /export/bob perch:shares replication source-000 package-000 clone bob> done perch:shares replication source-000 package-000 clone> commit CLONE PARAMETERS target_project = my_clone original_mountpoint = /export override_mountpoint = true mountpoint = /export/my_clone SHARE bob myfs1 Are you sure you want to clone this There are no conflicts. perch:shares replication source-000 MOUNTPOINT /export/bob (overridden) (inherited) project? package-000 clone>
rrsource
Allows administrators to create, edit, and destroy replication targets and actions and send and cancel updates for replication actions.
338
Replication
Authorization
Details
rrtarget
Allows administrators to manage replicated packages, including disabling replication at the package level, cloning a package or its members, modifying properties of received datasets, and severing or reversing replication. Other authorizations may be required for some of these operations (like setting properties or cloning individual shares). See the available authorizations in the Projects and Shares scope for details.
Note that the rrsource authorization is required to configure replication targets on an appliance, even though this is configured under the Remote Replication service screen. For help with authorizations, see the Authorizations documentation.
Alerts
The system posts alerts when any of the following events occur:
Manual or scheduled replication update starts or finishes successfully (both source and target). Any replication update fails, including as a result of explicit cancellation by an administrator (both source and target). A scheduled replication update is skipped because another update for the same action is already in progress (see above).
Configuring replication from an appliance to itself or its cluster peer is unsupported. Shadow migration can be used to copy data between storage pools (e.g., to rebalance storage) on a single appliance or in a cluster. Configuring replication from both peers of a cluster to the same replication target is unsupported, but a similar configuration can be achieved using two different IP addresses for the same target appliance. Administrators can use the multiple IP addresses of the target appliance to create one replication target on each cluster head for use by that head.
Replication updates for projects and shares are sent from whichever cluster peer has imported the containing storage pool. Replication updates are received by whichever peer has imported the IP address configured in the replication action on the source. Administrators must ensure that the head using this IP address will always have the storage pool containing the replica imported. This is ensured by assigning the pool and IP address resources to the same head during cluster configuration.
339
Chapter 5 Shares
Replication
Replication updates (both to and from an appliance) that are in progress when an appliance exports the corresponding storage pool or IP address (as part of a takeover or failback) will fail. Replication updates using storage pools and IP addresses unaffected by a takeover or failback operation will be unaffected by the operation.
For details on clustering and cluster terminology, review the Clustering documentation.
Each share is always point-in-time consistent on the target (self-consistent). When no replication update is in progress and the previous replication update succeeded, each package's shares are also point-in-time consistent with each other (package-consistent). When a replication update is in progress or the previous update failed, package shares may be inconsistent with each other, but each one will still be self-consistent. If package consistency is important for an application, one must clone the replication package, which always clones the most recent successfully received snapshot of each share.
Snapshot Management
Snapshots are the basis for incremental replication. The source and target must always share a common snapshot in order to continue replicating incrementally, and the source must know which is the most recent snapshot that the target has. To facilitate this, the replication subsystem creates and manages its own snapshots. Administrators generally need not be concerned with them, but the details are described here since snapshots can have significant effects on storage utilization. Each replication update for a particular action consists of the following steps: 1. Determine whether this is an incremental or full update based on whether we've tried to replicate this action before and whether the target already has the necessary snapshot for an incremental update.
340 Sun ZFS Storage 7000 System Administration Guide November 2010
Replication
2. Take a new project-level snapshot. 3. Send the update. For a full update, send the entire group's contents up to the new snapshot. For an incremental update, send the difference between from the previous (base) snapshot and the new snapshot. 4. Record the new snapshot as the base snapshot for the next update and destroy the previous base snapshot (for incremental updates). This has several consequences for snapshot management:
During the first replication update and after the initial update when replication is not active, there is exactly one project-level snapshot for each action configured on the project or any share in the group. Note that snapshots may be created on shares not being sent as part of the update that are in the same project. During subsequent replication updates of a particular action, there may be two project-level snapshots associated with the action. Both snapshots may remain after the update completes in the event of failure where the source was unable to determine whether the target successfully received the new snapshot (as in the case of a network outage during the update that causes a failure). None of the snapshots associated with a replication action can be destroyed by the administrator without breaking incremental replication. The system will not allow administrators to destroy snapshots on either the source or target that are necessary for incremental replication. To destroy such snapshots on the source, one must destroy the action (which destroys the snapshots associated with the action). To destroy such snapshots on the target, one must first sever the package (which destroys the ability to receive incremental updates to that package). Relatedly, administrators must not rollback to snapshots created prior to any replication snapshots. Doing so will destroy the later replication snapshots and break incremental replication for any actions using those snapshots. Replication's usage of snapshots requires that administrators using replication understand space management on the appliance, particularly as it applies to snapshots.
Chapter 5 Shares
341
Replication
The SCSI GUID associated with a LUN is replicated with the LUN. As a result, the LUN on the target appliance will have the same SCSI GUID as the LUN on the source appliance. Clones of replicated LUNs, however, will have different GUIDs (just as clones of local LUNs have different GUIDs than their origins).
Replicating Clones
Replication in 2009.Q3 and earlier was project-level only and explicitly disallowed replicating projects containing clones whose origin snapshots resided outside the project. With share-level replication in 2010.Q1 and later, this restriction has been relaxed, but administrators must still consider the origin snapshots of clones being replicated. In particular, the initial replication of a clone requires that the origin snapshot have already been replicated to the target or is being replicated as part of the same update. This restriction is not enforced by the appliance management software, but attempting to replicate a clone when the origin snapshot does not exist on the target will fail. In practice, there are several ways to ensure that replication of a clone will succeed:
If the clone's origin snapshot is in the same project, just use project-level replication. If the clone's origin snapshot is not in the same project or project-level replication that includes the origin is undesirable for other reasons, use share-level replication to replicate the origin share first and then use project-level or share-level replication to replicate the clone. Do not destroy the clone's origin on the target system unless you intend to also destroy the clone itself.
In all cases, the "include snapshots" property should be true on the origin's action to ensure that the origin snapshot is actually sent to the target.
Observing Replication
While replication-specific analytics are not currently available, administrators can use the advanced TCP analytics to observe traffic by local port. Replication typically uses port 216 on the source appliance. The status of individual replication actions and packages can be monitored using the BUI and CLI. See "Configuring Replication" above.
Replication Failures
Individual replication updates can fail for a number of reasons. Where possible, the appliance reports the reason for the failure in alerts posted on the source appliance or target appliance, or on the Replication screen for the action that failed. You may be able to get details on the failure by clicking the orange alert icon representing the action's status. The following are the most common types of failures:
342 Sun ZFS Storage 7000 System Administration Guide November 2010
Replication
Failure
Details
Cancelled
The replication update was cancelled by an administrator. Replication can be cancelled on the source or target and it's possible for one peer not to realize that the other peer has cancelled the operation. The appliance was unable to connect to the target appliance due to a network problem. There may be a misconfiguration on the source, target, or the network. The appliance failed to verify the identity of the target. This occurs most commonly when the target has been reinstalled or factory reset. A new replication target must be configured on the source appliance for a target which has been reinstalled or factory reset in order to generate a new set of authentication keys. See Targets above. A remote procedure call failed on the target system. This occurs most commonly when the target appliance is running incompatible software. See "Migrating configuration from 2009.Q3 and earlier" below for more details. Replication failed because no package exists on the target to contain the replicated data. Since the package is created when configuring the action, this error typically happens after an administrator has destroyed the package on the target. It's also possible to see this error if the storage pool containing the package is not imported on the target system, which may occur if the pool is faulted or if storage or networking has been reconfigured on the target appliance. Replication failed because the target package contains data from a previous, failed replication update. This error occurs when attempting to send a replication update for an action whose first replication update failed after replicating some data. The target appliance will not destroy data without explicit administrative direction, so it will not overwrite the partially received data. The administrator should remove the existing action and package and create a new action on the source and start replication again. Replication failed because it is disabled on the target. Either the replication service is disabled on the target or replication has been disabled for the specific package being replicated. Replication failed because the target system has reached the maximum number of concurrent replication updates. The system limits the maximum number of ongoing replication operations to avoid resource exhaustion. When this limit is reached, subsequent attempts to receive updates will fail with this error, while subsequent attempts to send updates will queue up until resources are available. Replication failed because the source system had insufficient space to create a new snapshot. This may be because there is no physical space available in the storage pool or because the project or one of its shares would be over quota because of reservations that don't include snapshots.
No package
Disabled
Target busy
Out of space
Chapter 5 Shares
343
Replication
Failure
Details
Incompatible target
Replication failed because the target system is unable to receive the source system's data stream format. This can happen as a result of upgrading a source system and applying deferred updates without having upgraded and applied the same updates on the target. Check the release notes for the source system's software version for a list of deferred updates and whether any have implications for remote replication. Replication failed, but no additional information is available on the source. Check the alert log on the target system and if necessary contact support for assistance. Some failure modes that currently fall into this category include insufficient disk space on the target to receive the update and attempting to replicate a clone whose origin snapshot does not exist on the target system.
Misc
A replication update fails if any part of the update fails. The current implementation replicates the shares inside a project serially and does not rollback changes from failed updates. As a result, when an update fails, some shares on the target may be up-to-date while others are not. See "Snapshots and Data Consistency" above for details. Although some data may have been successfully replicated as part of a failed update, the current implementation resends all data that was sent as part of the previous (failed) update. That is, failed updates will not pick up where they left off, but rather will start where the failed update started. When manual or scheduled updates fail, the system does not automatically try again until the next scheduled update (if any). When continuous replication fails, the system waits several minutes and tries again. The system will continue retrying failed continuous replications indefinitely. When a replication update is in progress and another update is scheduled to occur, the latter update is skipped entirely rather than started immediately after the previous update completes. The next update will be sent only when the next update is scheduled to occur. The system posts an alert when an update is skipped for this reason.
The network protocol used for replication has been enhanced. 2009.Q3 systems can replicate to systems running any release (including 2010.Q1 and later), while systems running 2010.Q1 or later can only replicate to other systems running 2010.Q1 or later. In practice, this means that replication targets must be upgraded before or at the same time as their replication sources to avoid failures resulting from incompatible protocol versions.
344
Schema
Replication action configuration is now stored in the storage pool itself rather than on the head system. As a result, after upgrading from 2009.Q3 or earlier to 2010.Q1, administrators must apply the deferred updates to migrate their replication configuration. * Until these updates are applied, incoming replication updates for existing replicas will fail, and replication updates will not be sent for actions configured under 2009.Q3 or earlier. Additionally, space will be used in the storage pool for unmigrated replicas that are not manageable from the BUI or CLI. * Once these updates are applied, as with all deferred updates, rolling back the system software will have undefined results. It should be expected that under the older release, replicated data will be inaccessible, all replication actions will be unconfigured, and incoming replication updates will be full updates. Replication authorizations have been moved from their own scope into the Projects and Shares scope. Any replication authorizations configured on 2009.Q3 or earlier will no longer exist under 2010.Q1. Administrators using fine-grained access control for replication should delegate the new replication authorizations to the appropriate administrators after upgrading.
Schema
Customized Share Properties
In addition to the standard built in properties, you can configure any number of additional properties that are available on all shares and projects. These properties are given basic types for validation purposes, and are inherited like most other standard properties. The values are never consumed by the software in any way, and exist solely for end-user consumption. The property schema is global to the system, across all pools, and is synchronized between cluster peers.
BUI
To define custom properties, access the "Shares -> Schema" navigation item. The current schema is displayed as a list, and entries can be added or removed as needed. Each property has the following fields:
Field Description
NAME DESCRIPTION
The CLI name for this property. This must contain only alphanumeric characters or the characters ".:_\". The BUI name for this property. This can contain arbitrary characters and is used in the help section of the CLI
Chapter 5 Shares
345
Schema
Field
Description
TYPE
The property type, for validation purposes. This must be one of the types described below.
Arbitrary string data. This is the equivalent of no validation. A positive or negative integer A positive integer A true/false value. In the BUI this is presented as a checkbox, while in the CLI it must be one of the values "true" or "false". An email address. Only minimal syntactic validation is done. A valid DNS hostname or IP (v4 or v6) address.
Once defined, the properties are available under the general properties tab, using the description provided in the property table. Properties are identified by their CLI name, so renaming a property will have the effect of removing all existing settings on the system. A property that is removed and later renamed back to the original name will still refer to the previously set values. Changing the types of properties, while supported, may have undefined results on existing properties on the system. Existing properties will retain their current settings, even if they would be invalid given the new property type.
CLI
The schema context can be found at "shares -> schema"
carp:> shares schema carp:shares schema> show Properties: NAME owner TYPE DESCRIPTION EmailAddress Owner Contact
Each property is a child of the schema context, using the name of the property as the token. To create a property, use the create command:
carp:shares schema> create department carp:shares schema department (uncommitted)> get type = String description = department
346 Sun ZFS Storage 7000 System Administration Guide November 2010
Schema
carp:shares schema department (uncommitted)> set description="Department Code" description = Department Code (uncommitted) carp:shares schema department (uncommitted)> commit carp:shares schema>
Within the context of a particular property, fields can be set using the standard CLI commands:
carp:shares schema> select owner carp:shares schema owner> get type = EmailAddress description = Owner Contact carp:shares schema owner> set description="Owner Contact Email" description = Owner Contact Email (uncommitted) carp:shares schema owner> commit
Once custom properties have been defined, they can be accessed like any other property under the name "custom:<property>":
carp:shares default> get ... custom:department = 123-45-6789 custom:owner = ... carp:shares default> set custom:owner=bob@corp custom:owner = bob@corp (uncommitted) carp:shares default> commit
Tasks
Create a property to track contact info
In the BUI: 1. Navigate to the "Shares -> Schema" view 2. Click the '+' icon to add a new property to the schema property list 3. Enter the name of the property ("contact") 4. Enter a description of the property ("Owner Contact") 5. Choose a type for the new property ("Email Address") 6. Click the "Apply" button 7. Navigate to an existing share or project 8. Change the "Owner Contact" property under the "Custom Properties" section. In the CLI: 1. Navigate to the schema context (shares schema)
Chapter 5 Shares 347
Schema
2. Create a new property named "contact" (create contact) 3. Set the description for the property (set description="Owner Contact") 4. Set the type of the property (set type=EmailAddress) 5. Commit the changes (commit) 6. Navigate to an existing share or project 7. Set the "custom:contact" property
348
C H A P T E R
Analytics
Analytics
Concepts
Introduction
This appliance is equipped with an advanced DTrace based facility for server analytics. Analytics provides real time graphs of various statistics, which can be saved for later viewing. About a dozen high level statistics are provided, such as NFSv3 operations/sec, which can then be customized to provide lower level details. Groups of viewed statistics can be saved as worksheets for future reference. To learn about the interface for Analytics, see Open Worksheets.
Concepts - analytics overview Statistics - about the available statistics Overhead - performance overhead of statistics Open Worksheets - the main page for viewing analytics Saved Worksheets - saved analytics worksheets Datasets - manage analytics statistics
Concepts
Analytics
Analytics is an advanced facility to graph a variety of statistics in real-time and record this data for later viewing. It has been designed for both long term monitoring and short term analysis. When needed, it makes use of DTrace to dynamically create custom statistics, which allows different layers of the operating system stack to be analyzed in detail. The following topics provide an overview of how Analytics operates, and links to sections with more details.
Drilldown Analysis
Analytics has been designed around an effective performance analysis technique called drill-down analysis. This involves checking high level statistics first, and to focus on finer details based on findings so far. This quickly narrows the focus to the most likely areas. For example, a performance issue may be experienced and the following high level statistics are checked first:
350
Concepts
Network bytes/sec is found to be at normal levels, and the same for disk operations and CPU utilization. NFSv3 operations/sec is somewhat high, and the type of NFS operation is then checked and found to be of type "read". So far we have drilled down to a statistic which could be named "NFS operations/sec of type read", which we know is higher than usual. Some systems may have exhausted available statistics at this point, however Analytics can drill down much further. "NFSv3 operations/sec of type read" can then be viewed by client - which means, rather than examining a single graph - we can now see separate graphs for each NFS client. (These separate graphs sum to the original statistic that we had.) Let's say we find that the host "kiowa" is responsible for a majority of the NFS reads. We can use Analytics to drill down further, to see what files this client is reading. Our statistic becomes "NFSv3 operations/sec of type read for client kiowa broken down by filename". From this, we can see that kiowa is reading through every file on the NFS server. Armed with this information, we can ask the owner of kiowa to explain. The above example is possible in Analytics, which can keep drilling down further if needed. To summarize, the statistics we examined were:
"NFSv3 operations/sec" "NFSv3 operations/sec by type" "NFSv3 operations/sec of type read by client" "NFSv3 operations/sec of type read for client kiowa broken down by filename"
Statistics
In Analytics, the user picks statistics of interest to display on custom worksheets. Statistics available from Analytics include:
Network device bytes by device and direction NFS operations by filename, client, share, type, offset, size and latency SMB operations by filename, client, share, type, offset, size and latency Disk operations by type, disk, offset, size and latency CPU utilization by CPU-id, mode and application
See the Open Workshetes view for listing statistics, and the Preferences view for enabling advanced Analytics - which will make many more statistics available. The Statistics page discusses available statistics in more detail.
Chapter 6 Analytics
351
Concepts
Datasets
A dataset refers to all existing data for a particular statistic. Datasets contain:
Statistic data cached in memory due to the statistic being opened or archived. Archived statistic data on disk.
Actions
The following actions may be performed on statistics/datasets:
Action Description
Open
Begin reading from the statistic (every second) and cache values in memory as a dataset. In Open Worksheets, statistics are opened when they are added to the view, allowing them to be graphed in real-time. The data is kept in memory while the statistic is being viewed. Closes the statistic view, discarding the in memory cached dataset. Sets the statistic to be permanently opened and archived to disk. If the statistic had already been opened, then all cached data in memory is also archived to disk. Archiving statistics creates permanent datasets, visible in the Datasets view (those with a non-zero "on disk" value). This is how statistics may be recorded 24x7, so that activity from days, weeks and months in the past can be viewed after the fact. Close the statistic, destroy the dataset and delete all archived data from disk. Pause an archived statistic. New data will not be read, but the existing disk archive will be left intact. Resumes a previously suspended statistic, so that it will continue reading data and writing to the archive.
Close Archive
Worksheets
A worksheet is the BUI screen on which statistics are graphed. Multiple statistics can be plotted at the same time, and worksheets may be assigned a title and saved for future viewing. The act of saving a worksheet will automatically execute the archive action on all open statistics - meaning whatever statistics were open, will continue to be read and archived forever. See the Open Worksheets section for how to drive worksheets, and the Saved Worksheets section for managing previously saved worksheets.
352 Sun ZFS Storage 7000 System Administration Guide November 2010
Statistics
Statistics
Introduction
Analytics statistics provide incredible appliance observability, showing how the appliance is behaving and how clients on the network are using it.
Descriptions
While the statistics presented by Analytics may appear straight forward, there may be additional details to be aware of when interpreting their meaning. This is especially true for the purposes of performance analysis, where precise understanding of the statistics is often necessary. The following pages document each of the available statistics and breakdowns:
Analytics
CPU: Percent utilization * Cache: ARC accesses * Cache: L2ARC I/O bytes Cache: L2ARC accesses Data Movement: NDMP bytes transferred to/from disk Data Movement: NDMP bytes transferred to/from tape Data Movement: Shadow migration bytes Data Movement: Shadow migration ops Data Movement: Shadow migration requests Disk: Disks * Disk: I/O bytes * Disk: I/O operations * Network: Device bytes Network: Interface bytes Protocol: SMB operations Protocol: Fibre Channel bytes Protocol: Fibre Channel operations Protocol: FTP bytes Protocol: HTTP/WebDAV requests Protocol: iSCSI bytes Protocol: iSCSI operations Protocol: NFSv2 operations Protocol: NFSv3 operations Protocol: NFSv4 operations Protocol: SFTP bytes Protocol: SRP bytes
353
Chapter 6 Analytics
Statistics
* recommended reading
Advanced Analytics
These statistics are only visible if Advanced Analytics is enabled in Preferences. These are statistics of lesser interest and are not typically needed for system observability. They are often dynamic which can induce higher overhead, and expose more complex areas of the system which require additional expertise to understand properly:
CPU: CPUs CPU: Kernel spins Cache: ARC adaptive parameter Cache: ARC evicted bytes Cache: ARC size Cache: ARC target size Cache: DNLC accesses Cache: DNLC entries Cache: L2ARC errors Cache: L2ARC size Data Movement: NDMP file system operations Data Movement: NDMP jobs Disk: Percent utilization Disk: ZFS DMU operations Disk: ZFS logical I/O bytes Disk: ZFS logical I/O operations Memory: Dynamic memory usage Memory: Kernel memory Memory: Kernel memory in use Memory: Kernel memory lost to fragmentation Network: IP bytes Network: IP packets Network: TCP bytes Network: TCP packets System: NSCD backend requests System: NSCD operations
Default Statistics
For reference, the following are the statistics that are enabled and archived by default on a factory installed appliance. These are the thirty or so statistics you see in the Datasets view when you first configure and login to the appliance:
354 Sun ZFS Storage 7000 System Administration Guide November 2010
Statistics
Category
Statistic
CPU CPU Cache Cache Cache Cache Cache Cache Data Movement Disk Disk Disk Disk Disk Disk Network Network Network Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol Protocol
percent utilization percent utilization broken down by CPU mode ARC accesses per second broken down by hit/miss ARC size ARC size broken down by component DNLC accesses per second broken down by hit/miss L2ARC accesses per second broken down by hit/miss L2ARC size NDMP bytes transferred to/from disk per second Disks with utilization of at least 95 percent broken down by disk I/O bytes per second I/O bytes per second broken down by type of operation I/O operations per second I/O operations per second broken down by disk I/O operations per second broken down by type of operation device bytes per second device bytes per second broken down by device device bytes per second broken down by direction SMB operations per second SMB operations per second broken down by type of operation FTP bytes per second Fibre Channel bytes per second Fibre Channel operations per second HTTP/WebDAV requests per second NFSv2 operations per second NFSv2 operations per second broken down by type of operation NFSv3 operations per second
Chapter 6 Analytics
355
Statistics
Category
Statistic
NFSv3 operations per second broken down by type of operation NFSv4 operations per second NFSv4 operations per second broken down by type of operation SFTP bytes per second iSCSI operations per second iSCSI bytes per second
These have been chosen to give broad observability across protocols with minimal statistic collection overhead, and are usually left enabled even when benchmarking. For more discussion on statistic overhead, see Overhead.
Tasks
Statistics Tasks
Determining the impact of a dynamic statistic
For this example task we will determine the impact of "Protocol: NFSv3 operations per second broken down by file name":
1 2
Go to Open Worksheets. Add the statistic: "Protocol: NFSv3 operations per second as a raw statistic". This is a static statistic and will have negligible performance impact. Create steady NFSv3 load; or wait for a period of steady load. Add the statistic: "Protocol: NFSv3 operations per second broken down by filename". As this statistic is being created, you may see a temporary sharp dip in performance. Wait at least 60 seconds. Close the by-filename statistic by clicking on the close icon. Wait another 60 seconds.
Sun ZFS Storage 7000 System Administration Guide November 2010
3 4
5 6 7
356
Now examine the "Protocol: NFSv3 operations per second as a raw statistic" graph by pausing and zooming out to cover the previous few minutes. Was there a drop in performance when the by-filename statistic was enabled? If the graph looks erratic, try this process again - or try this with a workload that is more steady. Click on the graph to see the values at various points, and calculate the percentage impact of that statistic.
Example
This example shows CPU: Percent utilization broken down by CPU mode, while the appliance served over 2 Gbytes/sec of cached data over NFSv3: image An average of 82% utilization suggests that there could be more headroom available, and that appliance may be able to serve more than 2 Gbytes/sec (it can). (The breakdowns only add to 81%; the extra 1% is due to rounding.) The high level of CPU utilization does mean that overall latency of NFS operations may increase, which can be measured by Protocol: NFSv3 operations broken down by latency, as operations may be waiting for CPU resources more often.
When to check
When searching for system bottlenecks. This may also be checked when enabling features that consume CPU, such as compression, to gauge the CPU cost of that feature.
Breakdowns
Available breakdowns of CPU Percent utilization:
Chapter 6 Analytics 357
Breakdown
Description
Either user or kernel. See the CPU modes table below. Numeric operating system identifier of the CPU.
application name Name of the application which is on-CPU. process identifier Operating system process ID (PID). user name Name of the user who owns the process or thread which is consuming CPU.
user
This is a user-land process. The most common user-land process consuming CPU is akd, the appliance kit daemon, which provides administrative control of the appliance. This is a kernel-based thread which is consuming CPU. Many of the appliance services are kernel-based, such as NFS and SMB.
kernel
Further Analysis
A problem with this CPU utilization average is that it can hide issues when a single CPU is at 100% utilization, which may happen if a single software thread is saturated with work. Use the Advanced Analytic CPU: CPUs broken down by percent utilization, which represents utilization as a heat map of CPUs, allowing a single CPU at 100% to be easily identified.
Details
CPU utilization represents the time spent processing CPU instructions in user and kernel code, that are not part of the idle thread. Instruction time includes stall cycles on the memory bus, so high utilization can be caused by the I/O movement of data.
When to check
When investigating performance issues, to check how well the current workload is caching in the ARC.
Breakdowns
Available breakdowns of Cache ARC accesses are:
Breakdown Description
The result of the ARC lookup. hit/miss states are described in the table below. The file name that was requested from the ARC. Using this breakdown allows hierarchy mode to be used, so that filesystem directories can be navigated.
L2ARC eligibility This is the eligibility of L2ARC caching, as measured at the time of ARC access. A high level of ARC misses which are L2ARC eligible would suggest that the workload would benefit from 2nd level cache devices. project share This shows the project which is accessing the ARC. This shows the share which is accessing the ARC.
As described in Overhead, breakdown such as by file name would be the most expensive to leave enabled. The hit/miss states are:
hit/miss breakdown Description
A data block was not in the ARC DRAM cache. It will be read from the L2ARC cach devices (if available and the data is cached on them) or the pool disks.
A metadata block was in the ARC DRAM cache and returned. Metadata includes th on-disk filesystem framework which refers to the data blocks. Other examples are listed below.
metadata misses
A metadata block was not in the ARC DRAM cache. It will be read from the L2ARC cache devices (if available and the data is cached on them) or the pool disks.
prefetched data/metadata hits/misses ARC accesses triggered by the prefetch mechanism, not directly from an applicatio request. More details on prefetch follow.
Chapter 6 Analytics
359
Details
Metadata
Examples of metadata:
Filesystem block pointers Directory information Data deduplication tables ZFS uberblock
Prefetch
Prefetch is a mechanism to improve the performance of streaming read workloads. It examines I/O activity to identify sequential reads, and can issue extra reads ahead of time so that the data can be in cache before the application requests it. Prefetch occurs before the ARC by performing accesses to the ARC - bear this in mind when trying to understand prefetch ARC activity. For example, if you see:
Type Description
prefetched data missess prefetch identified a sequential workload, and requested that the data be cached in the ARC ahead of time by performing ARC accesses for that data. The data was not in the cache already, and so this is a "miss" and the data is read from disk. This is normal, and is how prefetch populates the ARC from disk. prefeteched data hits prefetch identified a sequential workload, and requested that the data be cached in the ARC ahead of time by performing ARC accesses for that data. As it turned out, the data was already in the ARC - so these accesses returned as "hits" (and so the prefetch ARC access wasn't actually needed). This happens if cached data is repeatedly read in a sequential manner.
After data has been prefetched, the application may then request it with its own ARC accesses. Note that the sizes may be different: prefetch may occur with a 128 Kbyte I/O size, while the application may be reading with an 8 Kbyte I/O size. For example, the following doesn't appear directly related:
However it may be: if prefetch was requesting with a 128 KByte I/O size, 23 x 128 = 2944 Kbytes. And if the application was requesting with an 8 Kbyte I/O size, 368 x 8 = 2944 Kbytes.
Further Analysis
To investigate ARC misses, check that the ARC has grown to use available DRAM using Cache: ARC size.
360 Sun ZFS Storage 7000 System Administration Guide November 2010
When to check
This can be useful to check during warmup. The write bytes will show the rate of L2ARC warmup of time.
Breakdowns
Breakdown Description
type of operation read or write. Read bytes are hits on the cache devices. Write bytes show the cache devices populating with data.
Further Analysis
Also see Cache: L2ARC accesses.
When to check
When investigating performance issues, to check how well the current workload is caching in the L2ARC.
Chapter 6 Analytics 361
Breakdowns
Breakdown Description
The result of the L2ARC lookup. hit/miss states are described in the table below. The file name that was requested from the L2ARC. Using this breakdown allows hierarchy mode to be used, so that filesystem directories can be navigated.
L2ARC eligibility This is the eligibility of L2ARC caching, as measured at the time of L2ARC access. project share This shows the project which is accessing the L2ARC. This shows the share which is accessing the L2ARC.
As described in Overhead, breakdown such as by file name would be the most expensive to leave enabled.
Further Analysis
To investigate L2ARC misses, check that the L2ARC has grown enough in size using the Advanced Analytic Cache: L2ARC size. The L2ARC typically takes hours, if not days, to warm up hundreds of Gbytes when feeding from small random reads. The rate can also be checked by examining writes from Cache: L2ARC I/O bytes. Also check the Advanced Analytic Cache: L2ARC errors to see if there are any errors preventing the L2ARC from warming up. Cache: ARC accesses by L2ARC eligibility can also be checked to see if the data is eligible for L2ARC caching in the first place. Since the L2ARC is intended for random read workloads, it will ignore sequential or streaming read workloads, allowing them to be returned from the pool disks instead.
When to check
When investigating NDMP backup performance. This can also be checked when trying to identify an unknown disk load, some of which may be caused by NDMP.
362 Sun ZFS Storage 7000 System Administration Guide November 2010
Breakdowns
Breakdown Description
type of operation
read or write.
Further Analysis
Also see Data Movement: NDMP bytes transferred to/from tape.
When to check
When investigating NDMP backup performance.
Breakdowns
Breakdown Description
type of operation
read or write.
Further Analysis
Also see Data Movement: NDMP bytes transferred to/from disk.
gives a rough approximation of the data transferred, but source datasets with a large amount of metadata will show a disproportionally small bandwidth. The complete bandwidth can be observed by looking at network analytics.
When to check
When investigating Shadow Migration activity.
Breakdowns
Breakdown Description
file name The file name that was migrated. Using this breakdown allows hierarchy mode to be used, so that filesystem directories can be navigated. project share This shows the project which contains a shadow migration. This shows the share which is being migrated.
Further Analysis
Also see Data Movement: Shadow migration ops and Data Movement: Shadow migration requests.
When to check
When investigating Shadow Migration activity.
Breakdowns
Breakdown Description
file name The file name that was migrated. Using this breakdown allows hierarchy mode to be used, so that filesystem directories can be navigated. project This shows the project which contains a shadow migration.
364
Breakdown Description
share latency
This shows the share which is being migrated. Measure the latency of requests from the shadow migration source.
Further Analysis
Also see Data Movement: Shadow migration bytes and Data Movement: Shadow migration requests.
When to check
When investigating Shadow Migration activity.
Breakdowns
Breakdown Description
file name The file name that was migrated. Using this breakdown allows hierarchy mode to be used, so that filesystem directories can be navigated. project share latency This shows the project which contains a shadow migration. This shows the share which is being migrated. Measure the latency incurred as part of shadow migration.
Further Analysis
Also see Data Movement: Shadow migration ops and Data Movement: Shadow migration bytes.
Chapter 6 Analytics 365
Disk Disks
Disk Disks
Disk: Disks
The Disks statistic is used to display the heat map for disks broken down by percent utilization. This is the best way to identify when pool disks are under heavy load. It may also identify problem disks that are beginning to perform poorly, before their behavior triggers a fault and automatic removal from the pool.
When to check
Any investigation into disk performance.
Breakdowns
Breakdown Description
percent utilization A heat map with utilization on the Y-axis and each level on the Y-axis colored by the number of disks at that utilization: from light (none) to dark (many).
Interpretation
Utilization is a better measure of disk load than IOPS or throughput. Utilization is measured as the time during which that disk was busy performing requests (see Details below). At 100% utilization the disk may not be able to accept more requests, and additional I/O may wait on a queue. This I/O wait time will cause latency to increase and overall performance to decrease. In practise, disks with a consistant Utilization of 75% or higher are an indication of heavy disk load. The heat map allows a particular pathology to be easily identified: a single disk misperforming and reaching 100% utilization (a bad disk). Disks can exhibit this symptom before they fail. Once disks fail, they are automatically removed from the pool with a corresponding alert. This particular problem is during the time before they fail, when their I/O latency is increasing and slowing down overall appliance performance, but their status is considered healthy - they have yet to identify any error state. This situation will be seen as a feint line at the top of the heat map, showing that a single disk has stayed at 100% utilization for some time. Suggested interpretation summary:
Observed Suggested Interpretation
366
Disk IO bytes
Observed
Suggested Interpretation
Single disk at 100% for several seconds This can indicate a bad disk that is about to fail.
Further Analysis
To understand the effect of busy disks on I/O, see Disk: I/O operations broken down by latency. For understanding the nature of the I/O, such as IOPS, throughput, I/O sizes and offsets, use Disk: I/O operations and Disk: I/O bytes.
Details
This statistic is actually a measure of percent busy, which serves as a reasonable approximation of percent utilization since the appliance manages the disks directly. Technically this isn't a direct measure of disk utilization: at 100% busy, a disk may be able to accept more requests which it serves concurrently by inserting into and reordering its command queue, or serves from its on-disk cache.
Disk IO bytes
Disk: I/O bytes
This statistic shows the back-end throughput to the disks. This is after the appliance has processed logical I/O into physical I/O based on share settings, and after software RAID as configured by Storage. For example, an 8 Kbyte write over NFSv3 may became a 128 Kbyte write after the record size is applied from the share settings, which may then become a 256 Kbyte write to the disks after mirroring is applied, plus additional bytes for filesystem metadata. On the same mirrored environment, an 8 Kbyte NFSv3 read may become a 128 Kbyte disk read after the record size is applied, however this doesn't get doubled by mirroring (the data only needs to be read from one half.) It can help to monitor throughput at all layers at the same time to examine this behavior, for example by viewing:
Network: device bytes - data rate on the network (logical) Disk: ZFS logical I/O bytes - data rate to the share (logical) Disk: I/O bytes - data rate to the disks (physical)
When to check
To understand the nature of back-end disk I/O, after an issue has already been determined based on disk utilization or latency. It is difficult to identify an issue from disk I/O throughput alone: a single disk may be performing well at 50 Mbytes/sec (sequential I/O), yet poorly at 5 Mbytes/sec (random I/O.)
Chapter 6 Analytics 367
Disk IO operations
Using the disk breakdown and the hierarchy view can be used to determine if the JBODs are balanced with disk I/O throughput. Note that cache and log devices will usually have a different throughput profile to the pool disks, and can often stand out as the highest throughput disks when examining by-disk throughput.
Breakdowns
Breakdown Description
type of operation read or write. disk pool or system disk. This breakdown can identify system disk I/O vs pool disk I/O, and I/O to cache and log devices.
Further Analysis
See Disk: Disks broken down by percent utilization for the best measure of disk utilization. Disk: I/O operations can also be used to examine operations/sec instead of bytes/sec.
Disk IO operations
Disk: I/O operations
This statistic shows the back-end I/O to the disks (disk IOPS). This is after the appliance has processed logical I/O into physical I/O based on share settings, and after software RAID as configured by Storage. For example, 16 sequential 8 Kbyte NFSv3 writes may become a single 128 Kbyte write sometime later after the data has been buffered in the ARC DRAM cache, which may then become multiple disk writes due to RAID - such as two writes to each half of a mirror. It can help to monitor I/O at all layers at the same time to examine this behavior, for example by viewing:
Protocol: NFSv3 operations - NFSv3 writes (logical) Disk: ZFS logical I/O operations - share I/O (logical) Disk: I/O operations - I/O to the disks (physical)
This statistic includes a breakdown of disk I/O latency, which is a direct measure of performance for synchronous I/O, and also useful as a measure of the magnitude of back-end disk load. It is difficult to identify issues from disk IOPS alone without considering latency: a single disk may be performing well at 400 IOPS (sequential and small I/O hitting mostly from the disk's on-board DRAM cache), yet poorly at 110 IOPS (random I/O causing head seek and waiting on disk rotation.)
368 Sun ZFS Storage 7000 System Administration Guide November 2010
Disk IO operations
When to check
Whenever disk performance is investigated, using:
This is presented as a heat map allowing the pattern of I/O latency to be observed, and outliers to be easily identified (click the outlier elimination button to view more). Disk I/O latency is often related to the performance of the delivered logical I/O, such as with synchronous reads (non-prefetch), and synchronous writes. There are situations where the latency is not directly related to logical I/O performance, such as asynchronous writes being flushed sometime later to disk, and for prefetch reads. After an issue has already been determined based on disk I/O latency or utilization, the nature of the disk I/O can be investigated using the other breakdowns, which show disk I/O counts (IOPS). There are no useful IOPS limits per-disk that can be discussed, as such a limit depends on the type of IOPS (random or sequential) and I/O size (large or small). Both of these attributes can be observed using the breakdowns:
Disk: I/O operations broken down by offset Disk: I/O operations broken down by size
Using the disk breakdown and the hierarchy view can also be used to determine if the JBODs are balanced with disk IOPS. Note that cache and log devices will usually have a different I/O profile to the pool disks, and can often stand out as the highest IOPS disks when examining by-disk I/O.
Breakdowns
Breakdown Description
type of operation read or write. disk size latency offset pool or system disk. This can be useful to identify system disk I/O vs pool disk I/O, and I/O to cache and log devices. a heat map showing the distribution of I/O sizes. a heat map showing the latency of disk I/O, as measured from when the I/O was requested to the disk to when the disk returned the completion. a heat map showing the disk location offset of disk I/O. This can be used to identify random or sequential disk IOPS (often best by vertically zooming the heat map to make out details.)
Further Analysis
See Disk: Disks broken down by percent utilization for the best measure of disk utilization. Disk: I/O bytes can also be used to examine bytes/sec instead of operations/sec.
Chapter 6 Analytics 369
When to check
Network bytes can be used a rough measure of appliance load. It should also be checked whenever performance issues are investigated, especially for 1 Gbit/sec interfaces, in case the bottleneck is the network device. The maximum practical throughput for network devices in each direction (in or out) based on speed:
1 Gbit/sec Ethernet: ~120 Mbytes/sec device bytes 10 Gbit/sec Ethernet: ~1.16 Gbytes/sec device bytes
If a network device shows a higher rate than these, use the direction breakdown to see the inbound and outbound components.
Breakdowns
Breakdown Description
direction in or out, relative to the appliance. For example, NFS reads to the appliance would be show as out(bound) network bytes. device network device (see Devices in Network).
Further Analysis
Also see Network: Interface bytes for network throughput at the interface level, instead of the device level.
Example
See Network: Device bytes for an example of a similar statistic with similar breakdowns.
When to check
Network bytes can be used a rough measure of appliance load. This statistic can be used to see the rate of network bytes through different interfaces. To examine network devices that make up an interface, especially to identify if there are balancing problems with LACP aggregations, use the Network Device bytes statistic.
Breakdowns
Breakdown Description
direction in or out, relative to the appliance. For example, NFS reads to the appliance would be show as out(bound) network bytes. interface network interface (see Interfaces in Network).
Further Analysis
Also see Network: Device bytes for network throughput at the device level, instead of the interface level.
Example
See Protocol: NFSv3 operations for an example of a similar statistic with similar breakdowns.
When to check
SMB operations/sec can be used as an indication of SMB load, and can be viewed on the dashboard. Use the latency breakdown when investigating SMB performance issues, especially to quantify the magnitude of the issue. This measures the I/O latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen,
Chapter 6 Analytics 371
along with outliers. If the SMB latency is high, drill down further on latency to identify the type of operation and filename for the high latency, and, check other statistics for both CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client and filename breakdowns, and the filename hierarchy view. It's best to enable these breakdowns for short periods only: the by-filename breakdown can be one of the most expensive in terms of storage and execution overhead, and may not be suitable to leave enabled permanently on a busy production server.
Breakdowns
Breakdown Description
type of operation SMB operation type (read/write/readX/writeX/...) client filename share project latency remote hostname or IP address of the SMB client. filename for the SMB I/O, if known and cached by the appliance. If the filename is not known it is reported as "<unknown>". the share for this SMB I/O. the project for this SMB I/O. a heat map showing the latency of SMB I/O, as measured from when the SMB request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the SMB request, and to perform any disk I/O. a heat map showing the distribution of SMB I/O sizes. a heat map showing the file offset of SMB I/O. This can be used to identify random or sequential SMB IOPS. Use the Disk I/O operations statistic to check whether random SMB IOPS maps to random Disk IOPS after the filesystem and RAID configuration has been applied.
size offset
"Protocol: SMB operations per second of type read broken down by latency" (to examine latency for reads only) "Protocol: SMB operations per second for file '/export/fs4/10ga' broken down by offset" (to examine file access pattern for a particular file) "Protocol: SMB operations per second for client 'phobos.sf.fishpong.com' broken down by file name" (to view what files a particular client is accessing)
372
Further Analysis
See Network: Device bytes for a measure of network throughput caused by the SMB activity; Cache: ARC accesses broken down by hit/miss to see how well an SMB read workload is returning from cache; and Disk: I/O operations for the back-end disk I/O caused.
Example
See Protocol: iSCSI bytes for an example of a similar statistic with similar breakdowns.
When to check
Fibre Channel bytes/sec can be used as an indication of FC load, in terms of throughput. For a deeper analysis of FC activity, see Protocol: Fibre Channel operations.
Breakdowns
Breakdown Description
Fibre Channel client initiator local SCSI target the project for this FC request. the LUN for this FC request.
Further Analysis
See Protocol: Fibre Channel operations for numerous other breakdowns on FC operations; also see Cache: ARC accesses broken down by hit/miss to see how well an FC read workload is returning from cache, and Disk: I/O operations for the back-end disk I/O caused.
Chapter 6 Analytics 373
Example
See Protocol: iSCSI operations for an example of a similar statistic with similar breakdowns.
When to check
Fibre Channel operations/sec can be used as an indication of FC load, and can also be viewed on the dashboard. Use the latency breakdown when investigating FC performance issues, especially to quantify the magnitude of the issue. This measures the I/O latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen, along with outliers. If the FC latency is high, drill down further on latency to identify the client initiator, the type of operation and LUN for the high latency, and, check other statistics for both CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client initiator are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client initiator, lun and command breakdowns.
Breakdowns
Breakdown Description
Fibre Channel client initiator local SCSI target the project for this FC request. the LUN for this FC request.
type of operation FC operation type. This shows how the SCSI command is transported by the FC protocol, which can give an idea to the nature of the I/O.
374
Breakdown
Description
command latency
SCSI command sent by the FC protocol. This can show the real nature of the requested I/O (read/write/sync-cache/...). a heat map showing the latency of FC I/O, as measured from when the FC request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the FC request, and to perform any disk I/O. a heat map showing the file offset of FC I/O. This can be used to identify random or sequential FC IOPS. Use the Disk I/O operations statistic to check whether random FC IOPS maps to random Disk IOPS after the LUN and RAID configuration has been applied. a heat map showing the distribution of FC I/O sizes.
offset
size
"Protocol: Fibre Channel operations per second of command read broken down by latency" (to examine latency for SCSI reads only)
Further Analysis
See Protocol: Fibre Channel bytes for the throughput of this FC I/O; also see Cache: ARC accesses broken down by hit/miss to see how well an FC read workload is returning from cache, and Disk: I/O operations for the back-end disk I/O caused.
Example
FTP
When to check
FTP bytes/sec can be used as an indication of FTP load, and can be viewed on the dashboard. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client, user and filename breakdowns, and the filename hierarchy view. It may be best to enable these breakdowns for short periods only: the by-filename breakdown can be one of the most expensive in terms of storage and execution overhead, and may not be suitable to leave enabled permanently on appliances with high rates of FTP activity.
Chapter 6 Analytics 375
Breakdowns
Breakdown Description
type of operation FTP operation type (get/put/...) user filename share project client username of the client filename for the FTP operation, if known and cached by the appliance. If the filename is not known it is reported as "<unknown>". the share for this FTP request. the project for this FTP request. remote hostname or IP address of the FTP client.
"Protocol: FTP bytes per second for client 'phobos.sf.fishpong.com' broken down by file name" (to view what files a particular client is accessing)
Further Analysis
See Cache: ARC accesses broken down by hit/miss to see how well an FTP read workload is returning from cache; and Disk: I/O operations for the back-end disk I/O caused.
When to check
HTTP/WebDAV requests/sec can be used as an indication of HTTP load, and can also be viewed on the dashboard. Use the latency breakdown when investigating HTTP performance issues, especially to quantify the magnitude of the issue. This measures the latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen, along with outliers. If the HTTP latency is high, drill down further on latency to identify the file, size and response code for the high latency HTTP requests, and, check other statistics for both
376 Sun ZFS Storage 7000 System Administration Guide November 2010
CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client initiator are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client, response code and requested filename breakdowns.
Breakdowns
Breakdown Description
type of operation HTTP request type (get/post) response code client filename latency HTTP response (200/404/...) client hostname or IP address filename requested by HTTP a heat map showing the latency of HTTP requests, as measured from when the HTTP request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the HTTP request, and to perform any disk I/O. a heat map showing the distribution of HTTP request sizes.
size
"Protocol: HTTP/WebDAV operations per second of type get broken down by latency" (to examine latency for HTTP GETs only) "Protocol: HTTP/WebDAV requests per second for response code '404' broken down by file name (to see which non-existant files were requested) "Protocol: HTTP/WebDAV requests per second for client 'deimos.sf.fishpong.com' broken down by file name" (to examine files requested by a particular client)
Further Analysis
See Network: Device bytes for a measure of network throughput caused by HTTP activity; also see Cache: ARC accesses broken down by hit/miss to see how well an HTTP read workload is returning from cache, and Disk: I/O operations for the back-end disk I/O caused.
Chapter 6 Analytics
377
When to check
iSCSI bytes/sec can be used as an indication of iSCSI load, in terms of throughput. For a deeper analysis of iSCSI activity, see Protocol: iSCSI operations.
Breakdowns
Breakdown Description
iSCSI client initiator local SCSI target the project for this iSCSI request. the LUN for this iSCSI request. the remote iSCSI client hostname or IP address
Further Analysis
See Protocol: iSCSI operations for numerous other breakdowns on iSCSI operations; also see Cache: ARC accesses broken down by hit/miss to see how well an iSCSI read workload is returning from cache, and Disk: I/O operations for the back-end disk I/O caused.
When to check
iSCSI operations/sec can be used as an indication of iSCSI load, and can also be viewed on the dashboard. Use the latency breakdown when investigating iSCSI performance issues, especially to quantify the magnitude of the issue. This measures the I/O latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen, along with outliers. If the iSCSI latency is high, drill down further on latency to identify the client initiator, the type of operation and LUN for the high latency, and, check other statistics for both CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client initiator are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client initiator, lun and command breakdowns.
Breakdowns
Breakdown Description
iSCSI client initiator local SCSI target the project for this iSCSI request. the LUN for this iSCSI request.
type of operation iSCSI operation type. This shows how the SCSI command is transported by the iSCSI protocol, which can give an idea to the nature of the I/O. command latency SCSI command sent by the iSCSI protocol. This can show the real nature of the requested I/O (read/write/sync-cache/...). a heat map showing the latency of iSCSI I/O, as measured from when the iSCSI request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the iSCSI request, and to perform any disk I/O. a heat map showing the file offset of iSCSI I/O. This can be used to identify random or sequential iSCSI IOPS. Use the Disk I/O operations statistic to check whether random iSCSI IOPS maps to random Disk IOPS after the LUN and RAID configuration has been applied. a heat map showing the distribution of iSCSI I/O sizes.
offset
size
"Protocol: iSCSI operations per second of command read broken down by latency" (to examine latency for SCSI reads only)
Further Analysis
See Protocol: iSCSI bytes for the throughput of this iSCSI I/O; also see Cache: ARC accesses broken down by hit/miss to see how well an iSCSI read workload is returning from cache, and Disk: I/O operations for the back-end disk I/O caused.
Example
See Protocol: NFSv3 operations for an example of a similar statistic with similar breakdowns.
When to check
NFS operations/sec can be used as an indication of NFS load, and can be viewed on the dashboard. Use the latency breakdown when investigating NFS performance issues, especially to quantify the magnitude of the issue. This measures the I/O latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen, along with outliers. If the NFS latency is high, drill down further on latency to identify the type of operation and filename for the high latency, and, check other statistics for both CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client and filename breakdowns, and the filename hierarchy view. It's best to enable these breakdowns for short periods only: the by-filename breakdown can be one of the most expensive in terms of storage and execution overhead, and may not be suitable to leave enabled permanently on a busy production server.
380 Sun ZFS Storage 7000 System Administration Guide November 2010
Breakdowns
Breakdown Description
type of operation NFS operation type (read/write/getattr/setattr/lookup/...) client filename remote hostname or IP address of the NFS client. filename for the NFS I/O, if known and cached by the appliance. There are some circumstances where the filename is not known, such as after a cluster failover and when clients continue to operate on NFS filehandles without issuing an open to identify the filename; in these situations the filename reported is "<unknown>". the share for this NFS I/O. the project for this NFS I/O. a heat map showing the latency of NFS I/O, as measured from when the NFS request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the NFS request, and to perform any disk I/O. a heat map showing the distribution of NFS I/O sizes. a heat map showing the file offset of NFS I/O. This can be used to identify random or sequential NFS IOPS. Use the Disk I/O operations statistic to check whether random NFS IOPS maps to random Disk IOPS after the filesystem and RAID configuration has been applied.
size offset
"Protocol: NFSv2 operations per second of type read broken down by latency" (to examine latency for reads only) "Protocol: NFSv2 operations per second for file '/export/fs4/10ga' broken down by offset" (to examine file access pattern for a particular file) "Protocol: NFSv2 operations per second for client 'phobos.sf.fishpong.com' broken down by file name" (to view what files a particular client is accessing)
Further Analysis
See Network: Device bytes for a measure of network throughput caused by the NFS activity; Cache: ARC accesses broken down by hit/miss to see how well an NFS read workload is returning from cache; and Disk: I/O operations for the back-end disk I/O caused.
Chapter 6 Analytics
381
When to check
NFS operations/sec can be used as an indication of NFS load, and can be viewed on the dashboard. Use the latency breakdown when investigating NFS performance issues, especially to quantify the magnitude of the issue. This measures the I/O latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen, along with outliers. If the NFS latency is high, drill down further on latency to identify the type of operation and filename for the high latency, and, check other statistics for both CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client and filename breakdowns, and the filename hierarchy view. It's best to enable these breakdowns for short periods only: the by-filename breakdown can be one of the most expensive in terms of storage and execution overhead, and may not be suitable to leave enabled permanently on a busy production server.
Breakdowns
Breakdown Description
type of operation NFS operation type (read/write/getattr/setattr/lookup/...) client filename remote hostname or IP address of the NFS client. filename for the NFS I/O, if known and cached by the appliance. There are some circumstances where the filename is not known, such as after a cluster failover and when clients continue to operate on NFS filehandles without issuing an open to identify the filename; in these situations the filename reported is "<unknown>". the share for this NFS I/O. the project for this NFS I/O.
share project
382
Breakdown
Description
latency
a heat map showing the latency of NFS I/O, as measured from when the NFS request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the NFS request, and to perform any disk I/O. a heat map showing the distribution of NFS I/O sizes. a heat map showing the file offset of NFS I/O. This can be used to identify random or sequential NFS IOPS. Use the Disk I/O operations statistic to check whether random NFS IOPS maps to random Disk IOPS after the filesystem and RAID configuration has been applied.
size offset
"Protocol: NFSv3 operations per second of type read broken down by latency" (to examine latency for reads only) "Protocol: NFSv3 operations per second for file '/export/fs4/10ga' broken down by offset" (to examine file access pattern for a particular file) "Protocol: NFSv3 operations per second for client 'phobos.sf.fishpong.com' broken down by file name" (to view what files a particular client is accessing)
Further Analysis
See Network: Device bytes for a measure of network throughput caused by the NFS activity; Cache: ARC accesses broken down by hit/miss to see how well an NFS read workload is returning from cache; and Disk: I/O operations for the back-end disk I/O caused.
Example
See Protocol: NFSv3 operations for an example of a similar statistic with similar breakdowns.
When to check
NFS operations/sec can be used as an indication of NFS load, and can be viewed on the dashboard.
Chapter 6 Analytics 383
Use the latency breakdown when investigating NFS performance issues, especially to quantify the magnitude of the issue. This measures the I/O latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen, along with outliers. If the NFS latency is high, drill down further on latency to identify the type of operation and filename for the high latency, and, check other statistics for both CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client and filename breakdowns, and the filename hierarchy view. It's best to enable these breakdowns for short periods only: the by-filename breakdown can be one of the most expensive in terms of storage and execution overhead, and may not be suitable to leave enabled permanently on a busy production server.
Breakdowns
Breakdown Description
type of operation NFS operation type (read/write/getattr/setattr/lookup/...) client filename remote hostname or IP address of the NFS client. filename for the NFS I/O, if known and cached by the appliance. There are some circumstances where the filename is not known, such as after a cluster failover and when clients continue to operate on NFS filehandles without issuing an open to identify the filename; in these situations the filename reported is "<unknown>". the share for this NFS I/O. the project for this NFS I/O. a heat map showing the latency of NFS I/O, as measured from when the NFS request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the NFS request, and to perform any disk I/O. a heat map showing the distribution of NFS I/O sizes. a heat map showing the file offset of NFS I/O. This can be used to identify random or sequential NFS IOPS. Use the Disk I/O operations statistic to check whether random NFS IOPS maps to random Disk IOPS after the filesystem and RAID configuration has been applied.
size offset
"Protocol: NFSv4 operations per second of type read broken down by latency" (to examine latency for reads only)
384
"Protocol: NFSv4 operations per second for file '/export/fs4/10ga' broken down by offset" (to examine file access pattern for a particular file) "Protocol: NFSv4 operations per second for client 'phobos.sf.fishpong.com' broken down by file name" (to view what files a particular client is accessing)
Further Analysis
See Network: Device bytes for a measure of network throughput caused by the NFS activity; Cache: ARC accesses broken down by hit/miss to see how well an NFS read workload is returning from cache; and Disk: I/O operations for the back-end disk I/O caused.
Example
See Protocol: FTP bytes for an example of a similar statistic with similar breakdowns.
When to check
SFTP bytes/sec can be used as an indication of SFTP load, and can be viewed on the dashboard. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client, user and filename breakdowns, and the filename hierarchy view. It may be best to enable these breakdowns for short periods only: the by-filename breakdown can be one of the most expensive in terms of storage and execution overhead, and may not be suitable to leave enabled permanently on appliances with high rates of SFTP activity.
Breakdowns
Breakdown Description
type of operation SFTP operation type (get/put/...) user filename username of the client filename for the SFTP operation, if known and cached by the appliance. If the filename is not known it is reported as "<unknown>".
Chapter 6 Analytics
385
Breakdown
Description
the share for this SFTP request. the project for this SFTP request. remote hostname or IP address of the SFTP client.
"Protocol: SFTP bytes per second for client 'phobos.sf.fishpong.com' broken down by file name" (to view what files a particular client is accessing)
Further Analysis
See Cache: ARC accesses broken down by hit/miss to see how well an SFTP read workload is returning from cache; and Disk: I/O operations for the back-end disk I/O caused. Since SFTP uses SSH to encrypt FTP, there will be additional CPU overhead for this protocol. To check overall CPU utilization of the appliance, see CPU: Percent utilization.
Example
See Protocol: iSCSI bytes for an example of a similar statistic with similar breakdowns.
When to check
SRP bytes/sec can be used as an indication of SRP load, in terms of throughput. For a deeper analysis of SRP activity, see Protocol: SRP operations.
Breakdowns
Breakdown Description
initiator target
386
Breakdown
Description
project lun
the project for this SRP request. the LUN for this SRP request.
Further Analysis
See Protocol: SRP operations for numerous other breakdowns on SRP operations; also see Cache: ARC accesses broken down by hit/miss to see how well an SRP read workload is returning from cache, and Disk: I/O operations for the back-end disk I/O caused.
Example
See Protocol: iSCSI operations for an example of a similar statistic with similar breakdowns.
When to check
SRP operations/sec can be used as an indication of SRP load. Use the latency breakdown when investigating SRP performance issues, especially to quantify the magnitude of the issue. This measures the I/O latency component for which the appliance is responsible for, and displays it as a heat map so that the overall latency pattern can be seen, along with outliers. If the SRP latency is high, drill down further on latency to identify the client initiator, the type of operation and LUN for the high latency, and, check other statistics for both CPU and Disk load to investigate why the appliance is slow to respond; if latency is low, the appliance is performing quickly, and any performance issues experienced on the client initiator are more likely to be caused by other factors in the environment: such as the network infrastructure, and CPU load on the client itself. The best way to improve performance is to eliminate unnecessary work, which may be identified through the client initiator, lun and command breakdowns.
Chapter 6 Analytics 387
CPU CPUs
Breakdowns
Breakdown Description
SRP client initiator local SCSI target the project for this SRP request. the LUN for this SRP request.
type of operation SRP operation type. This shows how the SCSI command is transported by the SRP protocol, which can give an idea to the nature of the I/O. command latency SCSI command sent by the SRP protocol. This can show the real nature of the requested I/O (read/write/sync-cache/...). a heat map showing the latency of SRP I/O, as measured from when the SRP request arrived on the appliance from the network, to when the response is sent; this latency includes the time to process the SRP request, and to perform any disk I/O. a heat map showing the file offset of SRP I/O. This can be used to identify random or sequential SRP IOPS. Use the Disk I/O operations statistic to check whether random SRP IOPS maps to random Disk IOPS after the LUN and RAID configuration has been applied. a heat map showing the distribution of SRP I/O sizes.
offset
size
"Protocol: SRP operations per second of command read broken down by latency" (to examine latency for SCSI reads only)
Further Analysis
See Protocol: SRP bytes for the throughput of this SRP I/O; also see Cache: ARC accesses broken down by hit/miss to see how well an SRP read workload is returning from cache, and Disk: I/O operations for the back-end disk I/O caused.
CPU CPUs
CPU: CPUs
The CPUs statistic is used to display the heat map for CPUs broken down by percent utilization. This is the most accurate way to examine how CPUs are utilized.
388 Sun ZFS Storage 7000 System Administration Guide November 2010
When to check
When investigating CPU load, after checking the utilization average from CPU: Percent utilization. This statistic is particularly useful for identifying if a single CPU is fully utilized, which can happen if a single thread is saturated with load. If the work performed by this thread cannot be offloaded to other threads so that it can be run concurrently across multiple CPUs, then that single CPU can become the bottleneck. This will be seen as a single CPU stuck at 100% utilization for several seconds or more, while the other CPUs are idle.
Breakdowns
Breakdown Description
percent utilization A heat map with utilization on the Y-axis and each level on the Y-axis colored by the number of CPU at that utilization: from light (none) to dark (many).
Details
CPU utilization includes the time to process instructions (that are not part of the idle thread); which includes memory stall cycles. CPU utilization can be caused by:
Since the appliance primarily exists to move data, memory load often dominates. So a system with high CPU utilization may actually be high as it is moving data.
When to check
When investigating CPU load, after checking CPU: Percent utilization and CPU: CPUs broken down by percent utilization. Some degree of kernel spins is normal for processing any workload, due to the nature of multi-threaded programming. Compare the behavior of kernel spins over time, and for different workloads, to develop an expectation for what is normal.
Chapter 6 Analytics 389
Breakdowns
Breakdown Description
When to check
Rarely; this may be useful for identifying internal behavior of the ARC, however there are other statistics to check before this one. If there are caching issues on the appliance, check the Cache: ARC accesses statistic to see how well the ARC is performing, and the Protocol statistics to understand the requested workload. Then, check the Advanced Analytics Cache: ARC size and Cache: ARC evicted bytes for further details on the ARC behavior.
Breakdowns
none.
When to check
This could be checked if you were considering to install cache devices (L2ARC), as this statistic can be broken down by L2ARC state. If L2ARC eligible data was frequently being evicted from the ARC, then the presence of cache devices could improve performance. This may also be useful to check if you have issues with cache device warmup. The reason may be that your workload is not L2ARC eligible. If there are ARC caching issues on the appliance, also check the Cache: ARC accesses statistic to see how well the ARC is performing, and the Protocol statistics to understand the requested workload. Then, check the Advanced Analytics Cache: ARC size for further details on the ARC behavior.
Breakdowns
Breakdown Description
L2ARC state
When to check
When examining the effectiveness of the ARC on the current workload. The ARC should automatically increase in size to fill most of available DRAM, when enough data be accessed by the current workload to be placed in the cache. The breakdown allows the contents of the ARC to be identified by type. This may also be checked when using cache devices (L2ARC) on systems with limited DRAM, as the ARC can become consumed with L2ARC headers. If there are ARC caching issues on the appliance, also check the Cache: ARC accesses statistic to see how well the ARC is performing, and the Protocol statistics to understand the requested workload.
Breakdowns
Available breakdowns:
Chapter 6 Analytics 391
Breakdown
Description
component
cached contents, including filesystem data and filesystem metadata. space consumed by metadata of the ARC itself. The ratio of headers to data is relative to the ZFS record size used; a small record size may mean more ARC headers to refer to the same volume. other kernel consumers of the ARC space consumed by tracking buffers stored on L2ARC devices. If the buffer is on the L2ARC and yet still in ARC DRAM, it is considered "ARC headers" instead.
When to check
Rarely; this may be useful for identifying internal behavior of the ARC, however there are other statistics to check before this one. If there are caching issues on the appliance, check the Cache: ARC accesses statistic to see how well the ARC is performing, and the Protocol statistics to understand the requested workload. Then, check the Advanced Analytics Cache: ARC size and Cache: ARC evicted bytes for further details on the ARC behavior.
Breakdowns
none.
392 Sun ZFS Storage 7000 System Administration Guide November 2010
When to check
This may be useful to check if a workload accesses millions of small files, for which the DNLC can help. If there are generic caching issues on the appliance, first check the Cache: ARC accesses statistic to see how well the ARC is performing, and the Protocol statistics to understand the requested workload. Then, check the Advanced Analytic Cache: ARC size for the size of the ARC.
Breakdowns
Breakdown Description
hit/miss
shows counts for hits/misses, allowing the effectiveness of the DNLC to be checked.
When to check
This may be useful to check if a workload accesses millions of small files, for which the DNLC can help. If there are generic caching issues on the appliance, first check the Cache: ARC accesses statistic to see how well the ARC is performing, and the Protocol statistics to understand the requested workload. Then, check the Advanced Analytic Cache: ARC size for the size of the ARC.
Chapter 6 Analytics 393
Breakdowns
none.
When to check
This may be useful to leave enabled when using cache devices, for when troubleshooting L2ARC issues beyond the standard statistics.
Breakdowns
Available breakdowns:
Breakdown Description
error
memory abort
The L2ARC choose not to populate for a one second interval due to a shortage of system memory (DRAM) which holds the L2ARC metadata. Continual memory aborts will prevent the L2ARC from warming up. A read from a cache device failed the ZFS ARC checksum. This may be an indicator that a cache device is beginning to fail. A cache device returned an error. This may be an indicator that a cache device is beginning to fail.
394
When to check
When troubleshooting L2ARC warmup. If the size is small, check that the workload applied should be populating the L2ARC using the statistic Cache: ARC evicted bytes broken down by L2ARC state, and use the Protocol breakdowns such as by size and by offset to confirm that the workload is of random I/O. Sequential I/O does not populate the L2ARC. Another statistic to check is Cache: L2ARC errors. The L2ARC size does shrink, if data that was cached is deleted from the filesystem.
Breakdowns
none.
When to check
This could be useful to check when investigating the source of ZFS load. This would be after checking all other sources of file system activity, via the Protocol statistics. Also see the standard Analytics statistic Data Movement: NDMP bytes transferred to/from disk and Data Movement: NDMP bytes transferred to/from tape.
Breakdowns
Breakdown Description
type of operation
read/write/...
Chapter 6 Analytics
395
When to check
When monitoring NDMP progress, and troubleshooting NDMP. Also see the standard Analytics statistic Data Movement: NDMP bytes transferred to/from disk and Data Movement: NDMP bytes transferred to/from tape.
Breakdowns
Breakdown Description
type of operation
When to check
This statistic may be useful to trigger an alert based on the average for all disks. Investigating disk utilization is usually much more effective using the standard Analytics statistic Disk: Disks broken down by percent utilization - which instead of averaging utilization, presents it as a heat map. This allows individual disk utilization to be examined.
Breakdowns
Breakdown Description
disk
396
The disk breakdown shows the contribution to the average percent which each disk made.
Notes
A system with 100 disks would never show more than 1 for any disk breakdown, unless that disk was selected and displayed separately as a raw statistic. Such a system would also show 0 percent utilization for disks less than 50% busy, due to rounding. Since this may be a source of confusion, and that there is a better statistic available for most situations (Disk: Disks), this statistic has been placed in the Advanced category. See Disk: Disks broken down by percent utilization for a different and usually more effective way to display this data.
When to check
Troubleshooting performance issues, after all relevant standard Analytics have been examined. The DMU object type breakdown can identify if there is excessive DDT (Data Deduplication Table) activtity. See Data Deduplication.
Breakdowns
Breakdown Description
Chapter 6 Analytics
397
When to check
This could be useful while investigating how I/O is processed between the Protocol layer and pool disks.
Breakdowns
Breakdown Description
When to check
This could be useful while investigating how I/O is processed between the Protocol layer and pool disks.
Breakdowns
Breakdown Description
type of operation
read/write/...
398
Breakdown
Description
pool name
When to check
This can be used to check that the filesystem cache has grown to consume available memory.
Breakdowns
Available breakdowns:
Breakdown Description
application name
Application names:
Application Name Description
The ZFS filesystem cache (ARC). This will grow to consume as much of available memory as possible, as it caches frequently accessed data. The operating system kernel. The appliance management software. Unused space.
Chapter 6 Analytics
399
When to check
Rarely. If the dashboard were to show kernel memory as a large consumer of available DRAM (in the Usage: Memory section), then this may be used when troubleshooting the cause. Also see Memory: Kernel memory in use and Memory: Kernel memory lost to fragmentation.
Breakdowns
Breakdown Description
kmem cache
When to check
Rarely. If the dashboard were to show kernel memory as a large consumer of available DRAM (in the Usage: Memory section), then this may be used when troubleshooting the cause. Also see Memory: Kernel memory lost to fragmentation.
400 Sun ZFS Storage 7000 System Administration Guide November 2010
Network IP bytes
Breakdowns
Breakdown Description
kmem cache
When to check
Rarely. If the dashboard were to show kernel memory as a large consumer of available DRAM (in the Usage: Memory section), then this may be used when troubleshooting the cause. Also see Memory: Kernel memory in use.
Breakdowns
Breakdown Description
kmem cache
Network IP bytes
Network: IP bytes
This statistic shows IP payload bytes/second, excluding the Ethernet/IB and IP headers.
When to check
Rarely. Network throughput monitoring can be achieved using the standard Analytics statistic Network: Device bytes, which is enabled and achived by default. Examining by-client
Chapter 6 Analytics 401
Network IP packets
throughput can usually be achieved through the Protocol statistic (for example, Protocol: iSCSI bytes, which allows other useful breakdowns based on the protocol). This statistic is most useful if the previous two were not appropriate for some reason.
Breakdowns
Breakdown Description
remote client, either as a hostname or IP address. IP protocol: tcp/udp relative to the appliance. in/out
Network IP packets
Network: IP packets
This statistic shows IP packets/second.
When to check
Rarely. Since packets usually map to protocol operations, it is often more useful to examine these using the Protocol statistics (for example, Protocol: iSCSI operations, which allows other useful breakdowns based on the protocol).
Breakdowns
Breakdown Description
remote client, either as a hostname or IP address. IP protocol: tcp/udp relative to the appliance. in/out
402
When to check
Rarely. Network throughput monitoring can be achieved using the standard Analytics statistic Network: Device bytes, which is enabled and achived by default. Examining by-client throughput can usually be achieved through the Protocol statistic (for example, Protocol: iSCSI bytes, which allows other useful breakdowns based on the protocol). This statistic is most useful if the previous two were not appropriate for some reason.
Breakdowns
Breakdown Description
remote client, either as a hostname or IP address. TCP port: http/ssh/215(administration)/... relative to the appliance. in/out
When to check
Rarely. Since packets usually map to protocol operations, it is often more useful to examine these using the Protocol statistics (for example, Protocol: iSCSI operations, which allows other useful breakdowns based on the protocol).
Chapter 6 Analytics
403
Breakdowns
Breakdown Description
remote client, either as a hostname or IP address. TCP port: http/ssh/215(administration)/... relative to the appliance. in/out
When to check
It may be useful to check the latency breakdown if long latencies were experienced on the appliance, especially during administrative logins. The breakdowns for the database name and source will show what the latency is for, and which remote server is responsible.
Breakdowns
Breakdown Description
request type success/fail NSCD database (DNS/NIS/...) hostname or IP address of this request time for this request to complete
404
Open Worksheets
When to check
This can be used to check the effectiveness of the NSCD cache, by using the hit/miss breakdown. Misses become backend requests to remote sources, which can be examined using System: NSCD backend requests.
Breakdowns
Breakdown Description
request type success/fail NSCD database (DNS/NIS/...) time for this request to complete result from the cache lookup: hit/miss
Open Worksheets
Chapter 6 Analytics
405
Open Worksheets
Worksheets
This is the main interface for Analytics. See Concepts for an overview of Analytics. A worksheet is a view where multiple statistics may be graphed. The screenshot at the top of this page shows two statistics:
CPU: percent utilization broken down by CPU identifier - as a graph Protocol: NFSv3 operations per second broken down by latency - as a quantize plot
Click the screenshot for a larger view. The following sections introduce Analytics features based on that screenshot.
Graph
The CPU utilization statistic in the screenshot is rendered as a graph. Graphs provide the following features:
406 Sun ZFS Storage 7000 System Administration Guide November 2010
Open Worksheets
The left panel lists components of the graph, if available. Since this graph was "... broken down by CPU identifier", the left panel lists CPU identifiers. Only components which had activity in the visible window (or selected time) will be listed on the left. Left panel components can be clicked to highlight their data in the main plot window. Left panel components can be shift clicked to highlight multiple components at a time (such as in this example, with all four CPU identifiers highlighted). Left panel components can be right clicked to show available drilldowns. Only ten left panel components will be shown to begin with, followed by "...". You can click the "..." to reveal more. Keep clicking to expand the list completely. The graph window on the right can be clicked to highlight a point in time. In the example screenshot, 15:52:26 was selected. Click the pause button followed by the zoom icon to zoom into the selected time. Click the time text to remove the vertical time bar. If a point in time is highlighted, the left panel of components will list details for that point in time only. Note that the text above the left box reads "At 15:52:26:", to indicate what the component details are for. If a time wasn't selected, the text would read "Range average:". Y-axis auto scales to keep the highest point in the graph (except for utilization statistics, where are fixed at 100%). The line graph button will change this graph to plot just lines without the flood-fill. This may be useful for a couple of reasons: some of the finer detail in line plots can be lost in the flood fill, and so selecting line graphs can improve resolution. This feature can also be used to vertical zoom into component graphs: first, select one or more components on the left, then switch to the line graph.
Quantize Plot
The NFS latency statistic in the screenshot is rendered as a quantize plot. The name refers to the how the data is collected and displayed. For each statistic update, data is quantized into buckets, which are drawn as blocks on the plot. The more events in that bucket for that second, the darker the block will be drawn. The example screenshot shows NFSv3 operations were spread out to 9 ms and beyond - with latency on the y-axis - until an event kicked in about half way and the latency dropped to less than 1 ms. Other statistics can be plotted to explain the drop in latency (the filesystem cache hit rate showed steady misses go to zero at this point - a workload had been randomly reading from disk (0 to 9+ ms latency), and switched to reading files that were cached in DRAM.) Quantize plots are used for I/O latency, I/O offset and I/O size, and provide the following features:
Detailed understanding of data profile (not just the average, maximum or minimum) these visualize all events and promote pattern identification.
407
Chapter 6 Analytics
Open Worksheets
Vertical outlier elimination. Without this, the y-axis would always be compressed to to toggle between different include the highest event. Click the crop outliers icon percentages of outlier elimination. Mouse over this icon to see the current value.
Vertical zoom: click a low point from the list in the left box, then shift-click a high point. Now click the crop outliers icon to zoom to this range.
Show Hierarchy
Graphs by filename have a special feature - "Show hierarchy" text will be visible on the left. When clicked, a pie-chart and tree view for the traced filenames will be made available. The following screenshot shows the hierarchy view:
As with graphs, the left panel will show components based on the statistic break down, which in this example was by filename. Filenames can get a little too long for that left panel - try expanding it by clicking and dragging the divider between it and the graph; or use the hierarchy view. The hierarchy view provides the following features:
The filesystem may be browsed, by clicking "+" and "-" next to file and directory names. File and directory names can be clicked, and their component will shown in the main graph. Shift click pathnames to display multiple components at once, as shown in this screenshot. The pie chart on the left shows the ratio of each component to the total.
408
Open Worksheets
Slices of the pie may be clicked to perform highlighting. If the graph isn't paused, the data will continue to scroll. The hierarchy view can be refreshed to reflect the data visible in the graph by clicking "Refresh hierarchy".
Common
The following features are common to graphs and quantize plots:
The height may be expanded. Look for a white line beneath in the middle of the graph, click and drag downwards. The width will expand to match the size of your browser. Click and drag the move icon to switch vertical location of the statistics.
Background Patterns
Normally graphs are displayed with various colors against a white background. If data is unavailable for any reason the graph will be filled with a pattern to indicate the specific reason for data unavailability:
The gray pattern indicates that the given statistic was not being recorded for the time period indicated. This is either because the user had not yet specified the statistic or because data gathering had been explicitly suspended. The red pattern indicates that data gathering was unavailable during that period. This is most commonly seen because the system was down during the time period indicated. The orange pattern indicates an unexpected failure while gathering the given statistic. This can be caused by a number of aberrant conditions. If it is seen persistently or in critical situations, contact your authorized support resource and/or submit a support bundle.
Saving a Worksheet
Worksheets can be saved for later viewing. As a side effect, all visible statistics will be archived meaning that they will continue to save new data after the saved worksheet has been closed. To save a worksheet, click the "Untitled worksheet" text to name it first, then click "Save" from the local navigation bar. Saved worksheets can be opened and managed from the Saved Worksheets section.
Toolbar Reference
A toolbar of buttons is shown above graphed statistics. The following is a reference for their function:
Chapter 6 Analytics 409
Open Worksheets
Icon
Click
Shift-Click
move backwards in time (moves left) move backwards in time (moves left) move forwards in time (moves right) move forwards in time (moves right) forward to now pause zoom out zoom in show one minute show one hour show one day show one week show one month show minimum show maximum show line graph show mountain graph crop outliers sync worksheet to this statistic unsync worksheet statistics drilldown forward to now pause zoom out zoom in show two minutes, three, four, ... show two hours, three, four, ... show two days, three, four, ... show two weeks, three, four, ... show two months, three, four, ... show next minimum, next next minimum, ... show next maximum, next next maximum, ... show line graph show mountain graph crop outliers sync worksheet to this statistic unsync worksheet statistics rainbow highlight
410
Open Worksheets
Icon
Click
Shift-Click
Mouse over each button to see a tooltip to describe the click behavior.
CLI
Viewing analytics statistics is possible from the CLI. See:
Reading Datasets - for listing recent statistics from available datasets. Saved Worksheets:CLI - for how to dump worksheets in CSV, which may be suitable for automated scripting.
Tips
If you'd like to save a worksheet that displays an interesting event, make sure the statistics are paused first (sync all statistics, then hit pause). Otherwise the graphs will continue to scroll, and when you open the worksheet later the event may no longer be on the screen. If you are analyzing issues after the fact, you will be restricted to the datasets that were already being archived. Visual correlations can be made between them when the time axis is synchronized. If the same pattern is visible in different statistics - there is a good chance that it is related activity. Be patient when zooming out to the month view and longer. Analytics is clever about managing long period data, however there can still be delays when zooming out to long periods.
Tasks
BUI
Monitoring NFSv3 or SMB by operation type
1 2 3
Click the add icon. Click the "NFSv3 operations" or "SMB operations" line. Click "Broken down by type of operation".
Chapter 6 Analytics 411
Saved Worksheets
Click the add icon. Click the "NFSv3 operations" or "SMB operations" line. Click "Broken down by latency".
Click the add icon. Click the "NFSv3 operations" or "SMB operations" line. Click "Broken down by filename". When enough data is visible, click the "Show hierarchy" text on the left to display a pie-chart and tree-view for the path names that were traced in the graph. Click "Refresh hierarchy" when the pie-chart and tree-view become out of date with the scrolling data in the graph.
Saving a worksheet
1 2
Click the "Untitled worksheet" text and type in a custom name Click "Save" from the local navigation bar.
Saved Worksheets
Introduction
Open Worksheets may be saved for at least these reasons:
To create custom performance views which display statistics of interest. To investigate performance events for later analysis. A worksheet may be paused on a particular event and then saved, so that others can open the worksheet later and study the event.
412
Saved Worksheets
Properties
The following properties are stored for saved worksheets:
Field Description
Configurable name of the saved worksheet. This will be displayed at the top of the Open Worksheets view Optional comment (only visible in the BUI) User who owns the worksheet Time the worksheet was created Time the worksheet was last modified (only visible in the CLI)
BUI
Mouse over saved worksheet entries to expose the following controls:
icon description
This will upload a support bundle that includes this worksheet, allowing for off-line analysis of your system by your support provider. You should only do this if you have been explicitly asked to upload such a bundle by support personnel. Append the datasets saved in this worksheet to the current worksheet in Open Worksheets Edit the worksheet to change the name and comment Destroy this worksheet
Single click an entry to open that worksheet. This may take several seconds if the worksheet was paused on a time in the distant past, or if it spanned many days, as the appliance must read the statistic data from disk back into memory.
CLI
Worksheet maintenance actions are available under the analytics worksheets context. Use the show to view the current saved worksheets:
walu:> analytics worksheets walu:analytics worksheets> show Worksheets:
Chapter 6 Analytics 413
Datasets
Worksheets may be selected so that more details may be viewed. Here one of the statistics is dumped and retrieved in CSV format from the saved worksheet:
walu:analytics worksheets> select worksheet-000 walu:analytics worksheet-000> show Properties: uuid = e268333b-c1f0-401b-97e9-ff7f8ee8dc9b name = 830 MB/s NFSv3 disk owner = root ctime = 2009-9-4 20:04:28 mtime = 2009-9-4 20:07:24 Datasets: DATASET DATE dataset-000 2009-9-4 dataset-001 2009-9-4 SECONDS NAME 60 nic.kilobytes[device] 60 io.bytes[op]
walu:analytics worksheet-000> select dataset-000 csv Time (UTC),KB per second 2009-09-04 20:05:38,840377 2009-09-04 20:05:39,890918 2009-09-04 20:05:40,848037 2009-09-04 20:05:41,851416 2009-09-04 20:05:42,870218 2009-09-04 20:05:43,856288 2009-09-04 20:05:44,872292 2009-09-04 20:05:45,758496 2009-09-04 20:05:46,865732 2009-09-04 20:05:47,881704 [...]
If there was a need to gather Analytics statistics using an automated CLI script over SSH, it would be possible to create a saved worksheet containing the desired statistics which could then be read in this fashion. This is one way to view analytics from the CLI; also see Reading datasets.
Datasets
Introduction
The term dataset refers to the in memory cached and on disk saved data for a statistic, and is presented as an entity in Analytics with administration controls. Datasets are automatically created when statistics are viewed in Open Worksheets, but are not saved to disk for future viewing unless they are archived. See the Actions section of Concepts.
414 Sun ZFS Storage 7000 System Administration Guide November 2010
Datasets
BUI
The Analytics->Datasets page in the BUI lists all datasets. These include open statistics that are being viewed in a worksheet (and as such are temporary datasets - they will disappear when the worksheet is closed), and statistics that are being archived to disk. The following fields are displayed in the Dataset view for all datasets:
Field Description
See below table Name of the statistic/dataset First timestamp in dataset. For open statistics, this is the time the statistic was opened - which may be minutes earlier. For archived statistics, this is the first time in the archived dataset which indicates how far back in the past this dataset goes - which may be days, weeks, months. Sorting this column will show the oldest datasets available. Space this dataset consumes on disk Space this dataset consumers in main memory
On Disk In Core
The following icons are visible in the BUI view; some of these will only be visible during mouse over of a dataset entry:
icon description
Dataset is actively collecting data Dataset is currently suspended from collecting data Suspend/Resume archived datasets Enable archiving of this dataset to disk Destroy this dataset
CLI
The analytics datasets context allows management of datasets.
Chapter 6 Analytics 415
Datasets
Many of the above datasets are archived by default, there is only one that is additional: "dataset-007", which has no ONDISK size, indicating that it is a temporary statistic that isn't archived. The names of the statistics are abbreviated versions of what is visible in the BUI: "dnlc.accesses" is short for "Cache: DNLC accesses per second". Specific dataset properties can be viewed after selecting it:
caji:analytics datasets> select dataset-007 caji:analytics dataset-007> show Properties: name = dnlc.accesses grouping = Cache explanation = DNLC accesses per second incore = 65.5K size = 0 suspended = false
Reading datasets
Datasets statistics can be read using the read command, followed by the number of previous seconds to display:
caji:analytics datasets> select dataset-007 caji:analytics dataset-007> read 10 DATE/TIME /SEC /SEC BREAKDOWN 2009-10-14 21:25:19 137 - 2009-10-14 21:25:20 215 - 2009-10-14 21:25:21 156 - 2009-10-14 21:25:22 171 - 2009-10-14 21:25:23 2722 - 2009-10-14 21:25:24 190 - 416 Sun ZFS Storage 7000 System Administration Guide November 2010
Datasets
Breakdowns will also be listed if available. The following shows CPU utilization broken down CPU mode (user/kernel), which was available as dataset-006:
caji:analytics datasets> select dataset-006 caji:analytics dataset-006> read 5 DATE/TIME %UTIL %UTIL BREAKDOWN 2009-10-14 21:30:07 7 6 kernel 0 user 2009-10-14 21:30:08 7 7 kernel 0 user 2009-10-14 21:30:09 0 - 2009-10-14 21:30:10 15 14 kernel 1 user 2009-10-14 21:30:11 25 24 kernel 1 user
The summary is shown in "%UTIL", and contributing elements in "%UTIL BREAKDOWN". At 21:30:10, there 14% kernel time and 1% user time. The 21:30:09 line shows 0% in the "%UTIL" summary, and so does not list breakdowns ("--").
Chapter 6 Analytics
Datasets
418
C H A P T E R
Application Integration
Application Integration
Introduction
In some cases, host-side components are required for full application integration with Sun Storage 7000 appliances. The following sections give overviews of these integrations with links and notes for storage administrators. Complete documentation for the application integrations are packaged with the downloaded components.
Sun Storage 7000 Provider for Microsoft VSS Software Sun Storage 7000 Management Plug-In for Oracle Enterprise Manager 10g Grid Controller
419
Microsoft
Quickly integrate the appliance with existing applications using standard protocols for data. Best practices exist for integrating with applications where special tuning is helpful to get better performance or a more robust environment, for example:
URL Title
http://www.sun.com/ Deploying Oracle Real Application Clusters 10g or 11g Release 1 on Sun Storage 7000 bigadmin/features/articles/ Unified Storage Systems (2009.Q3) 7000_oracle_rac_2009q3.pdf (http://www.sun.com/ bigadmin/features/ articles/ 7000_oracle_rac_2009q3.pdf) http://www.sun.com/ Deploying Oracle Databases Using NFS on Sun Storage 7000 Unified Storage Systems bigadmin/features/articles/ (2009.Q3) 7000_oracle_deploy_2009q3.pdf (http://www.sun.com/ bigadmin/features/ articles/ 7000_oracle_deploy_2009q3.pdf) http://www.sun.com/ Deploying Oracle 10g or 11gR1 ASM Using iSCSI on Sun Storage 7000 Unified bigadmin/features/articles/ Storage Systems (2009.Q3) 7000_oracle_iscsi_asm_2009q3.pdf (http://www.sun.com/ bigadmin/features/ articles/ 7000_oracle_iscsi_asm_2009q3.pdf)
Microsoft
Sun Storage 7000 Provider for Microsoft VSS Software
The Sun Storage 7000 provider for Microsoft VSS Software allows the appliance to take consistent snapshots from Windows hosts which are using block targets. VSS coordinates snapshots to be sure block data is consistent. The service communicates with a set of workflows
420 Sun ZFS Storage 7000 System Administration Guide November 2010
Oracle
to coordinate taking of snapshots as seen from the application, not just with respect to the ZFS file system running on the appliance. It works over iSCSI, FC and SRP. Volume Shadow Copy Services (VSS) for Microsoft operating systems provides a coordination point between backup infrastructure from a variety of applications that make use of iSCSI LUNs and used by a host system. Specifically, VSS provides:
A backup infrastructure that coordinates applications with file system activities A location to create point in time, coalesced copies known as shadow copies
The Sun Storage 7000 provider for VSS is installed on hosts that require this functionality and coordination between applications. Complete documentation for the application integrations are packaged with the downloaded components. The provider, release notes, and information on certifications with third-party applications is available at the Sun Download Center]. More information on VSS is available on the Microsoft web site, including this [http://msdn.microsoft.com/en-us/library/aa384649 (http://msdn.microsoft.com/en-us/ library/aa384649)%28VS.85%29.aspx overview. It is highly recommended that a user with limited access privileges be used from each host leveraging VSS capabilities in conjunction with the appliance. This allows the audit capabilities of the appliance to be used, as well as providing an additional layer of security to ensure other clients are prevented from using credentials reserved for VSS operations. To create limited-access login credentials for use with VSS:
Create a vss role with the following authorizations: *nas.*.*.* changeAccessProps, changeGeneralProps, changeProtocolProps, changeSpaceProps, changeUserQuota, clone, createShare, destroy, rename, rollback, scheduleSnap, takeSnap, createProject : workflow.*.* read Create a vss user and assign it the role vss. Communicate this user's login and password to system administrators that intend to install the VSS provider on a supported Windows platform.
Oracle
Sun Storage 7000 Management Plug-In for Oracle Enterprise Manager 10g Grid Controller
The Sun Storage 7000 plug-in for Oracle Enterprise Manager 10g grid controller provides first-class monitoring to the grid controller environment for the Sun Storage 7000 appliance family with the ability to:
Oracle
Gather storage system information, configuration information and performance information of accessible storage components Raise alerts and violations based on thresholds and monitoring information collected by the tool Provide out-of-the-box reports that complement analytics Support monitoring by remote agents.
Once an appliance is configured to be monitored by the grid controller, analytics worksheets and datasets are created to bridge the grid controller administrator's view to the deeper level of detail provided by the real-time analytics available within the appliance.
The management plug-in is available at the following URL: https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDet It is packaged with an installation guide that should be read by both administrators of the grid controller and storage administrators of appliances being monitored. Included with each appliance are two workflows that are used respectively to prepare a system for monitoring, or to remove the artifacts created for the monitoring environment:
Configure for Oracle Enterprise Manager Monitoring Unconfigure Oracle Enterprise Manager Monitoring
These workflows are accessible from the Maintenance > Workflows page in the browser user interface.
Oracle Sun Storage 7000 Management Plug-In for Oracle Enterprise Manager 10g Grid Controller
Configure for Oracle Enterprise Manager Monitoring
This workflow is used to prepare an environment for monitoring, or to reset any of the artifacts that were created by the workflow back to their original state in the event the artifacts were changed during operation by the storage administrator. Executing this workflow makes the following changes to the system:
An oracle_agent role will be created with limited access to the system, to allow the Oracle Enterprise Manager 10g Grid Controller agent to obtain information required for monitoring, but not to make alterations to the system. An oracle_agent user will be created and assigned this role. Use of this role and user is critical to keeping clean audit records for when and how the agent accesses the appliance. Advanced Analytics will be enabled, makes an extended set of statistics available to all users of the Sun Storage 7000 appliance.
422
Oracle
The Worksheet Oracle Enterprise Manager will be created, facilitating communication between the grid controller administrator and the storage administrator. All metrics monitored by grid controller are available from this worksheet.
Removes the oracle_agent role and user, and Removes the Oracle Enterprise Manager worksheet.
This workflow will *not* disable Advanced Analytics or any of the datasets that were activated for collection purposes.
423
424
Glossary
7110 7120 7210 7310 7320 7410 7420 7720 Active Directory Alerts Analytics ARC BUI CLI Cluster Controller CPU CRU Dashboard Dataset DIMM Disk Shelf DNS
Sun Storage 7110 Unified Storage System Sun ZFS Storage 7120 Sun Storage 7210 Unified Storage System Sun Storage 7310 Unified Storage System Sun ZFS Storage 7320 Sun Storage 7410 Unified Storage System Sun ZFS Storage 7420 Sun ZFS Storage 7720 Microsoft Active Directory server Configurable log, email or SNMP trap events appliance feature for graphing real-time and historic performance statistics Adaptive Replacement Cache Browser User Interface Command Line Interface Multiple heads connected to shared storage See ''Storage Controller'' Central Prcessing Unit Customer Replaceable Component appliance summary display of system health and activity the in-memory and on-disk data for a statistic from Analytics dual in-line memory module the expansion storage shelf that is connected to the head node or storage controller Domain Name Service
425
DTrace
DTrace FC FRU FTP GigE HBA HCA HDD HTTP Hybrid Storage Pool Icons iSCSI Kiosk L2ARC LDAP LED Logzilla LUN Masthead Modal Dialog NFS NIC NIS PCIe Pool Project PSU
a comprehensive dynamic tracing framework for troubleshooting kernel and application problems on production systems in real-time Fibre Channel Field Replaceable Component File Transfer Protocol Gigabit Ethernet Host Bus Adapter Host Channel Adapter Hard Disk Drive HyperText Transfer Protocol combines disk, flash, and DRAM into a single coherent and seamless data store. icons visible in the BUI Internet Small Computer System Interface a restricted BUI mode where a user may only view one specific screen Level 2 Adaptive Replacement Cache Lightweight Directory Access Protocol light-emitting diode write IOPS accelerator Logical Unit top section of BUI screen a new screen element for a specific function Network File System Network Interface Card Network Information Service Peripheral Component Interconnect Express provide storage space that is shared across all filesystems and LUNs a collection of shares Power Supply Unit
426
ZFS
QDR Readzilla Remote Replication Rollback SAS SAS-2 SATA Schema Scripting Service Share SIM Snapshot SSD SSH Statistic
quad data rate read-optimized flash SSD for the L2ARC replicating shares to another appliance reverts all of the system software and all of the metadata settings of the system back to their state just prior to applying an update Serial Attached SCSI Serial Attached SCSI 2.0 Serial ATA configurable properties for shares automating CLI tasks appliance service software ZFS filesystem shared using data protocols SAS Interface Module an image of a share Solid State Drive Secure Shell a metric visible from Analytics
Storage Controller the head node of the appliance Support Bundle Title Bar Updates WebDAV ZFS auto-generated files containing system configuration information and core files for use by remote support in debugging system failures local navigation and function section of BUI screen software or firmware updates Web based Distributed Authoring and Versioning on-disk data storage subsystem
427
428
Index
A
Active Directory, 221, 222 Joining a Domain, 225 Joining a Workgroup, 225 Alerts, 135, 138 Adding a threshold alert, 139 Adding an alert action, 138139
Identity Mapping (Continued) Configuring Identity Mapping, 232 iSCSI, 109, 110, 111, 112
L
L2ARC, 361, 362 LDAP, 218, 219, 221 Adding an appliance administrator from LDAP, 221
D
Dashboard, 52, 54, 55, 57, 58 Running the Dashboard Continuously, 58 Dataset, 352, 414, 415, 416 DNS, 233, 234, 235
M
Masthead, 27
F
FC, 97, 98, 99, 100, 101 FTP, Allowing FTP access to a share, 204
N
Network Adding a static route, 8586, 86 Create an Infiniband partition datalink and interface, 85 Create an IPMP group using link-state only failure detection, 84 Create an IPMP group using probe-based and link-state failure detection, 84 Creating a single port interface, 8283 Creating a single port interface, drag-and-drop, 83 Creating an LACP aggregated link interface, 8384 Deleting a static route, 86 Extend an IPMP group, 85 Extend an LACP aggregation, 85
H
HTTP, 204, 205, 376 Allowing HTTP access to a share, 206
I
Identity Mapping Adding a Name-Based Mapping, 232
429
Index
Network (Continued) Modifying an interface, 83 NFS, Sharing a filesystem over NFS, 187 NIS, 217, 218 Adding an appliance administrator from NIS, 218 NTP, BUI Clock Synchronization, 239
Statistics, Determining the impact of a dynamic statistic, 356357 Storage, Configuring a Storage Pool, 91
U O
Open Worksheets Monitoring NFSv3 or SMB by filename, 412 Monitoring NFSv3 or SMB by latency, 412 Monitoring NFSv3 or SMB by operation type, 411 Saving a worksheet, 412 Users Adding a role, 130, 132 Adding a user who can only view the dashboard, 133 Adding an administrator, 130, 131 Adding authorizations to a role, 131, 132 Deleting authorizations from a role, 131, 132
V P
Pool, 87, 90 Project, 311 Virus Scan, Configuring virus scanning for a share, 216217
R
Remote Replication, 323, 327, 338
W
WebDAV, 376
S
Settings Changing the Activity Thresholds, 61 Changing the Displayed Activity Statistics, 60 SFTP, Allowing SFTP access to a share, 214 Share, 277, 278, 282 SMB Active Directory Configuration, 201 Initial Configuration, 199201 Project and Share Configuration, 201 SMB Data Service Configuration, 201202 Snapshot, 305, 306, 308, 309, 320 SNMP Configuring SNMP to send traps, 245 Configuring SNMP to serve appliance status, 245 SSH, Disabling root SSH access, 249
430 Sun ZFS Storage 7000 System Administration Guide November 2010