ssongk
ssongk
ssongk
전체 방문자
오늘
어제

공지사항

  • resources
  • 분류 전체보기 (626)
    • CTF (24)
    • background (79)
      • fuzzing (5)
      • linux (29)
      • linux kernel (15)
      • windows (2)
      • web assembly (1)
      • embedded (0)
      • web (13)
      • crypto (9)
      • mobile (1)
      • AI (1)
      • etc.. (3)
    • write-up(pwn) (171)
      • dreamhack (102)
      • pwn.college (4)
      • pwnable.xyz (51)
      • pwnable.tw (3)
      • pwnable.kr (5)
      • G04T (6)
    • write-up(rev) (32)
      • dreamhack (24)
      • reversing.kr (8)
    • write-up(web) (195)
      • dreamhack (63)
      • LOS (40)
      • webhacking.kr (69)
      • websec.fr (3)
      • wargame.kr (6)
      • webgoat (1)
      • G04T (7)
      • suninatas (6)
    • write-up(crypto) (19)
      • dreamhack (16)
      • G04T (1)
      • suninatas (2)
    • write-up(forensic) (53)
      • dreamhack (5)
      • ctf-d (47)
      • suninatas (1)
    • write-up(misc) (13)
      • dreamhack (12)
      • suninatas (1)
    • development (31)
      • Linux (14)
      • Java (13)
      • Python (1)
      • C (2)
      • TroubleShooting (1)
    • 자격증 (8)
    • 이산수학 (1)
    • 정보보안 (0)
hELLO · Designed By 정상우.
ssongk

ssongk

development/Linux

[우분투 리눅스] 파일 시스템과 디스크 관리

2022. 7. 27. 15:10

리눅스 파일 시스템의 종류

<리눅스 고유의 디스크 기반 파일 시스템>

ext : 초기 미닉스 파일 시스템을 대처해여 개발된 최초의 리눅스 고유 디스크 기반 파일 시스템

ext2, ext3, ext4 : ext 파일 시스템의 문제점을 바완하여 개선된 파일 시스템

XFS : 실리콘그래픽스가 개발한 고성능 파일 시스템

<리눅스에서 지원하는 기타 파일 시스템>

msdos, ios9660, nfs, ufs, vfat, hpfs, ntfs, sysv, hfs

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

swqp, tmpfs, proc, ramfs, rootfs

<현재 시스템이 지원하는 파일 시스템의 종류>

/proc/filesystems 파일에서 확인할 수 있다.

리눅스 파일 시스템의 구조

<리눅스 파일 시스템 공통의 개념>

파일은 inode로 관리된다. 

디렉터리는 단순히 파일의 목록을 가지고 있는 파일이다.

특수 파일을 통해 장치에 접근할 수 있다.

<블록 그룹>

블록 그룹 0 : 파일 시스템의 첫 번째 블록 그룹. 그룹 0 패딩, 슈퍼블록, 그룹 디스크립터를 소유

블록 그룹 a : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹. 그룹 0 패딩이 없고 슈퍼 블록, 그룹 디스크립터의 복사본을 소유

블록 그룹 b : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹. 그룹 0 패딩, 슈퍼 블록, 그룹 디스크립터가 없고 바로 데이터 블록 비트맵으로 시작

<파일 시스템 구성 요소>

그룹 0 패딩 : 블록 그룹 0의 첫 1024B는 x86 부트 섹터와 부가 정보를 저장하는 특별한 용도로 사용한다.

슈퍼블록 : 파일 시스템 관련 정보 저장한다.(전체 inode 개수, 전체 블록의 개수, 할당되지 않은 블록과 inode의 개수, 첫 번째 데이터 블록의 주소, 블록의 크기, 마운트 시간 등) 슈퍼블록에 문제가 생기면 전체 파일 시스템을 사용할 수 없다. 따라서 슈퍼블록을 다른 블록 그룹에 복사해놓고 블록 그룹 0의 슈퍼블록을 읽을 수 없는 경우 복사본을 사용해 복구한다.

그룹 디스크립터 : 블록 그룹 0에 있는 것으로 슈퍼블록의 다음에 위치한다. (블록 비트맵의 주소, inode 비트맵의 주소, inode 테이블의 주소, 할당되지 않은 블록의 개수, 할당되지 않은 inodedml 개수, 디렉터리의 개수, 블록 비트맵 / inode 비트맵 체크섬

GDT 예약 블록 : 그룹 디스크립터 확장을 위한 예비 공간이다.

데이터 블록 비트맵 : 블록 그룹에 포함된 데이터 블록의 사용 여부를 확인하는 데 쓰인다. 비트맵에서 각 데이터 블록과 inode 테이블 항목은 1bit로 표현한다.

inode 비트맵 : inode 비트맵은 inode 테이블의 항목(inode)이 사용 중인지를 표시한다.

inode 테이블 : inode들을 모아놓은 테이블 

데이터 블록 : 실제 데이터가 저장된다. 일반 파일은 데이터 블록에 파일 내용을 저장하고, 디렉터리는 데이터 블록에 해당 디렉터리에 있는 파일이나 서브 디렉터리의 정보(이름, inode)를 저장한다.

파일 시스템 마운트

마운트 : 파일 시스템과 디렉터리 계층 구조의 특정 디렉터리를 연결하는 것을 의미한다.

마운트 포인트 : 디렉터리 계층 구조에서 파일 시스템이 연결되는 디렉터리를 말한다.

마운트 설정 파일 : /etc/ftab 파일에 설정되어 있으며 장치명, 마운트 포인트, 파일 시스템의 종류, 옵션, 덤프 관련 설정, 파일 점검 옵션으로 구성되어 있다.

마운트 관련 명령 : mount, umount

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

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

디스크 추가

디스크 파티션 명령 : fdisk

파일 시스템 생성 명령 : mkfs, mke2fs

디스크 마운트 명령 : mount [-t FileSystemType] source destination

LVM

여러 개의 디스크를 하나의 파일 시스템처럼 사용할 수 있게 해주는 관리 도구

PV(physical volume) : 실제 하드디스크의 파티션을 의미한다.(/dev/sda1, /dev/sda2 등)

VG(volume group) :  여러 개의 PV를 그룹으로 묶은 것이다. /dev/sda1, /dev/sda2가 GRP1이라는 그룹을 만들 때 GRP1을 VG라고 한다.

LV(logical volume) : VG를 다시 적절한 크기의 파티션으로 나눌 때 각 파티션을 LV라고 한다.

PE(phygical extent) : PV가 가진 일정한 블록을 말한다.

LE(logical extent) : LE가 가진 일정한 블록을 말한다.

관련 명령 : pvcreate, pvscan, vgcreate, vgchange, vgremove, vgdisplay, vgextend, lvcreate, lvremove, lvscan, lvextent

 

<LVM 생성 과정>

기존 파일 시스템의 종류 변경(83->8e) -> PV 생성 -> VG 생성 -> VG 활성화 -> LV 생성 -> LV에 파일 시스템 생성 -> LV 마운트

디스크 관리

디스크 사용량 확인 : df, du

파일 시스템 검사 및 복구 : fsck, e2fsck

e2fsck 명령을 사용할 땐 해당 파일 시스템의 마운트를 해제해야 한다.

배드 블록 검사 : badblocks

백업 슈퍼블록을 이용한 파일 시스템 복구 : 백업 슈퍼블록의 위치 파악(dumpe2fs) -> 파일 시스템 복구(e2fsck -b 백업슈퍼블록위치 -y 장치명)

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

[우분투 리눅스] 소프트웨어 관리  (0) 2022.08.06
[우분투 리눅스] 리눅스의 부팅과 종료  (0) 2022.07.31
[우분투 리눅스] 프로세스 관리하기  (0) 2022.07.23
[우분투 리눅스] 파일 접근 권한 관리하기  (0) 2022.07.20
[우분투 리눅스] 셸 기초 사용법  (0) 2022.07.19
    'development/Linux' 카테고리의 다른 글
    • [우분투 리눅스] 소프트웨어 관리
    • [우분투 리눅스] 리눅스의 부팅과 종료
    • [우분투 리눅스] 프로세스 관리하기
    • [우분투 리눅스] 파일 접근 권한 관리하기
    ssongk
    ssongk
    벌레 사냥꾼이 되고 싶어요

    티스토리툴바