1. Teaming
Teaming이란
여러 네트워크 카드를 하나로 묶는 기술이다. 앞서 본 Bonding의 후속/개선 버전이다. 목적은 같다: 성능 향상 + 이중화(무중단).
- 묶은 결과물을 team 인터페이스(예: team0)라고 부른다
- 실제 카드들(ens37, ens38 등)은 team0에 소속됨
- 카드 하나 죽어도 team0은 계속 살아있음 → 무중단
Bonding(bond0)의 요즘 버전이 Teaming(team0)이다. 더 유연하고 관리가 편하다. 개념은 똑같이 카드 여러 개 = 하나처럼
구조
team0 (묶음)
├─ ens37 (실제 카드1)
└─ ens38 (실제 카드2)
- team0에 IP를 주고
- ens37, ens38은 team0의 구성원(port)으로
- 하나 끊겨도 다른 하나가 이어받음
주요 모드 (runner)
Teaming은 모드를 runner라고 부른다.
| activebackup | 하나 쓰고 나머지 대기 (이중화) |
| roundrobin | 번갈아 전송 (성능) |
| loadbalance | 부하 분산 |
| lacp | 스위치 협상 표준 |
앞서 본딩 모드랑 같다. 제일 흔한 건 activebackup(이중화)
설정 흐름 (nmcli)
# 1. team 인터페이스 생성 (activebackup 모드)
nmcli con add type team con-name team0 ifname team0 \
config '{"runner":{"name":"activebackup"}}'
# 2. team0에 IP 설정
nmcli con mod team0 ipv4.addresses 192.168.120.150/24
nmcli con mod team0 ipv4.method manual
# 3. 실제 카드들을 team0에 소속시키기
nmcli con add type ethernet con-name team0-p1 ifname ens37 master team0
nmcli con add type ethernet con-name team0-p2 ifname ens38 master team0
# 4. 활성화
nmcli con up team0
- type team : team 인터페이스 생성
- runner: activebackup : 이중화 모드
- master team0 : 이 카드를 team0에 소속
2. NFS (Network File System)
NFS란
네트워크를 통해 다른 컴퓨터의 디렉토리를 내 것처럼 마운트해서 쓰는 기술이다. 리눅스/유닉스 서버끼리 파일을 공유하는 표준 방식이다. 서버의 폴더를 → 네트워크 너머 클라이언트가 → 자기 폴더처럼 마운트해서 사용.
앞서 배운 마운트는 디스크를 폴더에 연결했다. NFS는 그걸 네트워크로 확장한 거다. 네트워크 건너편 폴더를 내 폴더에 연결한다.

구조
NFS 서버 (파일 제공) NFS 클라이언트 (파일 사용)
/share 폴더 공개 ──네트워크──→ /mnt/nfs에 마운트
→ /mnt/nfs 열면 서버의 /share가 보임
- 서버: 폴더를 네트워크에 공개(export)
- 클라이언트: 그 폴더를 마운트해서 사용
- 클라이언트가 /mnt/nfs에 파일을 쓰면 → 실제론 서버에 저장됨
장점
- 여러 서버가 같은 파일을 공유 (예: 공용 문서, 소스코드)
- 중앙 서버에 데이터를 모아 일괄 관리/백업
- 각 서버에 데이터를 복사할 필요 없음
.
NFS 서버 구축
1) NFS 설치
yum install -y nfs-utils
nfs-utils 패키지를 설치하면 관련 도구들(rpcbind, gssproxy 등)이 의존성으로 함께 깔린다. 앞서 배운 dnf/yum의 의존성 자동 처리다.

2) /etc/exports 설정
vi /etc/exports
공유 규칙을 적는다:
/share *(rw)
| /share | 공유할 폴더 |
| * | 모든 클라이언트 허용 |
| (rw) | 읽기·쓰기 권한 |
*는 "누구나 접근 가능"이다. 실무에선 보안상 특정 IP/대역으로 제한하지만, 실습에선 *로 열어두는 경우가 많다.

/etc/exports 작성법 (man exports 예시)
누구에게 어떤 권한을 줄지 다양하게 지정하는 법이다.
공유폴더 클라이언트(옵션)
/ master(rw,no_root_squash)
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
/pub *(ro,insecure,all_squash)
클라이언트 지정 방법
| master | 특정 호스트 이름 |
| proj*.local.domain | 와일드카드 (proj로 시작하는 호스트들) |
| *.local.domain | 그 도메인 전체 |
| @trusted | 넷그룹 (그룹으로 묶은 것) |
| 192.0.2.0/24 | IP 대역 |
| * | 전부 |
주요 옵션
| rw | 읽기·쓰기 |
| ro | 읽기 전용 |
| sync | 즉시 디스크 기록 (안전) |
| no_root_squash | 클라이언트 root를 서버 root로 인정 |
| all_squash | 모든 사용자를 익명으로 강등 |
| anonuid/anongid | 익명 사용자의 UID/GID 지정 |
3) 공유 폴더 생성
mkdir -m 1777 /share
- -m 1777 : 권한을 1777로 설정하며 폴더 생성
- 1777 = 앞 1은 sticky bit, 777은 모두 읽기·쓰기·실행
sticky bit(맨 앞 1)가 중요하다. 여러 사람이 쓰는 공유 폴더에서 자기가 만든 파일만 지울 수 있게 막는다. /tmp가 이 권한을 쓴다. 공유 폴더라 아무나 남의 파일 못 지우게 하는 거다.
이후 systemctl enable --now nfs-server 명령어를 실행해준다.

4) 설정 적용
exportfs -ra
- -r : /etc/exports 다시 읽기 (reload)
- -a : 전부 적용 (all)
설정 파일 바꾼 뒤 반영하는 명령이다.
5) 공유 확인
exportfs
/share <world>
<world>가 나오는 건 *로 설정해서 전 세계 누구나 접근 가능하다는 뜻이다. (world = 모두)

+ root_squash
이게 NFS 보안의 핵심이라 짚어둔다.
- root_squash (기본값) : 클라이언트의 root를 익명(nobody)으로 강등한다. 클라이언트 root가 서버 파일을 맘대로 못 건드리게 막는 보안 장치
- no_root_squash : root를 그대로 인정 (위험, 신뢰하는 곳에만)
- all_squash : root뿐 아니라 모든 사용자를 익명으로 강등
"squash"는 짓누른다는 뜻이다. root 권한을 짓눌러서(강등해서) 보안을 지킨다. 함부로 no_root_squash를 주면 클라이언트에서 서버를 장악할 수 있어서 위험하다.
한 폴더에 여러 규칙
/usr *.local.domain(ro) @trusted(rw)
한 줄에 여러 대상을 공백으로 구분해서 다른 권한을 줄 수 있다.
- *.local.domain에겐 읽기전용(ro)
- @trusted 그룹에겐 읽기쓰기(rw)
전체 서버 구축 흐름
# 1. 설치
yum install -y nfs-utils
# 2. 공유 규칙 작성
vi /etc/exports
# /share *(rw)
# 3. 공유 폴더 생성 (sticky bit)
mkdir -m 1777 /share
# 4. 설정 적용
exportfs -ra
# 5. 확인
exportfs
# 6. 서비스 시작
systemctl start nfs-server
systemctl enable nfs-server
NFS Client 구축
1) 설치 (클라이언트도 nfs-utils)
yum install -y nfs-utils
서버와 같은 패키지다. 클라이언트도 이게 있어야 NFS를 마운트할 수 있다.
2) 서버가 뭘 공유하나 확인 (showmount)
showmount -e localhost
Export list for localhost:
/share *
- showmount -e 서버 : 그 서버가 공유(export)하는 목록 확인
- /share * : /share를 모두(*)에게 공유 중이라는 뜻
여기선 localhost로 확인했는데(서버=클라이언트가 같은 머신인 실습), 실제로는 showmount -e 서버IP로 원격 서버를 확인한다. 마운트 전에 "서버가 진짜 공유하나" 먼저 보는 습관.
3) 마운트
mkdir /nfs
mount -t nfs localhost:/share /nfs
- mkdir /nfs : 마운트할 빈 폴더 생성
- mount -t nfs 서버:/share /nfs : 서버의 /share를 /nfs에 연결
앞서 배운 마운트 과정 그대로다. 차이는 -t nfs(NFS 타입)와 서버:/폴더(원격 지정).
4) 확인 (df)
df -h /nfs
Filesystem Size Used Avail Use% Mounted on
localhost:/share 17G 2.2G 15G 13% /nfs
localhost:/share가 /nfs에 마운트된 게 보인다. 성공이다. 이제 /nfs에 파일을 쓰면 서버의 /share에 저장된다.
⚠️ 방화벽 열어주기
(mount s1:/ /mnt 후 ^C로 중단). 이게 바로 방화벽 문제다. NFS는 여러 포트를 쓴다. 서버 방화벽이 이 포트들을 막으면, 클라이언트가 접속을 시도해도 응답이 없어서 멈춘다(hang). Image 2처럼 마운트 명령이 안 끝나고 대기하는 게 그 증상이다.
서버에서 방화벽 열기
# NFS 서버(로키/s1)에서
firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --reload
NFS는 3개 서비스(nfs, rpc-bind, mountd)를 함께 열어야 한다. 이 셋이 세트다.
| nfs | 파일 전송 (2049 포트) |
| rpc-bind | 포트 연결 중개 |
| mountd | 마운트 요청 처리 |
firewall-cmd --list-services
# → nfs rpc-bind mountd 나오면 OK



'{Bootcamp} > KT Cloud Tech up 클라우드 인프라' 카테고리의 다른 글
| [kt cloud] 도커 실습 (2) (0) | 2026.09.16 |
|---|---|
| [kt cloud] 도커 실습 (1) (0) | 2026.09.15 |
| [kt cloud] 리눅스 관리자 실습 (5) (0) | 2026.09.10 |
| [KT Cloud] 리눅스 관리자 실습 (4) (0) | 2026.09.09 |
| [KT Cloud] 리눅스 관리자 실습 (3) (0) | 2026.09.08 |