0부터 시작하는 Linux 공부 - 물리 장치를 추가해보자

Jaehong Lee·2022년 7월 21일
0
post-thumbnail

1. 리눅스와 물리 장치

  • 리눅스는 물리 장치를 사용하기 위해 디렉토리에 mount 해서 사용해야 한다
  • mount 명령어를 통해 리눅스에 어떤 것이 어디에 mount 되있는지 확인 가능하다
  • /dev/sr0 는 리눅스의 ODD ( CD/DVD-ROM 물리 장치 ) 이다
  • 이 sr0는 리눅스의 /run/mdeia/root/CentOS 7 x86_64 type iso9660 에 mount 되있으므로, ODD 에 접속하려면, 리눅스의 해당 디렉토리 안에 들어가야 한다
  • umount로 mount를 끊으면, 다음과 같이 바탕화면에서 CentOS 7 ~ 가 사라진 것을 확인할 수 있다. umount는 어딜 끊어도 상관 없다

  • 리눅스의 물리 장치는 논리 장치 ( 디렉토리 ) 와 연계된 상태에서 사용할 수 있다 ( mount )
  • ls /dev를 통해 물리 장치들을 살펴보자. 물리 장치들은 /dev에 있다
  • 외부에 있는 스토리지에서 볼륨을 마운트 하여 사용하는 경우에는 로컬에서 vda 와 같은 형태로 보이기도 한다. ( vda -> vda1, vda2 )
    • mount /dev0/sr0 /test 로 mount 한다
    • umount /test or umount /dev/sr0 로 mount를 끊는다

  • 새 디렉토리를 생성하고, cd rom 을 마운트 해보자
    • cd rom 은 읽기만 가능하다
    • mount에 대한 정보를 grep 을 통해 sr0에 관련된 정보를 출력하면 /test에 마운트 되었고, type이 iso9660 이며, r0 = read only 로 읽기만 가능하다는 것을 확인할 수 있다
    • nfs 에서는 mount -t nfs ip주소:주소의 폴더 마운트할 폴더 로 사용할 수 있다

  • umount를 통해 mount를 끊으면, 디렉토리 안에가 비어있다
  • 마운트 정보를 지속적으로 유지하고 싶다면 /etc/fstab 에 기록해둔다. fstab 은 OS가 부팅시 읽는다. 다음과 같이 mount 정보와 파일 시스템 정보을 확인하자

2. Disk 를 효율적으로 관리하는 방법

LVM : 물리 장치를 논리 장치로 만든다. 물리 장치들을 Volumn Group에 넣어 하나의 공간으로 만든 다음에, 논리 장치로 분리한다

  • 크기가 작은 다수의 볼륨을 연결하여 하나의 볼륨을 만들고, 이를 다시 논리적으로 나누어 원하는 크기의 볼륨으로 조정하여 사용할 수 있다
  • 각 볼륨의 크기가 달라도 상관없이 연결이 가능하다
  • 속도가 느리며, 데이터 손실시 복구가 어렵다. 따라서 FT가 필요하다

FT ( Fault Tolerance ) : 결합 허용 시스템. 혹시, 결함에 의해 데이터가 손실되더라도 복구가 가능해야 한다

Raid : 두 개 이상의 디스크를 결합하여 데이터 손실을 방지하고, 데이터 I/O 를 높여줄 수 있다

  • 리눅스와 같은 OS 에서 SW 적으로 제공하는 방식과 서버/스토리지 자체적으로 제공하는 하드웨어 적인 기법으로 구분할 수 있다
    • RAID 0 : Striping
      • 디스크를 동시에 사용하여 쓰기
      • 디스크 공간 활용율 100%
      • 디스크 손상시 복구 불가능
    • RAID 1 : Mirroing
      • FT 지원
      • 디스크 공간 활용율 50%
    • RAID 4 : 디스크 하나에 패리티 비트를 저장하여 사용하는 방식
      • 패리티 비트 : 복구를 위한 비트
      • 패리티 비트가 저장된 디스크에 문제가 생기면 큰일 난다
    • RAID 5 : 패리티 비트를 각 디스크에 분산시켜 두고 사용하는 방식
    • RAID 10 : RAID 0 과 1 을 합친 방식으로, RAID 1 방식으로 미러링한 디스크 한 쌍 들을 RAID 0 으로 Striping 하는 것 이다
  • 결국, RAID 를 사용하면 데이터를 안정적으로 관리할 수 있다. 또한, 쓰기 속도를 향상 시킬 수 있다

3. Local Disk 추가하기

  • 로컬에 디스트 추가하기
    • 전원을 꺼야 한다. 전원을 꺼주자

  • 다음 설정에 들어가서 하드 디스크를 추가한다
  • 스카시 선택
  • 크기는 5 GB 로 설정
  • 디스크를 추가했다. 허나, 아직은 사용할 수 없다. 이 디스크를 파티션 및 포맷하여 물리 장치로 만들어서 마운트 해야 한다. 파티션하고, 포맷 해주자
  • 새로 추가된 sdb 를 확인 가능 하다. 아직 파티션이 안되있으므로, 번호가 붙지 않는다

4. Disk 파티션 부터 Mount 까지

p. 340

  • 새로 추가된 Disk 장치에 파티션을 해주자
    • Partition type 에서 p는 primary로 자유롭게 사용 가능한 공간 이다. 한 Disk 에 최대 4개 있다. 이 primary 로 설정된 공간에는 각각 OS 를 설치할 수 있으며, Data 쓰기도 가능하다
    • extended를 통해서 primary 공간과 격리된 논리적인 공간을 만든다. 이 공간에는 Data 쓰기만 가능하게 할 수 있다

  • 파티션 상태 확인
  • sdb에 파티션을 시작하자
  • 다음과 같이 설정한다. 설정은 기본 값을 사용하므로 enter 만 누르자
  • 파티셔닝이 잘 됬는지 확인하자
  • 데이터가 작성될 수 있게 파일 시스템 설정해서 포멧 해주자. mkfs.ext4 파일 시스템을 사용한다. ext4는 리눅스의 저널링 파일 시스템 이다. 파일 시스템을 파티션 밑에 깔아서 포맷 시키는 것 이다
    • mkfs -t ext4 /dev/sdb1 으로도 가능하다

  • 디렉토리를 생성해서 mount 해주자
    • df 를 통해 마운트된 파일 시스템의 크기와 용량을 보여주는 명령어로 전체 파일 시스템의 사용 현황을 확인하자. sdb1 이 /added 디렉토리에 mount 된 것 을 확인 가능하다
    • lost+found 란 ? mount 하면 생기는 디렉토리로 디스크오류나 부정확한 시스템 종료에 의해 파일들이 잃어버린 상태가 될 수 있는 파일들에 대한 정보를 저장한다
  • mount 까지 완료했지만, 재부팅하면 이 mount에 대한 정보가 사라진다. 따라서 부팅시에 OS 가 읽는 fstab 파일에 작성해주자
  • 편집기로 fstab 파일을 열자
  • 다음과 같이 넣어주자. 장치 이름 , 마운트 될 디렉터리 , 파일 시스템 , 속성, dump 사용 여부 , 파일 시스템 체크 여부를 의미 한다
    • 파일 시스템 체크 : 부팅 시 파티션 체크, 0 이면 비활성화. 0 이면 체크를 생략해서 부팅 속도 증가
    • dump 사용 여부 : 1로 설정해서 사용하면 dump 명령을 통해 백업 가능
    • 속성 : default 로 설정하면 r / w / x 모두 가능

  • 재부팅 하고, mount 정보를 확인하면 잘 적용되있다

5. NFS & HA PROXY 실습

HA PROXY

  • 일반적인 로드 밸런서는 L4 / L7 에서 동작하는데, 실습에 사용할 LB는 L4 에서만 작동한다
  • 로드 밸런서는 REVERSE PROXY 역활을 하며, 지정된 PORT 와 PORT 끼리 통신하게 해준다. 이때 라운드 로빈 방식을 이용해 각 서버에 트래픽을 분산 시켜준다
  • HA PROXY 는 로드 밸런서 ( L4 / L7 )

    참조 ) https://cloudwafer.com/blog/installing-haproxy-on-centos-7/

    • /etc/haproxy/haproxy.cfg 를 참조한다
    • http_front 는 임의 이름이다. 이 프론트엔드에는 기본 연결된 백엔드가 필요하다
    • 백엔드에는 밸런서가 있으며, 이는 라운드 로빈 방식으로 설정이 되있다. ip 입력란에 사설 ip를 적어줘야 한다
    • bind 는 80 번 포트로 접근하면 연결된 백엔드로 연결해준다는 것 이다
    • stats 는 url 뒤에 저 주소를 붙이면 , 정보 페이지를 출력해 준다는 의미다
    • check 는 로드 밸런서와 연결되 서버가 작동 중인지 Health Check 하는 것이다. 만약 해당 서버가 작동하지 않으면, pool에서 제거해서, 다른 서버에게 보낸다. 그리고 계속 Health Check 해서 해당 서버가 살아났는지 확인 한다

6. AWS 에서 ALB & NLB

  • blue / green Deployment : 컨테이너를 배포할 때 blue 와 green 으로 구분해서 배포하는 것. tag에 blue와 green을 넣는다
  • 해당 TAG는 DATA에 들어있다. 이 DATA는 NLB에서는 구분 못하므로, 처음에는 ALB에 접근해야 한다
  • ALB에 접근하면 blue / green 에 맞게 private link 를 타고 NLB 에 접근하면, NLB에서 라운드 로빈 방식으로 인스턴스에 분배해준다

  • ALB는 다음과 같은 방식으로 구성되며, 각 그룹은 그룹마다 받는 트래픽의 양이 다르기에 트래픽 양에 맞춰서 적당히 서버들을 배치한다
profile
멋진 엔지니어가 될 때까지

0개의 댓글