klaus

[KDT-DAY_12] Linux H/W (feat. RAID, LVM, zfs ) 본문

수업/KDT

[KDT-DAY_12] Linux H/W (feat. RAID, LVM, zfs )

klus! 2023. 1. 16. 19:57

 

1. RAID (Redundant Array of Inexpensive/Independent Disk)

- 저장장치 여러 개를 묶어 고용량, 고성능인 저장 장치 한 개와 같은 효과를 얻기 위해 개발된 기법

> RAID 0 : 데이터 복원되지 않지만 암(arm: 컨트롤러)이 두 개여서 읽기/쓰기 속도가 빠르다 (Stripe Without parity)

> RAID 1 : 데이터 복원이 가능하며 두 개의 디스크가 필요 (미러링  mirroring)

> RAID 5 : 데이터 복원이 되며, 세 개 이상의 디스크가 필요하다(stripe wuthiut parity, arm이 2개== 줄무늬)

    ==>  8bit 내에 홀수 갯수를 보고 패리티 비트가 0 or 1로 지정

             만일 도중에 오류로 인해 변경되면 패리티비트가 맞지 않아 재전송하게 된다.(TCP)

 

[+]소프트웨어 RAID 생성(mdadm) - 실습

- 디스크 생성 - 파티션 

fdisk /dev/vdb fdisk /dev/vdc

==> 파티션을 할 때 fd 옵션을 줌 (Linux raid auto)

- lsblk 명령어를 통해 제대로 만들어졌는지 확인.

- mdadm --create /dev/md0 --level=0 -n 2 /dev/vdb1 /dev/vdc1

cat /proc/mdstat : 정보 확인

ls /dev/md* 를 하여 확인

 

-파일시스템 설정

mkfs.ext3 /dev/md0

 

- 파일시스템 테이블(fstab) 추가(부팅시 마운트)

> nano /etc/fstab

> UUID /RAID0 ext3 defaults 0 0을 추가하여 부팅시 자동으로

   [파일시스템 장치] [마운트 포인트] [파일시스템 종류] [옵션] [덤프] [파일체크옵션]

 

- 리부팅

 

 

2.  LVM 

- 파티션된 디스크들의 물리적 여분 공간을 모두 모으거나 새로 디스크를 추가해서 하나의 논리 공간으로 확장시켜 주는 기능

==> 물리적 2개의 HDD를 논리적으로 하나의 HDD로 만들어주는 것

- RAID의 경우  같은 브랜드의 HDD를 묶어 구성하지만LVM은 상관없이 구성이 가능하다.

[실습]

시나리오 : 1GB와 2GB의 DISK를 추가한 상태에서 LVM을 사용하여 논리적으로 하나의 3GB의 디스크로 만들기

- 추가된 DISK (vdb,vdc)

- 파티션

> fdisk /dev/vdb, fdisk /dev/vdc

> 파티션시 8e로 설정(Linux LVM)

- pvcreate

- 볼륨 그룹 생성

> vgcreate VG-home /dev/vdb1 /dev/vdc1

 

- vgdisplay를 통해 만들어진 볼륨정보 확인

> metadata areas: 묶인 실제 HDD
> VG Size: 볼륨 그룹 VG-home 사이즈

- 로지컬 볼륨 만들기

> lvcreate -L 2.98GB -n LV VG-home (2.99 전체를 사용하지 않는 이유는 설정파일이 생성되기 때문에 여유공간이 필요)

- 파일 시스템 지정

> mkfs.xfs /dev/VG-home/LV

- 생성 확인 (blkid)

- 마운트(mount)

> mkdir /home/centos/LV-home에 마운트

-vi /etc/fstab 편집
/dev/VG-home/LV              /home/centos         xfs           defaults       0 0

 

- LVM 삭제하기

마운트 제거 umount /home/centos

fstab삭제

 

 

3. ZFS (파일시스템)

- ZFS 란 ZettaByte File System 의 줄임말로, 기존의 유닉스(Unix) 파일 시스템을 대체하기 위하여 탄생한 파일 시스템

- 2001년에 UNIX Open Solaris, 2008년에 FreeBSD과 Linux에 설정 
- ZFS 파일 시스템은 파일 시스템 관리를 근본적으로 변화와 혁신시킨 새로운 파일 시스템

- ZFS 파일시스템은 강력하고 확장성이 뛰어나며 관리가 편리하도록 디자인 되어 있다.
- SPARC 또는 Intel 시스템 모두 사용 가능
- UNIX Solaris 10 OS 06/06 릴리즈 이상부터 채용됨
- 최소 물리적 디스크 크기는 128MB 필요
- 권장 메모리는 최소 768MB, 성능상 1G 메모리 이상 필요
- 미러 방식을 구현 한다면 다중 컨트롤러(RAID0) 권장
- 기본적으로 ZFS 파일시스템을 만들면 EFI Label을 사용하게 된다.
- HDD 저장 풀(Pool) 가능, Copy-on-Write 기능, Snapshot 기능, 데이터 무결성과 자동 수정 기능

- RAID5와 유사한 RAID-Z 구성 가능, 16EB까지 설정 가능, 256개의 Quardrillion Zettabytes 저장 가능하다는 특징

 

내부 구조

 

[실습]

설치 : apt -y install zfsutils-linux

- 디스크 인식 확인 : ls /dev/vd* 

 

-ZFS 생성

-  zpool create zfspoll mirror /dev/vd[bc]   -  zpool 확인 ls /dev/sd*

 

- zpool status -v 미러링 되어 있는 내용 확인

- zfs 삭제

zpool destroy zfspool 삭제

 

 

 

4. 파일 압축과 풀기 

-   Linux 시스템은 일반적인 Windows 시스템과 파일과 포맷이 다르므로 CentOS 사용자는 Linux 시스템에서의 파일을 압축하거나

    압축된 파일을 풀 수 있어야 한다. 여기에 사용되는 도구는 tar, rpm, yum, apt-get, zip, bunzip 등 여러 가지가 있는데 주로

    시스템이나 사용자의 데이터를 백업하거나 벤더의 소스 프로그램이나 커널 배포 패키지를 다운받아서 풀고 시스템에서 실행할 때

   사용된다. 먼저 파일을 압축하고 푸는 tar 계열의 명령어부터 알아보자.
 
 [+] tar로 묶기/압축
  예를 들어 /var 밑의 여러 파일/디렉터리들을 test라는 이름으로 묶으려면 파일/디렉터리를 묶어주는 c,

  진행 상황을 화면에 출력하는 v, 파일을 지정하는 f를 옵션으로 지정합니다.
 압축할 때  tar xvfz/j B.tar.gz/B.tar.bz2 -C [압축을 풀 곳]

압축을 풀때 tar cvfJ test.tar.xz /home/centos/* 하면 /home/centos/ 아래의 모든 파일/디렉터리가 test.tar.xz로 묶이고 압축이 된다.

  [정리]
  압축 =>생성된 ‘파일.확장자’ =>압축과 묶인 것을 푸는 것을 정리하면 
∎ gzip files => ~.gz => gunzip ~.gz
∎ bzip2 files => ~.bz2 => bunzip2 ~.bz2
∎ tar cvf files => ~.tar => tar xvf ~.tar
∎ tar cvfz files=> ~.tar.gz => tar xvfz ~.tar.gz(=~.tgz)
∎ tar cvfj files => ~.tar.bz2 => tar xvfj ~.tar.bz2
∎ tar cvfJ files => ~.tar.xz => tar xvfJ ~.tar.xz
∎ compress files => ~.Z => uncompress ~.Z 하면 압축되고 풀린다.
∎ zip files => ~.zip => unzip ~.zip 하면 풀린다.





Comments