인공지능 개발일지

[Linux] 파일 시스템과 디스크 관리 본문

개발 지식/운영체제(OS)

[Linux] 파일 시스템과 디스크 관리

Prcnsi 2021. 6. 20. 02:34
728x90

안녕하세요!

 

이번 시간에는 파일 시스템과 디스크 관리입니다.

이번 포스팅에서는 옵션까지 다 다루면 너무 난잡해질 것 같아

세부적인 내용보다는 큰 틀 위주로,

이론보다는 활용과 키워드 위주로 작성하였습니다.

 

 


 

 

 

1. 파일 시스템

파일 시스템하면 나오는 게 ext1, ext2, ext3 등등 많은데요.

이는 파일 시스템의 발전 과정으로 ext4가 가장 최신 파일 시스템으로

현재 사용되는 파일 시스템입니다.

 

ext4:파일 시스템

그런데 가상 파일 시스템이(VFS)란 것도 있는데요.

이는 파일 시스템 위에 존재하는 것으로 파일 시스템 접근 전에 실행됩니다.

VFS=Virtual File System

 

자 이제 본격적으로 리눅스의 파일 시스템에 대해 알아봅시다.

윈도와 OS가 다르다 보니 리눅스에서는 메모리를 포인터로 관리하지 않고

다른 방식으로 관리합니다.

 

윈도에서는 메모리(저장 장치)를 다 쪼개어 그 위치마다 메모리의 주소라는 개념을 도입하여

그 메모리의 주소를 포인터로 관리하는 방식으로 메모리를 관리하였는데요.

 

이와 마찬가지로 리눅스에서도 파일을 관리하는 시스템이 있습니다.

이는 바로 inode번호와 블록 구조인데요.

이게 무슨 말이냐면 리눅스라는 OS에 메모리는 블록 단위로 쪼개어져 있고 이때

각각의 블록마다 고유의 번호가 있습니다.

이 고유의 번호를 바로 inode번호라고 합니다.

 

그래서 결론적으로 리눅스의 파일 시스템은 블록의 집합이라고 할 수 있습니다.

아래는 블록의 집합(블록 그룹)의 리스트입니다.

블록 그룹 0 :그룹0 패딩, 슈퍼 블록, 그룹 디스크립터
블록 그룹 a: 슈퍼 블록,그룹 디스크립터 사본 존재
블록 그룹 b: 위 세 개 다 없고 데이터 블록 비트맵(사용 중 표시)으로 시작

+UUID: 파일시스템 구분 숫자
+etc-fstab: 자동 마운트

이제 구조를 이해 했다면 외부장치 마운트에 대해 알아봅시다.

 

 

 

 

 

2. 마운트 방법

이 파트의 핵심은 리눅스는 수동으로 연결해 주어야 한다는 것입니다.

그러니까 윈도에서는 외부 장치를 연결하면 자동으로 폴더에 연결되는데

리눅스는 직접 연결해주어야 합니다.

대표적인 예시로는 USB가 있습니다.

따라서 수동으로 장치를 연결할 디렉터리를 생성해주고 아래와 같은 방법으로 마운트 할 수 있습니다.

 

mount [장치명] [마운트 포인트] 

마운트 방법은 아래와 같이 도식화할 수 있다. 여기서 주의할 점은 리눅스 USB를 마운트 하는 방법과

윈도우USB를 마운트 하는 방법이 다르단 것이다. 이를 유의해서 살펴봅시다.

 

  (1) 리눅스 USB

   1.fdisk -l로 장치명 확인 

   2. 마운트 할 디렉터리 생성
   3.sudo fdisk [장치명]
   4.n, p enter로 파티션 생성 확인
   5.w로 저장하고 나오기
   6.sudo mke2fs로 포맷
   7.mount [장치명] [마운트포인트] 로 마운트
   8.cd [마운트 포인트] 로 USB에 복사  

   9.sudo umount 마운트 포인트로 해제

   +etc-fstab: 자동 마운트

   이때 3-6번은 파티션을 나눌 때만 필요한 과정

 

 

  (2) 윈도우 USB 

   1.fdisk -l로 장치명 확인
   2.mount [장치명] [마운트 포인트](/mnt) 마운트
   3.cd [마운트 포인트] 로 이동
   4.sudo cp [복사할 경로] 로생성 복사
   5.sudo umount [마운트포인트] 로 해제 
    +cdrom:cd연결

 

 

 

 


3. 디스크 관리

디스크는 저장 장치입니다.

 

여기서는 먼저 파티션을 나누는 방법을 다루는데요.

파티션을 나누어 효율적으로 디스크를 관리하자는 취지입니다.

 

디스크를 관리할 때 유의해야 할 부분으로는 디스크명이 a, b, c로 끝나는 것은 서로 다른 디스크를 

구분하는 것이고 1,2, a로 끝나면 한 디스크의 파티션을 구분하는 것입니다.

 

또한 LVM이라는 개념이 존재하는데 이는 여러 디스크를 하나의 디스크처럼 사용하는 것입니다.

 

디스크와 관련된 명령어를 아래에 정리해 놓았습니다.

fdisk [장치명] 디스크 파티션 나누기
mkfs [옵션] [장치명] 파일 시스템 생성
mk2fs [옵션] [장치명] 파일 확장 시스템 생성 
mount [디스크명] [마운트 포인트] 디스크 마운트
mount | grep [마운트 포인트] 디스크 마운트 확인
pvcreate [장치명] LVM 생성
pvscan [장치명] LVM 확인
df [옵션] 전체 남은 공간
du [옵션] [사용자] 사용자별 남은 공간
fsck [옵션] [장치명] 파일 시스템 점검
e2fsck [옵션] [장치명] 확장 파일 시스템 점검
badblocks [옵션] [장치명] 장치의 배드블록을 검사
dumpe2fs [장치명] 파일 시스템 정보 출력

+주요 파티션은 3개만 가능 

+시스템 생성 명령어들이 저장된 위치는 /sbin디렉터리

+디스크 마운트와 USB 마운트의 차이는 장치명이 디스크명이냐 USB명이냐의 차이

 

728x90