Kwoo'S Blog - IT는 어렵다.
리눅스 파일시스템 - 2 본문
파일의 종류
- 사용자 데이터를 보관하는 일반 파일
- 파일을 보관하는 디렉터리
- 리눅스에는 디바이스파일이라는 종류가 존재한다.
리눅스는 스스로 동작하고 있는 하드웨어상의 장치를 거의 모두 파일로서 표현하고 있다.
디바이스 파일에 접근하는건 root만 가능하다.
캐릭터 장치
읽기와 쓰기가 가능하지만 탐색이 되지 않는 특성
- 터미널
- 키보드
- 마우스
ex) 터미널의 디바이스 파일
- write() 시스템콜: 터미널에 데이터를 출력
- read() 시스템 콜: 터미널에 데이터를 입력
현재의 프로세스에 대응하는 터미널과 그 터미널에 대응하는 디바이스 파일 찾아보기
ps ax | grep bash
2703093 pts/0 Ss 0:00 -bash
2715438 pts/0 S+ 0:00 grep --color=auto bash
bah에 연결된 터미널에 대응하는 장치는 /dev/pts/0
root@master-node:~# echo hello > /dev/pts/0
hello
터미널 디바이스에 hello라는 문자열을 쓰는 것으로 터미널에 이 문자열이 출력됨
결론: bash의 조작이 최종적으로 디바이스 파일의 조작으로 변환되고 있다
블록 장치
단순한 파일의 읽고 쓰기 이외에 랜덤접근이 가능하다. HDD/SDD가 대표적인 저장 장치
블록장치에 데이터를 읽고 쓰는것으로 일반적인 파일처럼 스토리지의 특정장소에 있는 데이터에 접근할 수 있다.
블록장치는 직접 접근하지 않고 파일시스템을 작성하고 그것을 마운트 함으로써 파일시스템을 경유해서 사용한다.
블록장치를 직접 다루는 경우
- 파티션 레이블 업데이트
- 블록 장치 레벨의 데이터 백업 & 복구
- 파일시스템의 작성
- 파일시스템의 마운트
여러종류의 파일시스템
tmpfs
메모리 기반의 파일시스템
이 파일시스템에 저장한 데이터는 전원이 꺼지면 사라지지만 저장 장치의 접근이 없기 때문에 고속으로 사용 가능
/tmp
/var/run
에 주로 사용
mount | grep ^tmpfs
free 명령어의 shared 필드값이 tmpfs에 의해 실제로 사용된 메모리의 양
네트워크 파일시스템
네트워크를 통해 연결된 원격 호스트에 있는 파일을 접근하는 파일시스템
리눅스 계열 - nfs 라는 파일시스템 사용
가상 파일 시스템
- procfs
/proc 이하에 마운트
/proc/pid/ 이하 파일에 접근함으로써 각 프로세스의 정보를 얻는다.
프로세스 정보 말고도 다음과 같은 정보도 포함
/proc/cpuinfo
/proc/diskstat
/proc/meminfo
/proc/sys 이하의 파일 : 커널의 각종 파라미터. sysctl와 /etc/sysctl.conf로 변경하는 파라미터와 1:1 대응
- sysfs
프로세스 이외의 잡다한 정보를 저장
/sys 이하에 마운트
/sys/device
/sys/fs
- cgroupfs
하나의 프로세스 혹은 여러 개의 프로세스로 만들어진 그룹에 대해 여러가지 리소스 사용량의 제한을 가하는 cgroup 이라는 기능 존재
cgroup은 cgroupfs 라는 파일시스템을 통해 다루게 된다. cgroup은 roo만 다룰수 있음.
/sys/fs/cgroup에 마운트
Btrfs
멀티볼륨
ex4나 XFS는 하나의 파티션에 대응하여 하나의 파일시스템을 만든다.
btrfs는 하나뿐만이 아닌 여러개의 저장장치/파티션으로부터 거대한 스토리지 풀을 만들고 거기에 마운트 가능한 서브 볼륨이란 영역을 작성합니다.
스토리지 풀은 LVM으로 구현된 볼륨그룹, 서브 볼륨은 LVM으로 구현된 논리 볼륨과 파일시스템을 더한것과 같다.
파일시스템 + LVM과 같은 볼륨 매니저라 생각
스냅샷
btrfs는 서브뷸롬 단위로 스냅샷 생성 가능
데이터를 전부 복사하는 것이 아닌 메타데이터의 작성 혹은 스냅샷 내의 더티페이지의 라이트백을 하는 것만으로 처리 가능하여 복사보다 훨씬 빠르게 이루어진다.
원래의 서브뷸롬과 스냅샷은 데이터를 공유하기 때문에 공간적인 낭비도 적다.
RAID
btrfs에는 파일시스템 레벨에 RAID 작성을 포함하고 있음
RAID 0,1,10,5,6 지원 (Btrfs 파일시스템 전체에 설정)
출처 - 실습과 그림으로 배우는 리눅스 구조
'리눅스' 카테고리의 다른 글
리눅스 시스템 구성 정보 확인하기 (1) | 2022.11.21 |
---|---|
리눅스 파일시스템 -1 (0) | 2022.11.12 |
리눅스의 swap 메모리 정리 (0) | 2022.11.07 |