Linux(CentOS) 저장소 관리

박종현·2022년 5월 16일
0

리눅스(CentOS)

목록 보기
3/13

DAS(Direct Attached Storage) ↔ Network Attached Storage(NAS)

하드 디스크 구조

  1. 하드디스크

    • 물리적인 장치
    • 자기(Magnetic)을 사용한 데이터 기록
    • 주요부품
      • 플래터(Platter) : 실제 전/자기를 사용하여 데이터를 기록하는 부분
      • 스핀들(Spindle) : 모터, 플래터를 회전시킴 (7200rpm, 5400rpm…)
      • 헤드(Head) : 플래터의 데이터를 읽거나 기록하는 장치. 디스크의 각 플래터 위 아래에 모두 있음. 디스크의 안쪽/바깥쪽으로 이동하며 데이터의 위치에 접근
      • 액추에이터(Actuator) : 헤드의 움직임을 제어하는 부분
  2. 하드디스크의 기록 단위

    • 데이터 최소 단위: 비트(Bit) → 바이트(Byte)
    • 단위의 접두사: K(kilo), M(mega), G(giga), T(tera) → X 1000
    • 정확한 용량 단위 : Ki(kibi), Mi(Mibi), Gi(Gibi), Ti(Tibi) → X 2^10
    • 하드디스크는 ‘블록 장치’ : 데이터를 블록 단위로 읽고 씀
    • 일반적인 하드디스크의 최소 입출력단위 : 섹터 (512 Byte)
      • 섹터(Sector) : 헤드가 고정된 상태에서 플래터의 한 면에 512Byte만큼 사용하기 위해 플래터를 살짝 회전한 만큼의 크기
      • 트랙(Track) : 헤드가 고정된 상태에서 플래터의 한 면에서 플래터를 한바퀴 회전했을때 접근할 수 있는 영역
      • 실린더(Cylinder) : 각 플래터의 같은 위치의 위/아래면을 모두 모아놓은 영역
  3. 섹터의 주소 지정 방식

    • CHS 주소방식
      • 물리적인 구조를 직접 지정하는 방식
      • C(Cylinder), H(Head), S(Sector) 위치를 지정
      • 현재는 잘 사용하지 않음 - 디스크 용량의 제한이 발생, 현재 디스크의 구조를 반영할 수 없음
    • LBA 주소방식
      • 논리적인 주소를 지정하는 방식
      • 물리적인 구조를 신경쓸 필요가 없음. 디스크 내 컨트롤러에서 알아서 처리
      • 순차번호를 사용 : LBA 0 ~ ...

파티션(Partition)

  • 물리적으로 하나인 디스크를 논리적으로 분리하여 사용
  • 파티션의 장점
    • OS 및 데이터영역 분리 관리가 가능
    • 다중 OS 사용가능
    • Swap 용도로 사용이 가능하다.
    • 공간의 체계적인 구성

파티션의 종류

MBR(Master Boot Record)

  • 디스크의 파티션을 구성하기 위한 방식
  • 디스크 1개의 섹터에 디스크 파티션에 대한 내용을 저장
  • Boot Code + Partition Table + Signature = 512Byte

    Boot Code : 파티션으로 부팅을 시키기 위해 필요한 실행코드

    Partition Table : 실제 디스크의 파티션 구조 정보(64Byte)

    Signature : MBR을 나타내는 특징적인 데이터

  • Partition Table
    1. 파티션 정보를 저장
    2. 최대 4개의 파티션 정보를 저장 - 각 파티션별 데이터 크기 : 16Byte
      1. 부트가능 플래그(1Byte)
      2. 파티션의 유형(1Byte)
      3. 파티션의 시작주소, 파티션의 끝 주소(CHS)(각 3Byte)
      4. 파티션의 시작주소, 파티션의 크기(LBA)(각 4Byte)
    3. 파티션의 섹터주소 범위 : 2^32개 섹터 사용 →최대 약 43억개 섹터 사용 가능 →최대 사용가능한 디스크의 크기 2TiB
  • MBR은 BIOS와 연관된 기술
  • MBR은 반드시 LBA 0번 사용
  • 확장 파티션 : MBR특성상 최대 4개까지만 파티션이 생성 가능
    • 파티션의 유형을 주(Primary)파티션과 확장(Extended)파티션으로 구분

GPT(GUID Partition Table)

  • 디스크의 파티션을 구성하기 위한 방식
  • 디스크의 1개의 섹터를 Protective MBR로 사용 + 1개의 섹터를 GPT헤더(Header)
  • 파티션 테이블을 별도로 저장 : 1개의 파티션당 128Byte를 사용 x 파티션 128개 사용가능
  • GPT 정보의 백업이 존재 : LBA0~33 까지의 백업이 디스크의 가장 마지막에 백업으로 위치
  • 파티션에서 사용할 수 있는 디스크의 크기 확장 : LBA주소의 크기 8Byte - 이론상 최대 8ZiB
  • GPT는 EFI(Extensible Firmware Interface)와 관련됨
  • GPT 파티션은 운영채재애서 GPT파티션을 지원할 경우 사용가능(윈도우XP이후, 현재 대부분의 리눅스)
  • GPT파티션으로 구성된 디스크를 부팅용도로 사용하려면 EFI방식의 펌웨어를 사용해야함

시스템의 부팅과정

  1. 전원 인가
  2. BIOS (Basic Input Output System = 펌웨어, Firmware)가 동작
  3. POST(Power ON Self Test) 수행
  4. BIOS는 CMOS(Complementary metal oxide semiconductor 설정 저장)의 설정 값을 읽어들여서 시스템을 구동
  5. 현재 연결된 디스크를 파악하고 MBR을 통해 부팅 가능한 파티션을 확인
  6. 해당 파티션의 VBR(Volume Boot Record) 정보를 참고하여 운영체제 부팅

리눅스 시스템에서 디스크 저장소 장치 추가

시스템 구동 중 장치 추가

  • Plug & Play
  • Hot Plugging
  • 시스템의 다운타임 없이 장치를 추가할 수 있는 기능
  • 장치의 연결 인터페이스와 관련

디스크 연결 인터페이스

  • E-IDE(P-ATA) : 구향 ATA 규격에서 사용하는 연결방식, Hot Plugging 지원하지 않음, 연결가능한 디스크의 개수가 최대 4개로 제한(메인보드 연결포트에 따라 Primary/Secondary)(한 케이블에 연결된 두 디스크를 각각 Master/Slave)
  • S-ATA : 현재 대부분의 데스크탑 시스템 등에서 사용하는 인터페이스, Hot Plugging 지원, 연결가능한 디스크의 개수는 메인보드의 SATA 포트의 개수에 영향
  • SCSI(Small Computer System Interface) : Hot Plugging 지원, 여러대의 장치를 한꺼번에 연결 가능
  • SA-SCSI(SAS) : Serial Ataatched SCSI , 현재 서버시스템에서 사용하는 주요 인터페이스

저장장치 파일이름

  • 리눅스 시스템은 모든 장치를 파일로 관리 - 디스크는 블록장치 파일
  • 장치파일은 /dev에 있음
  • 디스크 장치는 파일유형에서 블록으로 조회(ls -l /dev | grep '^b')
  • 장치 파일의 파일명은 연결 인터페이스와 관련
    • 맨 첫번째 글짜 - 연결인터페이스와 관련
      • s : SATA, SCSI
      • h : IDE(현재는 IDE도 s 사용)
      • v : 가상화 시스템에서 사용하는 가상디스크
    • 두 번쨰 글자 - 장치의 종류
      • d : 디스크 장치
      • r : 광학 디스크장치
    • 세 번째 글자 - 장치 순번
      • a, b, c, d ... : 디스크 장치의 순번
      • 0, 1, 2, 3... : 광학디스크 장치의 순번
    • 네번째 글자 - 파티션 번호
      • 1, 2, 3 : 파티션 번호

리눅스 시스템에서 추가한 저장소 장치 인식 방법

 /sys/class/scsi_host/host(#은 0부터 시작하는 번호)
  • 해당 파일은 링크로 연결되어 있음
  • 링크 연결되어 있는 디렉토리 내에 scan 파일을 사용하여 장치를 인식
  • echo "- - - "명령어를 사용하여 scan 파일로 출력을 리다이렉트

    echo ‘- - -’ 명령어를 사용하여 scan 파일로 출력을 리다이렉트

    • echo ‘- - -’ > /sys/class/scsi_host/host0/scan
    • echo ‘- - -’ > /sys/class/scsi_host/host1/scan
    • echo ‘- - -’ > /sys/class/scsi_host/host2/scan

파티셔닝(Partitioning)

  • 디스크의 파티션 구조를 생성하는 작업
  • MBR/ GPT모두 생성 가능
  • 사용할 도구 -fdisk, gdisk, parted, gparted (gparted(GUI) 별도 설치 필요)
     yum -y install epel-release
     yum -y install gparted

fdisk : CLI 명령어, MBR방식의 파티션 생성, 대화형 설정방식

  • fdisk -l : 파티션 구성 확인
  • fdisk <장치파일명> : 파티셔닝 수행
    • -d : delete a partition : 파티션 개별 삭제
    • -l : list known partition types : 사용가능한 파티션의 종류 목록 확인
    • -n : add a new partition : 새로운 파티션 생성
    • -p : print the partition table : 현재 구성된 파티션 정보 확인
    • -q : quit withour saving changes
    • -t : change a partition's system id : 파티션 종류 변경(L: 목록 확인)
    • -w : write table to disk and exit : 저장하고 종료
  • 사용중인 디스크의 파티션 정보 변경시 변경사항 적용
    • 사용중인 디스크의 파티션정보는 이미 시스템에서 인식하고 있는 상태
    • 변경사항 저장시(w) 바로 시스템이 인식되지 않고 대기, 경고메시지 출력
    • partprobe 명령어를 사용하여 변경된 파티션 정보를 시스템에 전달
    • #partprobe <변경된 장치명> eg)#partprobe /dev/sdb
  • 파티션 생성시 입력항목
    • 파티션의 유형 : primary, extended
    • 파티션 번호 : 1~4(primary), 5~(extended)
    • 시작 섹터주소(LBA)
    • 파티션의 마지막 섹터 주소/ 사용할 섹터 갯수/ 사용할 용량
  • 확장 파티션
    • 일반적으로 3개의 파티션을 primary로 생성
    • 4번째 파티션을 extended 로 생성
    • 5번 이후 파티션은 자동으로 logical 파티션 유형 지정

gdisk : CL I명령어, GPT방식의 파티션 생성, 대화형 설정방

  • gdisk -l : 파티션 구성 확인
  • gdisk <장치파일명> : 파티셔닝 수행
    • d : delete a partition : 파티션 개별 삭제
    • l : list known partition types : 사용가능한 파티션의 종류 목록 확인
    • n : add a new partition : 새로운 파티션 생성
    • p : print the partition table : 현재 구성된 파티션 정보 확인
    • q : quit withour saving changes
    • t : change a partition's system id : 파티션 종류 변경(L: 목록 확인)
    • w : write table to disk and exit : 저장하고 종료
  • 파티션 생성시 입력항목
    • 파티션 유형은 선택하지 않음(주 파티션만 지원)
    • 시작 섹터 주소 (LBA)파티션의 마지막 섹터 주소 / 사용할 섹터 개수 / 사용할 용량
    • 파티션의 유형을 생성시 바로 지정

parted : CLI 명령어, 비대화형 파티셔닝 가능 - kiskstart : 네트워크를 통한 리눅스 자동설치시 사용

  • 주요옵션
    • -l : 디스크 별 파티션 상태 확인
    • -m : 출력 형식 변경 (: 기호로 항목 분류)
    • -s : 비대화형 실행 옵션
  • parted를 사용한 비대화형 파티션 설정방식
    • 파티션 유형 설정명령 parted -s /dev/sdb mklabel msdos(MBR)
    • 파티션 유형 확인 parted 내에서 help mklabel 또는 비대화형으로 parted -s /dev/sdb help mklabel
    • 파티션 생성 - parted -s /dev/sdb mkpart primary 0% 100%
    • mkpart : 파티션 생성 명령
    • primary : 주 파티션 유형
    • 0% : 시작위치
    • 100% : 마지막 위치
    • 다수의 파티션 생성
      • parted -s /dev/sdb/ mkpark primary 0%30% (0MB 100MB)
      • parted -s /dev/sdb/ mkpark primary 30%60% (100MB 500MB)
      • parted -s /dev/sdb/ mkpark prymary 60%100% (500MB 1000MB)
    • mkpart 시 파티션 유형별 주의사항
      • MBR : 파티션 타입 지정필요(primary, extended) → parted -s /dev/sdb mkpart **primary** 0% 100%
    • GPT : 파티션 이름 지정 필요 → parted -s /deb/sdb mkpart**test**0% 100%
  • parted 명령어 정리
    • mklabel : 파티션 유형 지정
    • mkpart : 파티션 생성
    • rm : 파티션 삭제
    • select: 장치 선택(변경) - (parted) select /dev/sdb
    • unit: 사용할 단위 선택 KB, MB, GB , compact : 자동 단위 선택 - (parted) unit GB
    • print : 현재 파티션 정보 출력
      • print devices : 장치 정보
      • print free : 기본적인 출력 내용 + 할당되지 않은 영역 정보

디스크 초기화 방법

dd if=/dev/zero of=/dev/sdb bs=512 count=100 #디스크를 0으로 덮어서 초기화 하는 방식
  • dd: Disk Dump. 데이터를 기록하기 위한 명령
  • if: 원본
  • of: 사본
  • bs: 블럭 사이즈
  • count: 블럭 개수
  • 네트워크 연결 설정 방법
 네트워크 연결 생성
 # nmcli connection add con-name dhcp ifname ens33 type ethernet
 
 네트워크 연결 사용
 # nmcli connection up dhcp
 
 네트워크 서비스 재시작
 # systemctl restart NetworkManager

파일시스템(File System)

  • 파티션 내에 파일/디렉토리를 적재하는 방식
  • 어떤 방식으로 데이터를 저장할 것인지, 어떤식으로 탐색할지...
  • 운영체제와 많은 연관

파일시스템의 구성

  • 메타영역 : 파일들의 속성, 파일시스템 자체의 정보
  • 데이터영역 : 실제 파일의 내용이 저장되는 영역

파일시스템의 종류

  • 디스크 기반 파일시스템
    • 유닉스 - UFS(Unix File System, Universal File System)
    • 리눅스 : ext(Extended File System) - ext2, ext3, ext4, xfs(SGI사에서 제작한 file system)
    • Windows : FAT(File Allocation Table) - FAT16, vFAT, FAT32, FAT64(exFAT), NTFS(NT File System), ReFS(Resilient File System)
    • 광학디스크용 FIle System : ISO9660, UDFS(Universal Disk File System)
  • 분산 파일 시스템
    • NFS(Network File System) : Sun Microsystems(Solaris Unix)→Oracle이 인수. 현재 거의 대부분의 유닉스 계열 시스템에서 널리 사용
    • SMB(Server Message Block) : Microsoft → CIFS(Common Internet File System), samba(리눅스에서 SMB 기능을 사용하기 위한 도구)
    • Pseudo 파일시스템 : 메모리기반 파일시스템\
      • /sys, /proc, /run...
      • swap
      • /dev

파일시스템 생성

  • 파일시스템은 반드시 디스크장치 파일이 아닌 파티션 파일을 지정하여 생성
  • 파일시스템 생성시 생성할 파일시스템의 유형을 지정하여야함(지정하지 않을경우 ext2로 생성)
  • 파일시스템 생성명령
    • mkfs 주요옵션
      • t 파일시스템의 유형 (xfs, ext2, ext3, ext4….)
      • mkfs [파일시스템이름]파일시스템 생성

마운트

  • 파일시스템이 생성되어 있는 파티션을 연결하는 과정
  • 마운트포인트와 장치를 연결
  • 마운트포인트는 사전에 생성되어 있어야 함
  • 마운트 명령어 : mount
    • 사용법 : mount [옵션] <마운트할 장치이름> <마운트 포인트>
  • 마운트 상태확인 : #mount
  • 마운트제거
    • 마운트 되어있는 장치를 연결 해제
    • 명령어 : umount
      • umount <장치이름>
      • umount <마운트포인트>
  • 시스템 부팅 시 자동으로 마운트하기 위한 설정
    • /etc/fstab
      ⓐ/dev/mapper/centos-root ⓑ/           ⓒxfs   ⓓdefaults    ⓔ0 ⓕ0
      ⓐ 마운트할 장치 이름 ⓑ 마운트포인트 ⓒ 마운트할 파일시스템 종류 ⓓ 마운트 옵션 - defaults 기본옵션 ⓔ 덤프(0 : 덤프안함, 1~ : 덤프순번) ⓕ 파일시스템 체크(0 : 파일시스템 체크안함, 1~ : 체크 순번)
    • UUID(Universally Unique Identifier)
      • 장치를 식별하기 위한 고유 식별자
      • 시스템 내에서 다른장치. 개체와 중복되지 않음
      • 저장소 장치의UUID를 확인하는 방법 : blkid
      • UUID사용하는 이유 : /dev/sda..와 같은 장치이름은 고정적이지 않음(인식 순서에 따라 달라질 수 있음)
      • /etc/fstab 파일 수정 후 설정 확인
        • 마운트 해제된 상태에서 #mount -a → /etc/fstab 파일의 내용대로 마운트 수행
      • /etc/fstab 파일 비정상 수정시 부팅불가 →Emergency mode로 부팅→파일 수정후 재부팅

저장소 설정의 흐름
장치인식 →파티션 설정→파일시스템 생성→마운트

스왑(Swap)

  • 물리적 장치인 디스크의 공간을 메모리처럼 사용하는 방식
  • 당장 필요하지 않은 메모리 데이터를 보조기억장치로 이동시켰다가(Swap Out), 다시 필요할 때 불러오는(Swap In) 동작
  • 마치 실제 물리메모리가 증가된 것 같은 효과를 가져옴
  • 스왑이 빈번하게 일어날 경우 시스템의 성능이 굉장히 저하됨(Swap Out, Swap In 과정에서 발생하는 지연)

스왑 확인

  • 시스템 상태 조회 명령
    • top : 윈도우의 작업관리자와 유사하게 시스템 상태 및 프로세스 별 정보를 실시간으로 갱신하며 출력
    • free : 현재 메모리 상태를 출력
    • swapon -d : 현재 시스템의 스왑 등록 상태
    • swapon -a : 현재 시스템의 스왑 상태
  • 스왑의 종류
    • 스왑 파티션 : 파티션 전체를 스왑 용도로 사용, 파티션으로 할당할 수 있는 공간이 필요
    • 스왑 파일 : 파일을 생성해서 그 파일을 스왑 용도로 사용, 파일시스템의 가용공간을 사용하여 스왑 사용 가능하다는 장점
  • 스왑등록 과정 디스크인식 - 파티션생성 -스왑파티션 생성 - 스왑등록
    • 스왑 파티션 생성
      • 명령어 : mkswap <파티션 장치명>
    • 생성된 스왑 파티션 등록
      • swapon <스왑파티션명>
    • 등록된 스왑파티션 해제
      • swapoff <스왑파티션명>
  • 스왑파일
    • 스왑파일은 루트(/) 파일시스템이 아닌 다른 저장소를 사용할 것(성능 등)
    • 스왑 파일이 저장될 파티션 및 파일시스템 생성
    • 파티션 생성 →파일시스템 생성→마운트→파일생성→스왑파일로 변경→스왑등록
      • 파일 생성 : dd if=/dev/zero of=/swapdir/swapfile bs=512 count=100000→약 50MB 정도의 빈 파일이 생성됨
      • 파일 권한 정보 변경chmod 600 /swapdir/swapfile
      • 스왑파일로 변경mkswap /swapdir/swapfile
      • 스왑해제 : swapoff /swapdir/swapfile
  • 스왑 자동등록
    • /etc/fstab 파일을 등록하여 등록 <장치/파일이름> swap swap defaults 0 0
    • mount -a : 일반적인 마운트 항목만 적용

0개의 댓글