ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [0509 복습] IT 인프라_서버 가상화, 하이퍼바이저, 컨테이너, docker, 리눅스 실습, 명령어
    KT 에이블스쿨 복습 2024. 5. 9. 18:35

    IT 인프라

    CH4. 서버와 스토리지 이어서

    서버 아키텍처의 발전

    • 기술의 발전에 따라 서버 아키텍처는 발전해왔고 현재는 서비스 목적이나 비즈니스 상황에 따라 크게 3가지 아키텍처 사용 중

     

     

    서버 가상화(Virtualization)

    • 하이퍼바이저(hypervisor)
      : 호스트 컴퓨터에서 다수의 운영 체제를 동시에 실행하기 위한 논리적 플랫폼(platform)
    • 물리적인 서버를 나눌 수 없기 때문에, 가상으로 나누어 3개의 서버가 있는 것처럼 사용!

     

    서버 컨테이너화(Containerization)

    • 컨테이너란 OS 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 가상화 기술
    • OS가 가상으로 분리되지 않고 OS 위에 컨테이너 엔진을 설치

     

    가상머신과 컨테이너

    Physical vs Cirtual 아키텍처

    • 일반 vs 가상머신 위 그림 참고

    하이퍼바이저: Baremetal

    • 물리자원 공유: 하나의 호스트에서 동작하는 가상머신들은 결국 그 호스트에 있는 cpu, 메모리 같은 자원들을 공유해서 사용

    • 가상 네트워킹: 하이퍼바이저 내에 가상 스위치를 만들어 사용, 하이퍼바이저 종류에 따라 스위치의 동작 방식은 다름
    • 가상 머신 파일: 가상 머신은 여러 개의 파일들로 구성, 가상 머신을 power-on하면 하이퍼바이저가 디스크에 있는 가상머신 파일들을 읽어 가상머신 정보를 획득 후, 해당 가상머신에 맞게 설정 후 OS를 부팅
    • 가상머신 마이그레이션(Migration): 가상머신을 하나의 호스트에서 다른 호스트로 이동
      : Live Migration / Off-line(non-live) Migration / Shutdown

    Live 마이그레이션

    • 서비스 중단 없이 가상 머신을 다른 호스트로 옮기는 기술

     

    하이퍼바이저: Hosted

    VirtualBox

    • Type 2 (Hosted) 하이퍼바이저
    • 윈도우, 리눅스, Mac OS에서 실행 가능

     

    VirtualBox 실습

    • 가상머신 생성 및 삭제: 삭제 시 모든 파일 지우기까지 해야 완전히 삭제
    • 가상머신 복제: 존재하는 가상머신의 복사본을 생성, 새로운 가상머신을 만들 때 사용하거나, 가상머신을 백업하는 용도로 사용
    • 가상머신 스냅샷: 특정 시점의 가상머신의 상태를 저장하는 것, 언제든지 스냅샷을 찍은 시점의 가상머신 상태로 롤백 가능

    컨테이너란

    • OS 가상화 기술 중 하나, 프로세스를 격리하는 기술, OS 커널에서 다수의 컨테이너를 실행 가능
    • 컨테이너와 가상머신을 비교하면
      가상머신의 Guest OS에는 사용하지 않은 파일들도 있기 때무에 리소스를 차지함
      컨테이너는 OS가 1개여도 되며, 필요한 앱만 따로 구동
    구분 가상머신 컨테이너
    게스트OS Windows, Linux, MAC... etc None
    이미지 사이즈 수 GB  ~ 수백 GB ~ 수백 MB
    시작시간 수 분 수 초
    자원 사용량 독립된 OS 사용으로 자원 사용량이 큼 OS 사용을 하지 않아 메모리와 디스크 사용량이 적음
    보안 완전한 OS를 사용하므로 보안강화 호스트 OS의 커널을 공유하므로 보안상 취약

     

    컨테이너 엔진

    • 컨테이너를 구동하고 컨테이너 이미지를 관리하는 도구, 컨테이너 생성, 실행, 중지, 삭제
    • 종류: docker, podman, rkt ...

    컨테이너 엔진의 발전 흐름

    • LXC(LinuX Containers)
      : 단일 호스트상에서, 여러 개의 격리된 리눅스 시스템(컨테이너)들을 실행하기 위한 운영 시스템 (cgroups 기술 + namespaces 기술)
    • 도커
      : LXC를 기반으로 조금 더 효율적으로 컨테이너를 생성, 관리, 배포 작업을 도와주는 기술,
      컨테이너를 이미지화하여 배포를 쉽고 빠르게 지원, LXC에는 없는 캡처(스냅샷) 기능 보유
    • CRI-O
      : 쿠버네티스(다중 컨테이너 관리도구)에서 사용할 수 있게 맞춤형식으로 개발된 컨테이너 엔진, 경량화된 엔진

    Docker

    • 컨테이너 기반 가상화 기술을 제공하는 플랫폼
    • 2013 'Docker'사에서 오픈소스로 발표
    • Dockerfile을 통해 이미지를 커스터마이징할 수 있게 제공
    • Dockerhub라는 컨테이너 이미지 저장소를 제공
      • CI(컨테이너 이미지) → 도커허브에서 제공

     

    Docker Image (jpg 이미지 X, 템플릿의 개념)

    • 서비스 운영(애플리케이션 구동)에 필요한 프로그램, 소스코드, 라이브러리 등을 묶어 놓은 패키지 형태
    • Dockerfile을 사용해 커스터마이징 가능(docker build)
    • Container Image를 사용하여 컨테이너 실행 (docker run)

     

    Dockerfile

    • 컨테이너 이미지를 커스터마이징하기 위한 파일
    • 파일의 내용에 이미지 생성과정을 syntax에 따라 작성
    • 작성된 Dockerfile을 활용해 새로운 Image 제작

    Docker Image url 작성 규칙

     

    Docker Image url(private)

    • Private 이미지저장소를 구축해 이미지 관리 시에는 <Namespace>에 해당 서버주소 및 포트번호 등으로 사용
    • ex) infra.com:3000/mywebserver:latest
            infra.com:3001/mydbserver:v1 등

     

    Docker 허브

    • 수많은 컨테이너 이미지들을 서버에 저장하고 관리, 공개 이미지를 무료로 관리
      https://hub.docker.com/
     

    Docker Hub Container Image Library | App Containerization

    Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

    hub.docker.com

     

    Docker 컨테이너 명령

    Kubernetes(쿠버네티스)

    • 수백, 수천의 다수 컨테이너의 배포, 확장, 축소, 자동복구 등 총괄적인 관리를 해주는 오픈소스 시스템
      2014년 구글 개발, 2015년 v1.0 발표
    • 한 개의 메인프레임 안에 Web, WAS, DB 모두 구성하는 것은 바이러스 침투시 모두 영향 받으므로 위험
      → 여러 서버로 분리하는데, 그 서버가 엄청 많은 것 MSA라고도 함 (ex.네이버 등 포털사이트)

     

    **VirtualBox가 하이퍼바이저, ubuntu가 게스트 OS임!

     

     

     

    리눅스 기본

    리눅스

    • 1991년 리누스 토르발스가 UNIX와 비슷한 시스템인 Minix에서 영감을 받아 리눅스 커널을 출시하고, 1992년에 리눅스 OS의 프레임워크를 개발
    • UNIX: 1970년대 초반에 개발된, 교육 및 연구기관에서 즐겨 사용되는 운영체제
    • 리눅스는 오픈소스이기 때문에 무료이고, 재배포가 가능 → 수맣ㄴ은 리눅스 배포판이 등장

    리눅스의 특징

    • 리눅스는 공개 소프트웨어이며 무료로 사용 (오픈소스)
    • 유닉스와의 완벽한 호환성을 유지, 서버용 운영체제로 많이 사용, 편리한 GUI 환경도 제공

    간단 명령어

    명령어 기능 형식 사용 예
    passwd 암호를 변경 passwd <변경할 계정명> $ passwd user1
    whoami 현재 사용자의 계정명을 출력 whoami $ whoami
    pwd 현재 디렉토리를 출력 pwd $ pwd
    history 현재까지 수행했던 명령어 출력 history $ history
    date 현재 시각을 확인 date $ date
    cal 달력을 출력 cal $ cal 1 2022
    clear 화면을 클리어 clear $ clear
    echo 문자열을 다시 반환 echo <문자열> $ echo hello linux

     

    명령 포맷 예시

    • 명령어 옵션 인수 순으로 입력
    잘못된 예시 정확한 예시
    $ ls - l /home
    $ ls-l /home
    $ ls -l /home  #띄어쓰기에 주의
    $ ls /home -l
    $ /home ls
    $ -l ls
    $ ls - l /home
    $ ls /home
    $ ls -l
    $ ls -a-l
    $ ls -a l
    # 다중 옵션 사용
    $ ls -al
    $ ls -a -l
    $ ls /home/home/ubuntu # 다중 인수 사용
    $ ls /home lhome/ubuntu

     

     

    리눅스 파일

    • 파일이란 디스크에 저장되는 자료들의 모음을 의미
    • 리눅스는 파일을 효과적으로 관리하기 위해 디렉터리를 사용
    • 리눅스에서 파일은 사용 목적에 따라 크게, 일반 파일, 디렉터리, 특수 파일로 구분

    일반 파일

    • Regular File이라고도 표현
    • 데이터를 저장하는 데 사용, 텍스트 파일은 문서 편집기를 사용하여 내용을 보거나 편집 가능
    • 실행 파일이나 이미지 파일의 경우 바이너리 형태(이진)로 데이터가 저장되어 바이너리 파일이라고도 표현

    디렉토리 파일

    • 리눅스에서는 디렉토리도 파일로 취급
    • 디렉토리 파일에는 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장 (Windows의 폴더개념과 비슷)

    특수 파일

    • 심벌릭 링크: 원본 파일을 대신하여 다른 이름으로 파일명을 지정한 것(Windows의 바로가기 파일과 비슷)
    • 장치파일: 리눅스에서는 하드디스크나 키보드 같은 각종 장치도 파일로 취급

    리눅스 파일의 종류 확인

    • file 명령을 사용해 파일의 종류를 확인

     

    디렉토리 계층 구조

    • 리눅스에서는 파일을 효율적으로 관리하기 위해 디렉터리를 계층적으로 구성
    • 트리(tree) 구조
    • 모든 디렉토리의 출발점은 루트(root, 뿌리) 디렉토리이며 /(Slash)으로 표시

    상, 하위 디렉토리

    • 하위 디렉토리(자식 디렉토리): 디렉토리 안에 있는 디렉토리
    • 상위 디렉토리(부모 디렉토리): ..으로 표시
    • 루트 디렉토리를 제외하고 모든 디렉토리에는 부모 디렉토리가 존재

     

    리눅스의 경로

    • 경로: 디렉토리 계층 구조에 있는 특정 파일이나 디렉토리의 위치 표시
      - 각 경로를 구분하는 구분자로 /를 사용
      - /bin/ls에서 맨 앞의 /는 루트 디렉토리를 의미하고 중간에 있는 /는 디렉토리 이름과 파일명을 구분하는 구분자

    절대 경로

    • 항상 루트 디렉토리부터 시작하며 /로 시작
    • 특정 위치를 가리키는 절대 경로명은 항상 동일
    • 예시) $ cd /home/ubuntu
                $ ls /home/ubuntu
                $ vi /home/ubuntu/text.txt

    상대 경로

    • 현재 디렉토리를 기준으로 시작하며 / 이외의 문자로 시작
    • 상대 경로명은 현재 디렉토리가 무엇인지에 따라 상이
    • 예시) $ cd ../test
                $ vi doc/report

    디렉토리 사용명령

    명령어 기능 형식 사용 예
    pwd 현재 디렉토리를 출력 pwd $ pwd
    mkdir 디렉토리를 생성  mkdir <생성할 디렉토리명> $ mkdir mydir (현재 디렉토리 밑에 생성됨)
    $ mkdir /home/ubuntu/mydir
    mkdir -p p옵션 함께 사용하면 여러 하위 디렉토리가 동시에 생성   $ mkdir -p mydir1/mydir2/mydir3
    rmdir 디렉토리를 삭제 rmdir <삭제할 디렉토리명> $ rmdir mydir
    $ rmdir /home/ubuntu/mydir
    **  디렉토리 내부에 파일이 존재하면 삭제 불가능
    rmdir -p p옵션 함께 사용하면 최하위
    디렉토리부터 순차적으로 삭제
      $ rmdir -p /mydir1/mydir2/mydir3
    cd 지정한 디렉토리로 이동 cd <디렉토리명> /home/user1 에서 /usr 디렉토리 이동
    $ cd /usr         #절대 경로
    $ cd ../ ../usr    #상대 경로
    ls 현재 디렉토리의 내용 출력 옵션 -l
    :리스트형식으로 상세정보까지 출력
    옵션 -a
    :숨겨진 파일까지 출력
    $ ls
    $ ls -a
    $ ls -l
    $ ls -al
    $ ls /home/ubuntu
    $ ls -al /home
    cp 파일을 복사 cp <source> <target> cp /home/ubuntu/a.file /home/ubuntu/b.dir/a.filecp
    mv 파일을 이동, 파일 이름을 수정 mv <source> <target> mv /home/ubuntu/b.dir/a.filecp /home/ubuntu/ubuntu.file
    cat 파일의 내용을 출력 cat <파일명>
    **파일의 내용이 길어서 한 화면에 출력 다 안 되면 파일의 마지막 화면만 출력
    $ cat file.txt
    $ cat /home/ubuntu/afile.txt
    more 파일의 내용을 출력 cat <파일명>
    ** 긴 파일을 한 페이지 씩 보여줌
    $ more file.txt
    $ more /home/ubuntu/afile.txt
    wc 파일 내 단어, 줄, 바이트 수를 카운트 wc <파일명>
    -l :라인 수 출력
    -c :바이트 수 출력
    -w :단어 수 출력
    $ wc file.txt
    $ wx -l file.txt
    rm 파일을 삭제  rm <파일명>
    -r :디렉토리도 삭제 가능하게 하는 옵션
    -f :경고없이 강제로 삭제
    $rm file.txt
    $ rm -rf dir1.dir
    touch 빈 파일이 생성 touch <새로운 파일명>
    touch <기존 파일명>
    **파일의 최근수정 시간을 서버의 현재 시간으로 변경
    $ touch test1
    $ touch test2 test3

     

     

     

     

     

     

    스토리지

    스토리지란?

    • 컴퓨터, 서버 등의 데이터를 저장하는 저장소
    • PC 의 하드디스크, USB, 기업용 스토리지 등
    • 기업에서는 고가의 대용량, 고성능 스토리지 사용
    • 스토리지 유형: Tape, HDD, SSD, NVMe, Cloud Storage

     

    저장장치-Tape

    • 기업에서 사용하는 가장 오래된 스토리지 저장장치 유형
    • 전송속도는 느리지만, 30년 가까이 저장 가능
    • 싼 가격으로 주로 데이터 백업용도로 사용

    저장장치-HDD(하드디스크)

    • Hard Disk Drive, IBM이 최초 개발, Tape보다 높은 전송 속도 제공

    저장장치-SSD

    • Solid State Drive, HDD보다 수 배 빠른 전송 속도 제공, HDD 보다 고가의 비용

    저장장치-NVMe

    • 주로 노트북용 SSD로 사용, NVMe 서버에 장착하여 기업에서도 사용, 고성능을 필요로 하는 기업에서 사용

     

    스토리지 종류

    DAS

    • Direct Attached Storage, 서버와 저장 장치를 직접 연결(케이블)하여 사용하는 방식
    • 연결하는 장치 수에 제한, 다른 장치나 사용자에게 공유하지 못하는 단점 (1:1로 주고 받기 때문)

    NAS

    • Network Attached Storage, 서버와 저장 장치를 이더넷 등 LAN 방식의 네트워크에 연결된 방식
    • 여러 개의 서버가 네트워크를 통해 연결하여 각각 할당 받은 용량을 사용
    • 접속 트래픽이 증가할 경우 성능 저하 및 속도 저하가 발생
    • DAS 와는 달리 다수의 서버나 스토리지를 연결하여 높은 확장성, 유연성 보유
    • 사용되는 프로토콜: NFS, iSCSI

    SAN

    • Storage Area Network
    • 일반적으로 사용하는 LAN 대신에 광케이블(FC Cable)을 사용
    • SAN Switch를 통해 여러 노드에게 할당해 사용 가능
    • 별도의 SAN 스위치가 필요, 사용되는 케이블 FC(Fiber Channel)

     

    스토리지 프로토콜

    FC(Fibre Cannel)

    • 서버 및 호스트에 고성능 스토리지를 연결하는 고속 네트워크 프로토콜, 케이블은 FC 케이블을 사용
    • SCSI 트래픽을 전달, 호스트에 HBA(Host Bus Adapter)장비가 필요

    iSCI (Internet SCSI)

    • LAN 케이블을 사용해 Network에서도 사용이 가능하도록 TCP/IP 프로토콜로 패키징한 프로토콜
    • 2가지 연결 방식 제공
      - iSCSI HBA 어댑터를 사용
      - 소프트웨어 기반 프로그램을 사용해 어댑터 없이 NIC를 사용

    FCoE(Fibre Channerl Ethernet)

    • 하나의 케이블과, CNA(Converged Network Adapter)를 사용해 이더넷과 Fibre 채널 환경을 구현
      - CNA(Converged Network Adapter): NIC과 HBA 기능을 하나로 통합한 어댑터

    NFS (Network File System)

    • NAS 방식으로 사용할 때 주로 쓰는 프로토콜
    • NIC를 통한 네트워크 연결을 활용하여 통신
    • HBA같은 별도의 장치가 필요 X
Designed by Tistory.