RFC 6688
Parallel NFS (pNFS) Block Disk Protection
Parallel NFS (pNFS) Block Disk Protection ๐
Okay bestie, this is RFC 6688 ๐ It's a Standards Track document from the IETF, dated July 2012, with ISSN 2070-1721. The main author and editor is D. Black, from EMC Corporation, with co-authors J. Glasgow (Google) and S. Faibish (EMC Corporation). It updates RFC 5663, which is the pNFS Block/Volume Layout spec. It doesn't obsolete anything. Full title block and all the official stuff are in the sections below, so nothing gets lost ๐ง
Abstract
okay so pNFS (Parallel NFS) extends NFSv4 so clients can talk straight to the file data on storage devices and skip the NFSv4 server entirely ๐ฆ That's a huge glow-up for performance and parallelism, but clients need extra functionality for it, and some of that depends on what kind of storage you're using. RFC 5663 explains how clients can figure out which volumes are used for pNFS, except that method means you have to talk to the NFSv4 server first ๐ This document updates RFC 5663 with a way to identify pNFS block storage devices without talking to the server. The payoff is that clients can control access to pNFS block devices right when they boot, instead of waiting until they can reach the NFSv4 server. Iconic โจ
Status of This Memo
This is an Internet Standards Track document. ๐
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc6688.
Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. ๐
Table of Contents
1. Introduction ....................................................3
2. Conventions Used in This Document ...............................4
3. GPT Partition Table Entry .......................................4
4. Security Considerations .........................................5
5. References ......................................................5
5.1. Normative References .......................................5
5.2. Informative References .....................................6
6. Acknowledgements.................................................6
1. Introduction โจ
Here's the overall architecture of a Parallel NFS (pNFS) system, in Figure 1 ๐ธ
+-----------+
|+-----------+ +-----------+
||+-----------+ | |
||| | NFSv4.1 + pNFS | |
+|| Clients |<------------------------------>| MDS |
+| | | |
+-----------+ | |
||| +-----------+
||| |
||| |
||| Storage +-----------+ |
||| Protocol |+-----------+ |
||+----------------||+-----------+ Control |
|+-----------------||| | Protocol |
+------------------+|| Storage |------------+
+| Devices |
+-----------+
Figure 1. pNFS Architecture
So in this doc, "storage device" is just the general term for a data server and/or storage server, for any pNFS layout type ๐ง The MetaData Server (MDS) is the NFSv4 server that hands out pNFS layouts to clients and handles metadata operations, like names and attributes.
Here's the tea ๐ซ For the pNFS block protocol in [RFC5663], a client identifying pNFS storage devices has to contact the MDS to get the device signature info. A pNFS client can't reliably identify pNFS block storage devices without contacting the MDS, because the signature's location and contents can vary between devices and servers. Both the location and the contents are decided by the MDS, not the client. Literally the whole problem in one sentence ๐ญ
Now the boot problem ๐ฅบ Normal OS boot scans and activates block devices (like Small Computer System Interface (SCSI) devices) before it activates the NFS client, pNFS stuff included. That creates a window of time where the client OS could modify a pNFS block device without ever contacting the server. For example, it might try to mount or initialize a local physical filesystem on it. This document specifies an identification mechanism for pNFS block storage devices that an OS can use to close that window of vulnerability ๐ฅ
Next, SAN storage systems. Lots of them have quasi-static access control mechanisms, like Logical Unit Number (LUN) mapping and/or masking, that work at the granularity of individual hosts. Could you use those to close the window, like only letting a client touch pNFS block devices after it's contacted the responsible MDS? Technically yes, but it's undesirable and potentially problematic ๐ Those controls are quasi-static: they're usually configured once to let a client access the block pNFS storage devices, and they aren't reconfigured dynamically, like after crashes and reboots. Block storage access controls can change to deal with unusual circumstances, like fencing (removing access from) an uncooperative pNFS client. But they shouldn't be part of routine client operations, like a reboot. So a different mechanism is needed ๐
Finally, the fix. This document specifies an entry in the GUID (Globally Unique Identifier) partition table (GPT) that a pNFS server can use to label pNFS storage devices. The entry is meant for shared pNFS storage devices that pNFS clients and servers can reach, and that other hosts or systems might be able to reach too. It lets pNFS clients, plus those other hosts and systems, avoid touching pNFS storage devices any way other than pNFS ๐ฆ
2. Conventions Used in This Document ๐
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
3. GPT Partition Table Entry ๐
This is the main mechanism. It lets pNFS clients identify pNFS block storage devices without contacting the server ๐
- Each block storage device dedicated to pNFS includes a GUID partition table (GPT) [GPT].
- The pNFS block storage partitions are identified in the GPT with GUID
e5b72a69-23e5-4b4d-b176-16532674fc34, which has been generated for this purpose. GPT GUID usage is well understood and implemented. This document provides a definition for this GUID and its usage. There's no central registration mechanism for GPT GUIDs, or GUIDs in general, by design; see [RFC4122].
This mechanism lets an operating system stop non-pNFS access to pNFS block storage right away, as soon as it boots ๐ง Servers that support pNFS block layouts SHOULD use the GPT and this GUID for all pNFS block storage devices.
A pNFS client OS that supports block layouts SHOULD recognize this GUID and SHOULD use its presence to block data access to pNFS block devices until it receives a layout that includes the device from the MDS. That's the whole "wait for the MDS" vibe ๐
Data on pNFS block layout storage devices gets extra protection when other hosts and systems that don't support pNFS block layouts check for this GUID too. If pNFS block storage devices get presented to those systems by mistake, checking for this GUID can stop writes that would otherwise corrupt stored pNFS data. Protect the data, periodt ๐ซถ
Many current operating system versions support the GPT [GPT-W] โญ
4. Security Considerations ๐
The pNFS block layout security considerations in [RFC5663] apply to this document.
The security considerations in [RFC4122] apply to the GUID specified in this document.
5. References ๐
5.1. Normative References
[GPT] Unified EFI Forum, "Unified Extensible Firmware Interface
Specification", Version 2.3.1, Errata A, Section 5.3,
September 2011, available from http://www.uefi.org.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC5663] Black, D., Fridella, S., and J. Glasgow, "Parallel NFS
(pNFS) Block/Volume Layout", RFC 5663, January 2010.
5.2. Informative References
[GPT-W] Wikipedia, "GUID Partition Table", July 2012,
http://en.wikipedia.org/w/
index.php?title=GUID_Partition_Table&oldid=502098731.
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
Unique IDentifier (UUID) URN Namespace", RFC 4122, July
2005.
6. Acknowledgements ๐ซถ
This document was produced by the IETF NFSv4 Working Group. Review comments from working group members made it better, and the authors are super grateful ๐ They also want to thank Tom Talpey and members of the IESG for helpful comments, and Alex Burlyga for finding an appropriate reference for the format of the GPT.
Authors' Addresses ๐ฎ
David L. Black (editor)
EMC Corporation
176 South Street
Hopkinton, MA 01748
USA
Phone: +1 (508) 293-7953
EMail: david.black@emc.com
Jason Glasgow
Google
5 Cambridge Center, Floors 3-6
Cambridge, MA 02142
USA
Phone: +1 (617) 575-1599
EMail: jglasgow@google.com
Sorin Faibish
EMC Corporation
228 South Street
Hopkinton, MA 01748
USA
Phone: +1 (508) 305-8545
EMail: sfaibish@emc.com
๐ฆ where this page comes from
- ietf: rfc6688 2012-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms