Linux

Ch.6 하드디스크 관리와 사용자별 공간 할당-1

낑깡꺙냥 2024. 3. 31. 22:04

6.1 하드디스크 한 개 추가하기

6.1.1 IDE 장치와 SCSI 장치 구성

메인보드의 IDE 0, IDE 1 슬롯(메인보드에 케이블을 꽂을 수 있는 홈, 일반적으로 PC에서 사용하는 하드디스크나 CD/DVD 장치)에는 각각 2개의 IDE 장치를 장착할 수 있다. = 총 4개의 IDE 장치, 이 4개의 장치를 표기할 때는 주로 IDE 0:0, 0:1, 1:0, 1:1로 표기한다.

*요즘에는 PC용 하드디스크나 CD/DVD장치로 IDE대신 SATA를, 서버용으로 SCSI대신 SA-SCAI를 주로 사용한다.

 

- VMware는 기본적으로 IDE 1:0에 CD/DVD 장치를 장착한다. 그러므로 IDE 장치를 추가하려면 나머지 비어있는 3개의 장치에 장착해야 된다.

- VMware는 메인보드에 4개의 SCSI 슬롯을 제공한다. 각각의 SCSI는 SCSI n:0~n:15(SCSI 0:7 제외)까지 15개의 하드디스크를 장착할 수 있으므로 총 60개의 SCSI 하드디스크를 사용할 수 있다.

- 리눅스에서 처음 장착된 SCSI 하드디스크의 이름을 /dev/sda(SCSI 0:0)라고 부른다. 또 추가로 SCSI 하드디스크가 장착되면 /dev/sdb(SCSI 0:1), /dev/sdc(SCSI 0:2), /dev/sdd(SCSI 0:3)  등으로 불린다. 그리고 /dev/sda 장치에서 파티션을 나누는데 이 파티션은 순차적으로 1, 2, 3, 4를 붙여 /dev/sda1, /dev/sda2로 부른다. = SCSI 하드디스크를 물리적으로는 /dev/sda, /dev/sdb, /dev/sdc 형식으로 부르면 되고, 그 장치에서 파티션이 나뉜 것을 논리적으로 /dev/sdb1, /dev/sdb2, /dev/sdb3 형식으로 부르면 된다.

 

6.1.2 하드디스크 추가하기

추가 하드디스크의 장치를 사용하려면 최소 1개의 파티션으로 나눠야 한다. 이 파티션을 그냥 사용할 수 없어서 반드시 특정한 디렉터리에 마운트시켜야 사용할 수 있다.

*리눅스에서는 하드디스크 파티션뿐만 아니라 CD/DVD나 USB 메모리 등도 특정 디렉터리에 마운트시며야 사용할 수 있다.

 

  1. 물리적인 하드디스크 장착
    • [Edit virtual machine settings]에서 새 하드디스크를 추가한다.
  2. 가상머신을 부팅한 뒤 터미널에서 fdisk 명령으로 파티션을 설정한다. 
    • fdisk /dev/sdb ->SCSI 0:1 하드디스크 선택
    • Command : n  -> 새로운 파티션 분할
    • Select : p -> primary 파티션 선택
    • partition number : 1 -> 파티션 번호 1번 선택 (Primary 파티션은 최대 4개까지 생성 가능)
    • First Sector : ENTER -> 시작 섹터 번호 입력
    • Last Sector : ENTER -> 마지막 섹터 번호 입력
    • Command : p -> 설정된 내용 확인
    • Command : w -> 설정 저장

NOTE

더보기

- 디스크 전체를 하나로 사용하더라도 반드시 하나의 파티션은 생성해야 된다.
- extended는 primary의 자리를 한 자리 차지한다.
- 가용=포맷했을 때 경로를 지정할 수 있는가
- extended는 일반 파티션처럼 사용하지 않는다.
- primary 3개 + extended 1개(logical 4개) = 사용가능한 파티션=7개
- extended는 하나만 생성 가능하다.

  1. 파일 시스템을 ext4 형식으로 생성(포맷 = 파일시스템 생성 - 이 과정에서 삭)
    • mkfs -t 파일시스템 파티션장치 또는 mkfs.파일시스템 파티션장치
    • swap을 제외하고는 ext4나 xfs 파일시스템을 사용하는 것이 바람직하다. 
    • 더보기
      - swap은 마운트 포인트를 가지지 않는다. swap은 swap이라는 파일 시스템으로 포맷되어 있다- 포맷이 된 파티션을 지우는 것은 위험하다.
  2. 특정 디렉터리에 마운트
    • mount /dev/sdb1 마운트될디렉터리
  3. 컴퓨터 부팅 시 장치가 항상 마운트되어 있도록 설정
    • /etc/fstab 파일을 vi 에디터나 gedit으로 열어서 제일 아랫부분에 다음과 같이 추가
      • 더보기
        vi /etc/fstab
        *오타가 하나라도 발생 시 부팅 과정에서(파일 시스템 마운트 과정)부팅 중단
        * 수정 후 systemctl daemon-reload (최신화)명령을 치면 좋다.
        *첫 번째 숫자 0 : dump 명령으로 백업 수행 시
        0 - dump로 백업 X
        1 - dump로 백업 가능
        *두 번째 숫자 0 : fsck 부팅 시 실행 여부
        0 - 검사 미수행
        1 - 일반적으로 /, 우선적으로 검사 수행
        2 - 1이 들어간 파일 시스템 검사 후 수행
    • /dev/sdb1        마운트될디렉터리        ext4         defaults      0      0
    • 장치 이름        마운트될디렉터리    파일 시스템    속성     dump 사용 여부        파일 시스템 체크 여부

NOTE

더보기

디스크 파티션 마운트 현황 

df -hT(human-readable Type)

lsblk -f 

mount

 

blkid: UUID(Universally Unique IDentifier = 범용 고유 식별자) 확인 가능

 

연구과제

server B에 디스크1개(500G) 추가
파티션 12개 생성(가용11개)
주파티션 중 하나는 120G
용량 분할은 임의

- 주3개(120G, 80G, 40G)
- 확1개(260G)
- 논8개(40G, 20G, 50G, 30G, 20G, 40G, 30G, 30G)

임의의 파일 시스템으로 모두 포맷 후 모두 임의의 경로에 마운트하시오.

이후 자동 마운트되도록 하시오.

요약 현황을 파일로 출력하시오.

fdisk /dev/sdb
#1-3 주파티션, 4 확장파티션 5-12 논리파티션#

mkfs.ext4 /dev/sdb1
#4번 제외 1-12번 파티션 포맷#

mkdir -p /mount/data1
#4번 제외 1-12번 마운트 포인트 생성#

mount /dev/sdb1 /mount/data1
#4번 제외 1-12번 마운트#

vi /etc/fstab
#/dev/sdb1 /mount/data1 ext4 defaults 0 0#          #vi 편집#
reboot  #확인

df -hT /dev/sdb > /dftext
mount | tail -15 > /mountext
lsblk > lsblktext

 

6.2 여러 개의 하드디스크를 하나처럼 사용하기

6.2.1 RAID의 정의와 개념

서버 컴퓨터의 저장 장치 대부분은 하드웨어 RAID 또는 소프트웨어 RAID 방식을 사용한다.

RAID는 여러 개의 하드디스크를 하나의 하드디스크처럼 사용하는 방식이다. 비용을 절감하면서도 신뢰성을 높이며 성능까지 향상시킬 수 있다.

 

RAID
Redudant 중복
Array 배열
Independent / Inexpensive 독립적인 / 저렴한
Disks 디스크들

 

하드웨어 RAID

하드웨어 RAID는 하드웨어 제조업체에서 여러 개의 하드디스크를 연결한 장비를 만들어 그 자체를 공급하는 것이다. 좀더 안정적이지만 상당히 고가다.

 

소프트웨어 RAID

고가 하드웨어의 대안으로, 하드디스크만 여러 개 있으면 운영체제에서 지원하는 방식으로 RAID를 구성하는 방법이다.신뢰성이나 속도 등이 떨어지지만, 아주 저렴한 비용으로 좀 더 안전하게 데이터를 저장할 수 있다.

 

6.2.2 RAID 레벨

RAID는 기본적으로 구성 방식에 따라 Linear RAID, RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5의 일곱가지로 분류할 수 있다.실무에서 주로 사용하는 방식은 Linear RAID, RAID 0, RAID 1, RAID 5, RAID 6, RAID 1+0(RAID 1과 0의 혼합)이다.

 

단순 볼륨

하드디스크 하나를 볼륨(묶음) 하나로 사용하는 방법이며 RAID 방식에는 포함되지 않는다.

 

Linear RAID와 RAID 0

  • 두 방식 모두 최소 2개의 하드디스크가 필요하다. 2개 이상의 하드디스크를 1개의 볼륨으로 사용한다는 점은 비슷해 보이지만 저장 방식이 다르다.
  • Linear RAID 방식은 앞 하드디스크에 데이터가 완전히 저장된 후 다음 하드디스크에 데이터를 저장한다. 이와 달리 RAID 0 방식은 모든 하드디스크를 동시에 사용한다. = 여러 개의 하드데스크에 동시에 저장 = 스프라이핑 방식. 
  • RAID 0 방식은 Linear RAID에 비해 저장되는 시간 또는 속도 면에서 성능이 뛰어나지만 신뢰성이 낮다는 단점이 있다. 그러므로 RAID 0 방식을 사용하는 데이터는 '빠른 성능을 요구하되, 혹시 전부 잃어버려도 큰 문제가 되지 않는 자료'를 저장하는데 적절한 방식이다.
  • Linear RAID 방식은 다른 디스크의 크기에 영향을 받지 않는다.
  • 두 방식 모두 100%의 공간 효율성을 가진다. (RAID 0의 경우, 용량이 다른 것을 조합할 경우 손해 발생)
    • 더보기
      Linear RAID를 제외한 RAID 0, 1, 5, 6, 1+0을 구성할 때는 동일한 용량의 디스크를 사용하는 것이 일반적이다.

RAID 1

  • RAID 1 방식의 핵심은 '미러링'이라고 할 수 있다. 즉 똑같은 데이터의 거울을 만들어 놓는 것이다.
  • 따라서 데이터를 저장하는 데 2배의 용량을 사용한다(즉, 비용이 2배로 든다 = 공간 효율이 50%밖에 되지 않는다.)
  • 2개의 하드디스크 중 하나가 고장나도 데이터가 손상되지 않는다. 이를 '결함 허용을 제공한다'라고 표현한다.
  • RAID 1 방식을 사용하는 데 적당한 경우는 '하드디스크가 고장나도 없어져서는 안 된 중요한 데이터'가 있을 때 이다.
  • 저장속도는 느리지도 빠르지도 않다.

RAID 5

  • RAID 1처럼 안전성이 어느정도 보장되면서 RAID 0처럼 공간 효율성도 좋은 방식을 어느 정도 포용하는 방식이다.   (= 어느정도의 결함을 허용하며 저장 공간 효율도 좋은 방식)
  • 최소한 3개 이상의 하드디스크가 있어야 구성할 수 있으며 대부분 5개 이상의 하드디스크로 구현한다.
  • 하드디스크에 오류가 발생(데이터 유실)하면 패리티 비트(XOR 연산)를 이용해서 데이터를 복구할 수 있다.
    • XOR : 배타적 논리합
  • 저장 공간 중 디스크 1개 분량이 패리티 비트 저장 공간으로 사용된다.
    • 하드디스크의 개수를 N개라 하면, N-1만큼의 공간을 사용할 수 있다.(디스크의 갯수↓ -> 공간 효율↓ -> 안전성↑(디스크가 동시에 고장날 확률이 적으므로))
  • 2개의 하드디스크가 동시에 고장나버리면 모든 데이터를 전혀 복구할 수 없다.

RAID 6

  • RAID 5 방식을 개선한 2개의 패리티를 사용하는 방식이다.
  • 최소 4개의 하드디스크로 구성한다. (N-2만큼의 공간)
  • 공간 효율은 RAID 5보다 약간 낮지만, 2개의 하드디스크가 동시에 고장나도 이상이 없다.(데이터의 신뢰도가 조금 더 높다.)
  • RAID 6은 패리티를 2개 생성해야 하므로 내부적인 쓰기 알고리즘이 복잡해져 RAID 5와 비교했을 때 성능(속도)이 약간 떨어진다.

그 외 RAID를 조합하는 방식

RAID 1+0

  • RAID 1로 구성한 데이터를 다시 RAID 0으로 구성하는 방법이다.
  • 신뢰성(안전성)과 성능(속도)을 동시에 확보할 수 있다.

mdadm 명령

mdadm 명령은 Rocky Linux에서 RAID 장치를 생성/관리하는 명령어다.

  • mdadm --create /dev/md9   --level=linear   --raid-device=2  /dev/sdb1  /dev/sdc1
    • --create /dev/md9 -> md9 장치에 RAID 생성
    • --level=linear -> Linear RAID 지정, 0은 RAID 0, 1은 RAID 1 등으로 지정
    • --raid-device=2 /dev/sdb1 /dev/sdc1 -> 2개의 하드디스크를 사용하며, 이어서 나오는 것은 장치 이름
  • mdadm --stop /dev/md9 -> RAID 장치인 /dev/md9 중지
  • mdadm --run /dev/md9 -> 중지된 RAID 장치 가동
  • mdadm --detail /dev/md9 -> /dev/md9 장치의 상세 내역 출력
  • mdadm --detail --scan -> 전체 작동되는 RAID를 확인한다.
  • mdadm  /dev/md5  --add /dev/sdi1 -> /dev/md5이라는 RAID 장치에 /dev/sdi1 파티션을 추가

NOTE

더보기

레이드 구성 시 포맷은 최종적으로 가상 장치가 생성된 이후에 수행

 

NOTE

더보기
  • lost+found
    디스크 작업을 통해 변경되거나 손실, 삭제된 파일들의 정보를 임시 보관
  • 82 - Linux swap
    83 - Linux
  • 호스트가 켜져있을 경우 디스크를 추가하는 기능 - Hot Swap
  • 보안의 3요소 
    • 기밀성(confidentaility)
      인가자만 접근 가능
    • 가용성(availability)
      언제나 접근 가능
    • 무결성(integrity)
      접근한 정보가 완벽해야 한다.
    • 인증성, 부인방지성, 책임추적성
  • fdisk -l /dev/sdb;fdisk -l /dev/sdc         /          fdisk -l /dev/sdb && fdisk -l /dev/sdc
    • 세미콜론(;): 앞 명령 성공 여부 상관없이 실행
    • &&: 앞 명령이 성공해야 실행
    • 서로 다른 명령을 연속해서 실행