メインコンテンツまでスキップ

병렬 파일 시스템 (PFS)

개요

병렬 파일 시스템(PFS)은 여러 가상머신이 동시에 같은 파일을 읽고 쓸 수 있는 고성능 공유 스토리지입니다. VAST NFS 기반으로 제공되며, 멀티노드 분산 학습의 체크포인트·로그 공유에 사용합니다.

PFS vs 오브젝트 스토리지

PFS는 POSIX 파일시스템이므로 기존 코드 수정 없이 사용할 수 있습니다. 오브젝트 스토리지는 API 호출이 필요합니다.


사전 준비

  1. 좌측 메뉴 병렬 파일 시스템 페이지에서 병렬 파일 시스템 생성 버튼으로 PFS를 만듭니다.
  2. 생성한 PFS 상세 페이지에서 가상머신 추가를 눌러 가상머신을 멤버로 등록합니다: 클러스터에서 추가 또는 개별 가상머신 추가 두 가지 방식을 지원합니다.
  3. PFS 상세 페이지의 일반 정보에서 다음 항목을 확인합니다.
항목설명예시
VIP 주소PFS 서버 접근 IP 대역 (vip_pools)10.121.255.247–10.121.255.254
가상함수 IP (VF IP)멤버 가상머신의 전용 접근 IP10.121.0.1/16, 10.121.0.2/16
PFS 멤버인 가상머신은 삭제·수정이 제한됩니다

PFS에 연결된 가상머신은 직접 삭제하거나 일부 항목을 수정할 수 없습니다 (parallelFileSystemMemberExist 에러). 먼저 PFS 상세 페이지에서 멤버에서 제거한 뒤 가상머신을 삭제하세요.


1단계: 전용 네트워크 설정

PFS에 연결된 가상머신에는 전용 네트워크 인터페이스가 추가로 제공됩니다.

인터페이스 확인

ip a

IP가 없는 enp* 형태 인터페이스 2개를 찾습니다. (ib*는 InfiniBand이므로 제외)

3: enp0s12: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN ...
4: enp0s13: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN ...

Bonding 설정

두 인터페이스를 본딩(Bonding)으로 묶어 링크 장애에 대비합니다. VF IP 중 첫 번째 IP를 사용합니다.

sudo tee /etc/netplan/60-pfs-net.yaml >/dev/null <<'EOF'
network:
version: 2
ethernets:
enp0s12:
mtu: 8950
enp0s13:
mtu: 8950
bonds:
bond.pfs:
addresses:
- "10.121.0.1/16" # 자신의 VF IP 첫 번째로 변경
interfaces:
- enp0s12
- enp0s13
parameters:
mode: balance-rr
mii-monitor-interval: 100
mtu: 8950
EOF

sudo chmod 600 /etc/netplan/60-pfs-net.yaml
sudo netplan apply
가상머신 최초 실행 전에 PFS를 추가한 경우

네트워크 설정이 잘못 생성될 수 있습니다. /etc/netplan/50-cloud-init.yamlbond.xxxx 인터페이스가 남아 있다면:

  1. 50-cloud-init.yaml에서 첫 번째 인터페이스(기본 NIC)만 남기고 나머지 삭제
  2. ip link del bond.xxxx로 불필요한 bond 인터페이스 제거
  3. netplan apply 재실행

2단계: vastnfs 드라이버 설치

설치 확인

vastnfs-ctl status

정상 출력되면 3단계로 바로 이동합니다.

드라이버 설치

sudo apt remove -y --purge vastnfs-modules

VASTNFS_VERSION="4.0.37"
cd /tmp
wget https://vastnfs.vastdata.com/version/$VASTNFS_VERSION/source/vastnfs-$VASTNFS_VERSION.tar.xz
tar -xf vastnfs-$VASTNFS_VERSION.tar.xz
cd vastnfs-$VASTNFS_VERSION
sudo ./build.sh bin
sudo apt install -y ./dist/vastnfs-*.deb
sudo update-initramfs -u -k $(uname -r)
sudo vastnfs-ctl reload

cd /tmp && sudo rm -rf /tmp/vastnfs-*

3단계: 마운트

VIP 주소 개수를 nconnectremoteports에 맞게 설정합니다.

sudo tee /etc/systemd/system/mnt-pfs.mount >/dev/null <<'EOF'
[Unit]
Description=Mount VAST NFS PFS
After=network-online.target
Wants=network-online.target

[Mount]
What=10.121.255.247:/ # VIP 첫 번째 주소
Where=/mnt/pfs
Type=nfs
Options=vers=3,nconnect=8,noatime,remoteports=10.121.255.247-10.121.255.254,_netdev

[Install]
WantedBy=multi-user.target
EOF

sudo mkdir -p /mnt/pfs
sudo systemctl daemon-reload
sudo systemctl enable --now mnt-pfs.mount

마운트 확인

df -h | grep pfs
# /mnt/pfs 가 출력되면 정상

다음 단계