39
NFS High Availability in Windows Roopesh Battepati Microsoft Corporation

New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS High Availability in Windows

Roopesh Battepati

Microsoft Corporation

Page 2: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Agenda

Windows NFS Server Architecture Overview NFS Cluster Resource Architecture Overview of Windows FC Resource Model Windows NFS Resource DLL Overview

NFS Virtual Server Architecture for HA NFS v4.1 Server progress

2

Page 3: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

High Availability

Availability = Uptime/(Downtime+Uptime) Decrease downtime for high availability Faster failover = Higher availability

How to make an application highly available in Windows Servers Make application reboot-recoverable Tell cluster about application

Create an application “resource” DLL

Cluster maintains configuration of resources Monitor health of resources & moves resources if

necessary 3

Page 4: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Windows NFS Server

4

NFS Powershell Cmdlets

NFS v2/v3/v4.1 NLM NSM MOUNT UNMP NIS

IO Manager

Filter Manager

NTFS

Storage Stack

NFS Server

NFS Filter PORT

MAP

RPC XDR

Winsock Kernel

Kernel Security

Subsystem

NFS Win32 Service

NFS Resource

DLL NFS CIM

Provider

LDAP store

Callbacks

Failover Cluster

NFS Admin UI

Flat file store

NFS Admin CL

User Mode

Kernel Mode

AD

Page 5: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Server High Availability

Network name

NFS Namespace

Cluster disk

Group of Virtual NFS Servers

Windows Failover Cluster Resource Groups

User mode Kernel mode

Page 6: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Overview of Windows Failover Cluster Resource Model

6

Page 7: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Windows Failover Cluster

7

Membership

ClusDisk.sys CsvFilter.sys

User Mode

Kernel

Physical Disk Resource

Cluster Service

Resource Control Manager

RHS Resources Hosting, Health Monitoring

ClusAPI.dll

Quorum Replicated Store

Registry Group

Communication

NetFT.sys

IP Address Resource

Network Topology

NetName Resource

App Resource

Shared Volumes Manager

Page 8: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Resource

Represents an entity hosted by the cluster Could be process, service, script, disk, IP address,

file server, VM, etc. State machine Online on at most one node at a time

State transitions implemented in resource DLL Implemented by application developer according

to application semantics Uses cluster APIs to interact with cluster, app-

specific APIs to interact with the managed entity Cluster invokes resource DLL via published

resource API 8

Page 9: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

RHS

Resources == Applications Resource code is untrusted code Isolated process per application Optional multiple resources in same RHS

Loose coupling Created and maintained by RCM Communication with RCM via RPC

9

Page 10: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Failover Cluster Resource Model

10

Page 11: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Resource Group

Resource group is a collection of resources and their dependencies AND (&) dependency OR (|) dependency

11

Page 12: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Resource States

RCM maintains following 5 states for a resource: Online

The resource is fully functional

Offline The resource has been gracefully made non-functional

Failed The resource has failed and is non-functional

Online Pending The resource is in the process of coming online

Offline Pending The resource is in the process of going offline

12

Page 13: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Resource Group States

RCM maintains 4 states for a resource group: Online

All resources in the group are online

Offline All resources in the group are offline

Partial Online Some resources in the group are in an online state and

some are in an offline state but none of the resources are in a failed state

Failed One or more resources in the group are in a failed

state

13

Page 14: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

RCM Actions on Resources Move Causes a resource group to be hosted on another

node in the cluster when initiated by an operator Failover Causes a Resource Group to move to another

node in the cluster due to a failure of a Resource (or multiple Resources) in the Resource Group

Failback Causes the Resource Group to move back to the

original node in the cluster from which Failover was successfully performed, once the failure condition on original node has been remidied

14

Page 15: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Failover Cluster Resource DLL

State transitions implemented in resource DLL Cluster invokes resource DLL via published

resource API Open/Close: initialization/cleanup Online: start the resource Offline: stop the resource Terminate: stop the resource immediately IsAlive/LooksAlive: health check Control: like an ioctl, extensible mechanism for

configuration and app-specific operations

15

Page 16: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Startup & Function Table Exchange

DWORD WINAPI Startup( IN LPCWSTR ResourceType, IN DWORD MinVersionSupported, IN DWORD MaxVersionSupported, IN PCLRES_CALLBACK_FUNCTION_TABLE CallbackFunctions, OUT PCLRES_FUNCTION_TABLE *ResDllFunctions);

16

Page 17: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Startup & Function Table Exchange

CLRES_FUNCTION_TABLE { POPEN_ROUTINE Open; PCLOSE_ROUTINE Close; PONLINE_ROUTINE Online; POFFLINE_ROUTINE Offline; PTERMINATE_ROUTINE Terminate; PLOOKS_ALIVE_ROUTINE LooksAlive; PIS_ALIVE_ROUTINE IsAlive; PRESOURCE_CONTROL_ROUTINE ResourceControl; … };

17

Page 18: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Windows NFS Resource DLL Overview

18

Page 19: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Resource Group

19

Container for NFS application resources

Unit of NFS application failover

Boundary of resource dependencies Start/stop order App-specific

relationships AND/OR

Resource Group

NFS Resource

Network Name

IP Disk IP

& &

/ /

Page 20: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Resources in Failover Cluster

20

NFS Namespace1

ClusDisk.sys

User Mode

Kernel

Cluster Service

RCM

NFS Server

Physical Disk Resource

RHS

IP Address Resource

NetName Resource

NFS Resource

Physical Disk Resource

RHS

IP Address Resource

NetName Resource

NFS Resource

Physical Disk Resource

RHS

IP Address Resource

NetName Resource

NFS Resource

ClusDisk.sys

User Mode

Kernel

Cluster Service

RCM

NFS Server

Physical Disk Resource

RHS

IP Address Resource

NetName Resource

NFS Resource

Physical Disk Resource

RHS

IP Address Resource

NetName Resource

NFS Resource

Physical Disk Resource

RHS

IP Address Resource

NetName Resource

NFS Resource

Failover Cluster Node 1 Failover Cluster Node 2

Page 21: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Resource Online Sequence

21

Page 22: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Resource Online Sequence

22

Page 23: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Resource Offline Sequence

23

Page 24: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Resource Offline Sequence

24

Page 25: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Windows NFS Server Architecture for High Availability

25

Page 26: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Server – Virtual Server Manager

26

LIST_ENTRY DeferredEndpointList LIST_ENTRY AllEndpoints LIST_ENTRY VirtualServerList NFS_VIRTUAL_SERVER VirtualServer0 ULONG VirtualServer0Incarnation PNP_CONTEXT *PnpContext

NFS Virtual Server Manager

Container for NFS Driver “virtual” server instances Independent namespaces Independent network

endpoints IP address scoping for

namespace Singleton VirtualServer0 for

non-clustered resources As many additional virtual

servers as there are FC NFS resources

Page 27: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Server – Virtual Server

27

GUID Id ULONG Incarnation UNICODE_STRING VsName NFS_VS_STATE VsState LIST_ENTRY DelayedMsgList LIST_ENTRY EndpointList NFS_SHARE_CTX NfsNamespace

Unit of NFS Server failover

Virtual Server Contains: Collection of TCP

endpoints (one per IP Address)

Collection of NFS Shares (namespace)

Referenced volumes backing the NFS Shares

NFS_VIRTUAL_SERVER

Page 28: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Example of Virtual Server

28

Physical Server

Virtual Server 2 Virtual Server 1

/

Finance

dir1 dir2

Marketing

file3

/

IT

dir1 file2

Research

dir3

Page 29: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NLM & NSM

NLM protocol is stateful NSM protocol provides a notification mechanism

following client or server failure Recovery across server restart requires NFS Server

to provide two guarantees: NSM on NFS Server sends notifications to NFS

Clients about server reboot NFS Server enforces grace period to allow lock

reclaims by NFS Clients after server reboot

29

Page 30: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Windows NFS Server – NLM/NSM

One NLM lock file per volume Persistent lock record contains: Caller name – identifies the client host Lock file name, range, client address, protocol,

version and procedure Virtual server identifier

Windows Failover Cluster allows individual NFS resource to be taken offline or failed over to other nodes This requires NFS Server implement grace period

per virtual server 30

Page 31: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Windows NFS Virtual Server

Advantages of Windows NFS Virtual Servers NFS namespace scoping per netname Per-IP endpoint registration to facilitate source IP

on UDP reply packets Grace period scoped per virtual server

31

Page 32: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Server – IP Address Scoping

NFS Server registers for IP address PnP notifications from the operating system

When an IP address online notification is received, an LPC is performed to query Failover Cluster for the netname (and hence the NFS Virtual Server) that it should be scoped to

All unknown endpoints are put in a deferred list while waiting for the Failover Cluster resource group, NFS Resource DLL and the NFS Virtual Server to come online

32

Page 33: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Server – Virtual Server States

As soon as RUNNING state is entered, NFS/NLM Grace Period process is initiated

When in START PENDING state, RPC packets received are chained on a deferred list till RUNNING state transition is possible

In QUIESCENT state, RPC packets are dropped

33

Page 34: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Powershell & CIM Provider

34

Multiple ways to provision and manage NFS HA shares NFS PowerShell cmdlets NFS CIM (WMI) Provider API Windows Failover Cluster Manager or Server

manager UI

Page 35: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

NFS Powershell & CIM Provider

35

Powershell Cmdlet: Create a new NFS HA share

new-nfsshare –name <sharename> -networkname <scoped cluster network name> -path <share path>

CIM API in MSFT_NfsServerTasks: uint32 CreateShare([In]string Name, [In] string Path, [In] string NetworkName, [In] string Authentication[], … );

Page 36: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Windows NFS v4.1 Server

Scope and definition: Compliant with all mandatory aspects of RFC

5661 Highly available – Windows Failover Clustering Identity Mapping support

passwd/group file mapping Active Directory ADLDS or 3rd party LDAP stores (RFC 2307

compliant) User Name Mapping (legacy)

RPCSEC_GSS – support for Krb5, Krb5i and Krb5p

Multiprotocol access (SMB + NFS) to same share

Volume mount point support

Not currently implemented: ACL’s Delegations Migration & Replication pNFS RDMA Other optional aspects of

RFC 5661

36

Page 37: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Summary

Windows NFS Server when deployed in Failover Cluster provides reliable platform for server application workloads Tested with VMware ESX hypervisor vmdk

storage

37

Page 38: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

38

Questions?

Page 39: New NFS High Availability in Windows - SNIA · 2020. 10. 4. · Filter PORT MAP RPC XDR Winsock Kernel . Kernel Security Subsystem NFS Win32 Service . NFS Resource DLL . NFS CIM Provider

2011 Storage Developer Conference. © Microsoft Corporation. All Rights Reserved.

Thank You!

39