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

IkSun·2023년 5월 4일

리눅스실습

목록 보기
7/14
post-thumbnail

00 개요
01 리눅스 파일 시스템 종류
02 리눅스 파일 시스템 구조
03 파일 시스템 마운트
04 디스크 추가 설치
05 디스크 관리
연습문제


  • 20G 디스크 하나가 여러개의 파티션으로 나누어져 있음
  • 각 파티션에는 루트 디렉토리 부터 진행되는 게층 구조가 만들어져 있을것이다.
  • 10G 파티션(1번)의 루트부터 쭉 이어지는 계층상의 맨 끝에 2번 피티션을 붙이는 이런 매핑은 마운트라는 개념이다.
  • LVM : 작은 디스크들을 모아서 가상의 큰 디스크를 만드는 방법

⏵ 01 리눅스 파일 시스템 종류

• 리눅스 파일 시스템 종류

  • 디스크 기반 파일 시스템
    • ext4: 1EB 이상의 파티션을 볼륨과 16TB 이상의 파일도 만들 수 있다.
      파일 시스템은 파티션 단위로 설치된다.

• 프로세스의 개념

  • 리눅스에서 지원하는 다양한 파일 시스템
    • 리눅스에서 지원하는 기타 파일 시스템
      • msdos, iso9660, nfs, vfat, ntfs
    • 리눅스의 가상 파일 시스템
      • 디스크에 저장되어 있지 않고 메모리에 저장되있는 디렉토리
      • swap, tmpfs, ramfs
      • proc : /proc 디렉토리이며, 커널의 현재 상태를 나타내는 파일을 가지고 있다.
  • 현재 시스템이 지원하는 파일 시스템 확인

⏵ 02 리눅스 파일 시스템 구조

• ext4 파일 시스템의 구조

  • 저장 장치를 논리적인 블록의 집합(블록 그룹) 으로 구분
  • 일반적으로 블록은 4KB 크기이고 조정 가능
  • 블록 그룹 개수 = 장치 크기 /블록 그룹의 크기
    • 1byte 짜리 파일을 하나 만들었다면 하나의 블록 단위(4KB)로 이 파일을 저장
  • 블록 그룹 유형
    • 블록 그룹 0 : 파일 시스템의 첫 번째 블록 그룹으로 특별하게 그룹 0 패딩과 슈퍼블록, 그룹 디스크립터로 구성
    • 블록 그룹 a : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹으로 그룹 0 패딩이 없으나 슈퍼블록과 그룹 디스크립터의 복사본을 가지고 있음
    • 블록 그룹 b : 파일 시스템에서 첫 번째 블록 그룹이 아닌 블록 그룹으로 바로 데이터 블록 비트맵으로 시작
    • 그룹 0 패딩
      • 블록 그룹 0의 첫 1,024B는 특별한 목적으로 사용되는데, x86 부트 섹터와 부가 정보를 저장
      • 이 파티션은 부팅을 할 수 있는 파티션이다 등의 정보를 저장
    • 슈퍼 블록 : 파일 시스템의 다양한 정보 저장, 복구용 백업 슈퍼블록 있음
    • 그룹 디스크립터와 GDT 예약 블록
      • 블록 그룹 0에서 슈퍼블록의 다음에 위치하며 다음 정보를 저장
    • 데이터 블록 비트맵과 inode 비트맨
    • inode 테이블
    • 데이터 블록 : 실제 정보 저장, 1KB ~ 8KB

      중요한것은 슈퍼블록, inode 블록, 데이터 블록으로 구성이 된다.

• inode 구조

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

  • 윈도우에서는 a, b, c, d 드라이브가 각각 존재
  • 리눅스는 하나의 root 부터 시작하는 계층구조, 여러개의 파티션 존재
    • a 드라이브는 root 에서 시작되는 디렉토리 이고, b 는 a 에서 특정 디렉토리를 기준으로 마운팅 되어 있는 구조이다. 즉, 하나의 디렉토리 상에 마운팅 되어있다. (윈도우와의 차이점)

⏵ 03 파일 시스템 마운트

• 마운트(mount)

  • 파일 시스템디렉토리 계층 구조특정 디렉토리연결 하는 것
  • 파일 시스템이 디렉토리 계층 구조와 연결되지 않으면 사용자가 해당 파일 시스템에 접근할 수 없음

• 마운트 포인트

  • 디렉토리 계층 구조에서 파일 시스템이 연결되는 디렉토리

• 파일 시스템 마운트 설정 파일 : /etc/fstab

  • 어떤 디바이스의 파일 시스템들 부팅 시 어떻게 마운트 되는지에 대한 마운트 설정 정보
  • /etc/fstab 파일의 구조

/etc/fstab 파일 예

  • 어느 디렉토리에 마운팅이 되는지, 요 장치가 어떤 파일시스템으로 포맷이 되는지

    # 예제
    cat /etc/fstab
    
    # 결과
    UUID=265c8913-ee1e-4034-885f-207969b0a23b / ext4 errors=remount-ro 0 1
    # macOS
    /dev/disk/by-uuid/51d6c0e5-9ab3-4a97-b3d3-c5710355d553 /boot ext4 defaults 0 1
    • 장치명 : UUID=265c8913-ee1e-4034-885f-207969b0a23b
      (UUID: 파일 시스템을 유일하게 구분해주는 128bit 숫자)
    • 마운트 포인트: /
    • 파일 시스템 종류: ext4
    • 옵션: errors=remount-ro
    • 덤프 관련 설정 : 0 (0:dump명령으로덤프안됨1:덤프가능)
    • 파일 점검 옵션: 1
      (0: 부팅시 fsck명령으로 파일시스템 점검 안함,
      1: 루트 파일시스템, 2: 루트 외 파일 시스템)
  • 파일 시스템의 마운트 옵션

    • rw : 그 파일 시스템의 사용자가 파일을 만들수도있고 쓸수도있게 rw 로 설정
    • noexec : 실행 파일이 실행되는 것을 허용하지 않는다. ( 그 파일시스템에 실행 파일을 저장해놓고 그 실행파일의 실행 유무)
    • usrquota : 사용자 별로 디스크 쿼터 설정이 가능하다.
      • 사용자 별로 이사람한테 1GB 만 허용, 저사람한테 2G 허용 등 사용자별 디스크 쿼터 설정

• 마운트 관련 명령

<-- 파일 시스템을 마운트 한다 -->
# mount [옵션] [장치명 마운트 포인트]

mount		# 단독 사용 : 현재 마운트되어 있는 정보 출력 (/etc/mtab 파일의 내용과 동일)
# [출력 결과]
# proc on /proc type proc (rw, nosuid, nodev, noexec, relatime)

cat /etc/mtab
# [출력 결과]
# proc /proc proc rw,nosuid, nodev, noexec, relatime 0 0
# 장치명, 마운트 포인트, 파일 시스템 종류, 옵션, 사용하지 않는 항목 두개 (0 0)

mount /dev/sdb1 /mnt  # 파일 시스템을 마운트 하기

# /dev/sda -> /dev/sdb -> /dev/sdc 이런식으로 마운트가 된다.
# /dev/sda 에서 파티션이 나누어 지면 sda1, sda2, sda3 등으로 나누어 각 파티션에 파일 시스템을 만들 수 있다.
# 1 숫자의 의미 : sdb1 은 그 나누어진 파일 시스템을 의미한다.

# 옵션 t : 파일 시스템의 종류를 지정
mount -t ex2 /dev/sdb1 /mnt # ext2 로 포맷하여 /dev/sdb1 를 /mnt 에다가 마운트 시키겠다.

mount -t iso9660 dev/cdrom mnt/cdrom 
# mnt/cdrom 이라는 디렉토리는 자동으로 만들어주지 않고 관리자가 만들어야함.

• 따라해보기 : 리눅스용 USB 메모리 연결하기

# 1) USB 메모리를 리눅스 시스템에 인식시키기
# - mount 명령을 실행해보면 장치가 추가되었는지 확인하고 마운트 해제
mount
umount /dev/sdb1

# 2) USB 메모리의 장치명 확인하기 : sudo fdish -l
# 3) USB 메모리에 파티션 생성하기
# 파티션 만들어야 sda1 sdb1 이렇게 나누지게 된다
# 디폴트는 전체를 하나의 볼륨으로 만들겠다는 옵션
sudo fdisk /dev/sdb
Command (m for help): n
p
w

# 4) 생성한 파티션 포맷하고 파일 시스템 생성하기
# 파티션을 만들었으니까 어떤 식으로 포맷할 것인가
mke2fs -t ext4 /dev/sdb1 # -> ext4 로 포맷

# 5) USB 파일 시스템 마운트 하기
# /deb/sdb1 를 /mnt 에 마운트
sudo mount /dev/sdb1 /mnt

# 6) 디렉토리 사용하기
cd /mnt
cp /etc/hosts .

# <-- 장치 연결 해제 하기 파일 : 시스템을 언마운트 한다. -->
# umount [옵션] [장치명 또는 마운트 포인트]
# 7) 장치 연결 해제 하기 : umount
umount /mnt
cd
sudo umount /mnt

#마운트 해제가 안되는 경우
# 누군가가 그 device 를 사용하고 있으면 mount 해제가 안됨,
# cd 로 나와서 umount 해야함

• 따라해보기 : 윈도용 USB 메모리 연결하기

# 1) USB 메모리를 USB 슬롯에 꽂고 리눅스 시스템에 인식시키기
# 2) USB 메모리의 장치명을 확인 fdisk -l
sudo fdisk -l
#[실행 결과]
FAT32(vfat) 
# 3) usb 메모리를 마운트
sudo mount -t vfat /dev/sdb1 /mnt
mount

# 4) USB 메모리가 디렉토리에 연결되어있으므로 사용 가능
# 윈도우에서 이미 포맷을 해서 데이터가 저장되어있는 파일이 있다고 가정
# 그 파일을 usb 를 꽂는다면 
# uub 메모리가 디렉토리에 연결되었으므로 사용가능

# 5) USB 메모리를 사용하고 나면 umount 명령으로 마운트를 해제

• 따라해보기 : CD-ROM/DVD 연결하기

# 1) CD-ROM/DVD 장치를 연결하여 리눅스 시스템에 인식시킴
# - 대부분의 경우 CD-ROM/DVD 는 자동으로 인식

# 2) 수동으로 CD-ROM/DVD 를 마운트할 경우 장치명은 /dev/cdrom 이나 /dev/sr# 을 사용
sudo umount /dev/sr1
sudo mount -r -t iso9660 /dev/sr1 /mnt

# 3) CD-ROM/DVD 가 마운트 되었으므로 내용을 확인하고 사용
# 4) CD-ROM 장치를 사용하고 나면 umount 명령을 사용하여 마운트를 해제

# 동일한 마운트 포인트에 동시에 두개의 장치를 마운트시킬순없다
# usb와 cd 를 마운트 시키기 위해서는 mnt 밑에 cd, usb 를 만들어서 각각 마운트 시켜줘야함.

⏵ 04 디스크 추가 설치

• 디스크 추가 단계

• 가상머신에 디스크를 추가하는 방법

  • 디폴트로 vmware 에서는 SCSI 타입의 가상 하드 디스크 사용

• 따라해보기 : 가상머신에 디스크 추가 장착하기

# 1) Player 메뉴에서 [Manage]-[Virtual Machine Settings]를 선택 
# 또는 VMware Player 메인 화면에서 [Edit virtual machine settings]를 선택

# 2) Virtual Machine Settings 창에서 [Add...]를 선택-> Add Hardware Wizard 창 -> [Next]를 클릭

# 3) Select a Disk Type 창에서 디스크의 종류로 ‘SCSI’를 선택하고 [Next] 클릭 

# 4) Select a Disk 창에서 ‘Create a new virtual disk’를 선택하고 [Next] 클릭 

# 5) Specify Disk Capacity 창에서는 디스크의 용량을 설정: 1GB
# 6) Specify Disk File 창에서 가상 디스크의 파일명을 지정
# 7) 디스크 파일이 생성되고 디스크 추가 작업이 완료

• 디스크 장치의 이름과 파티션 표시하기

  • /dev/sd로 시작하는 이름을 사용

    • /dev/sda : 첫 번째 디스크
    • /dev/sdb : 두 번째 디스크
    • /dev/sdc : 세 번째 디스크
  • 장치명이 /dev/sda라면 파티션의 이름을 다음과 같이 표시

    • /dev/sda : 첫 번째 디스크 전체를 의미하는 장치명
    • /dev/sda0 : 디스크의 첫 번째 파티션
    • /dev/sda1 : 디스크의 두 번째 파티션

• fdisk 명령

# 기능 : 디스크의 파티션 생성, 삭제 ,보기 등 파티션을 관리한다.
# 형식 : fdisk [옵션] [장치명]
# 옵션 : -b 크기 : 섹터 크기를 지정한다. (512, 1024, 2048, 4096).
#       -l : 파티션 테이블을 출력한다. (파티션 정보 보기)
fdisk /dev/sdb
fdisk -l
  • fdisk 명령의 내부 명령
    d : 파티션 삭제
    m : 어떤 명령어가 있는지 확인
    n : 새로운 파티션 만들기
    p : 만들어진 파티션 한번 더 확인
    q : 종료
    w : 저장

• 따라해보기 : 디스크 파티션 나누기

# 1) fdisk 명령을 실행 : 장치명을 인자로 지정
sudo fdisk /dev/sdb

# 2) 새로운 파티션을 생성
n

# 3) 파티션의 종류를 선택
- 기본(primary), 확장(extended)

# 4) 파티션의 번호를 선택
1

# 5) 퍼티션의 크기 설정
- 시작섹터 : 기본값
- 마지막섹터 : 크기 지정(+500MB)

# 6) 파티션 정보 확인
p

# 7) n 을 입력하여 두번째 파티션 생성

# 8) w 를 입력하여 파티션 설정정보 저장

• 파티션을 만든 후 파일 시스템을 생성해야 함

• 파일 시스템 생성 명령

﹣ mkfs

# 기능 : 리눅스 파일 시스템을 만든다
# 형식 : mkfs [옵션] [장치명]
# 옵션 : -t 종류 : 파일 시스템의 종류를 지정한다 (기본값은 ext2)
# mkfs.ext2 , mkfs.ext3, mkfs.ext4 명령도 제공
mkfs /dev/sdb1 # 디폴트 ext2, 
mkfs -t ext4 /dev/sdb1 

﹣ mke2fs

  • 다양한 옵션들을 쓸 수 있는 파일 시스템 생성 명령
  • 설정 파일 : /etc/mke2fs.conf
# 기능 : 리눅스 개정판 확장 파일 시스템(ext2, ext3. ext4)을 만든다.
# 형식 : mke2fs [옵션] [장치명]
# 옵션 : -t 종류 : 파일 시스템의 종류를 지정한다(기본값은 ext2)
#  		-b 블록 크기 : 블록 크기를 바이트 수로 지정한다.
#       -c : 배드 블록을 체크한다.
#       -f 프래그먼트 크기 : 프래그먼트 크기를 바이트 수로 지정한다.
#       -i inode 당 바이트 수 : inode 당 바이트 수를 지정한다(가본값은 4096B)
#       -m 예약 블록 퍼센트 : 슈퍼유저에게 예약해둘 블록의 퍼센트를 지정한다(기본값은 5%)

mke2fs /dev/sdb1
mke2fs -t ext4 /dev/sdb1

• 따라해보기 : mkfs 명령으로 파일 시스템 생성하기

# 1) mkfs 명령으로 /dev/sdb1 파티션에 ext2 파일 시스템 생성
sudo mkfs /dev/sdb1

# 2) mkfs.ext3 명령으로 /dev/sdb2 파티션에 ext3 파일 시스템 생성
sudo mkfs.ext3 -v /dev/sdb2

# 1G 짜리를 500MB 두개로 나누는데 sdb1 는 ex2 로 포맷하고 sdb2 는 ext3 로 포맷하겠다.

• 따라해보기 : mke2fs 명령으로 파일 시스템 생성하기

# 1) mke2fs 명령으로 /dev/sdc1 파티션에 ext3 파일 시스템을 생성
sudo mke2fs -t ext4 -b 4096 /dev/sdc2

# 2) mke2fs 명령으로 /dev/sdv2 파티션에 ext4 파일 시스템 생성 ( 블록크기는 4096B로 지정)
sudo mke2fs -t ext3 /dev/sdc1

• 마운트 포인트 준비하기

sudo mkdir /mnt/hdd1
sudo mkdir /mnt/hdd2
sudo mkdir /mnt/hdd3

• 파일 시스템 마운트 하기

sudo mount /dev/sdb1 /mnt/hdd1
sudo mount -t ext3 /dev/sdb2 /mnt/hdd2
# sdb2 는 hdd2 에 마운트를 시켜준다

# 마운트 결과 ~

• 파일 시스템 사용하기

  • 파일 복사하기
sudo cp /etc/hosts /mnt/hdd1
ls /mnt/hdd1

# 이 상태에서 /mnt/hdd 1의 마운트를 해제하면 /mnt/hdd1 디렉터리에는 어떤 파일이 있을까?
#-> 원래 있던 파일들이 그냥 보인다
#-> umount 는 삭제의 개념이 아니기 떄문

• 따라해보기 : 파일 시스템 마운트, 언마운트하기

# 1) /dev/sdb2 의 파일 시스템을 언마운트
# 2) /dev/sdc1 의 파일 시스템은 /mnt/hdd1 디렉토리에 마운트
# 3) /dev/sdc2 의 파일 시스템은 /mnt/hdd2 디렉토리에 마운
#    - 파일 시스템의 종류를 ext4 로 지정
# 4) /dev/sdc1 과 /dev/sdc2 의 파일 시스템이 제대로 마운트 되었는지 확인
# 5) /dev/sdc2 의 파일 시스템에 파일을 복사
# 6) /dev/sdc1 과 /dev/sdc2 파일 시스템의 마운트를 해제

• 여러 디스크를 하나의 디스크로 사용하는 방법 : LVM

  • 독립적으로 구성된 디스크 파티션을 하나로 연결하여 한 파티션처럼 사용할 수 있게 함.
  • 전체 하드디스크르 쪼개어 마운트 : 200G -> 100G, 50G, 50G 로 파티션하여 각각 마운트를 시키기가 일반적
  • 하지만 작은 파일 시스템 여러개를 크게 하나로 합쳐서 새롭게 15G 두개로 만들어서 format 하고 마운트 시켜도 되지 않느냐 -> 이 방법이 LVM
  • 관련용어
    • PV (물리볼륨): 피지컬한 파티션이 하나 만들어져있으면 (/dev/sdb1 같은) -> 볼륨 그룹으로 만들고 -> 논리 볼륨으로 만들기
    • VG (볼륨그룹) : 여러 개의 PV를 그룹으로 묶은 것을 말한다. 예를 들어 /dev/sdb1, /dev/sdb2 가 GRP1 이라는 그룹을 만든다면 GRP1 을 VG 라고 한다.
    • LV (논리볼륨) : VG 를 다시 적절한 크기의 파티션으로 나눌 떄 각 파티션을 LV라고 한다.
    • PE : PV 가 가진 일정한 블록을 뜻한다.
    • LE : LV 가 가진 일정한 블록을 뜻한다.

• LVM 예

  • 10GB 용량의 물리적 파티션(PV) 3개를 묶어서 30GB VG 1개를 만든 후 이를 다시 15GB LV 2개로 분리

• LVM 관련 명령

• LVM 생성 과정

• 따라해보기 : LVM 생성하기

/dev/sdb1, /dev/sdb2 는 크기가 각각 500MB 이다. 이를 LVM 으로 변환하고 1GB 짜리 LV 를 생성하여 마운트

# 1) lvm2 패키지를 먼저 설치
sudo apt install lvm2

# 2) /dev/sdb1, /dev/sdb2 의 파일 시스템 종류를 83(Linux)에서 8e(LinuxLVM)로 변경

# 3) /dev/sdb1, /dev/sdb2 에 PV 를 생성 
sudo pvcreate /dev/sdb1

# 4) pvscan 명령으로 PV의 상태를 확인

# 5) 두 PV 를 통합하여 VG 를 생성한다. VG의 이름은 grp1로 지정
sudo vgcreate grp1 /dev/sdb1 /dev/sdb2

# 6) 생성된 VG grp1 을 활성화 
sudo vgchange -a y grp1

# 7) 화렁화된 VG grp1 의 상태를 vgdisplay 명령으로 확인
sudo vgdisplay -v grp1

# 8) VG grp1 에는 PE 가 총 248개 있다. 이를 모두 합하여 하나의 LV를 생성
sudo lvcreate -l 248 grp1 -n mylvm1

# 9) 생성된 LV의 상태를 확인
sudo lvscan

# 10) LV mylvm1 에 ext4 파일 시스템 생성 : 장치명 :
sudo mke2fs -t ext4 /dev/grp1/mylvm1

# 11) VG의 상태를 확인아혀 LV 의 정보가 수정되었는지 확인

# 12) LV를 /mnt/lvm 디렉토리에 마운트하고 파일을 복사
sudo mount /dev/grp1/mylvm1 /mnt/lvm

⏵ 05 디스크 관리

• 파일 시스템별 디스크 사용량 확인하기 : df

# 기능 : 디스크의 남은 공간에 대한 정보를 출력한다.
# 형식 : df [옵션] [파일 시스템]

df					#disk 별 용량 및 사용률을 보여준다.
df -a  				#모든 파일 시스템을 대상으로 디스크 사용량을 확인한다.
df -k				#디스크 사용량을 KB 단위로 출력한다.
df -m   			#디스크 사용량을 MB 단위로 출력한다.
df -h   			#읽기 쉬운 단위로 표현해주는 가장 많이 쓰는 옵션 h 
					#->디스크 사용량을 알기 쉬운 단위(GB, MB, KB 등)로 출력한다.
                    
df -t 파일 시스템 종류 	#지정한 파일 시스템 종류에 해당하는 디스크의 사용량을 출력한다
df -T 				#그 파일 시스템의 타입(종류)도 같이 출력해준다 

• 디렉토리나 사용자별 디스크 사용량 확인하기 : du

# 기능 : 디스크의 사용 공간에 대한 정보를 출력한다.
# 형식 : du [옵션] [디렉토리]

du 				# 현재 디렉토리의 디스크 사용량 출력
du -s 			# 전체 디스크 사용량 출력하기
sudo du -s /etc 	# 지정한 디렉토리의 전체 사용량만 출력
du -sh user1 		# 특정 사용자의 디스크 사용량 출력 : 사용자의 홈 디렉토리를 지정
# user1 의 홈 디렉토리의 전체 크기가 -s 옵션 떄문에 나오고
# -h : 읽기 편하게 해주는
# 디렉토리나 파일 단위로 그 디렉토리 전체의 사용량이 얼마냐를 알아보는 명령어

• 따라해보기 : 디스크 사용량 확인하기

# 1) 파일 시스템의 디스크 사용량을 MB 단위로 출력
df -m

# 2) ext4 파일 시스템의 디스크 사용량을 출력 
df -t ext4

# 3) 전체 파일 시스템의 디스크 사용량을 출력  
du -a

# 4) /usr 디렉토리가 사용하고 있는 디스크 사용량을 출력
sudo du -sh /usr

• 파일 시스템 검사하기 : fsck

# 기능 : 리눅스의 파일 시스템을 점검한다.
# 형식 : fsck [옵션] [장치명]

sudo fsck /dev/sdd1 	# 일반적인 파일 시스템 검사
sudo fsck -f /dev/sdd1 	# 파일 시스템 강제 검사
sudo fsck.ext4 /dev/sdd3	# 파일 시스템 종류를 지정한 검사
sudo fsck -af /dev/sdb1 	#sdb1을 검사, 강제(f), a(자동복구)

• 파일 시스템 검사하기 : e2fsck

# 기능 : 리눅스의 확장된 파일 시스템(ext2, ext3, ext4)을 점검한다.
# 형식 : e2fsck [옵션] [장치명]

sudo e2fsk /dev/sdd1 	# 일반적인 파일 시스템 검사
sudo e2fsk -f /dev/sdd1 # 파일 시스템 강제 검사

• 배드 블록 검사하기 : badblocks

# 기능 : 장치의 배드 블록을 검색한다.
# 형식 : badblocks [옵션] [장치명]

sudo badblocks -v /dev/sdd1		# 배드 블록 검색하여 결과를 자세히 출력
sudo badblocks -v -o bad.out /dev/sdd1	
# 검색한 배드블록 목록을 지정한 출력 파일에 저장하기

• 백업 슈퍼블록을 이용하여 파일 시스템 복구하기

  • 백업 슈퍼블록의 위치 파악하기 : dumpe2fs
# 기능 : 파일 시스템의 정보를 출력한다.
# 형식 : dumpe2fs [장치명]

sudo dumpe2fs /dev/sd1 | grep superblock  
  • 파일 시스템의 블록 복사 명령 : dd
# 기능 : 지정한 블록 크기만큼 파일을 복사한다.
# 형식 : dd [if=파일] [of=파일] [bs=바이트 수] [count=블록 수]
#		-if=파일 : 표준 입력 대신 지정한 파일에서 읽어온다.
# 		-of=파일 : 표준 출력 대신 지정한 파일로 복사한다.
# 		-bs=바이트 수 : 한 번에 읽어오고 기록할 바이트 수다.
# 		-count=블록 수 : 블록 수만큼만 복사한다.

# 파일 시스템 복구하기

# 1) 파일 시스템의 기본 슈퍼블록을 dd 명령으로 삭제
#   - 파일 시스템의 앞부분 20블록을 0값으로 채우기
sudo dd if=/dev/zero of=/dev/sdd1 bs=4096 count=20

# 2) /dev/sdd1 파일 시스템을 마운트 하면 오류 메세지가 출력
sudo mount /dev/sdd1 /mnt/hdd1

# 3) dumpe2fs 로 확인한 백업 슈퍼블록을 이용하여 /dev/sdd1 파일 시스템을 복구
sudo e2fsck -b 32768 -y /dev/sdd1
profile
공부한 것 기록용

0개의 댓글