。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

강의/DevOps Linux

[DevOps-Linux] 5. 파일 시스템

quarrrter 2023. 7. 12. 23:52

컴퓨터의 데이터 :

물리적으로는 전기 신호의 형태, 이진수의 형태이며, 0과 1에 대응하는 전기 신호를 생성하고 이를 저장하거나 전송 

5V 또는 3.3V 또는 1.8V의 전기 신호 = 1 0V의 전기 신호 = 0 (1 bit)

 

파일 시스템: 컴퓨터에 존재하는 물리적 데이터를 파일이라는 단위로 접근하고 관리하기 위해 필요한 논리적 구조

사용자가 파일시스템으로 저장공간에 저장된 데이터를 관리함

 

리눅스 파일 시스템의 구분 

HHD, SSD, SD카드 또는 가상 블록 장치(loop device)에 생성 메모리(RAM)에 생성
디스크(블록 장치)기반 파일 시스템 의사(Pseudo) 파일 시스템
장치에 저장된 데이터를 파일 단위로 관리 각 파일 시스템 별 특수한 목적
ext2, 3, 4 : 리눅스 고유 파일 시스템
NTFS: 윈도우OS 기본 파일 시스템 
FAT: 주로 SD 카드, USB 메모리 등에 사용
tmpfs : 일시적인 파일 저장 (power-off 시 삭제)

*RAM: Random Access 

 

 

디스크 설치

1. pc에 설치 

2. virtualBox 등의 가상머신에 추가

 

*네이버 클라우드 서버에 디스크 추가

1.Platform항목 [VPC] 설정 확인

2. Services - compute - server - storage

3. +스토리지 생성, 연결 정보 확인 

 

디스크의 파티션

파티션(Partition): 논리적으로 분할된 디스크의 저장 공간 => 디스크에 파일 시스템 생성을 위해 필요 

 

리눅스 파티션 생성

fdisk

기능 ㅣ 디스크의 파티션을 관리 (생성, 삭제, 조회 등)

형식 ㅣ fdisk [옵션]   [디스크 장치 경로]

 

1. 현재 시스템에 연결된 디스크와 파티션 정보 출력 : fdisk -l

2. /dev/xvdb 디스크에 파티션 생성: fdisk /dev/xvdb

-m : 도움말 출력 

- partition type: Primary 파티션 선택 

- n : 새로운파티션 추가 

-첫번째 파티션 번호 입력 - 시작 섹터 입력, 파티션에 할당할 크기 입력 

-p : 파티션 레이블 출력 (디스크 및 파티션 정보 출력)

-w: 파티션 레이블 저장 후 종료

 

파일 시스템 생성

mkfs

기능 | 옵션으로 지정한 파일 시스템을 디스크 파티션에 생성

형식 | mkfs [옵션] [파티션 장치 경로]

 

1. /dev/xvdb1에 ext4 파일 시스템 생성 :

mkfs -t ext4 /dev/xvdb1  = mke2fs -t ext4 /dev/xvdb1

2. /dev/xvdb2에 FAT32파일 시스템 생성

mkfs.vfat -F 32 /dev/xvdb2  = mkfs -t vfat -F 32 /dev/xvdb2

 

리눅스의 파티션 및 파일 시스템 확인 

lsblk

기능 | 사용 가능한 블록 장치의 리스트 출력

형식 | lsblk [옵션] [블록 장치 경로]

 

1. 현재 시스템에 연결된 디스크와 파티션 정보 출력 : lsblk

2. 파티션의 파일시스템 관련 정보 출력: lsblk -f

 

Ext 파일 시스템의 추상적 구조 

Meta Area

Data Area 

Ext 파일 시스템 - Meta Area 속 메타데이터 

메타 데이터 : 파일 시스템, 파일 관련 정보(Info) 저장 

- Super Block : 파일 시스템 관련 정보

- inode : 개별 파일 관련 정보 

Ext 파일 시스템 - Data Area 속 데이터블록

데이터블록: 파일 시스템이 디스크(저장장치)에 데이터를 저장하는 단위

-블록 1개 사이즈는 일반적으로 4~64KB (파일 시스템마다 다를 수 있음)

 

 

 

파일 시스템의 마운트 (mount)

윈도우 pc에서 디스크를 추가하는 경우: 추가된 디스크에 드라이브 문자(D, E)할당. => 직관적

마운트(mount): 파일 시스템(이 적용된 디스크)를 디렉토리 계층 구조에 연결

                           => 사용자가 파일 시스템에 접근하기 위해 필요

 

mount

기능: 파일 시스템을 디렉토리에 연결

형식: mount [옵션] [장치 경로] [디렉토리 경로]

 

1. 현재 마운트 되어 있는 파일 시스템 출력: mount

2. /dev/xvdb1, /dev/xvdb2를 마운트 

  mount -t ext /dev/xvdb1 /mnt/disk1

  mount -t vfat /dev/xvdb2 /mnt/disk2

 

umount

기능: 파일 시스템의 마운트헤제

형식: umount [옵션] [마운트 포인트 경로]

1. /mnt/disk1, /mnt/disk2를 마운트 해제 (마운트된 디렉토리 밖에서 실행)

 umount /mnt/disk1

 umount /mnt/disk2

 

부팅시 자동으로 마운트 시키기

nano /etc/fstab

 

디스크 관리 명령

df (Disk Free)

기능: 파일 시스템의 용량 정보를 출력

형식 : df[옵션]

옵션 설명
-h 용량 단위(KB, MB, GB) ㅠㅛ시
-k KB 단위로 표시
-m MB 단위로 표시
-T 각 파티션에 대한 파일 시스템 타입 표시
-i 아이노드 (i-node) 사용량 표시

 

디스크 관리 명령

fsck (File System ChecK)

기능: 리눅스의 파일 시스템을 점검하고 복구

형식: fsck [옵션] [파티션 장치 경로]

 

1. /dev/xvdb1에 대한 파일 시스템 점검: fsck /dev/xvdb1

파일 시스템이 마운트 되어 있는 경우 해제 후 점검. 

-f 옵션: 강제 실행(v파일 시스템이 손상된 경우에만 사용 권장)

 

 

스왑(swap) 영역 생성 및 관리

스왑(swap) : 메모리 부족 상황에서 사용되는 보조 메모리. 디스크에 저장되므로 메모리보다 훨씬 느리게 작동하며, 시스템이 지연될 가능성이 높음으로, 일반적으로 서버에서는 swap을 최소화하거나 비활성화 하는 것이 좋음

 

mkswap
기능: 스왑 파티션 또는 파일을 생성
형식: mkswap[옵션] [스왑 파티션 경로] [크기]
mkswap /dev/sdb2 10240
: /dev/sdb2 파티션에 10MiB의 스왑 영역 생성

swapon /dev/sdb2
: /dev/sdb2를 활성화

swapon -s
: 활성화된 스왑 영역 상태를 출력

swapoff -a
: 활성화된 모든 스왑 영역 중지
swapon
기능 : 스왑 영역 활성화
형식 : swapon [옵션] [스왑 파티션 경로]
swapoff
기능 : 활성화된 스왑 영역 중지
형식 : swapoof [옵션] [스왑 파티션 경로]

 

 

의사 파일 시스템 - proc

proc 파일 시스템 : 보통 /proc에 마운트, 시스템 관련 정보를 파일 형태로 제공

/proc에 현재 실행중인 PID와 같은 이름의 폴더들이 생성됨

리눅스 proc - IT위키 (itwiki.kr)

 

네이버 클라우드 추가 디스크 제거

1. 나노 편집기로 /etc/fstab 오픈 후 /dev/xvdb1, /dev/xcdb2 설정 내용 통으로 삭제 후 저장

2. shutdown -f now 명령으로 서버 power-off , 네이버클라우드 웹에서 서버 정지 확인

3. Swerver - Storage에서 추가한 디스크 선택 후 [스토리지 삭제]

4. 서버 선택 후 [시작 ]

5. ssh로 서버에 접속 후 lsblk 실행 => xvdb 항목 삭제 확인 

 

Appendix - GB와 GiB

GB : 10의 거듭제곱 1,000,000,000 바이트 (기가)

GiB : 2의 거듭제곱 1,073,741,824 (기비)

실생활에선 혼용 사용