IT/Linux

[Linux] Linux 디스크 관리(1) Storage 종류 & 저장 방식 | Block Storage | LVM

o_zeew 2022. 2. 23. 18:00

(1)Storage 종류

(2)Storage 저장 방식

(3) VMware Workstaion에서의 Block Storage

(4) 디스크 사용방법 및 설치

(5) LVM(Logical Volume Manager)


1. Storage 종류
 1. DAS(Direct Attach Storage)
   - IDE, SCSI, SATA
   - 원격지 설치 불가능, 물리적인 Machine 내장 혹은 최대 1M정도를 넘지 않는 곳에 설치
   - 물리적인 연결매체의 최대 유효거리를 넘지 못한다(단점)
   - 파일 시스템 공유가 불가능(단점)
   - 안정적이며 속도가 빠르다(장점)
   - 비용이 저렴하다(장점)
 2. NAS(Network Area Storage)
   - 통상적으로 Network 환경내에 구성
   - 속도는 10Mbps~Gbps
   - 원격지 설치 가능
   - NFS
   - 저럼하며 구성이 쉽다(장점)
   - 네트워크에 병목이 생기면 속도 저하 발생(단점)
   - 사용자가 늘어나도 속도 저하 발생(단점)
   - 파일시스템 공유 가능(장점)
 3. SAN(Storage Area Network)
   - Storage 환경내에 구성한 네트워크
   - Fiver Channel 구성됨
   - Storage용 전용 Switch와 HBA(Server) 카드 
   - 속도는 통상 16Gbps
   - 원격지 설치 가능, 파일시스템 공유 가능(장점)
   - 너무 비싸다(단점)




2. Storage 저장 방식
 1. Block Storage (AWS EBS : Elactic Block Storage)
   - 실제 물리적으로 Block 형태(Harddisk 생각하세요)
   - 실제 Machine에서 다른 Machine으로 물리적 이동 가능
   - Cloud & Virtualization에서도 VM간 이동 가능
   - Block 단위로 저장됨
 2. Object Storage (AWS S3 : Simple Storage Service)
   - 개별 파일 형태로 저장
   - 개별 파일마다 URL이 부여됨. 이를 Rest API라 부른다
   - URL을 이용하여 파일을 이용(파일명이 아닌 URL을 이용함에 주의)
   




3. VMware Workstaion에서의 Block Storage
 1. 실제 Linux Machine과 동일하게 동작
 2. SDA 분석
   - SD :  scsi or sata 디스크를 의미함
       *참고: HD : IDE 방식의 디스크 의미, 이제는 거의 찾아볼 수 없음
   - A : 물리적으로 첫번째디스크를 의미함
   - 1 : 첫번째 파티션을 의미
 3. 물리적으로 디스크가 3개 있는 경우는. 파티션 작업 이전
   - SDA, SDB, SDC
 4. 첫번째 디스크를 3개로 파티션을 나눈 경우
   - SDA1, SDA2, SDA3

 




4. Linux에서 디스크를 사용하기
 0. Partition -> File System -> 드라이브명 할당 (윈도우)
 1. Partition -> File System -> Mount
   - Partition : 물리적인 디스크를 논리적으로 분할
      * 디스크를 사용하기 위해서는 반드시 1개 이상의 Partition을 생성해야만 한ㄴ다
   - File System : 파일 및 디렉토리를 효율적으로 관리하기 위한 시스템
      * 리눅스 : xfs, ext4, ext3, ext2 (최신순으로)
         * ext3-4 : journaling (저널링 : 파일을 삭제할 경우 log 기록을 생성 후 삭제
                                                해당 log로 파일 복원 가능)
                                        * ext3의 느린 속도를 개선한 것이 ext4
         * 윈도우 : NTFS, FAT32, FAT13
   - mount : Linux에서는 물리적인 장치를 사용하기 위해서는 반드시 디렉토리와 연결해야 한다

                이를 마운트라고 한다.
       * umount : mount를 해제하는 명령어

 

2. 파티션 분할 실습 하기
1. Work Station 환경에서 Hard disk 추가하기

10GB, 5GB 두개 설치

2-1. [lsblk] 명령어로 디스크 설치 확인

sdb, sdc 디스크 설치 확인 가능

2-2. [fdisk -l] 명령어로 디스크 설치 확인

2-3. [cat /proc/partitionas] 명령어로 파티션 확인 가능

 * 윈도우에서 파티션 확인

실행창에서 diskmgmt.msc 를 통해 디스크 관리창 열기

3. [fdisk /dev/sdb] 명령어로 디스크 파티션을 할당

4. 옵션 m을 사용해 명령어 확인 가능

가장 많이 사용하는 5가지 명령 옵션

5. n옵션을 사용해 새로운 파티션 생성

설정값 적용 안하고 enter을 누르면 default 값으로 설정됨

6. p옵션으로 성공적인 파티션 생성 확인

/dev/sdb1 파티션 생성 확인

7. w옵션으로 파티션 생성 저장 후 나가기

파티션 적용 성공

8. /dev/sdc 디스크도 sdb 디스크와 동일하게 파티션 진행

/dev/sdc1 파티션 생성 

9. 생성한 파티션 확인

lsblk 명령어로 확인
cat /proc/partitions 명령어로 확인

10. 디스크 사용을 위해 파일 시스템으로 변환

   - [mkfs -t /dev/디스크명]

   - [mkfs.etx4 /dev/디스크명]

mkfs -t xfs 명령어 사용
mkfs.ext4 명령어 사용

11. [blkid] 명령어로 파일시스템 확인

xfs로 만들어진 sdb1와 ext4로 만들어진 sdc1 확인

12. 장치 사용을 위해 디렉토리랑 연결(mount)

   * 기존 폴더 안에 파일이 있더라도 디스크로 마운트 한 후에는 디스크 내용물 출력

/test1 디렉토리안에 a.txt 만든 후 /test1 디렉토리를 sdb1과 마운트
디스크와 마운트 후 보이지 않는 a.txt, 디스크에 b.txt 파일 생성 후 umount 명령어로 마운트 해제
디스크와 마운트 해제 후 다시 보이는 a.txt
다시 디스크와 마운트 후 보이는 b.txt

13. 하나의 디스크를 2개로 파티셔닝

10GB 디스크를 약 5GB 씩 파티셔닝
p로 sdb1과 sdb2 생성 확인 후 w로 저장하고 나가기
lsblk 명령어로 파티션 생성 확인

14. 위의 10.번과 동일하게 파일시스템을 생성과 마운트를 진행 후 확인

df -Th 명령어 사용 하여 정상적인 마운트 연결 확인

15. 파티션 제거를 위해서는 umount 후 fdisk의 d 옵션으로 제거

   * 반드시 파티션 내부에서 나와서 루트 홈디렉토리에서 진행해야함

umount 명령어를 통해 마운트 해제 후 fdisk의 d 옵션을 사용해 파티션 제거

16. [lsblk] 명령어로 파티션 제거 확인

 




5. LVM(Logical Volume Manager)
 - Linux는 Mount라는 특수한 개념때문에 디스크 확장 작업
    이런 약점을 극복하고자 디스크 상위에서 디스크를 관리하는 LVM이라는 논리적인 개념을 도입
    여러 물리적인 디스크를 하나의 논리적인 디스크로 통합해서 사용이 가능하다.
 -  파티션 생성 시 반드시 Linux LVM (8e) System ID 변경할 것 (t 옵션을 사용하여 8e로 변경)

 

<pv명령어>

[pvcreate 장치명]   
[pvscan]
[pvdisplay]
[pvremove 장치명] 

<vg명령여>

[vgcreate  vg이름 pv명1 pv명2 ...]  
[vgextend 기존vg이름 추가할pv명1 추가할pv명2 ... ]  
[vgscan]
[vgdisplay]
[vgremove vg이름]  

<lv명령어>

[lvcreate -L 목표용량 -n lv명 vg명]  
[lvremove lv명 /dev/vg명/lv명] 
[lvextend -L +추가할용량 lv명] 
[             -L 목표용량 lv명]                     

<용량 확장 후 적용>

[resize2fs /dev/vg명/lv명] : ext 타입의 파일시스템에 사용

[xfs_growfs /dev/vg명/lv명] : xfs 타입의 파일시스템에 사용

 

 

<LVM 생성 실습 해보기>

 

1. sdb를 파티셔닝

System이 Linux로 설정되어 있는 sdb1

2. t옵션을 사용해 /dev/sdb1을 LVM 시스템아이디로 변경 (확인 후 w로 저장)

LVM의 코드는 8e

3. [lsblk] 명령어로 파티션 생성 확인

정상적으로 생성 된sdb1

4. [pvcreate] 명령어로 pv(Physical volume) 생성

 

5. pv가 제대로 생성 되었는지 확인

pvscan(간단하게 확인), pvdisplay(자세하게 확인), pvs 세가지 명령어로 확인 가능

6. [vgcreate] 명령어로 vg(Volume group) 생성 후 확인

10GB의 jwoh vg생성 확인

7. [lvcreate] 명령어로 개별 파티션 생성 후 확인

3GB 용량의 jwoh그룹에 속한 jwoh1 이름의 new(-n) lv
lvscan과 lvs로 확인

8. 파티션 사용을 위해 파일시스템 생성. (2개는 ext4타입, 1개는 xfs 타입)

ext4 타입으로 생성된 jwoh1
ext4타입으로 생성된 jwoh2
xfs타입으로 생성된 jwoh3

9. [blkid] 명령어로 생성한 파일시스템 확인

 

10. 파티션 사용을 위해 mount 후 확인

mount
df -Th 명령어로 마운트 확인

 

 

<LVM 용량 확장 실습>

 - 디스크의 용량이 가득 찼을 때 1GB 씩 추가하고자 하지만 현재 vg에 남은 용량이 없으면 다른 disk를 vg에 넣어 용량을 추가해줍니다.

 

1. [vgdisplay] 명령어를 이용해서 vg에 남아있는 용량 확인

jwoh vg에 남은 용량은 약1GB&nbsp;

2. [lsblk] 명령어를 사용해서 여유있는 disk 확인

5G의 sdc 디스크

3. sdc 디스크를 LVM으로 생성

파티션 생성 후 t 옵션으로 8e 코드인 LVM으로 생성, 저장

4. [pvcreate] 명령어로 pv 생성 후 [pvscan] 명령어로 확인

sdc1을 사용해 pv 생성

5. [pvextend] 명령어를 사용해 jwoh vg에 sdc1을 추가

 

6. [vgdisplay] 명령어를 사용해 추가된 VG 용량 확인

VG Size가 14.99 GiB로 늘어나고 사용 가능 용량도 5.99 Gib로 늘어남

7. [lvextend] 명령어를 사용해 기존 파티션에 용량 추가 후 확인

jwoh1 파티션에 1G 용량 추가
jwoh2 파티션에 1G 용량 추가
jwoh3 파티션에 1G 용량 추가

8. df -Th 명령어로 확인

아직 용량 추가가 되지 않은 jwoh1, jwoh2, jwoh3

9. [resize2fs] 명령어와 [xfs_growfs] 명령어를 통해 파일 확장을 적용시키기

ext4 타입의 파일은 resize2fs 명령어 사용
xfs 타입의 파일은 xfs_growfs 명령어 사용

10. [df -Th] 명령어를 사용해 적용 확인하기

1G씩 추가된 jwoh1, jwoh2, jwoh3 확인 가능

 

 

<LVM 제거 실습>

   - LVM 생성 과정을 거꾸로 진행

 

1. 마운트 해제

 

2. [lvremove] 명령어를 사용해 lv 제거 후 확인

jwoh1, jwoh2, jwoh3 제거 후 확인

3. vg로 넘어간 lv의 용량 확인

lv에 쓰였던 용량이 다시 반납된 vg

4. [vgremove] 명령어를 사용해 lv 삭제 후 확인

jwoh vg 삭제

5. [pvscan] 명령어로 pv 확인

VG 그룹이 없어진 것을 확인

6. [pvremove] 명령어를 사용해 /dev/sdb1, /dev/sdc1 삭제 후 확인

pvscan에서 sdb1과 sdc1 삭제 확인

7. [fdisk] 명령어를 사용해 파티션 제거

/dev/sdb1 파티션 제거
/dev/sdc1 파티션 제거

8. [lsblk] 명령어로 파티션 제거 확인

제거된 파티션 확인