Linux

22.02.22

가로선 2022. 2. 22. 16:37

 

   목차   

 

1. Storage 종류

 - DAS

 - NAS

 - SAN

2. Storage 저장방식

 - Block Storage

 - Object Storage

3. VM 하드 추가

4. 사용하는 디스크 출력방법(3가지)

5. Partition

 - fdisk

6. File System

 - mkfs

7. Mount

 - mount, umount

    - Linux에서 디스크를 사용하려면 5, 6, 7 번 필수!

8. LVM

 - PV

 - VG

 - LV

 - LV까지 생성 후

 - 새로운 디스크 추가

 - 삭제 방법


 

   Storage 종류   

 

   DAS(Direct Attach Storage)   

 - IDE, SCSI, SATA

 - 원격지 설치 불가능, 물리적인 머신에 내장 혹은 최대 1m 정도를 넘지 않는 곳에 설치
 - 물리적인 연결매체의 최대 유효거리를 넘지 못한다
 - 안정적이며 속도가 빠르다(읽기, 쓰기 속도)
 - 비용이 저렴하다
 - 파일 시스템 공유는 불가능
 -> 안정적이며, 빠르고 저렴한 것 때문에 많이 사용

 

   NAS(Network Area Storage)   

 - 통상적으로 Network 환경내에 구성
 - 속도는 100Mbps ~ 1Gbps
 - 원격지 설치 가능
 - NFS
 - 저렴하며 구성이 쉽다
 - 네트워크에 병목이 생기면 속도 저하 발생
 - 사용자가 늘어나도 속도 저하 발생
 - 파일 시스템 공유도 가능

 공유폴더 vs 파일시스템

    - 공유폴더는 대상 컴퓨터의 폴더에 들어가서 잠시 사용하는 것이지만,

       파일 시스템은 운영체제가 파일을 시스템의 디스크상에 구성하는 방식(디스크 용량 차지)

 

   SAN(Storage Area Network)   

 - Storage 환경내에 구성한 네트워크
 - Fiber Channel(광 케이블)로 구성됨
 - Storage용 전용 Switch, HBA(Server) 카드(매우 값비쌈)
 - 속도는 통상 16Gbps
 - 원격지 설치 가능
 - 파일 시스템 공유도 가능
 - 너어무 비싸다

 

 

   Storage 저장 방식   

 

   Block Storage   

 - AWS EBS : Elastic Block Storage
 - 실제 물리적으로 Block의 형태(Harddisk 생각)
 - 실제 Machine에서 다른 Machine으로 물리적 이동 가능
 - Cloud & Virtualization에서도 VM간 이동 가능
 - Block 단위로 저장됨

 

 - VMware Workstation에서의 Block storage

    - 실제 Linux Machine과 동일하게 동작
    sda1 분석
    - sd : SCSI or SATA 디스크를 의미함
        - (참고)HD : IDE 방식의 디스크 의미, 이제는 거의 찾아볼 수 없음
    - a : 물리적으로 첫번째 디스크를 의미함
    - 1 : 첫번째 파티션을 의미
    - 물리적 디스크가 3개 있는 경우는, 파티션 작업 이전
        - sda, sdb, sdc
    - 첫번째 디스크를 3개로 파티션을 나눈 경우
        - sda1, sda2, sda3

 

   Object Storage   

 - AWS S3 : Simple Storage Service
 - 개별 파일 형태로 저장
 - 개별 파일마다 URL이 부여됨. 이를 Rest API라 부른다
 - URL을 이용하여 파일을 이용(파일명이 아닌 URL을 이용함에 주의)

 

 

   VM 하드디스크 추가   

 

VM Settings에서 Add 클릭

 

disk type은 SCSI 방식

 

새로운 virtual disk 생성

 

disk size는 10으로 지정하고 single file로 만든다

 

이름 지정

 

 

   사용하는 디스크 출력방법   

 

lsblk 사용시 출력 화면

    - lsblk를 주로 많이들 사용한다

 

fdisk -l 사용시 출력화면

  

cat /proc/partitions 사용시 출력화면

 

 

   Partition   

 - 물리적인 디스크를 논리적으로 분할
 - 디스크를 사용하기 위해서는 반드시 1개 이상의 partition을 생성해야만 한다

 

   fdisk   

 - 디스크 현황 및 파티션 현황 확인, 디스크의 파티션 관리

ex) fdisk 장치명

 

fdisk 명령어로 디스크 파티션(/dev/sdc1) 만들기

    - n : 파티션 새로 만들기

        - MBR(전통 방식)에서는 주파티션 4개가 최대(주파티션 중 하나를 확장 파티션)
            - 즉, 주파티션 3개 확장파티션 1개(확장파티션 1개를 12개의 논리파티션으로 사용)

        - GPT(최신 방식, win10이후 방식)에서는 주파티션 128개

        - Partition number : default 값부터 주는 것을 추천

        - First sector : default 값으로 넘어가자

        - Last sector : 용량 지정

    - p : 만든 것 확인

 

/dev/sdc2 생성

    - w : 저장하고 나가기

 

/dev/sdc에 파티션 2개 생성 후 결과

 

/dev/sdc1, /dev/sdc2 삭제

    - d : 파티션 삭제

 

p 커멘드를 사용해서 보니 아무것도 생성x

 

 

   File System   

 - 파일 및 디렉터리를 효율적으로 관리하기 위한 시스템
 - Linux : xfs, ext4, ext3, ext2 (반대 방향으로 발전 / xfs가 최신)
    - ext3, ext4 : journaling file system

        - 저널링 : 파일을 삭제할 경우 log 기록을 생성 후 삭제, 해당 log로 파일 복원 가능
        - ext3의 느린속도를 개선한 것이 ext4
        - 하기전에 log를 남기다 보니 속도가 느림(체감은 x)
 - Window : NTFS, FAT32, FAT13(NTFS가 최신)

 

   mkfs(make file system)   

 ex) mkfs -t xfs 장치명 == mkfs.xfs 장치명(선호 방식)

 

/dev/sdc1, /dev/sdc2에 파일시스템 생성

 

blkid로 장치의 type을 확인할 수 있다

 

 

   mount   

 - Linux에서는 물리적인 장치를 사용하기 위해서는 반드시 디렉터리와 연결해야한다

 - 디렉터리가 무조건 존재해 있는 디렉터리여야 한다

 

   mount, umount   

 ex) mount 장치명 마운트포인터(디렉터리명)

      umount 마운트포인터 or 장치명

 

/dev/sdc1, /dev/sdc2를 각각 /test3, /test4에 마운트 시켰다

    - df -Th로 확인 가능하다

        - T : type 확인 / h : 용량 확인

 

mount 전과 후 /test1 안의 파일 차이

 

umount 전과 후 /test1 안의 파일 차이

    - test1 디렉터리를 마운트를 통해 /dev/sdb1을 바라보게 했기 때문에

      마운트 전에 있던 test.txt와 a.txt가 보이지 않게 되는 것이다

    - 반대로 언마운트를 통해 풀어주었기때문에, 마운트 상태에서 생성한 test1.txt가 보이지 않음

 

 

   LVM   

 - Linux는 Mount라는 특수한 개념때문에 디스크 확장 작업의 난이도가 높다
   이러한 약점을 극복하고자 디스크 상위에서 디스크를 관리하는 LVM이라는 논리적인 개념도입
   여러 물리적인 디스크를 하나의 논리적인 디스크로 통합해서 사용이 가능

 ->  즉, 예로 들면 PV가 5G씩 3개가 있으면 VG에 PV 2개를 넣으면 10G가로 만들어서

       LV로 3G씩 3개로 사용 가능(얼마든지 다르게 LV로 찢을 수 있다)

    - VG에 용량 추가도 가능(PV로)

 - 명령어 일관성이 있어서 매우편하다

 

   PV(Phsical Volume)   
 - pvcreate 장치명 : 생성

 - pvscan(pvs) : 간단히 보기

 - pvdisplay : 자세히 보기

 

디스크 파티션 생성

    - command t를 통해서 system ID 변경 가능   

    - 파티션 생성시 system ID를 꼭 Linux LVM (8e) 로 변경해야만 한다

 

pvcreate를 통해 /dev/sdb1을 pv로 생성

    - VG에 합류 전이므로 빈칸으로 되어있다

 

pvdisplay를 통해 자세히 보기

 

   VG(Volume Group)   

 - 베이스 캠프(VG만 있으면 LV 얼마든지 만들 수 있음)

 - vgcreate vg이름 pv이름 : vg에 pv 참여

    - 다중으로 가능

 - vgscan(vgs) : 간단히 보기

 - vgdisplay : 자세히 보기

    - Alloc PE, Free PE를 보기 위해 scan 보다 많이 사용

 - vgextend vg이름 추가pv이름 : vg에 pv 추가

    - 다중으로 가능

 - vgremove vg이름 : vg 삭제

 

vg이름 knlee 생성

 

vgdisplay 출력 화면

 

   LV(Logical Volume)   

 - lvcreate -L 목표용량 -n lv이름 vg이름 : lv 생성(n은 맨처음 새로 만들 때 무조건 넣기)

 - lvscan(lvs) : 간단히 보기

 - lvdisplay : 자세히 보기

 - lvremove /dev/vg이름/lv이름 : 삭제

 - lvextend -L 용량(4G) /dev/vg이름/lv이름 : 최종 목표 용량 지정

 - lvextend -L +용량(1G) /dev/vg이름/lv이름 : 기존 용량에 추가

 

lvcreate를 통해 knlee1 ~ 3 lv을 생성

 

vgdisplay를 통해 Alloc PE, Free PE 변화 확인

 

   LV까지 생성 후   

 

파일시스템 생성

 

blkid로 확인

 

마운트 하기

 

mount 명령어로 확인

 

df -Th로 확인

 

    - 여기까지 진행을 완료하게 되면, VG의 Free PE가 1G정도 남게 되는데 

      knlee1, 2, 3에 각각 1G씩 더 필요하다고 가정해보자

      원래라면 언마운트 후 디스크 파티션 제거 후 다시 디스크를 추가하고

      파티션 잡고 마운트하는 반복 작업이 필요하다

      하지만, LVM은 VG에 새로운 PV(디스크)를 추가만 해주면 된다

 

   새로운 디스크 추가   

 

/dev/sdc1 pv를 생성후, vgextend 명령어를 통해 vg knlee에 추가 시킨다

 

Free PE가 1G정도에서 5G가 추가되어 6G 정도가 된 것을 볼 수 있다

 

lvextend를 통해 각각의 lv에 1G를 추가해준다(현재 +1G나 4G는 같은 것)

 

Free PE가 3G가 줄어들어 3G정도가 된 것을 볼 수 있다

 

각각의 LV에 1G가씩 추가 되었다

 

lvs로 lv를 확인했을 때는 4g로 각각 올라간 것을 확인 했는데 df -Th에는 적용되어 있지 않다

 

명령어를 통해 적용시켜 주어야 한다

    - ext4 적용 : resize2fs /dev/vg이름/lv이름
    - xfs 적용 :  xfs_growfs /dev/vg이름/lv이름

 

4G로 각각 바뀐 것을 확인할 수 있다

 

   삭제 방법   

 - LVM 만들기 반대방향으로만 진행하면 문제 없다!

 

언마운트 후, lvremove를 통해 lv 먼저 제거한다

 

vgdisplay를 통해 Free PE가 15G로 늘어난 모습을 볼 수 있다

 

vgremove를 통해 vg를 2번째로 삭제

 

pvremove를 통해 pv를 3번째로 삭제

    - 만드는 순서는 PV -> VG -> LV 순이지만, 지울 때는 반대!

 

디스크 파티션 삭제

    - 만약, 이대로 진행이 안되거나 오류가 생기면 언마운트만 진행 후 디스크 파티션 삭제

'Linux' 카테고리의 다른 글

22.02.24  (0) 2022.02.24
22.02.23  (0) 2022.02.23
22.02.21  (0) 2022.02.21
22.02.18  (0) 2022.02.18
22.02.17  (0) 2022.02.17