← Documents Documentation/admin-guide/nfs/pnfs-block-server.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / NFS

pNFS block layout server user guide

Linux NFS server의 pNFS block MDS 역할, XFS·shared storage 요구 사항과 client fencing hook을 설명합니다.

Source pathDocumentation/admin-guide/nfs/pnfs-block-server.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

운영 핵심

pnfs-block-server.rst:1-42

Client가 shared block device를 직접 사용하도록 MDS가 layout을 배포하며, 응답 없는 client는 recall failure hook으로 fence합니다.

관점핵심
ServerLinux NFS server가 pNFS Metadata Server (MDS) 역할
지원 filesystem현재 XFS
StorageClient와 공유하는 block device, 일반적으로 iSCSI
제약Export volume 위에 filesystem을 직접 배치
Fencing`/sbin/nfsd-recall-failed` hook과 `SCSI EVPD 0x80`

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ===================================
2 pNFS block layout server user guide
3 ===================================
4
5 The Linux NFS server now supports the pNFS block layout extension. In this
6 case the NFS server acts as Metadata Server (MDS) for pNFS, which in addition
7 to handling all the metadata access to the NFS export also hands out layouts
8 to the clients to directly access the underlying block devices that are
9 shared with the client.
10
11 To use pNFS block layouts with the Linux NFS server the exported file
12 system needs to support the pNFS block layouts (currently just XFS), and the
13 file system must sit on shared storage (typically iSCSI) that is accessible
14 to the clients in addition to the MDS. As of now the file system needs to
15 sit directly on the exported volume, striping or concatenation of
16 volumes on the MDS and clients is not supported yet.
17
18 On the server, pNFS block volume support is automatically if the file system
19 support it. On the client make sure the kernel has the CONFIG_PNFS_BLOCK
20 option enabled, the blkmapd daemon from nfs-utils is running, and the
21 file system is mounted using the NFSv4.1 protocol version (mount -o vers=4.1).
22
23 If the nfsd server needs to fence a non-responding client it calls
24 /sbin/nfsd-recall-failed with the first argument set to the IP address of
25 the client, and the second argument set to the device node without the /dev
26 prefix for the file system to be fenced. Below is an example file that shows
27 how to translate the device into a serial number from SCSI EVPD 0x80::
28
29 cat > /sbin/nfsd-recall-failed << EOF
30
31 .. code-block:: sh
32
33 #!/bin/sh
34
35 CLIENT="$1"
36 DEV="/dev/$2"
37 EVPD=`sg_inq --page=0x80 ${DEV} | \
38 grep "Unit serial number:" | \
39 awk -F ': ' '{print $2}'`
40
41 echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log
42 EOF
43

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

pNFS block layout과 MDS

1-9

`pNFS block layout server user guide`는 Linux NFS server의 pNFS block layout extension 지원을 설명합니다.

NFS server는 pNFS의 Metadata Server (MDS)로 동작합니다. NFS export의 모든 metadata access를 처리하는 동시에 client에 layout을 전달해, client와 공유된 underlying block device에 직접 접근하게 합니다.

Server·client 요구 사항

10-21
관점요구 사항
MDS 역할Metadata access 처리와 client에 block layout 배포
Filesystem현재 pNFS block layout을 지원하는 XFS
StorageMDS와 client가 함께 접근하는 shared storage, 일반적으로 iSCSI
Client`CONFIG_PNFS_BLOCK`, nfs-utils의 `blkmapd`, `mount -o vers=4.1`

Exported filesystem은 pNFS block layout을 지원해야 하며 현재는 XFS만 해당합니다. Filesystem은 MDS뿐 아니라 client도 접근할 수 있는 shared storage, 보통 iSCSI 위에 있어야 합니다.

현재 filesystem은 exported volume에 직접 놓여야 하며 MDS와 client에서 volume striping 또는 concatenation은 아직 지원되지 않습니다.

Server의 pNFS block volume support는 filesystem이 지원하면 자동으로 활성화됩니다. Client kernel에는 `CONFIG_PNFS_BLOCK`이 켜져 있어야 하고 nfs-utils의 `blkmapd` daemon이 실행 중이어야 하며, filesystem을 NFSv4.1로 `mount -o vers=4.1` 해야 합니다.

응답하지 않는 client fencing

22-42

nfsd server가 응답하지 않는 client를 fence해야 하면 `/sbin/nfsd-recall-failed`를 호출합니다. 첫 argument는 client IP address이고 둘째는 filesystem을 fence할 device node에서 `/dev` prefix를 뺀 값입니다.

Argument
`$1`Client IP address
`$2``/dev` prefix 없는 device node

다음 예시는 `SCSI EVPD 0x80`에서 device를 serial number로 변환하는 file을 만듭니다.

cat > /sbin/nfsd-recall-failed << EOF
#!/bin/sh

CLIENT="$1"
DEV="/dev/$2"
EVPD=`sg_inq --page=0x80 ${DEV} | \
        grep "Unit serial number:" | \
        awk -F ': ' '{print $2}'`

echo "fencing client ${CLIENT} serial ${EVPD}" >> /var/log/pnfsd-fence.log
EOF