종류

FTP

  • File Transfer Protocol
  • 말 그대로 파일을 전송하는게 목적임
  • 클라이언트-서버 간 파일을 복제 (전송) 함
  • 서버에 있는 파일을 클라이언트로 가져와서 작업하는게 일반적임
  • TCP 기반
  • 두 가지 포트를 사용함 (데이터 포트, 커맨드 포트)
  • 능동모드와 수동모드가 있음
  • 대용량 파일 이동에 유리함

NFS

  • Network File System
  • 원래 리눅스에서 쓰려고 나옴
  • 파일 시스템이 네트워크 상에 있는 것
  • 클라이언트가 서버의 디렉토리를 통째로 마운트해서 사용함
  • 굳이 파일을 일일히 복제할 필요가 없음
  • 원격 프로시저 호출 (RPC) 를 활용 (TCP/UDP 둘 다 가능한 듯)
  • 한 사람이 파일을 수정하면, 다른 사람은 그 파일을 읽기 전용으로만 볼 수 있음

SMB/CIFS

  • Server Message Block / Common Internet File System
  • SMB가 먼저 나왔는데, 원래는 윈도우에서 쓰려고 나왔음
  • SMB 를 확장해서 나온게 CIFS
  • NFS처럼 클라이언트-서버 구조
  • NFS랑 다르게 클라이언트가 서버를 중재자로 써서 다른 클라이언트에 통신 가능함
  • 다만 NFS보다 오버헤드가 큼
  • 파일 공유 뿐만 아니라 인쇄, 가상 머신 스토리지 등 좀 더 다양한 네트워크 리소스를 공유할 수 있음

iSCSI

  • internet SCSI (Small Computer System Interface)
  • NFS, SMB/CIFS 처럼 로컬에 마운트해서 쓰는거는 “파일 스토리지” 형태인데,
  • iSCSI는 이들과는 좀 다른 특성을 가지고 있음
  • NFS, SMB/CIFS 는 서버 측에서 파일 시스템 자체를 이미 가지고 있기 때문에, 이기종 OS간 데이터 공유가 가능하다는 특징이 있음
  • 그러나 iSCSI는 디스크(꼭 물리적으로 하나가 아닐수 있음) 자체를 공유한다고 생각하면 됨
  • 그 얘기는, 파일 시스템은 iSCSI의 공유 대상이 아님
  • 따라서 어느 OS에서 iSCSI를 구축하고 받냐에 따라서 파일 시스템 설정이 달라질 수 있음
    • 같은 iSCSI여도 서로 다른 파일 시스템으로 사용하면 내부 데이터가 손상됨
  • iSCSI는 NFS, SMB처럼 그것 자체로 바로 공유해서 마운트하고 사용할 수 있는게 아님

RAID / LVM 과 다른 점

  • 역할 자체는 꽤 비슷해 보임
    • RAID 와 유사성 : iSCSI도 여러 디스크를 하나로 합칠 수 있음
    • LVM 과 유사성 : iSCSI도 여러 디스크를 하나로 합치거나 쪼갤 수 있음
  • 그렇지만 다른 점 : 결국 iSCSI는 디스크를 “외부로 보내기” 위해 씀. 작용하는 위치가 다름

구성 예시

  1. 서버가 있음
  2. 서버에 물리적 디스크가 2TB * 2 = 4TB 있음
  3. RAID 1 구성을 해서 2TB를 만듬
  4. LVM 구성을 해서 1TB * 2 개의 LV를 만듬. 이를 iSCSI는 두 개의 LUN으로 인식할 것
  5. iSCSI로 두 개의 LUN를 각각 다른 PC에게 공유함
  6. 그래서 공유받은 각 PC가 원하는대로 파일시스템을 만들고 사용
[Storage Server]
2TB Disk ┐
         ├─ RAID1 → 2TB
2TB Disk ┘

            LVM
          ┌───────┐
          │ LV_A  │ → iSCSI → PC_A → FS
          │ LV_B  │ → iSCSI → PC_B → FS
          └───────┘

참고 자료