1. Storage 연결 방식
- DAS: 스토리지 장치와 시스템을 서로 케이블을 이용해서 직접적으로 연결하는 형태
: 거리 / 공간, 일대일 연결방식이어서 한계가 있음
- NAS: 네트워크를 사용해서 스토리지와 시스템을 연결
: 서버쪽에서 사용 가능한 형태로 포멧 (파일시스템 생성)한 후 해당 스토리지 장치의 일부분 (디렉토리/파일)을 저장 또는 공유
- SAN: 네트워크를 사용해서 스토리지와 시스템 연결 (스토리지 전용 별도의 네트워크 사용)
: 스토리지를 통째로 (포멧하지 않고) 제공
DAS | NAS | SAN | ||
FC-SAN | IP-SAN | |||
구성요소 | 서버시스템 스토리지 | 파일서버 스토리지 + 일반서버시스템 |
서버시스템 스토리지 | 서버시스템 스토리지 |
접속장치 | 없음 | 이더넷스위치 | FC스위치, HBA | 이더넷스위치 |
파일시스템 | 클라이언트에서 직접 설정 | 파일서버에서 공유 | 클라이언트에서 직접 설정 | 클라이언트에서 직접 설정 |
2. NFS (Network File System)
1) 소개
- 네트워크를 이용해서 파일/디렉토리를 공유해주는 Unix/Linux 계열의 표준 프로토콜
- 가상화 또는 클라우드 서비스에서 가성머신의 스토리지를 공유할 때 자주 사용
- 공유된 파일에 데이터를 보관하여 서로 다른 시스템에서 동일 데이터에 접근 가능하여 일관성 유지
2) 구성
- 패키지 설치: nfs-utils
- 서비스 설치: 공유 디렉토리 준비 (생성/권한설정/SELinux/공유설정), 설정파일, 추가요소 (커버로스/IPA)
- 서비스 활성화: nfs-server / nfs-secure-server / nfs-secure
- 방화벽 설정: nfs
# 예시
# /nfs/read_only: 첫번째 디렉토리는 읽기 전용으로 공유 , 공유 대상은 클라이언트만
# /nfs/read_write: 읽기/쓰기 가능하게 공유, 10.0.2.0/24 네트워크 대역 모두 마운트할 수 있게 대상 지정
# 패키지 설치
yum install -y nfs-utils
# 폴더 생성
mkdir -p /nfs/read_only /nfs/read_write
# 권한 설정
chmod 777 /nfs/read_write
chown :nfsgroup /nfs/read_write
# /etc/exports 작성
vim /etc/exports
# /nfs/read_only 10.0.2.200/32(ro,sync)
# /nfs/read_write 10.0.2.0/24(rw,sync)
exportfs -r
# 시스템 부팅
systemctl enable --now nfs-server
# 방화벽 설정
firewall-cmd --add-service=nfs --permanent
# 클라이언트에서 마운트
# 읽기전용 디렉토리는 /nfs/ro 디렉토리에 , 쓰기 가능 디렉토리는 /nfs/rw 디렉토리에 마운트
# 읽기전용 디렉토리는 임시 마운트로 하고 쓰기 가능 디렉토리는 영구마운트 (/etc/fstab)로 설정
# 폴더 생성
mkdir -p /nfs/{ro,rw}
# 마운트
mount -t nfs -o ro,sync SERVER:/nfs/read_only /nfs/ro
# /etc/fstab 작성
vim /etc/fstab
# SERVER:/nfs/read_write /nfs/rw nfs rw,sync 0 0
mount -a
3) NFS 보안 구성
- none: nfsnobody라는 익명의 사용자로 접근
- sys: (기본값) 리눅스 사용자 기준으로 파일에 대한 접근 제어
- krb5: 커버로스 인증 서버 사용
- krb5i: 인증 + 무결성 (check sum)
- krb5p: 인증 + 무결성 + 데이터 암호화
- 서버의 /etc/exports 파일과 클라이언트의 마운트 옵션으로 결졍
- 커버로스를 사용하려면 별도의 IPA 서버가 필요 + nfs-secure-server / nfs-secure 서비스 추가 활성화
4) 자동 마운트
- NFS 공유 디렉토리를 자동으로 마운트하거나 마운트를 해제하는 서비스
- 접근 시 자동으로 마운트하고 일정시간 동안 접근하지 않으면 자동 해제하여 시스템 자원 효율적 사용 가능
- direct, indirect, wildcard
# Direct
/mnt/dirA -rw,sync ServerIP:/nfs
=> 서버의 /nfs 디렉토리를 클라언트의 /mnt/dirA 에 마운트
/mnt/dirA 전체를 직접 생성
# Indirect
dirA -Options ServerIP:/nfs
=> 서버의 /nfs 디렉토리를 클라언트의 /mnt/dirA 에 마운트
/mnt 디렉토리만 생성
# WildCard
* -Options ServerIP:/nfs/&
=> 서버에서 /nfs 디렉토리 밑에 있는 여러 디렉토리를 동시에 공유
마운트 시 /mnt 디렉토리에 각각 마운트
ex) 서버가 /nfs/docs 디렉토리 공유 시
-> /mnt/docs 디렉토리에 마운트
# autofs 설치
yum install -y autofs
# 1. 직접 맵 (direct)
vim /etc/auto.master.d/kkk.autofs
/- /etc/auto.direct
# 직접 맵 파일 생성
vim /etc/auto.direct
/mnt/direct -rw,sync,sec=krb5 server.kkk.co.kr:/autofs/direct
mkdir /mnt/direct
# 2. 간접 맵 (indirect)
vim /etc/auto.master.d/exports.autofs
/kkk /etc/auto.indirect
# 간접 맵 파일 생성
vim /etc/auto.indirect
autofs01 -rw,sync,sec=krb5 server.kkk.co.kr:/kkk/autofs01
# wildcard
vi /etc/auto.indirect
* -rw,sync,sec=krb5 server.kkk.co.kr:/kkk/&
# 서비스 시작
systemctl enable --now autofs
3. iSCSI
1) 소개
- SAN 연결방식 중 하나
- FC-SAN의 경우 확장 또는 신규 설치 시 모든 장비를 교체해야 해서 비용 부담이 큼
- IP-SAN은 기존 장비를 그대로 사용하면서 IP프로토콜을 활용해 스토리지 연결하는 방식
FC-SAN | IP-SAN (iSCSI) | |
바탕기술 | Fiber Channel | TCP/IP |
한계거리 | 10km | 제약사항 없음 |
비용 | 매우 고가 | 추가 비용 없음 |
2) 용어설명
- target: 스토리지를 제공해줄 서버를 의미
- initiator: 네트워크를 이용해서 스토리지를 연결해 사용할 클라이언트 시스템
- IQN (iSCSI Qualified Name): 타켓과 초기자의 이름
- TPG (Target Portal Group): 아래 3가지의 상위 그룹
- ACL (Access Control List): 타켓에 연결할 수 있는 initiator의 목록 (IQN)
- LUN (Logical Unit Number): 블록스토리지의 논리적인 이름
- portal: 타켓이 사용하는 인터페이스의 IP주소와 포트번호
IQN 이름 권장사항
- iqn.날짜.도메인:서브도메인
ex) iqn.2022-02.kr.co.kkk:sjpyo (YYYY-MM.도메인역순:호스트 이름)
3) iSCSI 타겟 설정
- backstores: 제공할 장치 준비
o- block: 블록스토리지 (디스크/파티션/논리볼륨)
o- fileio: 파일을 만들어서 디스크처럼 공유
o- pscsi: 지금은 사용 X
o- ramdisk: 메모리 영역의 공간 공유
1. 서버(타겟)에서 targetcli 패키지 설치 후 targetcli 명령어 실행으로 설정 진행
2. target 서비스 활성화 ( 설정 내용이 사라질 수있음 )
3. 방화벽 설정 - 3260/tcp 포트 오픈
4. 클라이언트(이니시에이터) 에서는 iscsi-initiator-utils 패키지 설치 ( 알맞은 아키텍쳐 하나만 )
5. IQN 이름을 설정 -> /etc/iscsi/initiatorname.iscsi 파일에서 설정 ( 타겟에서 설정한 ACL 과 동일 )
6. iscsiadm 명령어로 검색 및 연결
-> 이니시에이터 설정 순서는 필수!!
주의 사항
1. 타겟에서 target서비스 미활성화 시 설정 내용을 잃을 수 있다.
2. 타겟에서 방화벽 또는 PORTAL 설정에서 인터페이스 주소 / 포트번호 설정이 잘못되면
-> 이니시에이터에서 검색할 때 대상을 찾을 수 없다.
3. ACL 에 설정된 IQN 과 이니시에이터에서 설정하는 IQN 이름이 일치해야 한다.
-> 이니시에이터에서 로그인 시 오류 발생
=> 해결방법 : 검색 기록 제거 -> iscsi / iscsid / iscsid.target 세가지 유닛 상태 중지 -> IQN 수정 -> 검색 -> 로그인
'MLOps > Linux' 카테고리의 다른 글
Apache 웹 서버 (0) | 2022.02.03 |
---|---|
FreeIPA (0) | 2022.01.31 |
DHCP 서버 (0) | 2022.01.30 |
DNS 서버 및 구축방법 (0) | 2022.01.30 |
SELinux (리눅스 보안) (0) | 2022.01.29 |