파일 시스템 구조와 디스크 관리
파일 시스템 개념
리눅스의 파일 시스템은 계층적(Tree 구조)로 구성되어 있으며, 단일 루트(/) 아래에 모든 디렉토리와 파일이 배치된다.
사용자는 여러 개의 디스크나 파티션이 존재하더라도 하나의 구조처럼 인식하게 됨.
파일 시스템의 구성 요소

- Super Block : 파일 시스템의 전체적인 메타 데이터 저장
- 전체 크기, Inode 수, 사용량 등
- 손상되면 파일 시스템 전체 접근 불가능 할 수도 있음
- Inode Table : 파일이나 디렉토리 하나하나에 대한 메타 데이터 저장
- 파일유형, 소유자, 권한정보, 데이터블록의 주소 등
- 파일 이름은 따로 저장하지 않음
- Data Block : 파일의 내용이 저장됨
파일 시스템 만들기
- 디스크 확인
- 파티션 생성 :
fdisk /dev/sdX
- 파일시스템 생성 :
mkfs -t [파일시스템 종류] [디바이스 명]
- 마운트 :
mount [파일시스템] [경로]
- fstab 등록
파티션 생성
fdisk /dev/sdX
실행 후 n(new) 입력
그 후 질문에 맞춰서 원하는 옵션대로 입력하면 된다! 마지막에 w를 해야 저장하고 종료, q를 하면 저장 안 하고 종료
파일 시스템 생성
mkfs
(Make File System) 명령어 이용
mkfs -t ext4 /dev/sdb1 # 이게 일반적 방식
mkfs.ext4 /dev/sdb1 # 이런식으로 하기도 함
마운트
mkdir /mydata
mount /dev/sd1 /mydata
fstab 등록
vi /etc/fstab
/dev/sdb1 /mydata ext4 defaults 1 1
fstab 필드 설명
- 장치경로 (또는 UUID)
- 마운트 위치
- 파일 시스템 종류
- 마운트 옵션
- defaults
- ro : 읽기 전용
- rw : 읽기/쓰기
- nofail : 실패해도 부팅 계속 진행 등
- 백업 여부
- fsck(file system check) 순서
- 0 : 검사 안함
- 1 : 먼저 검사
- 2 : 그 다음 검사
fstab에 등록해야 재부팅해도 다시 마운트 된다!
해당 파일에 등록후에, umount하고 다시 mount해서 오탈자없이 잘 들어갔는지 확인해 주면 좋음!
(참고) umount tip!
umount 할 때는, 해당 경로에 있는 user가 없어야 함
fuser [경로]
로 해당 경로에 누가 있는지 확인 가능
fuser -k [경로]
로 유저 killeject
하면 umount 하면서 cdrom이 열린다!
장치 파일
- 디스크명 : /dev/sdX
- sda, sdb, … 이런식으로 등록 됨
- 그래서 중간에 sdb가 삭제 되면, sdc가 sdb가 되고 … 이런식
- 따라서 UUID라는 Unique한 값으로 따로 관리한다!
- 메이저 넘버 : 이 장치를 제어하는 커널 드라이브 넘버 (/proc/devices 에서 확인 가능)
- 마이너 넘버 : 이 장치를 유일하게 구분하는 번호로 16의 배수
- 디스크 단위로 미리 16칸을 찜해둔닥 생각하면 됨
- (MBR 기준) 대표장치가 하나 쓰고, 확장 파티션이 한 개 쓰기때문에, 파티션은 14개까지 가능!
스왑(Swap)
- RAM이 부족할 경우 디스크의 일부 공간을 임시 메모리처럼 사용
- os 만들때 웬만하면 만들어 주는 게 좋다!
swapon -s
로 확인