티스토리 뷰

OS/Linux

Linux 디스크 관리

뵤루 2022. 2. 22. 10:00

오늘부터는 리눅스의 디스크 관리를 해볼 것이다

쪼금 까다로우니 세세히 메모해두자

 

오늘의 작은 팁

 

대충 이렇게 해주면

아이피 색이 강조된다고 한다

 


 

디스크를 관리하려면 디스크가 있어야한다

두개를 추가해주자

디스크를 추가할 땐 가상머신이 꺼져있는 상태여야 한다

 

 

10기가 하나 5기가 하나

추가해주고 다시 가상머신을 실행하면 된다

 

  • 디스크 확인이 가능한 명령어 종류

 

lsblk

 

fdisk -l

 

 

cat /proc/partitions

 

 

  • Storage 종류

DAS (Direct Attach Storage)

 - IDE, SCSI, SATA

 - 원격지 설치 불가능, 물리적인 Machine 내장 혹은 최대 1M를 넘지 않는 곳에 설치

 - 물리적인 연결 매체의 최대 유효거리를 넘지 못한다

 - 안정적이며 속도가 빠르다

 - 비용이 저렴하다

 - 파일 시스템 공유는 불가능하다

 

NAS (Network Area Storage)

 - NFS 

 - 원격지 설치 가능, 통상적으로 Network 환경 내에 구성

 - 속도는 100Mbps~1Gbps

 - 저렴하며 구성이 쉬움

 - 네트워크에 병목이 생기면 속도 저하가 발생한다

 - 사용자가 늘어나도 속도 저하가 발생한다

 - 파일 시스템 공유 가능

 

SAN (Storege Area Network)

 - Storage 환경 내에 구성한 네트워크

 - Fiber Channel이 구성됨

 - Storage용 전용 Switch, HBA(Server) 카드

 - 속도는 통상 16Gbps

 - 원격지 설치 가능

 - 파일 시스템 공유 가능

 - 비 쌈 완 전 비 쌈

 


 

  • Storage 저장 방식

Block Storage (AWS EBS : Elastic Block Storage, 단 OS가 설치된 DISK는 이동 불가)

 - 실제 물리적으로 Block 형태 (Harddisk 느낌)

 - 실제 Machine에서 다른 Machine으로 물리적 이동 가능

 - Cloud & Virtualization에서도 VM간 이동 가능

 - Block 단위로 저장됨

 

Object Storage (AWS S3 : Simple Storage Service)

 - 개별 파일 형태로 저장

 - 개별 파일마다 URL이 부여되며 이를 Rest API라 부른다

 - URL을 이용하여 파일을 이용 (파일명이 아닌 URL을 이용함에 주의)

 

 

Vmware Workstation에서의 Block Storage

 - 실제 Linux Machine과 동일하게 동작

 - SDA 분석

    - SD : scsi or sata 디스크를 의미함

      -> HD : IDE 방식의 디스크를 의미, 이제는 거의 찾아볼 수 없음

    - A : 물리적으로 첫 번째 디스크를 의미함

    - 1 : 첫 번째 파티션을 의미

  - 물리적으로 디스크가 세 개 있는 경우는 파티션 작업 이전

    - SDA, SDB, SDC

  - 첫 번째 디스크를 3개의 파티션으로 나눈 경우

    - SDA1, SDA2, SDA3

 

Linux에서 디스크를 사용하려면 아래 3단계를 반드시 거쳐야 한다

 

(윈도우) Partition -> File System -> 드라이브명 할당

(Linux) 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에서는 물리적인 장치를 사용하기 위해서 반드시 디렉터리와 연결해야 한다. 이를 마운트라고 한다

 


 

본격적으로 실습해보자!

 

 

sda는 시스템에서 사용하고 있으므로 sdb를 파티셔닝해보자

 

당연 윈도우도 파티셔닝이 되어있다

윈도우로 따지면 sda는 디스크2, sdb는 디스크0과 비슷하다

 

 

우리는 sdb를 파티셔닝할 것이지만, 사용할 때는 꼭 /dev를 붙여주도록 하자.

 

 

fdisk에 들어가면 이렇게 파티셔닝을 하는 화면으로 전환된다

 

자주 쓰는 명령어에 체크해두었다

 

d : 파티션 삭제

n : 파티션 생성

p : 파티션 확인

t : 파티션 id 교체

w : 파티션 저장

 

 

n을 누르면 파티션의 종류를 고르는 메뉴가 뜬다.

MBR방식은 파티션을 주 파티션 4개까지만 나눌 수 있다. 주 파티션 하나는 확장 파티션으로 만들 수 있고, 확장 파티션을 나눠 논리 파티션으로 만들 수 있다.

GPT방식은 주 파티션을 128개까지 나눌 수 있다.

 

여기서는 MBR방식을 사용한다

 

p (primary) : 주 파티션

e (extended) : 확장 파티션

디폴트는 p이다

p를 입력하거나 그냥 엔터치면 주 파티션으로 선택된다

 

 

파티션 번호를 고른다

평범하게 1번으로 가자

 

 

섹터를 나눈다

파티션의 크기라고 보면 된다

디폴트는 남은 용량의 전체를 사용하므로, 지정하고 싶다면 미리 지정해놓자

 

파티션을 만들면 p로 확인해볼 수 있다
w로 저장하면 깔끔하게 밖으로 나와진다
lsblk으로 sdb1이 생성된 것을 확인할 수 있다

 

같은 방법으로 sdc도 파티셔닝 해주었다.

 

파티셔닝을 해줬으니 파일 시스템을 만들어주자

 

파일 시스템을 만들어주는 명령어

 

이제 마운트를 할 수 있다

 

마운트를 시켜줄 마운트포인트를 만들어줘야 한다

마운트포인트는 반드시 빈 디렉터리여야 한다

 

빈 디렉터리를 만들어서 마운트!

 

디렉터리 내부에 파일이 있으면 마운트된 파일에 가려져 보이지 않기 때문에 가능한 빈 파일로 만들어주어야 한다

 

마운트를 하면 먼저 만든 파일은 보이지 않게 된다
마운트를 해제하면 다시 볼 수 있게됨

 

마운트를 해제하는 명령어들

 

 

파일 시스템을 따로 삭제하는 방법은 없기 때문에 파티션을 삭제하면 된다.

다시 fdisk로 진입할 때는 파티션넘버를 따로 적지 않고 들어가도 된다.

삭제하고 저장하면 끝!

 

 

파티션을 말끔히 정리했다

 


 

한 파티션에 디스크를 두 개 생성하여 마운트해보는 과정

 

한 디스크에 파티션 2개 생성 (첫 섹터에 크기지정을 해두어야한다)
파일 이미지 생성 (한쪽은 ext4, 한쪽은 xfs로 진행하였다)
mount
sdc도 같은 과정으로 마운트 시켜주어보았다.

 

현재 마운트된 파일시스템을 확인하기

 

 


 

LVM (Logical Volume Manager)

Linux는 Mount라는 특수한 개념 때문에 디스크 확장 작업의 난이도가 높다!

이런 약점을 극복하고자 디스크 상위에서 디스크를 관리하는 LVM이라는 논리적인 개념을 도입했다

여러 물리적인 디스크를 하나의 논리적인 디스크로 통합해서 사용이 가능하다

 

※파티션 생성 시 반드시 Linux LMV (8e) System ID를 변경할 것

 

[명령어]

 

PV (Physical Volume)

pvcreate /dev/sdb1 (/dev/sdb1을 물리적인 볼륨으로 만듬)

pvscan

pvdisplay

pvremove /dev/sdb1

 

VG (Volume Group) <- 베이스 캠프!

vgcreate DUU /dev/sdb1 /dev/sdc1 (/dev/sdb1과 /dev/sdc1을 DUU라는 이름의 볼륨그룹으로 만듬)

vgextend DUU /dev/sdd1 ( /dev/sdd1을 DUU 볼륨그룹에 넣어 확장)

vgscan

vgdisplay

vgremove DUU

 

LV (Logical Volume)

lvcreate -L 3G -n DUU1 DUU (DUU 그룹에 DUU1이라는 3G의 논리적인 볼륨을 만듬)

lvremove /dev/DUU/DUU1

lvextend -L +1G /dev/DUU/DUU1 (/dev/DUU/DUU1이라는 논리적인 볼륨에 해당 용량을 추가 ex. 3G일 때 +1G를 적으면 총 4G가 됨)

lvextend -L 5G /dev/DUU/DUU1 (/dev/DUU/DUU1이라는 논리적인 볼륨을 해당 용량으로 변경 ex. 3G일 때 5G를 적으면 총 5G가 됨)

 


 

여기서 system이 리눅스면 안됨!

 

system id 목록은 l 명령어로 확인이 가능하다
t 명령어로 system id 변경
pvcreate로 새 볼륨 생성, 이전에 쓴 ext4의 흔적이 남아있는 것을 지울지 묻는다
sdb1의 물리적 볼륨이 잘 만들어졌는지 확인!

 

이제 VG를 만들어주자

 

만들고 디스플레이로 확인!

 

이제 LV를 만들어줄 수 있다

 

 

처음 디스크를 잘못골랐다

다들 이러지말자

 

 

하여튼 잘 쪼개져서 들어갔다

 

 

파일시스템 만들어주고 블록아이디 확인!

 

 

마운트하고 확인!

 

그리고 이제 우리는 남은 용량이 없다

용량을 확장하고 싶으면 sdc를 볼륨 그룹에 넣어주면 된다

 

 

LVM의 장점!

이런식으로 용량 확장이 가능하다

 

  • resize 명령어

1. resize2fs (ext 계열)
# resize2fs /dev/<vg명>/<lv명>

2. xfs_growfs (xfs 계열)
# xfs_growfs /dev/<vg명>/<lv명>

 

이렇게 명령어를 입력해주면 제대로 용량이 확장된다

 

 

새로 만들어진 lv를 사용하려면 파일 시스템을 만들어주고 마운트해주어야 한다

 


 

리눅스는 이 두개만 있어도 정상적으로 동작한다

 

swap

- 디스크를 메모리처럼 사용하는 기술, swap이 동작하면 Memory 증설이 답이다

- 통상적으로 메모리 사이즈의 2배

 

/ (root directory)

 

하지만 다른 중요한 녀석들도 있다

 

/boot : 부팅에 관련된 파일이 존재함

- 논리적인 Volume(LVM, Softwqre RAID)에 속하게 되면 읽어들일 수가 없다

- /boot는 반드시 표준 파티션 쪽으로 빼놔야 한다

 

swap과 / 만 있어도 정말 정상적으로 돌아가는지 확인해보자

 

 

새 가상머신을 만든다

기존 리눅스에서 용량만 60G로 설정하고 만들어준 뒤 실행하자

 

 

설치 대상 탭으로 와서

 

 

파티션 옵션을 수동으로 체크하고 완료를 눌러주자

 

 

완료를 누르면 바로 이런 화면이 뜬다

 

 

여기로 들어가보자

 

 

그럼 이렇게 보인다

root와 swap과 /boot가 보인다

home 디렉터리까지 보인다

사용자가 많아지면 디스크가 풀이 되기 때문에 home은 따로 빼두었다

 

근데 이걸 하려는게 아니니 다 지워주자

 

빈 부분으로 돌아와서

 

 

아래의 +를 누르면 새 마운트지점을 추가할 수 있다

다음과 같은 것들을 마운트 지점으로 만들어줄 수 있다

 

 

용량이 정해져있는 swap부터 2G로 정해주자

 

 

만들고 나면 장치 유형을 표준 파티션으로 바꿔준다

 

 

루트 디렉터리도 추가

용량을 잡지 않으면 나머지 용량이 전부 루트 디렉터리로 간다

 

 

얘도 장치 유형을 LVM이 아닌 표준 파티션으로

 

 

완료를 누르면 변경 요약 창이 뜬다

 

sda를 파티션 두개로 나눠서 xfs와 swap으로 생성하였다

이제 설치 시작을 시켜주고 사용자 생성까지 해주면 된다

 

이걸 LVM으로 똑같이 만들어보자

새 가상머신을 만들자

이번엔 50기가

 

 

또 수동으로 파티션을 체크하고 넘어가자

 

 

/boot는 반드시 표준파티션으로 빼준다

얘는 LVM으로 들어가면 읽어들이지 못해서 부팅자체가 안된다

 

 

이번엔 swap과 /를 LVM에 포함시켜 만든다

VG와 이름을 내맘대로 만들어보기도 해본다

 

 

변경요약이 뜬다

이런식으로 용량을 많이 잡아먹는 디렉터리를 따로 뺄 수 있다

/home과 /var를 밖으로 빼보자

 

 

/boot는 반드시 표준 파티션으로 빼주고

 

 

swap, /home, /var의 용량을 지정해주고 나머지 용량을 /로 빼준다

 

 

파티션이 어떻게 나눠져서 어떻게 지정되었는지 보자

 

표준 파티션으로 만든 디렉터리
용량추가를 원하면 하드디스크를 추가해준다
배운대로 늘려주면 된다

 


 

/home과 /var를 따로 빼둔 가상머신

 

하드디스크 10G를 추가해서 /home /var /(root) 에 각각 3G씩 늘려주자

 

다하면 resize 명령어 필수필수

 

resize꼭해주자

챱챱

 


 

Quota

사용자 또는 그룹별로 디스크 사용량을 제한시킨다

 

[사용법]

설치

yum install -y quota

mkdir /t1

 

마운트

mount /dev/sdb1 /t1

 

/etc/sftab에 등록

vi /etc fstab

/dev/sdb1    /t1 ext4    defaults, usrjquota=aquota.user,jqfmt=vfsv0    0  0

 

 

재부팅 혹은 remount

mount -o remount /t1

 

quota 체크

cd /t1

quotacheck -F vfsv0 -avugm

ls -> aquota.user 파일 생성 확인

 

 

사용자별 디스크 제한량 설정

edquota -u a1

왼쪽 세개는 블록단위 설정, 오른쪽 세개는 inode 단위 설정. 적힌 용량 이상으로는 사용할 수 없다

 

 

유예기간

edquota -t

왼쪽은 블록단위, 오른쪽은 inode단위의 설정. 제한량 이상을 사용하게 되면 유예기간이 생기고, 끝나면 그 이상 사용할 수 없다

quota 실행

quotaon /t1

 

quota 종료

quotaoff /t1

 

 

'OS > Linux' 카테고리의 다른 글

Linux 패키지 관리  (0) 2022.03.02
Linux ACL  (0) 2022.02.24
Linux 사용자 및 그룹 관리  (0) 2022.02.18
vi 편집기  (0) 2022.02.18
Linux 파일의 속성 분석  (0) 2022.02.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함