đź’»
IT Documentation
  • 🥳Welcome!
  • General Concepts
    • SCRUM
      • Workflow
    • DevOps
      • What is DevOps?
      • What is TDD? (Test Driven Development)
      • What is CI? (Continuous Integration)
      • What is code coverage?
      • Linting best practices
      • Ephemeral Environments
      • Rolling Deployments
      • Blue/Geen Deployments
      • Canary Deployments
      • What is autoscaling & serverless?
      • What is service discovery?
      • What is Log Aggregation?
      • Metric Monitoring
  • AI
    • ChatGPT
      • Better prompts for ChatGPT
  • Cloud
    • AWS
      • AWS - 40 most common Services
      • AWS CLI Cheatsheet
      • Account & IAM
        • Create AWS Account
      • Lambda
        • Create Lambda function for Lightsail
      • Route 53
        • Set up R53 DNS Entry for GitBook
      • RDS
        • AWS RDS Burst Balance
      • VPC
        • What is a VPC
      • EC2
        • Removing EC2 user from sudo list
        • Create a Windows Gaming VPS
        • Connecting to a AWS EC2 instance
    • Azure
      • Courses
        • AZ900 Course
          • Overview
            • Describe Core Concepts
            • Cloud Models (IaaS, PaaS, SaaS)
          • Benefits of Cloud Computing
          • Cloud Models and Cloud Types
            • Overview of Cloud Models
            • IaaS, PaaS, SaaS
            • The Serverless Model
            • Cloud Types
          • Core Azure Architectural Components
            • Overview
            • Regions & Availability Zones
            • Resource Groups & Subscriptions & Management Groups
            • Resources & Resource Manager
          • Core Resources available
            • Compute Resources
            • Networking Resources
            • Storage Resources
            • Database Services
            • Azure Marketplace
          • Azure Core Solutions
            • Overview
            • Internet of Things (IoT) Solutions
            • Big Data Solutions
            • AI Solutions
            • Azure Functions & Logic Apps and Event Grid
            • DevOps Solutions
          • Azure Management Tools
            • Overview
            • Managing Azure with ARM Templates
            • Azure Monitor & Azure Service Health
          • Azure Security Features
            • Overview
            • Azure Security Center
            • Azure Key Vault & Azure Sentinel
            • Azure Dedicated Hosts
          • Azure Network Security
            • Network Security Group (NGS), Firewall and DDoS Protection
          • Azure Identity Services
            • Overview
            • Benefits
            • Multi-Factor Authentication (MFA)
            • Authentication vs Authorization
          • Azure Governance Features
            • Authentification and RBAC
            • Resource Locks
            • Azure Policy
            • Azure Blueprints
            • Cloud Adoption Framework (CAF)
          • Compliance Features
            • Core tenets of Security, Privacy and Compliance
            • Privacy Statement and Online Service Terms (OST)
            • Trust Center
            • Azure Sovereign Regions
          • Manage Azure Costs
            • Overview
            • Best practices
            • Pricing calculator
            • Azure Cost Management
          • SLA (Service level Agreements)
      • Virtual Machines
        • VM
          • Create a VM in a VNET
          • Azure VM LVM corruption fix
        • VMSS
          • Add SSH Key to VMSS
  • Containerization
    • Docker
      • Docker Cheatsheet
      • Install docker on Debian
      • Docker misc stuff
    • Docker Swarm
      • Docker Swarm Cheatsheet
      • Set up docker swarm
      • Delete docker swarm
      • Mount and bind volumes
      • Deploy Portainer via docker swarm
    • Docker Compose
      • Jenkins via Docker Compose
      • PostgreSQL via Docker Compose
      • Wireguard via Docker Compose & HTTPS
    • Rancher
      • Rancher installation guide
  • Cluster Computing
    • Slurm
      • Job Manager is not responding
      • Create new user
    • OpsCenter
      • Clear old Snapshots
      • Issues listing snapshots with nodetool
  • Database
    • General SQL
      • Database introduction
      • SQL 101
      • SQL Cheatsheet
      • User rights
      • Table Creation
      • SQL Replication - Best practice
      • SQL Database Design
    • MS SQL
      • Update whole table fast
    • Oracle SQL (PL/SQL)
      • Oracle SQL Cheatsheet
      • Oracle SQL - Kill Sessions
    • PostgreSQL
      • Install PostgreSQL
      • Create PostgreSQL Role and Database
      • Managing Postgres with PgAdmin GUI
      • Enable remote access for PostgreSQL
      • Authentication on PostgreSQL
      • Returning in Postgres
    • SQLite
    • Flyway Overview
    • SSRS Overview
    • Cassandra
      • GC OutOfMemoryError
  • DevOps
    • Ansible
      • Ansible Cheatsheet
      • Common Ansible Tasks
    • Git
      • Git 101
      • Git 1kb files
      • Git Commit changes before merge
      • Git Misc
      • Git Markdown
      • Git Clone Repo via SSH
    • Github
      • How to use multiple accounts
      • Delete commits fully
      • Set up git ignore file
    • Github Actions
      • Install self hosted runner
      • Scheduling jobs cron style
      • Passing ENV variable in script
      • SSH to Server
    • GitLab
      • GitLab Cheatsheet
    • Terraform
      • Terraform components
  • Hardware
    • UPS - Njoy
  • IoT
    • Home Assistant
      • Valetudo configs
      • Mini Media Player
      • HACS
    • Valetudo
      • Roborock Gen 1
      • Roborock quick guide
      • Roborock full Valetudo install guide
    • Tasmota
      • Tuya-Convert
    • LibreELEC
      • Quick LibreELEC guide
      • Configure X96 Mini Remote
  • OS
    • Linux
      • Learning guidelines
        • LPIC1 Notes
        • Linux Academy Notes
      • Install / Update Guides
        • Set up Raspberry PI
        • Update Debian 10 (buster) to Debian 11 (bullseye)
      • Increase disk size
      • umask
      • inodes
      • at jobs
      • yum
        • yum update vs yum upgrade
      • find
      • ssh
        • SSH returns: no matching host key type found. Their offer: ssh-rsa
        • Generate Public Key from Private Key
        • Run local bash scripts on remote server
      • crontab
        • Crontab 1st Sunday of every Month
        • Set crontab to execute after restart
      • vim
        • Use sed inside vim
      • networking
        • Check Port
      • fail2ban
      • bashrc
      • lvm
      • fallocate
        • Generate dummy file with actual size
      • openssl
        • Create Certificate via CNF file
        • OpenSSL cert conversion
    • Windows
      • Windows - Get App port by PID
      • Windows - Upgrade Windows build
      • Windows - Server
    • Android
      • Android - Motorola Unlock
      • Android - /E Project
    • PinePhone
      • PinePhone - Instructions for creating a PureOS image for PinePhone
  • Monitoring
    • Nagios
      • CPU threshold value calculation
    • New Relic
      • New Relic Flex Integration
      • NRQL Alerts examples
    • Zabbix
      • Zabbix Proxy not communicating with Windows Server
  • Microsoft Suite
    • Outlook
      • Change View
    • Excel
      • Excel Shortcuts
    • Windows Subset for Linux
      • WSL no internet connection
  • Networking
    • General Networking
      • IP Classes and Subnet Masks
      • Network CIDR Charts - /-es or IP Prefix
      • OSI Model Overview
      • Three Way Handshake & TCP Overview
    • F5
    • Authelia
      • What is Authelia
    • Nginx Proxy Manager
      • Nginx Proxy Manager - DuckDNS going down
    • Nmap
    • OpenWRT
      • Securing OpenWRT
      • OpenWRT - Read logs
      • OpenWRT - Adding DHCP Entry
      • OpenWRT - Wireguard
      • OpenWRT - Set up OpenVPN
      • OpenWRT - Internal DNS Service
      • OpenWRT - Set up new Wifi Interface
      • OpenWRT - Set up VLAN
      • OpenWRT - VPN Policy Routing
    • Pihole
      • Enabling HTTPS for your Pihole Web Interface
      • Edit Pihole DNS entries
    • RVS
      • RVS - Observer Modification
      • RVS - All Parameters
      • RVS - Adding a station
    • Wireguard
    • FTP
      • Connect to FTP anonymously
  • Pen Testing
    • CTF
      • CTF Links
  • Programming
    • Python
      • Classic Python
        • Python Cheatsheet
        • Python Shortcuts
        • Dunder Methods
        • hasattr(), getattr(), delattr()
        • Useful Exceptions
        • Dictionary
        • isinstance()
        • isdigit(), isdecimal(), isalpha()
        • return
        • Functions
        • Lists
        • ord(), chr()
        • squares, twos, odds
        • Bubble sort
        • append() and insert()
        • Bitwise operators
        • while, for & else
        • Arithmetic Operators
        • equal operators
        • Structure Projects
      • Modules
        • Webscraping
          • BeautifulSoup
        • PySimpleGui
          • Fast Crashcourse on PySimpleGui
        • os
        • python-docx
          • Generate DOCX file
        • psycopg2
          • PostgreSQL Connection
        • Pydantic Model vs SQLAlchemy Model
      • Frameworks
        • FastAPI
          • FastAPI Quick overview
          • Installing FastAPI and Dependencies
          • Starting FastAPI
          • Path Operations
          • Creating HTTP Operation paths
          • Send Data via Body of HTTP Request
          • Schema Validation with Pydantic
          • CRUD Operations
          • Storing in Array
          • Retrieve one individual entry
          • Changing response Status Codes
          • Deleting entries
          • Updating entries
          • API Documentation
          • Setup App Database & connect to database
          • FastAPI Response Model via Pydantic
          • Hashing passwords via FastAPI
          • Getting user by ID
          • FastAPI Routers
          • Router Prefix
          • Router Tags
          • JWT Token Basics
          • Login Process
          • Creating Token with OAuth2
          • OAuth2 PasswordRequestForm
          • Verify user is Logged In
          • Protecting Routes
          • Fetching User in Protected Routes
        • SQLAlchemy
          • What is an ORM
          • SQLAlchemy setup
          • Adding CreatedAt Column
          • CRUD via SQLAlchemy
          • Efficient way of passing params in SQLAlchemy
          • Creating Users Table via SQLAlchemy & FastAPI
      • Virtual Environments (venv)
    • General Programming Concepts
    • Interview Questions & Answers
      • General Programming Questions
      • Python Interview Questions Beginner
    • Courses
      • Python - PCAP-31-03 Course
        • Overview & Introduction
          • Exam Syllabus
          • Basics of variables
          • Basic Data Types
          • Basic Arithmetic in Python
          • Indexing and Slicing Strings
          • Basic String Methods
          • Format Method
          • Strings are Immutable
        • Lists, Tuples and Dictionaries
          • Lists
          • Accessing Elements in Nested Lists
          • Finding Index positions in Lists and counting duplicates
          • Tuples
          • Dictionaries
          • Comparison Operators
        • Functions and Variable Scope
          • Creating functions
          • *args and **kwargs
          • Basic Variable scope
          • Scope and Nested functions
        • Control Flow
          • If & Else Statements
          • Elif Statements
          • For Loops
          • Pass Statement in For Loops
          • While Loops
          • Looping and Unpacking with Dictionaries and Tuples
          • Range, Enumerate and Zip Functions
          • More Handy Functions and the Random Package
          • Accepting Input from User
        • Modules, Packages and OOP
          • Revising the Difference between Methods and Functions
          • Classes and Objects
          • Classes Attributes vs Object Attributes
          • Calling Python Code that is Saved in Another File
          • Inheritance and Polymorphism
          • Abstract Classes and Methods
          • Practical Application of OOP
          • Double Under (Dunder) Methods
          • Python Script Files
          • Python Files
          • Understanding the if __name__ == '__main__' Syntax
        • File IO and Exception Handling
          • Exception Handling
          • File IO
          • File IO with Exception Handling
          • OS Module
          • argv Command Line Arguments and the re Module
        • Misc Stuff and Q&A
    • IDE
      • Virtual Studio Code
        • Cheatsheet
    • Postman
      • Postman Overview
      • Create a GET HTTP request
      • HTTP Requests
      • Saving Postman requests
      • Environment Variables
  • Virtualization
    • Proxmox
      • Proxmox Cheatsheet
      • Proxmox Common Errors
      • Install Home Assistant in Proxmox via script
      • Create cloud-init template
      • Install guest-agent on new VM
      • Proxmox post install script
  • Webservers
    • Apache
      • Redirect 301 - Apache to index.html
    • Glassfish
      • Redirect 301 Glassfish
    • Tomcat
      • Useful tomcat files
  • Storage
    • NetApp
      • Netapp Overview
      • How to create symlinks
    • Nextcloud
      • Nextcloud Snap install and S3 Storage Bucket
      • Nextcloud Fail2Ban Regex
      • Set up OnlyOffice on Nextcloud
      • Set up Joplin and CalDav on Nextcloud
  • Software
    • Ansys
      • Ansys missing libraries
      • Ansys install
    • Jboss
      • Jboss process not working
Powered by GitBook
On this page
  • NetApp storage Architecture:
  • Storage Virtual Machines (Vservers):
  • Logical Interfaces (LIFs)
  • Brief explanation of different type of LIFs
  • What SnapShot and SnapMirror do:
  • NVRAM:
  • Indirect Data access:
  • How WAFL Works: (Write Anywhere File Layout)
  1. Storage
  2. NetApp

Netapp Overview

PreviousNetAppNextHow to create symlinks

Last updated 3 years ago

NetApp storage Architecture:

Bottom level of the Netapp storage Architecture are called Disks. These are the hard drives themselves. (Storage Space)

These get grouped into Aggregates. An Aggregate is a set of physical disks.

One of the attributes for the Aggregates is the RAID group configuration.

If you check the GUI in NetApp on the Storage tab you can see an Aggregates tab where you can check how these are grouped and the RAID configuration, but there isn’t a RAID tab as this is a Aggregate feature.

Meaning that RAID Groups are configured on the Aggregate level.

The next level of this are the Volumes. This is the lowest level where users can access data at.

To summarize, Disks and Aggregates are physical resources, volumes are logical resources on top of that.

Moving up are the QTrees, the main function of these is to configure cotas. For example you could limit the total size of a QTree or you could limit the total space a user/group can use.

Once this has been configured the client will see it as a directory in that volume. You can also share a QTree.

The last component in the Storage Architecture is LUNs. (Logical unit numbers) This is used in SANs and it is the storage container that is going to be used for their storage.

LUNs can either go into a QTree or a Volume. LUNs are for for SAN protocols only.

Storage Virtual Machines (Vservers):

Allows you to have one physical storage system, and create multiple Logical Storage Systems that are kept secure and separate from each other.

Disks and Aggregates are still shared in Virtualization on order to get the best use out of the storage space. (View it as dynamically allocated rather than fixed)

Furthermore let’s say you would like to create 2 environments (A&B)

You can allocate resources to both from the Physical Layer via Volumes, you can add QTrees and LUNs on top of that.

Both will have different IP addresses, namings and once logged onto the environment as a Admin you will be able to see only the environment that you are connected to.

A and B operate separate from each other and do not know of each other's existence. Unless configured otherwise.

VServers provide file-level data access by using NAS Protocols (CIFS, NFS) and block-level data access by using SAN Protocols. (iSCSI, FC, FCoE)

Logical Interfaces (LIFs)

A LIF is an IP address associated with a physical port. If there is any component failure, a LIF can fail over to or be migrated to a different physical port, thereby continuing to communicate with the cluster.

LIFs can be placed on physical ports, interface groups or VLANs. Multiple LIFs can be placed on the same port.

LIFs can move to other nodes non-disruptivly.

A LIF keeps its IP address wherever it moves.

LIFs are owned by VServers (SVMs)

A LIF can have any one of the five roles:

  • Node Management

  • Cluster management

  • Cluster

  • Intercluster

  • Data

Brief explanation of different type of LIFs

  • One node-management LIF exists per node (Meaning that it does not move nodes)

  • One cluster-management LIF which exists on the entire cluster. Usually 2 or more cluster LIFs exist per node The majority of port traffic goes over IP therefor they need an IP address as well. â—Ź Data LIFs serve client access over protocols such as NFS, CIFS (for NAS) and iSCSI or FC (for SAN)

  • For intercluster peering, intercluster LIFS must be created on each node (This is used for SNAP Mirror)

SnapMirror replicates data from a source volume or qtree to a partner destination volume or qtree respectively, by using Snapshot copies.

Before using SnapMirror to copy data you need to establish a relationship between the source and the destination.

What SnapShot and SnapMirror do:

NetApp Snapshot software is the foundation for SnapManager, SnapMirror, SnapRestore and SnapVault software. Together they create unified, all-risks protection for valuable data.

SnapMirror replicates data from a source volume or qtree to a partner destination volume or qtree respectively, by using Snapshot copies.

Before using SnapMirror to copy data you need to establish a relationship between the source and the destination.

Workflow:

  1. Creates a Snapshot Copy of the data on the source volume

  2. Copies it to the destination, which can be a read-only volume or qtree

  3. Updates the destination to reflect incremental changes on the source, as per the schedule you specify.

The result of this process is an online read-only volume or qtree that contains the same data as the source at the time of the most recent update.

Each of the following replication methods consists of a pair of operation, one operation each at the source storage system and the destination storage system.

  • Volume SnapMirror replication

  • Qtree SnapMirror replication

  • SnapVault replication.

If a storage system is the source for one replication and the destination for another replication, iut uses two replication operations. Similar if a storage system is the source as well as the destination for the same replication, it uses two replication Operations.

HA (High-Availability Clusters) - Also known as Failover Clusters: Are groups of computers that support server applications that can be reliably utilized with a minimum amount of downtime.

They operate by using High-Availability Software to harness redundant computers in groups or clusters that provide continued service when system components fail.

NVRAM:

NVRAM is more or less RAM with a backup in case of a power outage or “disaster events” .

All filers have a battery-backed NVRAM which allows them to commit writes to stable storage quickly without waiting on the disks.

Its primary mission is to preserve that not-yet-written data in care of a “disaster event”

How it works:

Acknowledgements are sent to clients as soon as the data is written to memory. This occurs before the data is written to disks themselves therefore optimising the performance.

As far as the client is concerned after the ack the data is written permanently to storage.

If we would be using DRAM (Dynamic RAM) in this case and there would be a power outage that data would be lost as RAM loses all data once there is no power in it.

NVRAM is Non-Volatile meaning it survives a power outage and the data can be recovered.

NVRAM will write the data back into System Memory and it will be written to disk from there in a Consistency Point.

The data is written to both controllers in a HA pair so that there is a takeover the HA peer can write the data to disk.

Client sends a write request to Controller 1 which is written in the System Memory and NVRAM. The PURPLE write request bumps down the previous System Memory requests and gets written on NVRAM.

This is also further written to Controller 2 into it’s NVRAM via an HA connection.

Once the data has been written to System memory and NVRAM of Controller 1 and into NVRAM on Controller 2, Controller 2 sends “ack” to Controller 1 which further sends an “ack” to the Client informing them that the data has been written permanently to storage (even tho it’s a lie at this point)

Once the NVRAM is about half full it gets written to the Aggregate or Disks (On the Physical Layer - when the data is actually permanently saved to storage)

This is written at half capacity because it takes some time to write the data on the physical disk itself and if this would be done when the NVRAM is full it would cause problems with incoming write requests.

After the data has been written the NVRAM will be flushed of that data in order to have additional space for future write requests.

In case of a Read request: Once a read request comes in, Controller 1 checks for the data on it’s system first, if it is there it serves it up to the requester, which is much faster then serving it up from disk.

After the data is served, all the data in System Memory gets bumped down on space, and the required data (Green in the case above) takes its place.

If the data is on the disk, the system will search the aggregates, will find the data and will serve it up to the user, the read request will be cached in the top slot of system memory and will be sent to the client.

Indirect Data access:

If the client tries to access the data via Controler 2 this will check if it has the data in its System memory first, if it does not then it will go through a cluster interconnector to the Controller 1 (owner of the Aggregates) and will use up a slot in its system memory rather then using a slot in the initially accessed Controller.

This is good because any interrogated cluster will not use up its cache, it will only use the cache of the controller that owns the aggregate.

Read and Write requests work exactly the same way.

Controller 1 Failure: If Controler 1 fails Controller 2 will copy the pending rights from Controller 1 via HA and then they will be written down into the Aggregates in the next consistency point.

After that the NVRAM on Controller 2 will be flushed and the process can start over again.

How WAFL Works: (Write Anywhere File Layout)

WAFL is optimised for writes. It writes many operations to disk at once in a sequential CP (Consistency Point). It does not do separate writes to disk for each individual client request, instead it sends the ack back and writes all the data once the NVRAM is half full.

It’s called Write Anywhere File Layout because the data can be written anywhere on the disk, as it does not require writing of metadata to fixed locations.

This reduces the number of disk seek operations and improves performance.

Full Video on how it works: https://www.youtube.com/watch?v=q3kvRdc01jk

Video for NetApp Architecture
Video for LIFS