본문 바로가기

Learning/ └Essential & Admin

Linux_ServerAdmin (3)장치관리_파일시스템 작업

Linux_ServerAdmin 장치관리2-3파일시스템 작업

 

1)파일시스템 (File System)

파일시스템 이란 파일을 저장하고 관리하는 구조체계

 

2)파일시스템 종류

ext2    리눅스 이전 버전에서 사용하던 파일시스템

ext3    현재 CentOS 5.X 사용하는 파일시스템 (2001년도)

ext4    CentOS 6.X 사용하는 파일시스템 (RHEL 6.X(CentOS 6.X))

xfs      고성능 저널링 파일 시스템 (eXtended File System)

 

 

파일시스템에 대한 정보 확인

# export LANG=ko_KR.utf8

# man 5 filesystem

이름

       filesystems  -  Linux  filesystem  types:  minix,  ext,  ext2, xia, msdos,

       umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs

 

설명

       /proc/filesystems 파일에서 당신의 커널에서 지원하는 파일 시스템을 찾을  수

       있 다.   (현제 지원되지 않는 것을 원한다면, 대응하는 모듈을 넣거나, 커널을

       다시 컴파일 하라)

 

       아래는 여러 가지 파일 시스템에 대한 설명이다.

 

       minix  은 Minix 운영체제에서 쓰이는 Linux에서 사용할 수 있는 파일 시스템이

              다.  이것은 몇가지 결점이 있다: 64MB 파티션 크기 제한, 짧은 파일 이

              름 등..sp 하지만 플로피나 RAM 디스크에는 유용하다.

 

       ext    는 minix 파일 시스템의 정교한 확장이다. 이것은 두번째 버전의  확 장

              파일 시스템 (ext2) 에 완전히 대체되었고 결국 커널에서 지워졌다.

 

       ext2    는 고정 디스크를 리무버블 미디어와 마찬가지로 리눅스 상에서 사용되

              는 고 성는 디스크 파일 시스템이다.

 

              두번째 확장 파일 시스템은 확장 파일 시스템의 확장형태로 디자인 되었

              다.   (ext).  ext2 는 리눅스상에서 지원되는 파일 시스템의 최고의 성

              능을(속도와 CPU활용상에서) 제공한다.

 

       xiafs  는 Minix 파일시스템 코드를 확장함으로써 안정성을 중심으로 디자인 되

              었고, 또 충족시키고 있다

 

              xia   파 일 시스템은 더 이상 활발히 계발 되거나 유지되지 않고 있다.

              이것이 사용되는 것은 드물다.

 

       msdos  는 DOS, Window와 몇몇 OS/2 컴퓨터에서 사용되는 파일 시 스 템 이 다.

              msdos 파일 시스템은 홉션에 따른 8 글자의 파일명과 3 글자의 확장명만

              이 가능하다.

 

       umsdos 는 리눅스에서 사용되는 확장 도스 파일 시스템이다. 이것은 긴 파일 이

              름과 UID/GID, POSIX, 특수 파일(devices, named popes, etc)을 도스 파

              일 시스템상에서 도스의 기능을 희생하지 않고 사용 할 수 있다.

 

       vfat   는 MS Window95와 Window NT에서 사용되는 도스 파일 시스템이다.  VFAT

              는 MS 도스 파일 시스템에 긴 파일 이름 기능을 추가하였다.

 

       proc   는 읽기나 인터페이싱 보단 커널 데이터 구조를 위한 인터페이스로 사용

              되는 pseudo 파일 시스템이다.  /dev/kmem.  특이하게 이 파일은 디스크

              공간을 차지하지 않는다. proc(5)를 참조하라.

 

       iso9660

              는 ISO 9660 표준을 따르는 CD-ROM 파일 시스템 형태이다.

 

              High Sierra

                     리 눅 스 는  ISO  9660  표준의 전신인 High Sierra를 지원한다

                     iso9660 파일 시스템에서 자동으로 인식된다.

 

              Rock Ridge

                     Linux는 Rock Ridge 교환 프로토콜로  분 류 되 는  System  Use

                     Sharing  Protocol 역시 지원한다. 그것들은 더 나아가서 유닉스

                     호스트에게 iso9660 파일 시스템상에서 파일을 알리고, 긴 파 일

                     이 름이나 UID/GID, POSIX 인가, 그리고 디바이스와 같은 정보를

                     알린다. 이것은 자동으로 iso9660 파일 시스템상에서 인식된 다.

 

       hpfs   는 OS/2에서 쓰이는 고성능 파일 시스템이다. 이것은 리눅스상에서는 가

              능한 문서의 부족 때문에 읽기만 가능하다.

 

       sysv   는 리눅스를 위한 SystemV/Coherent 실행 시스템이다.  이것 은   모 든

              Xenix FS, SystemV/386 FS, Coherent FS을 실행한다.

 

       nfs     는 원거리 컴퓨터에 있는 디스크에 접근할 때 쓰이는 네트웍 파일 시스

              템이다.

 

       smb    는 Windows Workgroups, Windows NT, Lan Manager에서 쓰이는 SMB 프 로

              토콜을 지원하는 네트웍 파일 시스템이다.

 

              smb 파일 시스템을 사용하기 위해선 ksmbfs 패키지에서 구할 수 있는 특

              별한 마운트 프로그램이 필요하다  패키지는 아래에서 구할 수   있 다.

              ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/smbfs.

 

       ncpfs   는 Novell NetWare에서 사용하는 NCP 프로토콜을 지원하는 네트웍 파일

              시스템이다.

 

              ncpfs, 를 사용하기 위해선 아래에서 구할 수 있는 특별한 프로그 램 이

              필요하다.  ftp://linux01.gwdg.de/pub/ncpfs.

 

대표적인 파일시스템의 특성

 

ext2 (Second Extended File System)

컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제

ext 의 문제를 해결하기 위해 ext 파일 시스템 코드를 바탕으로 재구성과 개선이 있었다. 

225자 까지의 파일이름 지원/ 세타임 스탬프3 지원/ 확장이 쉬움/ 분리 접근/ 아이노트수정 등

시스템의 최대 크기는 블록 사이즈에 따라 2TiB ~ 32TiB , 서브디렉토리 개수 제한 32768개

 

ext3

리눅스의 표준 파일 시스템은 ext2 이다. 그러나 정전이나 시스템 장애로 인하여 비정상적으로

shutdown 되었을 때 파일 시스템이 umount 되지 않는 경우, 파일 시스템이 큰 경우 부팅 오래 걸림

 

레드햇 리눅스 9버전은 ext2 파일시스템의 대안으로 ext3 파일 시스템을 기본 파일 시스템으로 지원

서로 호환성을 유지 한 디렉토리당 서브 디렉토리 개수 제한 31998개

 

주요특징

- ext3 파일 시스템의 가용성과 데이터 무결성

- ext2 파일 시스템에서 ext3파일 시스템으로 변환 용이

- 속도 / 하드디스크의 헤더 동작을 최적화 시켜 주어 ext2 파일 시스템에 비해 빠르다

 

ext4

ext3 은 ext2 의 호환을 목표로 설계 되어 구조가 ext2 파일 시스템가 비슷하기 때문에

아이노드 동적 활당. 다양한 블록 크기등과 같은 기능 부족 Extends 기능지원X, 온라인 조각모음 프로그램

없음.  ext4는 ext3의 단점을 보안

 

주요특징

- 큰 파일 시스템 / 16TB 까지의 파일 지원

- Extents / 이전에 block mappint 방식 대신 extends 방식을 새로 도입. 큰 파일 처리 개선, 조각화 현상 완화

- 호환성 / ext2, ext3을 ext4 방식으로 마운트하여 성능이 향상된 상태로 사용가능

- 저널 체크섬 / ext3에 없었던 저널 체크섬 기능 추가, 파일 시스템 손상 가능성 줄임

- 서브 디렉토리 제한X / 이전 32000개 제한에서 64000개로 늘어남

- 온라인 조각모음

- 빠른 파일 시스템 검사 / 사용하지 않는 부분은 건너뜀

- 파일스탬프 향상 / 타임스탬프가 초 단위가 아닌 나노 초 단위로 재어지며 ~2038에서 ~2514년 으로 지원변경

 

xfs

xfs(eXtended File System - 고성능 저널링 파일 시스템)는 64비트 주소를 지원하며 확장성 있는

자료 구조와 알고리즘을 사용

 

주요특징

- 저널링(신속한 복구)

- 신속한 트랜잭션

- 높은 확장성

- 뛰어난 처리량

 

 

3)파일시스템 구조

 

리눅스는 가상 파일시스템(Virtual File System) 구조를 가진다.

따라서 수많은 파일시스템을 지원한다.

 

파일시스템 구조 확인 (파일시스템의 meta-data 확인)

# dumpe2fs /dev/sda1

 

파일시스템 구조

MBR

Boot Sector

Partition

- super block

- group descriptor table

- block bitmap

- inode bitmap

- inode table

- data block

 

 

4)파일시스템 작업

 

파일시스템 생성

mkdir CMD

mkfs, mkfs.ext2, mkfs.ext3, mkfs.vfat

mkdir 사용법

# mkfs -t ext3 /dev/sdb1

# mkfs.ext3 /dev/sdb1

 

# mkfs -t ext2 /dev/sdb1

# mkfs.ext2 /dev/sdb1

 

# mkfs.ext3 -m 10 /dev/sdb1    ( -m : minfree)

# mkfs.ext -L testlabel /dev/sdb1    ( -L : Label)

# mkfs.ext3 -b [1024|2048|4096] /dev/sdb1 ( -b : block size)

[참고] # dumpe2fs /dev/sda1

 

옵션

설명

-m

minimum percentage로 파일 시스템에 마련할 여분의 공간을 관리자가 결정하는 옵션으로 -m을 사용하지 않으면 newfs 명령어가 파일 시스템의 크기에 따라서 적절한 값을 계산하여 사용한다. -m 다음에는 여분의 공간을 명시하는데 전체 파일 시스템 중에서 몇 %를 여분으로 둘 것인지를 숫자로 명시

-v

작업 상태, 결과를 자세하게 보여줌

-t

만들어질 파일 시스템의 형태를 지정

  -L     : 라벨이름 변경

  -b     : 블록사이즈 변경

 

 

 

 

 

[예 제]

 

 

파일 시스템 종류별 생성

(선수작업)

- 새로운 디스크 장착 (EX: /dev/sdb(1 GB) )

- 파티션 작업 (EX: /dev/sdb1(primary(1 GB) )

# fdisk -l /dev/sdb

-----------------------------------------------------------

# mkfs.[TAB][TAB]

 

 

# mkfs.ext2 /dev/sdb1 ( mkfs -t ext2 /dev/sdb1)

 

 

# mkfs.ext3 /dev/sdb1 ( mkfs -t ext3 /dev/sdb1)

 

 

 

파일 시스템 minfree 공간 생성

 

minfree(Minimum Free Space) : 파일시스템(EX: ext3)이 풀(FULL) 났을 때 관리자만 쓸수 있는 공간

예약된 공간 (0% ~ 50%, Default : 5%)

 

# mkfs.ext3 -m 10 /dev/sdb1

# mkfs.ext3 -L mkfs /dev/sdb1

 

 

 

파일 시스템 블럭 사이즈 지정

 

# mkfs.ext3 -b 4096 /dev/sdb1

 

 

# mkfs.ext3 -b 3027 /dev/sdb1

(리눅스의 블럭 사이즈는 1,2,4 K이므로 3K 지정시 2K로 선택)

 

 

# mkdir -p /disk1

# mount /dev/sdb1 /disk1

# df -h

 

# cd

# umount /disk1

# df -h

 

(정리) 디스크를 추가해서 작업하는 방법

 

         (ㄱ) 디스크 인식

                  kudzu -> # ntsysv (# chkconfig kudzu on)

         (ㄴ) 서버 Power OFF / 디스크 장착 / 부팅

         (ㄷ) 파티션 작업

                  # ls -l /dev/sd?

                  # fdisk -l

 

                  # fdisk /dev/sdb

         (ㄹ) 파일시스템 생성

                  # mkfs.ext3 /dev/sdb1

         (ㅁ) 마운트 작업

                  # mkdir /disk1

                  # mount /dev/sdb1 /disk1

                  # vi /etc/fstab

 

 

 

 

 

 

 

minfree(MiniMUm Free Space)

 

 

mifree

최소 남은 공간(Mininum Free Space)는 전체 공간의 퍼센트로 할당된다. 이 공간은 파일시스템이 만들어질 당시에 예약되서 생성된다. 기본 예약 값은 ((64 MB / 파티션 크기) * 100) 이다. 이 값은 0%에서 50% 사이 값이 할당이 되고, 근사값으로 결정이 된다.

 

최소 남은 공간은 파일시스템이 Full 되었을 때 파일시스템을 접근 할 수 있는 최소로 공간으로 남겨져 있어야 하기 때문에 중요하다. 파일시스템이 Full 되면, root 사용자만 사용할 수 있는 공간으로 예약되어진 남은 공간이다.

 

Minfree 공간은 하나의 파티션에 0 ~ 50% 사이 값으로 정의된다. Minfree 공간은 파티션이 풀(Full)난 경우 root 사용자가 사용하기 위한 공간으로 사용된다. 일반사용자는 이 공간을 사용할 수 없다. 파일시스템에서 Minfree 공간은 0(zero)일수 없다. 최소 minfree0%이다.

 

파일 시스템 생성시 minfree 공간 할당

 

(minfree 5%) # mkfs.ext3 /dev/sdb1

(minfree 1%) # mkfs.ext3 -m 1 /dev/sdb1

(minfree 5%) # tune2fs -m 5 /dev/sdb1

 

 

# mkfs.ext3 -m 1 /dev/sdb1

 

 

[참고] 선수작업

파티션 설정 : /dev/sdc1(1G)

# fdisk /dev/sdc

# fdisk -l /dev/sdc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

실무에서 minfree 공간을 조정하는 경우

 

 

 

 

 

 

 

 

 

파일시스템 점검 및 사용량 점검(fsck) file system check

 

fsck = 점검(check)+ 수정(repair)

 

(명령어 형식)

# fsck /dev/sda1

# fsck -p /dev/sd1

# fsck -y /dev/sd1    (물어보는 내용을 자동으로 yes로 대답)

 

# fsck /dev/sda1

# fsck.ext3 /dev/sda1

# e2fsck /dev/sda1

 

 

(fsck, fsck.ext3 명령어 옵션)

옵션

설명

-A

/etc/fstab 파일에 있는 모든 파일시스템을 한번씩 점검

-R

-A와 함께 사용시 /(root) 파일시스템은 제외

-T

시작시 제목은 생략

-N

실행은 하지 않고 어떤 작업을 할 것인지만 출력

-P

-A와 함께 사용시 /파일시스템과 다음 파일시스템을 병렬처리하여 점검함

-V

자세한 정보가 출력

-a

에러 발생시 자동으로 복구함

-t

특정 종류의 파일시스템만 점검함.

 

(e2fsck 옵션)

옵션

설명

-f

파일시스템에 오류가 없더라도 강제로 점검하도록 함

-p

에러 발생시 자동으로 복구하도록 함

-y

모든 질문에 yes라고 답하도록 설정함

-b

수퍼 블럭을 이용한 복구

 

fsck 명령어 주의점

마운트된 파일시스템에 대해서 fsck 명령어 수행하지 말아야 한다

 

/home, /data1, /data2, ...  -> umount CMD + fsck CMD

/, /usr, /var, /tmp            -> single user mode + fsck CMD

 

 

fsck 실습

 

 

 

(실무 예) "# fsck -y /dev/sda1" 사용시

# script -a fsck.log

# fsck y /dev/sda3

# exit

# cat fsck.log

 

 

 

(실무 예) 슈퍼 블록을 복구하는 방법

# dumpe2fs /dev/sdb1 | grep -i superblock

# e2fsck -b 32768 /dev/sdb1

 

 

 

(실무 예) 배드블럭(Bad Block) 발생한 경우의 복구 방법

배드블럭의 종류

- 물리적인 배드블럭(Physical badblock)

- 논리적인 배드블럭(Logical badblock)

 

# badblocks -v /dev/sdb1 ( 베드블럭 점검 ,오래걸림 )

# e2fsck -c -p -f -v /dev/sdb1 (# e2fsck -cpfv /dev/sdb )

 

-p 질문함이 없이 자동적으로 오류를 수정하도록 한다

-f 파일 시스템이 이상이 없다 하더라도 점검을 하도록 강제한다

-c e2fsck로 하여금 badblocks(8)을 실행하여 파일 시스템 상의 배드 블록을 찾아내고 베드블럭

   아이노드에 추가함으로써 표시를 해둔다.

-v 자세한 출력모드

 

 

 

슈퍼블럭 복구 실습(EX: ext3)

 

슈퍼블럭 복구 실습할 파일시스템 선택

# df -h /home

 

backup superblock 번호 확인 및 block size 확인

# dumpe2fs /dev/sda3 | grep -i superblock

 

 

 

# dumpe2fs /dev/sda3 | grep -i 'block size'

 

block size : 1024 ( 첫번째 백업슈퍼블럭 : 8193 )

block size : 4096 ( 첫번째 백업슈퍼블럭 : 32768 ) 4배

 

 

 

 umount /home

# cd

# umount /home

# df -h

-> /home(/dev/sda3) 정보가 보이지 않아야 함

 

 

 

backup superblock 으로 superblock 복원

# dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda3

(if : input file)(of : output file)( bs : block size )( count :  )

 

 

# mount /home

 

 

 

# fsck /dev/sda3

 

마운트 포인터 에 대한 정보가 없음 / 데이터 존재

backup blocks Trying 복원작업

 

! 계속 해서 물어봄

fsck -y /dev/sda3 명령어로 자동 YES

 

# mount /home

# df -h /home

 

mount 작업 이 되는걸 확인

 

 

[정리] superblock 자동 복구 방법에 대한 과정

# umount /home

# dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda3

# mount /home

-> 에러 메세지 확인

# e2fsck -y /dev/sda3

# mount /home

# df -h

 

[정리] superblock 수동 복구 방법에 대한 과정

# umount /home

# dd if=/dev/zero count=1 bs=1024 seek=1 of=/dev/sda3

# mount /home

-> 에러 메세지 확인

# e2fsck -b 8193 -f -v -y /dev/sda3

# mount /home

# df -h

 

 

 

 

 

파일 시스템 사용량 측정 (df ,du)

 

df CMD

(1) df (disk free space) - 파티션 단위의 사용량 점검

 

df 명령어는 남은 디스크 블럭과 남은 파일의 수를 출력하는 명령어이다. df 명령어에 -k, -h 옵션 등을 사용하면 출력 결과는 파일시스템 크기, 사용된 공간, 남은 공간, 전체에서 사용중인 %사용량, 마운트 포인트등을 출력한다.

 

du CMD

(2) du (disk usage) - 디렉토리 단위의 사용량 점검

 

du 명령어는 디스크와 파일의 사용량을 보여준다. du 명령어에 -s, -a, -k, -h 옵션 등을 사용하면 출력 결과는 디렉토리와 파일의 크기, 사용된 공간, 남은 공간, 전체에서 사용중인 사용량을 출력한다.

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------

(2-3) 파일 시스템 작업(Filesystem)

(선수지식)
 파일시스템?
 파일시스템의 종류
            - ext2, ext3, ext4, xfs

 파일시스템 구조

# dumpe2fs /dev/sdb1

 

 파일시스템 작업
           # mkfs -t ext3 /dev/sdb1  (# mkfs.ext3 /dev/sdb1)
           # dumpe2fs /dev/sdb1     (# tune2fs -l /dev/sdb1) //확인할때

 [참고] minfree 
# mkfs.ext3 -m 5 /dev/sdb1
# tune2fs -m 5 /dev/sdb1

 

 파일시스템 점검

fsck CMD

(주의) fsck CMD

- umount CMD + fsck CMD

- single user mode + fsck CMD

 

# fsck /dev/sdb1

# fsck -p /dev/sdb1

# fsck -y /dev/sdb1

 

[참고] fsck -y 옵션 사용하는 경우

# script -a fsck.log

# fsck -y /dev/sdb1

# exit

# cat fsck.log

 

[참고] backup superblock를 통해 superblock복구

# e2fsck -b 8193 -f -y /dev/sdb1    (자동 복구가 안될시 수동으로 작업)

 

 

 파일시스템 모니터링

df CMD + du CMD + find CMD

# df -k

# du -sk /var

# cd /var; du -sk * | sort -nr | more

# find /var -size +300m -type f