파일 시스템 관리

  • 학습 개요
    리눅스 시스템에서 저장 장치에 파티션을 만든 후, 파티션에 파일 시스템을 만들어 주고, 파일 시스템을 마운트 시켜 전체 디렉토리 트리 구조에 연결 시켜 보자.
    LVM 볼륨 개념과 사용 방법과 파일 시스템의 종류를 알아보자.

  • 학습 목표

    1. 저장 장치에 여러 파티션을 만들고 관리 할 수 있다.
    2. 파일 시스템의 마운트와 언마운트 명령을 설명할 수 있다.
    3. LVM 도구를 사용하여 볼륨을 만들고 사용할 수 있다.
    4. 리눅스 파일 시스템의 구조와 종류를 설명할 수 있다.

마운트와 언마운트

마운트

  • 파일 시스템을 전체 디렉토리 구조의 특정 디렉토리에 연결하는 것
    • 저장 장치에 파티션이 존재하며, 파티션에 파일 시스템을 만들어져 있음.
  • 마운트 되는 위치를 마운트 지점이라 함.

/etc/fstab

  • 리눅스 시스템이 부팅 될 때 자동으로 마운트 할 파일 시스템의 목록을 가진 설정 파일
    • 각 라인마다 개별 파일 시스템의 마운트 정보가 기록 되어 있음

라인을 구성하는 항목의 의미

필드 내용
디바이스 장치의 이름으로 디바이스 파일(ex:/dev/sda1) 또는 UUID(Universally Unique Identifier)가 사용됨
마운트 지점 파일 시스템 트리에서 디바이스가 부착되는 위치(디렉토리)
파일 시스템 유형 리눅스에서 허용하는 파일 시스템의 유형
옵션 마운트 옵션으로 mount 명령에서 -o 옵션을 사용하는 것과 의미가 같음
덤프 여부 백업 덤프의 여부. 0 : X, 1 : O
파일 시스템 검사 여부 파일 시스템 검사를 위한 것. 0 : X, / 는 1일 경우, 나머지는 2일 경우 검사함.
[ec2-user@ip-aws ~]$ cat /etc/fstab
#
UUID=b24eb1ea-ab1c-47bd-8542-3fd6059814ae     /           xfs    defaults,noatime  1   1

마운트와 /etc/fstab

  • UUID는 파일 시스템을 유일하게 구분하는 32자리 16진수 숫자
    • 블록 디바이스의 정보를 보여주는 blkid명령으로 확인 가능
  • 마운트 또는 언마운트를 하면 내용이 /etc/mtab 파일에 기록 됨
    • 옵션 없이 단순한 mount 명령을 사용하면 현재 마운트 되어 있는 파일 시스템을 보여줌
    • 추가로 마운트한 것이 없다면 /etc/fstab 파일의 내용과 거의 유사함
  • 기본 마운트 옵션은 rw, suid, dev, exec, auto, nouser, async가 적용됨
    • mount 명령에서 옵션 -o를 사용할 때 적용할 수 있음.

mount

  • 파일 시스템을 마운트 하는 명령
    • 파일 시스템을 지장된 디렉토리(마운트 지점)에 붙여 파일 시스템을 사용할 수 있게 함
  • mount -a [options] [-t type]
    • 옵션 -a는 /etc/fstab 파일에 기록된 모든 파일 시스템을 마운트 함
    • 옵션 -t가 추가되면 해당 유형의 파일 시스템만 마운트 함
  • mount [options] [-o mount_options] device | derectory
    • -a가 사용되지 않으면 지정된 장치 또는 디렉토리에 해당하는 것을 찾아 마운트 함
    • 옵션 -o는 파일 시스템을 마운트 할 때 사용할 옵션
  • EX)
    • mount -a -t iso9660
      • /etc/fstab에 나열된 iso9660 유형의 모든 파일 시스템을 마운트
    • mount /dev/cdrom 또는 mount /mnt/cdrom
      • 장치명 또는 마운트 포인트만 명시되면 /etc/fstab에서 해당 파일 시스템을 마운트
  • 일반적인 마운트 명령
    • 실제 마운트는 드물게 사용함
    • mount [options] [-t type] [-o mount_options] device directory
      • mount 명령을 실행하기 전 마운트 지점(디렉토리)를 생성해야 함.
      • 해당 장치가 존재하는지, 파일 시스템 종류가 맞는지 확인함.
      • 존재한다면 /etc/fstab 파일에서 해당 파티션에 지정된 옵션을 적용하고, 옵션 -o에 주어진 것을 적용하며, 사용되었다면 -r 또는 -w를 적용함
  • EX)
    • mount -t ext4 /dev/sdb1 /mnt/data1
    • mount -t iso9660 -o ro /dev/sr0 /media/cd
    • mount -t vfat /dev/hda1 /mnt/win

umount

  • 디렉토리에 마운트 되어 있는 저장 장치를 해당 디렉토리로 부터 분리
  • umount -a [-nv] [-t fs_type]
  • umount [-nv] device | directory
  • EX)
    • umount -a -t iso9660
      • /etc/mtab에서 iso9660 유형의 파일 시스템을 모두 언마운트
    • umount /dev/sr0
    • umount /media/usb

파티션 관리

파티션

  • 물리적 저장 장치를 논리적으로 분할한 구역
    • 하나의 하드디스크를 여러 개의 파티션으로 만들 수 있음
  • 하나의 파티션을 독립적 저장 장치처럼 사용할 수 있음
    • 파티션은 자신만의 디바이스 파일을 가짐
      • 첫 번째는 SCSI 디스크응 /dev/sda
      • 파티션은 /dev/sda1, /dev/sda1, ...
  • 전통적 MBR 유형 파티션 테이블은 4개의 primary 파티션을 저장할 수 있음

디스크를 여러 파티션으로 분할하여 사용하는 이유

  • 여러 운영체제를 별도의 파티션에 설치하여 멀티 부팅을 사용
  • 특정 파티션이 손상되더라도 다른 파티션에 데이터는 보존됨
  • 파티션 별로 다른 파일 시스템을 만들 수 있음
  • /boot 영역을 별도의 파티션으로 분리하여 빠르게 부팅함
  • /var 영역을 별도의 파티션으로 만들어 가용 공간이 줄어드는 문제를 / 영역과 분리함
  • 가상 메모리로 사용될 스왑 영역을 별도로 파티션으로 구성함

파티션 관리 도구

  • 파티션과 파티션 테이블을 관리하는 프로그램
    • MBR 유형 파티션 테이블은 파티션 최대 크기의 제약이 있음(2TB)
    • 최근 운영체제는 GPT 유형의 파티션 테이블을 지원함
  • 파티션의 생성, 삭제, 이동, 크기 변경 및 복사 기능을 제공
    • 파일 시스템을 관리할 때는 다른 도구를 사용하는 것이 좋음
  • 종류
    • fdisk : 전통적 텍스트 기반 대화식 도구. GPT 지원 X
    • parted : MBR, GPT 모두 지원
    • gdisk : GPT 지원. gparted는 parted의 그래픽 버전
  • parted -l 또는 fdisk -l 명령은 모든 블록 디바이스에서 파티션 정보 출력
  • parted /dev/sda를 수행한 후 서브 명령으로 p 수행 가능

파티션 만들기

  • 저장 장치를 실제로 사용하려면 파티션을 만들고, 파일 시스템을 만들어 줘야 함.
    • parted 또는 fdisk 명령을 사용하면 파티션을 만들 수 있음.
    • mkfs 명령으로 파일 시스템을 만듦.
  • 연습을 위한 방법
    • 가상 머신에 하드디스크 추가
      • VirtualBox 메뉴의 설정 > 저장소 > 컨트롤러 IDE에서 [하드 디스크 추가] 실행
    • 가상 머신에 USB 장착
      • 가상 머신 메뉴에서 마운트 가능
  • 저장 장치의 이름을 알아보기 위헤 ls /dev/dd*, parted -l, tail -f /var/log/messages 명령 사용 가능

볼륨 관리

볼륨

  • 볼륨은 크기가 재조정될 수 있는 파티션
    • 디스크 관리 또는 파티션 관리를 위해 새롭게 등장한 개념
    • 볼륨의 크리극 줄이거나 늘릴 수 있음
  • 여러 디스크에 걸쳐 있는 볼륨을 만들 수 있음
  • 용어
    • 물리볼륨(PV) : 하나의 물리적 디스크
    • 볼륨그룹(VG) : 여러 물리 볼륨을 하나로 묶은 것으로 파티션의 한 종류
    • 논리볼륨(LV) : 볼륨 그룹에서 가용한 공간을 분할한 것으로 개념적으로 기존 파티션과 일치
    • 물리 볼륨은 물리 익스텐트(PE)로 나뉘어 있고, 논리 볼륨은 (LE)로 나뉨.

논리 볼륨 만들기

  • 하드디스크에서 파티션을 만듦
  • 하드디스크의 파티션을 물리 볼륨(pv)으로 만듦
  • 하나 이상의 물리 볼륨(pv)를 할당하여 볼륨 그룹(vg)을 만듦
  • 몰륩그룹(vg) 안에서 논리 볼륨(lv)을 생성
  • 파일 시스템을 생성하고 마운트하여 사용

LVM 유틸리티

  • 볼륨 관리 도구
  • 여러 저장 장치에 각각 물리 볼륨을 만들고, 이것을 합쳐 볼륨 그룹(저장 장치 풀)을 구축
  • 볼륨 그룹을 여러 논리 볼륨들로 나누어 사용
LVM 관련 명령 DESC
pvcreate 파티션을 초기화하여 물리 볼륨으로 만듦
pvdisplay 물리 볼륨의 속성 출력
vgcreate 명령 pvcreate로 만든 블록 디바이스로부터 새로운 볼륨 그룹 생성
vgextend 기존 볼륨 그룹의 크기를 늘리기 위해 물리 볼륨을 추가
vgdisplay 볼륨 그룹의 속성 출력
ivcreate 볼륨 그릅에서 새로운 논리 볼륨 생성
ivdisplay 논리 볼륨의 속성을 출력

파일 시스템

  • 정보의 저장과 검색을 위해 저장 장치를 어떻게 구성하고 관리할지에 대한 규칙
    • 파일에 파일명과 경로를 부여하여 저장이나 검색을 위해 파일을 구분하고 식별하는 방법
  • 파일 시스템의 종류에 따라 파티션의 수와 크기, 파일이름의 길이, 파일의 크기, 파일의 총 수, 파일의 복구, 성능/보안/유연성 등에 차이가 남.

파일 시스템의 구조

  • 유닉스 계열의 운영체제에서 사용하는 파일 시스템의 기본 구성 요소 (이미지 만들어서 올리자 1'05")
  • 슈퍼블록
    • 파일 시스템의 특징을 기록한 블록
    • 블록의 크기, 전체 블록의 개수, inode 테이블의 크기와 위치, 디스크 블록 맵, 첫 번째 데이터 블록의 주소 등
  • inode 테이블
    • 'inode list' 라고 함
    • 하나의 항목인 inode는 한 개 파일의 이름을 제외한 모든 정보를 가짐
    • inode 번호, 파일의 형태, 크기, 접근 권한, 소유자, 소유 그룹, 수정 시간, 링크 수, 디스크 블록 위치 등
    • 디렉토리나 특수 파일도 하나의 파일로 간주
  • 데이터 블록
    • 일반 파일의 경우 실제 데이터가 저장됨
    • 디렉토리의 경우 포함된 파일의 이름이 inode 번호와 함께 저장됨.

파일 시스템 유형

파일 시스템 DESC
ex4 리눅스의 기본 파일 시스템으로 범용 파일 시스템
ext2와 ext3의 개선된 버전
최대 크기 1EiB, 최대 파일 크기 16TiB
저널링을 통한 신뢰성, 온라인 단편화 제거, 하위 호환성 등의 기능
iso9660 CD-ROM 과 같은 광학 디스크에서 사용되는 표준 파일 시스템
vfat 윈도우 운영체제와 호환되는 파일 시스템으로 USB에서 주로 사용 됨
HFS+ 매킨토시에서 사용되는 표준 파일 시스템
Btrfs 리눅스 차세대 파일 시스템
XFS 고성능으로 대용량 파일 또는 파일 시스템을 사용하기 위한 파일 시스템

커널이 사용하는 가상 파일 시스템과 네트워크 파일 시스템도 있음

mkfs

  • 파티션이나 논리 볼륨에 리눅스 파일 시스템을 만드는 명령
  • mkfs [-t fs-type] device
    • 옵션 -t fs-type을 사용하여 파일 시스템 종류 지정 가능
    • device는 /dev/sdb1 또는 /dev/sdc1과 같은 장치 이름
  • 실제 mkfs는 mkfs.종류이름을 사용하여 수행 됨

fsck

  • 파일 시스템의 무결성을 검사하고 손상된 파일을 고치는 명령
    • 마운트 되어 있지 않은 파일 시스템을 검사
    • 문제가 있다면 대화식으로 파일 시스템 복원
    • 파일 시스템의 'lost + found' 디렉토리에 손상된 파일이 남아 있을 수 있음
  • fsck [options] device
  • e2fsck와 같은 파일 시스템 고유의 검사 프로그램이 존재할 수 있음

스왑 영영

  • 특정 파티션이나 파일을 스왑 영역으로 저장하여 사용 가능
    • 메모리 사용량을 확인하는 free 명령으로 스왑 메모리도 알 수 있음
  • 파티션을 스왑 영역으로 사용할 때
    • 빈 파티션을 만듦
    • mkswap device를 수행하여 스왑 파티션으로 함
      • 지정한 특정 장치나 파일을 리눅스용 스왑 영역으로 지정
    • swapon device를 수행하여 활성화 시킴
      • free 명령으로 스왑 영역을 확인 가능
    • /etc/fstab 파일에 기록함
  • 파일을 스왑 영역으로 사용할 때?

df

  • 마운트 되어 있는 파일 시스템의 공간 사용 정보를 보여줌
  • df [options] [names]
    • 인수 names는 장치 이름 또는 마운트 지점
  • 옵션
    • -h : 용량 단위를 KB, MB, GB단위로 보여줌
    • -T : 파일 시스템의 유형을 포함하여 출력함
    • -i : inode 사용량을 보여줌
➜  .ssh df -h
Filesystem      Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk1s5   932Gi   11Gi  502Gi     3%  488476 9767489684    0%   /
devfs          191Ki  191Ki    0Bi   100%     662          0  100%   /dev
/dev/disk1s1   932Gi  418Gi  502Gi    46% 3497725 9764480435    0%   /System/Volumes/Data
/dev/disk1s4   932Gi  1.0Gi  502Gi     1%       2 9767978158    0%   /private/var/vm
map auto_home    0Bi    0Bi    0Bi   100%       0          0  100%   /System/Volumes/Data/home

du

  • 디렉토리나 특정 파일의 디스크 사용량을 표시하는 명령
  • du [options] [directories]
    • 인수 directoris는 장치 이름 또는 마운트 지점
    • 기본적으로 하위 디렉토리를 포함하고 1KiB 단위로 출력함
  • options
    • -a : 디렉토리 외에 파일의 디스크 사용량도 출력
    • -s : 주어진 디렉토리 또는 파일만의 총 사용량 출력
  • EX)
    • du : 현재 디렉토리와 모든 서브 디렉토리의 사용량을 블록 수로 표시
    • du --max-depth=1 /home 은 사용자 별로 사용량을 블록 수로 표시
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] 소프트웨어 관리  (0) 2020.11.01
[Linux] 프로세스 관리  (0) 2020.11.01
[Linux] vi 사용 텍스트 편집  (0) 2020.10.25
[Linux] 사용자 관리  (0) 2020.10.25
[Linux] 시작과 종료  (0) 2020.10.24

+ Recent posts