병렬 파일 시스템 (PFS)
개요
병렬 파일 시스템(PFS)은 여러 가상머신이 동시에 같은 파일을 읽고 쓸 수 있는 고성능 공유 스토리지입니다. VAST NFS 기반으로 제공되며, 멀티노드 분산 학습의 체크포인트·로그 공유에 사용합니다.
PFS vs 오브젝트 스토리지
PFS는 POSIX 파일시스템이므로 기존 코드 수정 없이 사용할 수 있습니다. 오브젝트 스토리지는 API 호출이 필요합니다.
사전 준비
- 좌측 메뉴 병렬 파일 시스템 페이지에서 병렬 파일 시스템 생성 버튼으로 PFS를 만듭니다.
- 생성한 PFS 상세 페이지에서 가상머신 추가를 눌러 가상머신을 멤버로 등록합니다: 클러스터에서 추가 또는 개별 가상머신 추가 두 가지 방식을 지원합니다.
- PFS 상세 페이지의 일반 정보에서 다음 항목을 확인합니다.
| 항목 | 설명 | 예시 |
|---|---|---|
| VIP 주소 | PFS 서버 접근 IP 대역 (vip_pools) | 10.121.255.247–10.121.255.254 |
| 가상함수 IP (VF IP) | 멤버 가상머신의 전용 접근 IP | 10.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.yaml에 bond.xxxx 인터페이스가 남아 있다면:
50-cloud-init.yaml에서 첫 번째 인터페이스(기본 NIC)만 남기고 나머지 삭제ip link del bond.xxxx로 불필요한 bond 인터페이스 제거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-*