본문 바로가기
천 리 길도 한 걸음부터📝/페도라 리눅스🐧

[페도라 리눅스] #10. 파일 시스템

by 연투 2023. 1. 4.

 

 

학습목표

 

  • 파일 시스템에 대해 설명할 수 있다.
  • 리눅스에서 지원하는 파일 시스템의 종류와 구조를 설명할 수 있다.
  • 마운트의 개념을 이해하고 설명할 수 있다.
  • CD-ROM이나 USB 메모리 같은 이동식 장치를 마운트하여 사용할 수 있다.

 

 

리눅스 파일 시스템의 종류

  • 파일 시스템
    • 운영체제의 주요한 기능 중 하나
    • 파일과 디렉터리의 집합을 구조적으로 관리하는 체계
    • 내부적으로 어떤 구조를 구성하여 파일을 관리하느냐에 따라 다양한 형식의 파일 시스템이 존재한다.
    • 운영체제에 따라 다양한 파일 시스템 형식을 사용한다.

 

리눅스 고유의 디스크 기반 파일 시스템 - ext, XFS

  • ext(ext1)
    • Extended File System의 약자로, extfs라고도 한다.
    • *MFS의 기능을 확장했다.
      • Minix File System(미닉스의 파일 시스템)
    • MFS의 최대 크기는 64MB이지만, ext는 최대 2GB를 지원한다.
    • 파일 이름의 길이를 255B까지 지원한다. (MFS는 14B)
    • 문제점
      • inode 수정 불가
      • 데이터 수정 시간 지원 불가
      • *링크드 리스트로 파일 시스템을 구성하여 복잡해지고 파편화
        • 연결 리스트이며, 한 줄로 연결되어 있어 수정이 어렵다.
    • 현재 리눅스에서는 ext 파일 시스템을 지원하지 않는다.
  • ext2
    • 공식 명칭은 'Second Extended File System(Ext2 fs)'이다.
    • ext 파일 시스템의 문제를 해결하기 위해 개발 ( + 확장성 )
    • 파일 시스템의 크기는 이론적으로 최대 32TB까지 지원 가능
    • ext3 파일 시스템이 도입되기 전까지 사실상 리눅스의 표준 파일 시스템으로 사용되었다.
    • 현재도 부팅 가능한 USB 플래시 드라이브와 기타 SSD 장치에 사용되고 있으며, 매우 안정된 파일 시스템이다.
  • ext3
    • Third Extended File System
    • ext2를 기반으로 개발되어 호환 가능
      • ext2 파일 시스템의 파일을 별도의 변경 없이 ext3 파일 시스템에 바로 이식할 수 있다.
    • ext3에서 파일 시스템의 크기는 블록의 크기에 따라 2~32TB까지 지원된다.
    • 저널링(journaling) 기능 도입
      • 디스크에 기록되는 데이터의 복구 기능을 강화
      • 데이터를 디스크에 기록하기 전에 *저널에 수정 사항을 기록
        • 저널 ≒ 로그 기록
    • 단점
      • 최신 파일 시스템 기능 부족
        • inode의 동적 할당, 다양한 블록 크기 등
      • 온라인 조각 모음 기능의 부재
  • ext4
    • Fourth Extended File System
    • 1EB 이상의 볼륨16TB 이상의 파일을 지원
      • 1EB(엑사바이트) = 1,024 * 1,024 TB
    • ext2 및 ext3와 호환성을 유지한다.
    • 서브 디렉터리의 수가 64,000개로 증가
      • ext3에서는 32,000개로 제한
    • 온라인 조각 모음 기능 지원
  • XFS
    • eXtended File System
    • 현재 대부분의 리눅스 배포판에서 지원
    • 64비트 파일 시스템으로, 최대 16EB까지 지원
    • 페도라 22부터 페도라 서버에서 XFS 파일 시스템을 기본으로 사용하며, 페도라 워크스테이션에서는 ext4 파일 시스템을 기본으로 사용한다.
서버와 워크스테이션
성능면에서 크게 차이는 없지만 서버는 클라이언트의 요청에 즉각 대응하기 위해 상시 운영하지만, 워크스테이션은 특정한 작업이나 결과물을 위해 최적화된 것으로 상시 운영하지 않을 수도 있다는 점에서 차이가 있다.

 

리눅스에서 지원하는 기타 디스크 기반 파일 시스템

리눅스에서는 표준 파일 시스템들 외 타 시스템과의 호환 및 외부 저장 장치를 사용하도록 다양한 파일 시스템을 지원한다.

 

  •  msdos
    • MS-DOS 파티션을 사용하기 위한 파일 시스템
  • iso9660
    • CD-ROM, DVD의 표준 파일 시스템
    • 읽기 전용으로 사용
  • nfs
    • network file system
    • 원격 서버의 디스크를 연결할 때 사용
  • ufs
    • Unix file system
    • 유닉스의 표준 파일 시스템
  • vfat
    • 윈도 95, 98, NT를 지원하기 위한 파일 시스템
    • 읽기와 쓰기 둘 다 가능하다.
  • hpfs
    • *HPFS를 지원하기 위한 파일 시스템
    • High Performance File System(고성능 파일 시스템)
  • ntfs
    • 윈도의 *NTFS를 지원하기 위한 파일 시스템
    • New Technology File System
  • fuseblk
    • ntfs 파일 시스템을 연결할 때 사용되는 파일 시스템
  • sysv
    • 유닉스 시스템V를 지원하기 위한 파일 시스템
  • hfs
    • 맥 컴퓨터의 *hfs 파일 시스템을 지원하기 위한 파일 시스템
    • Hierarchical File System(계층적 파일 시스템)

 

특수 용도의 가상 파일 시스템

리눅스에서는 디스크가 아닌 메모리에 생성되어 사용되는 가상 파일 시스템이 있다. 가상 파일 시스템은 일반적으로 특수한 용도로, 필요에 따라 생성되고 사라진다.

 

  • swap
    • *스왑 영역을 관리하기 위한 스왑 파일 시스템
    • 스왑: 저장장치의 일부분을 메모리로 사용하는 방식으로, 프로세스를 재사용하기 위해 스왑 영역으로 옮긴다.
  • tmpfs
    • temporary file system
    • 메모리에 임시 파일을 저장하기 위한 파일 시스템
    • 시스템이 재시작할 때마다 기존 내용이 사라진다.
    • 예시: /tmp 디렉터리
  • proc
    • proc 파일 시스템
    • 커널의 현재 상태를 나타내는 파일을 가진다.
    • 예시: /proc 디렉터리
  • ramfs
    • 램디스크를 지원하는 파일 시스템
    • 램(RAM, Random Access Memory): 데이터가 저장된 위치에 상관없이 읽는 속도가 같은 저장장치
  • rootfs
    • root file system
    • 시스템 초기화 및 관리에 필요한 내용을 관리
    • 예시: / 디렉터리

 

현재 시스템이 지원하는 파일 시스템 확인하기

설명한 것 외에도 다양한 파일 시스템을 지원하므로 각 배포판에 따라 사용한 파일 시스템의 종류를 확인해야 한다. /proc/filesystems에서 현재 커널이 지원하는 파일 시스템의 종류를 알려준다.

 

[user1@fedora ~ 919]$ cat /proc/filesystems 
nodev	sysfs
nodev	tmpfs
nodev	bdev
nodev	proc
nodev	cgroup
nodev	cgroup2
nodev	cpuset
nodev	devtmpfs
nodev	configfs
nodev	debugfs
nodev	tracefs
nodev	securityfs
nodev	sockfs
nodev	bpf
nodev	pipefs
nodev	ramfs
nodev	hugetlbfs
nodev	devpts
	ext3
	ext2
	ext4
nodev	autofs
nodev	mqueue
nodev	selinuxfs
nodev	binder
	btrfs
nodev	pstore
	fuseblk
nodev	fuse
nodev	fusectl
nodev	rpc_pipefs
	iso9660

 

  • 1열의 nodev = 가상 파일 시스템
    • 해당 파일 시스템이 블록 장치와 연결되어 있지 않은 상태
  • 2열
    • 지원하는 파일 시스템
    • 대부분이 특수한 용도로 사용되는 가상 파일 시스템

 

 

리눅스 파일 시스템의 구조

리눅스의 모든 파일 시스템은 기본적으로 유닉스 운영체제에서 유래된 공통의 개념을 바탕으로 구현되었다.

 

  • 파일은 inode로 관리된다.
  • 디렉터리는 단순히 파일의 목록을 가지고 있는 파일일 뿐이다.
  • 특수 파일을 통해 장치에 접근할 수 있다.

 

ext4 파일 시스템의 구조

ext4 파일 시스템은 효율적으로 디스크를 사용하기 위해 저장 장치를 논리적인 블록의 집합(블록 그룹)으로 구분한다. 일반적으로 블록의 크기는 4KB이고, 실제 크기는 시스템의 설정에 따라 달라질 수 있다.

 

ext4 파일 시스템의 구조 (Font 티머니 둥근바람)

블록 그룹에는 위의 이미지처럼 세 가지 유형이 있다.

 

  • 블록 그룹 0
    • 파일 시스템의 첫 번째 블록 그룹
    • 특별하게 그룹 0 패딩슈퍼블록, 그룹 디스크립터를 가진다.
  • 블록 그룹 a
    • 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹
    • 그룹 0 패딩이 없으나 슈퍼블록과 그룹 디스크립터의 복사본을 가진다.
  • 블록 그룹 b
    • 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹
    • 그룹 0 패딩, 슈퍼블록, 그룹 디스크립터가 없다.
    • 바로 데이터 블록 비트맵으로 시작한다.

 

  • 그룹 0 패딩
    • 블록 그룹 0의 첫 1,024B
    • x86 부트 섹터와 부가 정보를 저장
  • 슈퍼블록
    • 파일 시스템과 관련된 다양한 정보를 저장
    • 주요 정보
      • 전체 inode의 개수, 전체 블록의 개수, 할당되지 않은 블록(free block)의 개수, 할당되지 않은 inode(free inode)의 개수, 첫 번째 데이터 블록의 주소, 블록의 크기, 그룹당 블록의 개수, 마운트 시간, 파일 시스템의 생태, 그룹 디스크립터의 크기
    • 슈퍼블록에 문제가 생기면 전체 파일 시스템을 사용할 수 없다.
      • 슈퍼블록을 다른 블록 그룹에 복사하고, 블록 그룹 0의 슈퍼블록을 읽을 수 없을 경우에 복사본을 사용하여 복구한다.
  • 그룹 디스크립터와 GDT 예약 블록
    • 그룹 디스크립터에 저장되는 정보
      • 블록 비트맵의 주소, inode 비트맵의 주소, inode 테이블 주소, 할당되지 않은 블록의 개수, 할당되지 않은 inode의 개수, 디렉터리의 개수, 블록 비트맵과 inode 비트맵의 체크섬
    • 그룹 디스크립터도 슈퍼블록과 함께 다른 그룹에 복사되어 블록 그룹 0에 문제가 있을 때 복구하는 데 사용된다.
    • GDT 예약 블록은 그룹 디스크립터의 확장을 위한 예비 공간
  • 데이터 블록 비트맵과 inode 비트맵
    • 비트맵에서 각 데이터 블록과 inode 테이블의 항목은 1비트로 표현된다.
    • 데이터 블록 비트맵
      • 블록 그룹에 포함된 데이터 블록의 사용 여부를 확인
    • inode 비트맵
      • inode 테이블의 항목이 사용 중인지를 표시
  • inode 테이블과 데이터 블록
    • inode에 파일 정보를 저장
    • 데이터 블록에는 실제 데이터가 저장
      • 일반 파일은 데이터 블록에 파일 내용을 저장
      • 디렉터리는 데이터 블록에 해당 디렉터리에 있는 파일이나 서브 디렉터리의 정보를 저장

 

inode의 구조

  • 파일 정보를 저장하는 부분
    • ls -l 명령으로 확인하는 정보 
    • 파일 종류, 파일 접근 권한, 파일 크기, 소유자, 접근 및 수정 시간 등
  • 데이터 블록의 주소를 저장하는 부분
    • 실제 파일 내용을 저장
    • 구분
      • 직접 블록(direct block)
      • 간접 블록(indirect block)
      • 이중 간접 블록(double indirect block)
    • 간접 블록과 이중 간접 블록에는 데이터 블록에 대한 주소를 가진 블록에 대한 주소가 저장
    • 데이터 블록의 크기는 시스템 설정에 따라 1~8KB까지 지정 가능하다.

 

파일 시스템과 디렉터리 계층 구조

실제 파일이 저장되어 있는 파일 시스템은 디렉터리 계층 구조에 연결되어야 사용자가 접근하고 사용할 수 있다.

 

디렉터리 계층 구조에서 보이는 모든 디렉터리와 파일은 하나의 파일 시스템에 둘 수도 있고, 여러 파일 시스템에 나누어 구성할 수 있다.

 

한 파일 시스템으로 구성하기

 

페도라를 설치할 때 저장소를 자동으로 설정했기 때문에 하나의 파일 시스템으로 구성된 상태다. 하나의 파일 시스템으로 구성할 경우, 위의 그림처럼 / 디렉터리에 해당 파일 시스템을 연결한다.

 

또한, 디렉터리 계층 구조를 여러 파일 시스템으로 구분하여 구성할 수도 있다.

 

여러 파일 시스템으로 구성하기

 

위의 경우는 파일 시스템 1을 / 디렉터리에, 파일 시스템 2를 /usr 디렉터리에, 파일 시스템 3을 /home 디렉터리에 연결한 것이다. / 디렉터리에 연결된 파일을 대개 루트 파일 시스템이라고 한다.

 

여러 파일 시스템으로 나누어 디렉터리 계층 구조를 구성할 경우, 일부 파일 시스템에 문제가 생기더라도 다른 파일 시스템의 파일은 안전하다.

 

 

파일 시스템 마운트

파일 시스템이 디렉터리 계층 구조와 연결되지 않으면 사용자가 해당 파일 시스템에 접근할 수 없다. 파일 시스템을 디렉터리 계층 구조의 특정 디렉터리와 연결하는 것마운트라고 한다. 위의 여러 파일 시스템의 구성도를 보면, 파일 시스템은 /home 디렉터리에 마운트 한 것이고, 파일 시스템 2는 /usr 디렉터리에 마운트 했다.

 

마운트 포인트

디렉터리 계층 구조에서 파일 시스템이 연결되는 디렉터리마운트 포인트라고 한다. 위의 여러 파일 시스템의 구성도에서 마운트 포인트는 /usr, /home 디렉터리이다. 물론, 루트 파일 시스템을 마운트 한 / 디렉터리도 마운트 포인트가 된다.

 

파일 시스템 마운트 설정 파일

여러 개로 나누어진 파일 시스템은 /etc/fstab 파일에서 리눅스 시스템 부팅 시 자동으로 마운트하도록 설정할 수 있다.

 

/etc/fstab 파일

 

  • /etc/fstab 파일의 기능
    • 파일 시스템의 마운트 설정 정보를 가진다.
    • 리눅스 시스템은 부팅 시에 이 파일을 읽고 설정 내용에 따라 파일 시스템을 자동으로 마운트 한다.
    • 오류가 있으면 시스템 부팅이 중지된다.
    • 파일 시스템의 장치명과 마운트 포인트, 마운트 할 때 설정할 옵션을 지정한다.

 

/etc/fstab 파일은 장치명, 마운트 포인트, 파일 시스템의 종류, 옵션, 덤프 관련 설정, 그리고 파일 점검 옵션으로 구성되어 있다. 각 항목 사이에 tab 키로 간격을 준다.

 

 

  • 장치명
    • 파일 시스템 장치명을 설정한다.
    • 책에서 첫 번째 행의 장치명으로는 /dev/mapper/fedora-root로 출력되었는데, 버전이 다른 까닭인지 실습 환경에서는 UUID로 시작된다. (UUID에 대한 설명은 후술)
  • 마운트 포인트
    • 파일 시스템이 마운트 될 마운트 포인트를 설정한다.
  • 파일 시스템의 종류
    • 실습환경에서 ext와 XFS 파일 시스템 외의 btrfs라는 새로운 파일 시스템이 출력되었다.
  • 옵션 - 위의 실습환경과 차이가 있다.
    • defaults : 일반적인 파일 시스템에 지정하는 속성이며, rw, nouser, auto, exec, suid 속성을 모두 포함한다.
    • auto : 부팅 시 자동으로 마운트 한다.
    • exec : 실행 파일이 실행되는 것을 허용한다.
    • suid : setuid, setgid의 사용을 허용한다.
    • ro : 읽기 전용 파일 시스템
    • rw : 읽기, 쓰기가 가능한 파일 시스템
    • user : 일반 사용자도 마운트 할 수 있다.
    • nouser : 일반 사용자의 마운트가 불가능하며, root만 마운트할 수 있다.
    • noauto : 부팅 시 자동으로 마운트 하지 않는다.
    • noexec : 실행 파일이 실행하는 것을 허용하지 않는다.
    • nosuid : setuid, setgid의 사용을 금지한다.
    • usrquota : 사용자별 디스크 쿼터 설정이 가능하다. (보안 목적)
    • grpquota : 그룹별 디스크 쿼터 설정이 가능하다. (보안 목적)
  • 덤프 관련 설정
    • 0 또는 1을 지정한다.
    • 0을 지정하는 경우,
      • dump 명령으로 파일 시스템의 내용이 덤프 되지 않는 파일 시스템
    • 1을 지정하는 경우,
      • 데이터 백업 등을 위해 dump 명령의 사용이 가능한 파일 시스템
  • 파일 점검 옵션
    • 0, 1, 2 중 하나를 지정한다.
    • 0을 지정하는 경우,
      • fsck 명령으로 파일 시스템을 점검하지 않는다.
    • 1을 지정하는 경우,
      • 루트 파일 시스템이 fsck 명령으로 파일 시스템 점검을 수행한다.
    • 2를 지정하는 경우,
      • 루트 파일 시스템 외 파일 시스템을 의미한다.
      • 2로 설정된 파일 시스템들은 나열된 순서대로 fsck 명령을 사용하여 점검한다.

 

  • UUID
    • universally unique identifier의 약자
    • 로컬 시스템과 다른 시스템에서 파일 시스템을 유일하게 구분해주는 128비트의 숫자
    • 시스템의 하드웨어 정보와 시간 정보를 조합하여 랜덤 생성
      • 부트 로더를 가진 부트 장치의 이름이 바뀌는 것을 방지하기 위함
    • UUID로 지정된 장치는 /dev/disk/by-uuid 디렉터리에서 찾을 수 있다.

 

btrfs (B-tree file system)
내결함성, 복구 및 손쉬운 관리에 중점을 두는 것과 동시에 고급 기능을 구현하는 것을 목표로 하는 Linux용 최신 Cow(Copy On Write) 파일 시스템이다.

 

/etc/fstab 파일에서 옵션
책에서 소개한 옵션과 실습 환경에서 출력된 옵션은 차이가 있다. 페도라 리눅스 버전이 달라 차이가 나는 것으로 생각되며, btrfs 파일 시스템에 대해 공부를 한 후 따로 포스팅할 예정이다.

 

마운트 관련 명령

 

mount [옵션] [장치명 또는 마운트 포인트]

 

  • 기능: 파일 시스템을 마운트 한다.
  • 옵션
    • -t 파일 시스템 종류 : 파일 시스템 종류를 지정한다.
    • -o 마운트 옵션 : 마운트 옵션을 지정한다.
    • -f : 마운트 할 수 있는지 점검만 한다.
    • -r : 읽기만 가능하게 마운트 한다. (-o ro와 동일)

 

umount [옵션] [장치명 또는 마운트 포인트]

 

  • 기능: 파일 시스템을 언마운트한다.
  • 옵션
    • -t 파일 시스템 종류 : 파일 시스템 종류를 지정한다.

 

mount 명령만 사용하면 현재 마운트되어 있는 정보를 출력한다.

 

mount 명령으로 출력된 정보는 /etc/mtab 파일의 내용과 동일하다. 다만 /proc/mounts에 대한 심벌릭 링크로, 읽기 전용 파일이라 내용을 수정할 수 없다.

 

/etc/mtab 파일의 내용

 

  • /etc/mtab 파일의 구성 항목
    • 장치명
    • 마운트 포인트
    • 파일 시스템의 종류
    • 옵션
    • 사용하지 않는 항목 두 개(0 0)
      • /etc/fstab 파일과의 호환성을 위해 추가한 것이다.

 

장치를 연결하고 해제하기 - mount, umount 명령

 

mount (하드디스크 이름) (마운트 포인트)
mount /dev/sdb1 /mnt

 

USB 메모리를 사용하는 방법으로 실습을 진행한다.

 

따라해보기 : USB 메모리 연결하기

 

USB 메모리가 리눅스에서 인식하게 하려면 다음 과정을 거쳐야 한다.

 

[Player] - [Removable Device] - [Silicon Motion Flash Disk] - [Connect(Disconnect from host)]를 선택한다.

이 설정으로 호스트 OS(윈도)와 USB 메모리 간의 연결을 끊고 리눅스가 USB 메모리를 인식하게 한다.

 

USB 장치를 호스트 OS에서 분리하여 가상 머신에 연결한다는 메시지

 

mount 명령 실행 후 출력 화면(마지막 줄)

mount 명령을 통해 장치가 추가되었다.

 

하지만 리눅스에서 사용하는 USB 메모리가 준비되지 않은 상태로 실습하기 위해 마운트를 해제하고 시스템을 생성하는 작업을 진행한다. 마운트 해제는 umount 명령을 사용한다.

umount 명령을 사용하여 마운트를 해제했다.

 

fdisk 명령을 일반 사용자가 사용할 수 없다.

fdisk -l 명령으로 리눅스 시스템에 연결된 저장 장치명을 확인한다. fdisk 명령은 일반 사용자가 사용하려 하면 권한이 없어 거부되므로 root 사용자로 전환하여 사용한다.

 

 

fdisk 명령은 하드디스크의 파티션을 나눌 때 사용한다.

 

su - 명령을 사용하여 root 계정으로 전환하고 fdisk -l 명령을 실행한다.

fdisk -l 명령의 실행 결과에는 USB 메모리뿐만 아니라 기존 하드디스크의 정보도 포함된다.

 

USB 메모리의 장치명이 /dev/sda1임을 확인했다. 세부 내용은 USB 메모리의 상태에 따라 다르게 출력된다.

 

USB 메모리에 파티션을 생성하는데, USB 메모리를 리눅스에서 사용할 것이므로 리눅스 파티션을 생성해야 한다. disk 명령을 사용하여 실습한다.

 

fdisk에서 명령의 입력을 기다리는 프롬프트는 Command (m for help): 이며, m을 입력하면 사용할 수 있는 명령을 출력한다.

 

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


Command (m for help):

 

새 파티션을 생성하는 것을 n 명령으로 하며, 입력하면 어느 종류의 파티션을 할 것인지 물어본다. 기본값은 기본(p) 파티션이며, 확장(e) 파티션을 선택할 수도 있다.

 

사용 중인 USB 메모리를 꽂아서 그런 건지 기본 파티션의 모든 공간이 사용 중이라는 문구가 출력된다.

 

d를 입력하여 파티션을 삭제한다.

 

n을 입력하여 새로운 파티션을 생성하고, 모든 설정을 기본값으로 사용한다.

 

p 명령을 사용하여 파티션이 제대로 설정되었는지 확인한다.

 

w를 입력하여 설정한 파티션 정보를 파티션 테이블에 기록한다. 파티션 테이블에 기록되면 이전에 있던 정보가 없어진다.

USB 메모리에 파티션이 생성되었다.

 

파티션을 만든 직후 USB 메모리에 파일을 저장할 수는 없으므로, 먼저 포맷 작업을 하고 파일 시스템을 생성해야 한다. 파일 시스템을 생성하는 데 mke2fs 명령을 사용한다.

USB 메모리에 파일 시스템을 생성했다.

 

디렉터리에 연결하는 작업(마운트)을 진행한다. /dev/sda1 장치를 /mnt 디렉터리에 마운트 시키고 확인한다.

[root@fedora ~]# mount /dev/sda1 /mnt
[root@fedora ~]# mount
(생략)
/dev/sda1 on /mnt type ext4 (rw,relatime,seclabel)

 

마운트 한 디렉터리의 내용을 확인했더니 lost+found 디렉터리만 존재한다.

 

파일을 하나 복사했다.

 

충분히 실습했으니, umount 명령을 사용하여 USB 메모리를 제거한다.

해당 디렉터리를 누가 사용하고 있으므로 마운트 해제가 불가하다는 문구가 출력된다.

이는 현재 /mnt 디렉터리에 위치하면서 /mnt 디렉터리의 마운트를 해제한다고 했기 때문에 발생하는 것이다. 다른 디렉터리로 이동하여 umount 명령을 실행하면 정상적으로 마운트가 해제된다.

mount 명령으로 마운트가 제대로 해제되었는지 확인한다.

 

원래 실습은 "리눅스용 USB 메모리 연결하기"와 "윈도용 USB 메모리 연결하기" 두 개였는데 어쩌다 보니 윈도용 USB 메모리(FAT 32)를 포맷하면서 파일 시스템을 변경하는 바람에, 윈도용 USB 메모리를 리눅스용으로 바꾸어 마운트 하는 실습을 했다. 실습이 끝나고 어떻게 할지 고민했는데 USB 메모리를 다시 꼽고 호스트에 연결했더니 윈도창에 USB 포맷을 권장하는 화면이 출력되었다. 해당 창에서 파일 시스템을 다시 바꿨다!

 

 

요약

 

  • 리눅스 파일 시스템의 종류
    • 리눅스 고유의 디스크 기반 파일 시스템
      • ext
        • 최초의 리눅스 고유 디스크 기반 파일 시스템
      • ext2, ext3, ext4
        • ext 파일 시스템의 문제점을 보완하여 개선된 파일 시스템
      • XFS
        • 고성능 파일 시스템
    • 리눅스에서 지원하는 기타 파일 시스템
      • msdos, iso9660, nfs, vfat, hpfs, ntfs, sysv, hfs
    • 특수 용도의 가상 파일 시스템
      • swap, tmpfs, proc, ramfs, rootfs
    • 현재 시스템이 지원하는 파일 시스템의 종류
      • /proc/filesystems 파일에서 확인
  • 리눅스 파일 시스템의 구조
    • 리눅스 파일 시스템은 그룹 0 패딩, 슈퍼블록, 그룹 디스크립터, GDT 예약 블록, 데이터 블록 비트맵, inode 비트맵, inode 테이블, 데이터 블록으로 구성되어 있다.
    • 슈퍼블록에는 파일 시스템 관련 정보가 저장되어 있다.
    • inode는 파일 정보를 저장하는 부분과 데이터 블록의 주소를 저장하는 부분으로 구성되어 있다.
  • 파일 시스템 마운트
    • 마운트
      • 파일 시스템과 디렉터리 계층 구조의 특정 디렉터리를 연결하는 것을 의미한다.
    • 마운트 포인트
      • 디렉터리 계층 구조에서 파일 시스템이 연결되는 디렉터리를 말한다.
    • 마운트 설정 파일
      • /etc/fstab 파일에 설정
      • 장치명, 마운트 포인트, 파일 시스템의 종류, 옵션, 덤프 관련 설정, 파일 점검 옵션으로 구성
    • 마운트 관련 명령: mount, umount

댓글