Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

디스크, 파티션 관리 본문

운영체제/Linux - CentOs

디스크, 파티션 관리

세레프 2023. 3. 5. 10:32

 서버전부 파일로 이루어져 있으며, 무수한 프로세스를 통해 운영이 된다. 그리고 파일과 프로세스는 디스크에 저장되어 관리된다. 하지만 서버를 운영하기에 사용되는 디스크(파티션)의 용량은 기하급수적으로 크다.

 이때 서로 다른 디스크를 사용한다는 것은 파티션으로 나눠져 있다는 것과 같은 의미이며, 파티션이 다르다는 것은 서로 다른 저장공간이라는 뜻이다. 그리고 파티션 간의 파일의 이동이 불가능하다는 것이기에 서로 다른 운영체제를 사용할 수 있는 것이다.

 따라서 서버를 운영하기 위한 운영체제인 Linux에서 서버를 운영하기 위한 디스크나 파티션을 관리하는 방법이 존재한다.

 

 Linux 파티션

 위의 그림은 Linux에서 저장공간을 파티션으로 나누는 과정을 나타낸 그림으로, "primary 파티션", "extend 파티션", "logical 파티션"이 있다.

  • primary 파티션기본파티션으로, 저장공간을 4개까지 분할 할 수 있는 파티션
  • extend 파티션 primary 파티션을 대신하여  생성할 수 있는 파티션으로, primary파티션을 포함하여 4개까지 분할 할 수 있는 파티션
  • logical 파티션extend 파티션을 분할하여 사용하는 파티션으로, primary파티션과 extend 파티션 도합 4개까지 사용할 수 있어서 4개 이상의 파티션을 사용하기 위해서 사용하는 파티션

 

디스크 추가 절차

 서버를 운영할려면, 수많은 파일를 사용하게 되는데, 이 수많은 파일을 저장하기 위해서 우리는 하드웨어인 디스크를 추가해서 사용해야 하는 경우가 많을 것이다. 따라서 Linux 운영체제를 운영하기 위해선, Linux의 디스크 추가 방법에 대해서 알아야 한다.

  1. HDD/SSD 추가
  2. 파티션 분할
  3. 파일 시스템 생성
  4. 마운트

 

  • HDD/SSD 추가

 HDD/SSD 추가하드웨어를 컴퓨터나 노트북에 추가하는 것이기에, 전원을 끈 상태에서 본체를 열어 디스크를 추가하면 된다. 하지만 우리는 VMware를 통해 Linux를 운영하기에 외부의 디스크 추가 없이 컴퓨터의 디스크를 이용하여 추가 할 수 있다. 

 

 위의 과정은 VMware에서 디스크를 추가하는 과정이다. 이때, 디스크의 타입은 연결방식에 따라 타입이 결정이 되는데, "SCSI"타입으로 설정한다. 그 후 디스크의 크기를 20GB로 한 뒤에 종료하면, 다음과 같이 추가 된 것을 확인 할 수 있다.

 

  • 파티션 분할

 파티션 분할디스크를 사용하기 위해 사용할 저장공간을 선언하는 것으로, 파티션이 1개여도 선언을 해야 디스크의 공간을 사용할 수 있다.

  • fdisk [옵션] [장치] : 디스크 시스템 관련 명령어로, 디스크 장치를 확인하거나 디스크를 인식시킬 때 사용
옵션 사용 예시
-l : 장치 목록 출력 fdisk -l : 사용중인 디스크 목록 출력

fdisk /dev/sdb : "sdb"라는 이름을 가진 디스크의 설정에 접근

 

 이때, 디스크의 이름이 "sdb"인 것을 볼 수 있는데, 이는 scsi, sata 타입을 설치할 때에는 "sd"가 부여되며, 물리적인 디스크를 알파벳 순으로 표현되기에 "b"가 부여된다. 

주로 사용하는 커멘드
d 파티션 삭제
m 커멘드 메뉴 출력
n 새로운 파티션 생성
t 파티션 시스템 타입 변경 (LVM,RAID에서 사용)
w 설정 저장 후 설정 종료

 커멘드 "n"을 입력하면 파티션의 종류, 파티션 생성 갯수, 파티션 시작점, 파티션 종착점 순으로 설정한다. 그리고 모든 설정이 끝나고 커멘드 "w"를 입력한 뒤, "fdisk -l"를 입력하면 "/dev/sdb1"으로 파티션이 생성된 것을 확인 할 수 있다. 

 이때, 디스크 내의 파티션 갯수에 따라 디스크명 뒤의 숫자가 달라지는데, 이것을 파티션 넘버라고 하며, 1번째 파티션의 이름은 "sdb1", 2번쨰 파티션의 이름은 "sdb2" 순으로 진행된다. 

fdisk -l 명령어를 통해 출력된 sdb의 파티션 상황

 

  • 파일 시스템 생성

 파티션이 생성이 되면 그 안에 파일 시스템을 생성해야 한다. 만약 파일 시스템이 없으면, 디스크에 파일이 있다고 하여도 그것을 사용할 수 있는 시스템이 존재하지 않기 때문에 파일 시스템이 존재해야 한다. 

  • mkfs [옵션] [파티션] or mkfs.[파일시스템유형] [파티션] : 장치명에 파일 시스템을 생성할 때 사용하는 명령어
옵션 사용 예시
-t [파일시스템유형]  : 파일시스템유형을 설정 mkfs -t xfs /dev/sdb1 : "xfs"유형으로 "sdb1"에 파일시스템 생성

mkfs.xfs /dev/sdb1
: "xfs"유형으로 "sdb1"에 파일시스템 생성

 

 

파일시스템
 파일시스템이란 파일이나 자료를 저장 및 접근할 수 있도록 보관, 조직, 관리하는 체계로, 디스크에서 파일들의 구성 방식을 뜻하기도 한다. linux 뿐만 아니라 모든 OS가 지원하고 있으며, linux의 기본 파일은 "xfs"이다.

- i-node : 유형, 허가권, 링크수, 소유자, 소유그룹, 수정일 등 파일/디렉토리 정보를 수치화하여 저장해 놓은 것

- superblock: 파일 시스템에서 사용되는 주요 설정 정보(블록 크기(용량), i-node 개수 등등) 기록되는 영역
 

 

  • 마운트

 Linux 운영체제는 windows운영체재와 달리 마운트 작업을 진행해야 한다. 마운트디스크를 운영체제에 연결하는 작업이다.

  window운영체제디스크를 추가하고 파티션을 분할한 다음 파일 시스템 생성까지만 해도 사용 가능하지만, Linux 운영체제마운트 작업을 해야 운영체제가 디스크를 사용할 수 있다. 만약 마운트 작업을 하지 않을 경우, 추가한 디스크에 파일이 저장이 되는 것이 아닌, 기존에 사용하는 디스크에 파일이 저장된다.

  • mount [옵션] [파일 시스템 유형] [파티션] [마운트 포인트] : 파티션을 운영체제와 연결하는 명령어로, 마운트 포인트는 파티션과 파일을 저장할 수 있도록 하는 장소이다.
마운트 해지 명령어 사용 예시
umount [파티션]  : 파티션의 마운트를 해제하는 명령어

umount [마운트 포인트] : 마운트 포인터와 연결된 장치와의 연결을 해제하는 명령어
mount /dev/sdb1 /mnt : sdb1과 mnt디렉터리를 연결

 위의 mount명령어는 수동 마운트로 운영체제를 재시작할 때마다 마운트를 해줘야한다. 그래서 재시작을 하더라도 마운트가 되어있는 상태인 자동 마운트에 대해서도 알아야 한다. 

 "/etc/fstab"파일(파일시스템 관련 파일)을 vi편집기를 통해 다음과 같은 형식으로 수정하면, 재시작하여도 파티션과 마운트 포인터와 연결 되어있는 상태가 된다. 

[파티션 경로][마운트 장소][파일시스템][파일 속성][dump 여부][check 여부]

fstab 파일
재시작 후 df 명령어를 통해 마운트상태 확인

 

파티션 삭제 방법

 우리는 사용하지 않는 파티션을 삭제를 함으로써, 저장공간을 확보해야 한다. 파티션 삭제는 파티션을 만드는 과정의 반대로 다음과 같다.

  1. 마운트 해제
  2. 파티션 삭제

 먼저 마운트 해제의 경우, 수동마운트는 umount 명령어를 이용하여 해제하며, 자동마운트는 fstab파일에서 추가한 부분을 삭제하면 된다. 그리고 파티션을 삭제하면 되는데, fdisk 명령어를 이용하여 삭제하면 된다.

 

파티션 통합 기술

 서버를 운영하기 위해선 큰 용량이 필요하다. 하지만 용량이 큰 디스크는 비쌀 뿐더러 존재하지 않는다. 게다가 파티션은 독립적으로 인식하기에 우리는 파티션을 통합하여 용량을 하나로 인식시키는 기술이 필요하다.

  • LVM : 리눅스에서만 사용하며, 여러개의 파티션을 한개의 파티션으로 논리적으로 인식시키는 기술로, 첫번째 디스크의 용량이 차면 두번쨰 디스크를 사용하는 형식

LVM 만드는 과정

  1. 하드 드라이버를 파티션으로 만든다.
  2. 파티션을 LVM에서 사용할 수 있는 형태인 물리볼륨으로 변환한다.
  3. 물리볼륨들을 하나의 볼륨 으로 인식하도록 하는 볼륨그룹으로 묶는다.
  4. 논리적으로 볼륨그룹을 나눈다. 이때 생성되는 것이 논리볼륨이다. 

 

  • RAID : 서로 다른 디스크를 논리적으로 하나로 인식시키는 기술로, 첫번째 디스크가 차지 않아도 두번째 디스크에 분산저장이 가능
RAID level 내용
0 (striping) 두 디스크에 내용을 분할 저장, 하나의 디스크 파괴시 복구불가능
1 (Mirroring) 두 디스크에 같은 내용을 저장 ,복구가 가능하지만 예상 용량의 절반만 사용
2 (putity) 복구디스크 사용하며, 디스크 4개의 내용을 기록하기 위해서는 복구 디스크 3개가 필요하기에 효율이 좋지않다.
3 세개의 디스크를 사용하며, 데이터디스크 2개와 복구디스크로 사용, 복구디스크 삭제시 복구 불가
5 세개의 디스크를 사용하며, 복구 장소가 각각의 디스크에 존재 (디스크 2개 손상시 복구불가)
세개의 디스크를 사용하며, 복구 장소를 2개씩 각각의 디스크에 존재 
10 1과 0을 동시에 사용하며, 4개의 디스크를 사용할 때, 2개의 디스크를 각각 mirroring으로 묶은 뒤, 묶은 디스크 2개를 striping으로 묶음
01 1과 0을 동시에 사용, 4개의 디스크를 사용할 때, 2개의 디스크를 각각 striping으로 묶은 뒤, 묶은 디스크 2개를 mirroring으로 묶음

 

LVM 생성절차

  1. HDD/SSD 추가
  2. 파티션 나누기 및 파티션 타입 변경
  3. 물리적 볼륨 생성(PV)
  4. 볼륨 그룹 생성(VG)
  5. 논리적 볼륨 생성(LV)
  6. 파일시스템 생성
  7. 마운트

 위의 과정은 LVM생성 과정으로, 디스크를 추가하는 과정과 유사한 점이 많다. 다만 차이점이 있다면, 파티션 타입을 LVM에 사용할 수 있는 타입으로 변경해야 하고, 물리적 볼륨, 볼륨 그룹, 논리적 볼륨 생성해야한다는 점이 있다. 

 

  • 파티션 타입 변경

 LVM에서 사용하기 위해선 파티션의 타입을 linux lvm타입으로 바꿔줘야 한다. 이때 사용하는 커멘드는 "t"로 커멘드"t"를 입력 후 커멘드"l"를 입력하면 타입을 확인할 수 있으며,  linux lvm 타입으로 파티션 타입을 바꿔서 만들어야 한다.

fdisk -l명령어로 sdc의 상황 출력

 

  • 물리적 볼륨 생성

 파티션이나 디스크를 볼륨그룹으로 묶기 위해서는 해당 파티션이나 디스크에 볼륨을 만들어야 한다.

  • pvcreate [장치1] [장치2] ... : 장치들을 물리적 볼륨으로 만드는 명령어
예시
pvcreate /dev/sdb1 /dev/sdc1 : 파티션 sdb1, sdc1을 물리적 볼륨으로 변환

 

  • 볼륨 그룹생성
  • vgcreate [vg그룹명] [장치1][장치2] : 물리적 볼륨으로 만든 장치들을 그룹명을 가진 그룹으로 묶는 명령어
예시
vgcreate myvg /dev/sdb1 /dev/sdc1 : 물리적 볼륨을 가진 sdb1, sdc1을 myvg라는 이름의 그룹에 묶음

 

  • 논리적 불룸 생성
  • lvcreate -n [LV명] -l [용량 사용범위] [vg그룹명] : vg그룹명을 가진 그룹의 용량 사용범위를 정한 뒤, 사용범위만큼 사용하는 논리적 불룸을  LV명으로 생성하는 명령어
예시
lvcreate -n mylv -l 100%FREE myvg : myvg 그룹의 용량을 100%사용하는 mylv라는 이름의 논리적 불룸을 생성

 이 이후로 논리적 불룸의 주소는 "/dev/myvg/mylv"가 되며, 파일시스템 생성과 마운트의 명령어를 사용할 때 파티션자리에 파티션 대신 해당 주소를 사용한다.

파일 시스템 생성, 마운트 과정

 

LVM 용량 추가

 우리가 예상했던 용량보다 많은 용량이 필요로 하는 경우가 있다. 따라서 우리는 LVM 용량을 추가하는 방법에 대해서 알아야 한다.

  1. 추가할 파티션의 물리적 볼룸 생성
  2. 볼륨 그룹에 물리적 볼륨 추가
  3. 논리적 불륨에 볼륨 그룹의 용량 추가 
  • 추가할 파티션을 물리적 볼륨으로 생성

 불륨 그룹에 추가시키기 위해서는 해당 linux lvm 타입을 가진 파티션을 물리적 불륨으로 변환해야 한다.

 

  • 볼륨 그룹에 물리적 볼륨 추가
  • vgextend [vg명] [추가할 물리적 볼륨] : vg명을 가진 vg그룹에 물리적 볼륨을 가진 파티션을 추가하는 명령어
예시
vgextend myvg /dec/sdd1 : myvg그룹에 sdd1을 추가

 명령어 "pvdisplay"는 물리적 볼륨의 현상황을 출력하는 명령어로, 물리적 볼륨이 그룹에 제대로 추가되었는지에 대한 여부도 확인 할 수 있다.

 이때, PE PV를 구성하는 일정한 크기의 블록으로 4MB가 기본크기이다. 즉, 해당 물리적 볼륨에는 PE가 5119개가 있기에 20476MB = 2GB의 저장공간이 있다는 것을 알 수 있다.

 

  • 논리적 불륨에 볼륨 그룹의 용량 추가 
  • lvextend -l [PE 개수] [용량을 추가할 논리적 볼륨] : 논리적 불륨에 PE 개수*4MB 만큼 용량을 추가하는 명령어
예시
lvextend -l +5119 /dec/myvg/mylv : 논리적 불륨 mylv의 용량을 2GB 추가

 만일, 마운트 상태를 확인하는 명령어인 "df"를 입력 했을때, 용량추가가 안되어있을 경우, "xfs_growfs [논리적 볼륨]"을 입력후 "df" 입력하면 용량추가가 되어있다.

 

LVM 삭제방법

 사용하지 않는 LVM을 삭제함으로써 저장공간을 확보해야 한다. 따라서 우리는 LVM의 삭제방법을 알아야 한다. LVM삭제방법은 생성방법의 역순으로 진행되며, 다음과 같이 진행 된다.

  1. 마운트 해제
  2. 논리적 볼륨 삭제
  3. 볼륨그룹 삭제
  4. 파티션 삭제

 

  • 논리적 볼륨 삭제
  • lvremove [논리적 볼륨] : 논리적 볼륨을 삭제하는 명령어
예시
lvremove /dev/myvg/mylv : 논리적 볼륨인 mylv를 삭제

 

  • 볼륨그룹 삭제
  • vgremove [볼륨그룹] : 볼륨그룹을 삭제하는 명령어
예시
vgremove /dev/myvg : 볼륨그룹인 myvg를 삭제

 

마운트 해제, 논리적 볼륨, 볼륨그룹 해제

 

RAID 생성절차

  1. HDD/SSD 추가
  2. 파티션 생성 및 파티션 종류 변경
  3. RAID 생성
  4. 파일시스템 생성
  5. 마운트

 위의 과정은 RAID 생성과정으로, LVM의 생성과정과 유사하지만, LVM에서는 파티션을 볼륨으로 변환하여 사용 했다면, RAID에선 볼륨을 변환 할 필요 없이 바로 사용할 수 있다. 

 

  • 파티션 타입 변경

 RAID에서 사용하는 파티션의 타입은 Linux raid autodetect타입으로, 커멘드 "t" 를 입력한 후 커멘드 "l"를 입력하여 타입을 확인하고, Linux raid autodetect 타입으로 파티션 타입을 바꿔서 만들어야 한다.

 

  • RAID 생성
  • mdadm [옵션] ... : RAID를 생성하거나 삭제, 조정할 때 사용하는 RAID 관련 명령어로,"/proc/mdstat"에 RAID관련 장치의 상세정보가 저장되어 있다.
 옵션
 --create [RAID] --level = [레벨] --raid-devices=[사용할 파티션 수] [파티션1] [파티션2] : 파티션을 묶어 RAID 레벨에 맞는 성능을 가진 RAID 생성

--detail [RAID] : RAID의 상세정보 확인

[RAID] --remove [장치] : RAID에서 고장난 장치 삭제 ("/proc/mdstat"을 통해 확인")

--stop [RAID] : RAID 정지

--zero-superblock [파티션1] [파티션2] :  RAID에 있는 파티션의 슈퍼블럭(RAID Level과 파티션의 이음새) 완전삭제

[RAID] --add [장치] : RAID에 장치 추가

[RAID] --fail [장치] : RAID내 장치에 강제적 오류를 발생

--remove [RAID] : 슈퍼블럭을 삭제한 RAID를 삭제

예시
mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 :  sdb1,sdc1,sdd1 파티션을 묶어 레벨 5의 성능인  md5 라는 RAID명을 가진 RAID 생성

mdadm --detail /dev/md5 : md5의 생세정보 확인

mdadm /dev/md5 --add /dev/sde1 : md5에 sde1 파티션 추가

 이때, raid5 디렉토리에 디렉토리나 파일을 저장한 상태에서 "md5"의 파티션중 하나를 삭제해도 내용이 보존되어 있는것을 확인 할 수 있다. 이는 level 5의 기능인 것을 알 수 있다.

 위의 RAID는 현재 1개의 파티션이 삭제되어 있는 상태이기에 1개의 파티션을 추가할 수 있다.

 


df와 du

  • df[옵션][장치명] : 파일 시스템마다 사용하는 용량 확인하는 명령어로, 마운트된 디스크의 사용용량을 확인 할 수 있다.
옵션
-h : 단위로 출력

  • du[옵션] : 현 위치의 디렉토리에 있는 모든 디렉토리마다 사용하는 용량 확인하는 명령어
옵션
-h : 단위로 출력

 

사용자별 사용 디스크 용량 분할

 linux는 서버를 운영하기 위한 운영체제로, 여러 사용자와 계정이 서버에 접속해서 데이터를 저장할 수 있지만 디스크의 용량은 한정적이다. 그래서 우리는 사용자별로 사용할 수 있는 용량을 정할 필요가 있다.

 이를 quota라고 하는데, quota파일시스템마다 사용자나 그룹이 사용할 수 있는 용량, 사용자나 그룹이 생성할 수 있는 파일의 수를 제한하는 것이다.

  1. 파티션 및 파일시스템 설치
  2. 디렉터리 생성
  3. 파일시스템 인식/설정
  4. 쿼터설정

 

  • 파일시스템 인식/설정(마운트)

 etc 디렉토리에 있는 fstab파일(파일시스템 파일)을 vi편집기를 통해 수정할때, "defaults"속성 부분을 "defaults,uquota"로 변경해야 한다. 이때, "uquota"는 "userquota"로 해당 디스크는 사용자에 한해서 quota시스템 사용예정이라는 의미를 가지고 있다. 그 외에도 "gquota", "pquota"가 있으며, 각각 "groupquota" ," projectquota"라고 한다.

 

  • 쿼터 설정 
  •  xfs_quota [옵션] : "xfs"파일시스템의 quota를 설정하는 명령어, 탈출할 땐 "ctrl+c"
옵션 예시
-x : 개발자 모드

-c [명령] : quota관련 명령 지정
 xfs_quota -x : "xfs"파일시스템의 quota를 설정 개발자모드로 실행

xfs_quota -x -c 'report -i' /mnt1 : /mnt1에 마운트 되어 있는 디스크의 i-node 출력

 

  1. "xfs_quota -x"를 입력 →  xfs파일의 quota를 설정할 수 있도록 질의형식 쉘에 접속
  2. path 입력 → 파일시스템이 xfs파일인 디스크 목록 출력
  3. path [디스크의 번호] → quota설정한 디스크를 선택
  4. limit -u bsoft=[제한용량] bhard=[제한용량] isoft=[생성제한수] ihard=[생성제한수] [사용자] → 사용자에 한해서 해당 디스크의 사용용량과 생성가능 파일 수를 제한

 이때, 사용자의 용량을 제한할 때 반드시 단위를 적어야 한다. 예를들어 10GB로 제한한다고 할 때, "10g"라고 해야하며, "1000m"이라고 해도 된다.

 

 용량과 생성파일을 제한할 때, soft와 hard를 사용하는것을 볼 수 있는데, soft사용자에게 기본적으로 사용할 수 있는 크기라면, hard사용자가 사용할 수 있는 최대 크기이다.

 

 기본적으로 "hard"만큼 사용이 가능하지만, 유예기간없이 사용할 수 있는 크기는 "soft"이며, 추가크기를 사용할 경우, 관리자가 정해놓은 유예기간동안만 사용할 수 있다. 예를 들어, "isoft = 3 ihard = 5"라고 설정했을 때, 유예기간없이 사용가능한 파일수는 3개이지만, 4~5개일 경우 유예기간이 생기게 된다. 즉 "soft"를 전부 사용하여 "hard-soft"만큼 초과할 경우 유예기간동안만 데이터를 저장하게 되는 것이다. 

'운영체제 > Linux - CentOs' 카테고리의 다른 글

사용자 계정 관리  (1) 2023.03.12
네트워크와 프로세스  (0) 2023.03.06
데이터 관리 기본 명령어  (1) 2023.02.27
디렉토리, 파일 기본 명령어  (0) 2023.02.26
Linux의 부팅과 기본 명령어  (0) 2023.02.20
Comments