저장소 관리
DAS(Direct Attached Storage) ↔ Network Attached Storage(NAS)
하드 디스크 구조
- 하드디스크
- 물리적인 장치
- 자기(Magnetic)을 사용한 데이터 기록
- 주요부품
- 플래터(Platter) : 실제 전/자기를 사용하여 데이터를 기록하는 부분
- 스핀들(Spindle) : 모터, 플래터를 회전시킴 (7200rpm, 5400rpm…)
- 헤드(Head) : 플래터의 데이터를 읽거나 기록하는 장치. 디스크의 각 플래터 위 아래에 모두 있음. 디스크의 안쪽/바깥쪽으로 이동하며 데이터의 위치에 접근
- 액추에이터(Actuator) : 헤드의 움직임을 제어하는 부분
- 하드디스크의 기록 단위
- 데이터 최소 단위: 비트(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) : 각 플래터의 같은 위치의 위/아래면을 모두 모아놓은 영역
- 섹터의 주소 지정 방식
- CHS 주소방식
- 물리적인 구조를 직접 지정하는 방식
- C(Cylinder), H(Head), S(Sector) 위치를 지정
- 현재는 잘 사용하지 않음 - 디스크 용량의 제한이 발생, 현재 디스크의 구조를 반영할 수 없음
- LBA 주소방식
- 논리적인 주소를 지정하는 방식
- 물리적인 구조를 신경쓸 필요가 없음. 디스크 내 컨트롤러에서 알아서 처리
- 순차번호를 사용 : LBA 0 ~ ...
- CHS 주소방식
파티션(Partition)
- 물리적으로 하나인 디스크를 논리적으로 분리하여 사용
- 파티션의 장점
- OS 및 데이터영역 분리 관리가 가능
- 다중 OS 사용가능
- Swap 용도로 사용이 가능하다.
- 공간의 체계적인 구성
- 파티션의 종류
- MBR(Master Boot Record)
- 디스크의 파티션을 구성하기 위한 방식
- 디스크 1개의 섹터에 디스크 파티션에 대한 내용을 저장
- Boot Code + Partition Table + Signature = 512Byte
- Boot Code : 파티션으로 부팅을 시키기 위해 필요한 실행코드Signature : MBR을 나타내는 특징적인 데이터
- Partition Table : 실제 디스크의 파티션 구조 정보(64Byte)
- Partition Table
- 파티션 정보를 저장
- 최대 4개의 파티션 정보를 저장 - 각 파티션별 데이터 크기 : 16Byte
- 부트가능 플래그(1Byte)
- 파티션의 유형(1Byte)
- 파티션의 시작주소, 파티션의 끝 주소(CHS)(각 3Byte)
- 파티션의 시작주소, 파티션의 크기(LBA)(각 4Byte)
- 파티션의 섹터주소 범위 : 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방식의 펌웨어를 사용해야함
- MBR(Master Boot Record)
시스템의 부팅과정
- 전원 인가
- BIOS (Basic Input Output System = 펌웨어, Firmware)가 동작
- POST(Power ON Self Test) 수행
- BIOS는 CMOS(Complementary metal oxide semiconductor 설정 저장)의 설정 값을 읽어들여서 시스템을 구동
- 현재 연결된 디스크를 파악하고 MBR을 통해 부팅 가능한 파티션을 확인
- 해당 파티션의 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 : 파티션 번호
- 맨 첫번째 글짜 - 연결인터페이스와 관련
- 리눅스 시스템에서 추가한 저장소 장치 인식 방법
- 해당 파일은 링크로 연결되어 있음
- 링크 연결되어 있는 디렉토리 내에 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
- …
/sys/class/scsi_host/host(#은 0부터 시작하는 번호)
- 파티셔닝(Partitioning)
- 디스크의 파티션 구조를 생성하는 작업
- MBR/ GPT모두 생성 가능
- 사용할 도구 - gparted(GUI) 별도 설치 필요
# yum -y install epel-release # yum -y install gparted
- fdisk : CLI 명령어, MBR방식의 파티션 생성, 대화형 설정방식
- MBR기반의 시스템에서 오랫동안 사용해 온 파티셔닝 도구대화형 설정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
- #partprobe <변경된 장치명> eg)#partprobe /dev/sdb
- 파티션의 유형 : primary, extended
- 파티션 번호 : 1
4(primary), 5(extended) - 시작 섹터주소(LBA)
- 파티션의 마지막 섹터 주소/ 사용할 섹터 갯수/ 사용할 용량
- 일반적으로 3개의 파티션을 primary로 생성
- 4번째 파티션을 extended 로 생성
- 5번 이후 파티션은 자동으로 logical 파티션 유형 지정
- fdisk -l : 파티션 구성 확인
- 기본적으로 MBR 파티션을 생성
- gdisk : CL I명령어, GPT방식의 파티션 생성, 대화형 설정방식
- GPT기반의 시스템에서 오랫동안 사용해 온 파티셔닝 도구대화형 설정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)파티션의 마지막 섹터 주소 / 사용할 섹터 개수 / 사용할 용량
- 파티션의 유형을 생성시 바로 지정
- gdisk -l : 파티션 구성 확인
- 기본적으로 MBR 파티션을 생성
- parted : CLI 명령어, 비대화형 파티셔닝 가능 - kiskstart : 네트워크를 통한 리눅스 자동설치시 사용
- 파티셔닝 수행가능(MBR/GPT)주요옵션
- -l : 디스크 별 파티션 상태 확인
- -m : 출력 형식 변경 (: 기호로 항목 분류)
- -s : 비대화형 실행 옵션
- 파티션 유형 설정명령 - # 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)
- ex) parted -s /dev/sdb mkpart primary 0% 100%
- GPT : 파티션 이름 지정 필요
- ex) 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
- 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 : 일반적인 마운트 항목만 적용
'클라우드 아키텍트 양성과정' 카테고리의 다른 글
리눅스(CentOS) systemd (0) | 2021.04.26 |
---|---|
리눅스(CentOS) 저장소 관리(LVM, RAID) (0) | 2021.04.26 |
리눅스(CentOS) 권한 및 프로세스 (0) | 2021.04.26 |
리눅스(CentOS) 사용자 관리 (0) | 2021.04.26 |
리눅스 소개/ 기본명령어 (0) | 2021.04.26 |
댓글