본문으로 건너뛰기

병렬 파일 시스템 설정 가이드

ECI에서 병렬 파일 시스템을 VAST 로 제공 받을 때 가상 머신에서 병렬 파일 시스템을 마운트하는 방법을 안내합니다.

사전 작업 및 정보 확인

  1. ECI 포탈에서 병렬 파일 시스템을 생성합니다.
  2. 생성한 병렬 파일 시스템에 가상 머신을 추가합니다.
  3. 가상 머신을 실행합니다.

병렬 파일 시스템 생성

위와 같이 병렬파일 시스템 설정 시 상세 정보 중 다음 항목을 확인합니다.

VIP 주소 (Virtual IP)

  • 병렬 파일 시스템 서버에 접근하기 위한 IP 대역
  • 일반적으로 1~8개의 연속된 IP 제공
  • 예시: 10.121.255.247-10.121.255.254

가상 함수 IP (VF IP)

  • VM이 병렬 파일 시스템에 접근할 때 사용하는 전용 IP
  • 보통 1~2개의 연속된 IP 제공
  • 예시: vm-000의 가상함수 IP는 10.121.0.1/16, 10.121.0.2/16

1 단계 : 병렬 파일 시스템 전용 네트워크 설정

병렬 파일 시스템에 추가된 가상 머신에는 병렬 파일 시스템과 통신하기 위한 전용 네트워크 인터페이스가 별도로 제공됩니다.

해당 전용 네트워크 인터페이스는 최상의 I/O 성능을 보장하기 위해 서버의 물리 네트워크 인터페이스가 Passthrough 형태로 제공되며,
일반적으로 링크 장애에 대비하여 두 개의 인터페이스가 함께 제공됩니다.

1-1. 전용 네트워크 인터페이스 확인

ip a으로 전용 네트워크 인터페이스 조회가 가능하고, 다음 기준으로 확인합니다.

  • 기본 IP 주소가 설정되어 있지 않은 인터페이스
  • 일반적으로 인터페이스 이름은 enp* 형태
  • ⚠️ ib* 로 시작하는 인터페이스는 InfiniBand(IPoIB) 이므로 대상이 아님
  • 아래 예시 전용 네트워크 인터페이스 : enp0s12, enp0s13
user@vm-000:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8950 qdisc fq_codel state UP group default qlen 1000
link/ether 02:00:98:4f:16:f3 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.21/24 brd 192.168.0.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::98ff:fe4f:16f3/64 scope link
valid_lft forever preferred_lft forever

3: enp0s12: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 04:32:01:3e:c0:60 brd ff:ff:ff:ff:ff:ff

4: enp0s13: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 04:32:01:3e:c0:61 brd ff:ff:ff:ff:ff:ff

5: ibp5s0: <BROADCAST,MULTICAST> mtu 4092 qdisc noop state DOWN group default qlen 1000
link/infiniband 00:00:10:48:fe:80:00:00:00:00:00:00:7c:8c:09:03:00:b6:b2:ea \
brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff

1-2. Bonding 인터페이스 생성

아래와 같이 본딩(Bonding) 인터페이스를 생성하여 링크 장애가 발생하더라도 병렬 파일 시스템 사용에 문제가 없도록 설정합니다.

  • 본딩 인터페이스에 포함할 네트워크 인터페이스 이름은 앞 단계에서 확인한 enp0s12, enp0s13 을 지정합니다.
  • 본딩 인터페이스에는 가상 머신에 할당된 가상 함수 IP(VF IP) 를 설정합니다.
    가상 함수 IP가 여러 개 할당된 경우, 첫 번째 IP를 사용합니다.
  • 아래 예시에서 vm-000 가상 머신 기준으로 가상 함수 IP는 10.121.0.1/16, 10.121.0.2/16 가 할당되어 있으며,
    이 중 첫 번째 IP인 10.121.0.1/16 를 본딩 인터페이스에 사용합니다.
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"
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

⚠️ 전용 네트워크 설정 시 주의사항 (bond 인터페이스 관련)

현재 ECI 가상 머신 초기화 과정의 제약으로 인해, 가상 머신을 최초 실행하기 이전에 병렬 파일 시스템에 VM이 추가된 경우
네트워크 설정이 잘못 생성되는 사례가 간헐적으로 발생할 수 있습니다.

예시 1. ens3, ens4 인터페이스가 생성되지 않은 경우

  • 실제로 ens3ens4 가 MAC 주소의 불일치로 생성되지 않음
  • 이로 인해 bond.xxxx 인터페이스가 생성되지 않음
user@test-vm:/home/user# sudo cat /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
ens1:
match:
macaddress: "02:00:2a:33:ce:53"
addresses:
- "192.168.0.21/24"
nameservers:
addresses:
- 103.156.22.253
- 1.1.1.1
mtu: 8950
routes:
- to: "default"
via: "192.168.0.1"

ens3:
match:
macaddress: "12:22:1e:11:d2:2c"
mtu: 8950

ens4:
match:
macaddress: "a6:d1:c1:d7:d0:cb"
mtu: 8950

bonds:
bond.2560:
addresses:
- "10.121.0.51/16"
interfaces:
- ens3
- ens4
parameters:
mode: "balance-rr"
mii-monitor-interval: "100"

조치 방법

  • /etc/netplan/50-cloud-init.yaml 파일을 엽니다.
  • 첫 번째 인터페이스(예: ens1)를 제외한 항목을 제거 후 netplan을 적용합니다.
user@test-vm:/home/user# sudo cat /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
ens1:
match:
macaddress: "02:00:2a:33:ce:53"
addresses:
- "192.168.0.21/24"
nameservers:
addresses:
- 103.156.22.253
- 1.1.1.1
mtu: 8950
routes:
- to: "default"
via: "192.168.0.1"
user@test-vm:/home/user# netplan apply

예시 2. 불필요한 bond.xxxx 인터페이스가 남아 있는 경우

  • ip a 출력 결과에 bond.pfs 외의 bond.xxxx 인터페이스가 존재함
  • 해당 인터페이스로 인해 PFS 네트워크 통신이 정상 동작하지 않을 수 있음

조치 방법

  • bond.pfs 를 제외한 bond.xxxx 형태의 인터페이스를 제거합니다. (※ xxxx 는 숫자)
user@test-vm:/home/user# netplan apply

root@tl-vm-018:/home/trillion-techstaff# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8950 qdisc fq_codel state UP group default qlen 1000
link/ether 02:00:2a:33:ce:53 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.21/24 brd 192.168.0.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::2aff:fe33:ce53/64 scope link
valid_lft forever preferred_lft forever

13: bond.2560: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 42:fd:e6:76:ee:b3 brd ff:ff:ff:ff:ff:ff
inet 10.121.0.51/16 brd 10.121.255.255 scope global bond.2560
valid_lft forever preferred_lft forever

user@test-vm:/home/user# ip link del bond.2560

2 단계 : vastnfs 드라이버 설치

병렬 파일 시스템(VAST)은 vastnfs 드라이버를 사용합니다.

2-1. vastnfs 드라이버 상태 확인

  • 명령어가 정상적으로 실행되고 상태가 정상인 경우, 3 단계로 진행합니다.
  • 명령어가 정상적으로 동작하지 않은 경우, 2-3을 진행합니다.
  • vastnfs 드라이버는 설치되어 있으나 상태가 비정상인 경우, 2-2를 확인합니다.
vastnfs-ctl status

2-2. 기존 설치 여부 확인

  • 이미 vastnfs 드라이버가 설치되어있다면 생략 가능합니다.
  • vastnfs 드라이버가 정상 설치되어있는지 확인하는 방법은 다음과 같습니다.
  • 두 명령어에서 출력되는 값이 동일해야 합니다 (값 자체는 아래의 예시와 다를 수 있습니다)
cat /sys/module/sunrpc/srcversion
4CC8389C7889F82F5A59269

modinfo sunrpc | grep srcversion
srcversion: 4CC8389C7889F82F5A59269

2-3. vastnfs 드라이버 설치 (필요 시)

  • vastnfs 드라이버가 설치되어 있지 않거나, 커널 버전의 차이 등으로 로드에 실패한 상황이라면 다음과 같이 설치합니다.
# 버전 충돌을 방지하기 위해 기존에 설치된 버전을 제거합니다.
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

# vastnfs 드라이버를 빌드합니다.
tar -xf vastnfs-$VASTNFS_VERSION.tar.xz
cd vastnfs-$VASTNFS_VERSION
sudo ./build.sh bin

# vastnfs 드라이버를 설치합니다
sudo apt install -y ./dist/vastnfs-*_all.deb
sudo update-initramfs -u -k $(uname -r)
sudo vastnfs-ctl reload

# 설치에 사용된 파일들을 제거합니다.
cd /tmp
rm -rf /tmp/vastnfs-*

3 단계 : 병렬 파일 시스템 마운트

병렬 파일 시스템을 /mnt/parallel_storage 경로에 마운트하는 것을 기준으로 안내합니다.

3-1. systemd mount 파일 생성

  • What= 에는 VIP 주소 중 첫 번째 주소인 10.121.255.247 을 사용합니다
  • Options= 에는 VIP 주소가 8 개로 이루어져 있으므로 nconnect=8 옵션을,
    그리고 전체 VIP 주소를 remoteports=10.121.255.247-10.121.255.254 로 설정해줍니다
sudo tee /etc/systemd/system/mnt-parallel_storage.mount >/dev/null <<'EOF'
[Unit]
Description=Mount VAST NFS to /mnt/parallel_storage
After=network-online.target
Wants=network-online.target

[Mount]
What=10.121.255.223:/
Where=/mnt/parallel_storage
Type=nfs
Options=vers=3,nconnect=8,noatime,remoteports=10.121.255.223-10.121.255.230,_netdev

[Install]
WantedBy=multi-user.target
EOF

3-2. 마운트 디렉토리 생성 및 적용

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

3-3. 마운트 확인

  • df출력 결과에서 /mnt/parallel_storage 가 표시되면 병렬 파일 시스템 마운트가 정상적으로 완료된 상태입니다.