-
파일 시스템 작업linux/centOS 2018. 6. 20. 14:40
1
파일 시스템이란?
파일시스템이란? 파일을 저장하고 관리하는 체계이다. 파일과 그 안에 든 자료를 저장하고 찾기 쉽도록 유지 관리하는 방법을 말한다. 데이터를 저장하기 위해 우리는 물리적 장치인 디스크를 장착하고 장착한 디스크를 사용 할 수 있도록 우리는 파티션 영역을 지정해준다. 사용하고자 하는 영역을 지정해 주었으면 그 안에 데이터(파일과 자료)를 저장하고 관리 할 수 있도록 파일 시스템을 만들어 준다.
운영체제가 파티션 영역을 인식 할 수 있도록 (운영체제만이 알 수 있도록) 파일 시스템을 만들어줘야 한다. 기억 공간에 데이터를 저장하고 유지하기 쉽도록 도와주는 것이 파일 시스템이다. 파일 시스템은 운영체제에 의해서 만들어진 파일이다. 파일을 만들기 위해서는 파일 시스템이 만들어 진 곳에다가 파일을 만들어야 하기 때문에 이를 그냥 통칭해서 파일 시스템이라 부른다.
2
파일 시스템 종류
■ 파일시스템의 종류
---------------------------------------------------------------------------
ext2 (mkfs.ext2) 리눅스 이전 버전에서 사용하는 파일시스템
ext3 (mkfs.ext3) 현재 CentOS 5.X 사용하는 파일시스템
ext4 (mkfs.ext4) CentOS 6.X 사용하는 파일시스템
xfs (mkfs.xfs) 고성능 저널링 파일 시스템(eXtended File System)
msdos (mfs.msdos) MS-DOS filesystem
---------------------------------------------------------------------------
3
대표적인 파일시스템의 특성
■ ext2 파일시스템
컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말이다. 리눅스에서 사용 되는 파일 시스템은 ext2, ext3, ext4, xfs 등이 있다.
R'emy Card가 1993년 1월에 알파 버전을 공개한 파일 시스템이다. 정식 이름은 Second Extended File System 이며, ext의 문제를 해결하기 위해 나왔다. ext2 파일 시스템은 ext 파일 시스템 코드를 바탕으로 했으며, 많은 재구성과 개선이 있었다. ext2 파일 시스템은 나중에 있을 개선도 고려해 만들어진 파일 시스템이다. ext2 파일 시스템은 점점 많이 쓰이게 되면서 버그도 고쳐지고 계속해서 새로운 기능이 추가되어, 안정한 파일 시스템이 되었다. ext2 파일 시스템은 255자 까지의 파일 이름을 지원한다. 또 세타임 스탬프3를 지원하며, 확장이 쉽다. 그리고 ext에 있었던 여런 단점(분리 접근, 아이노트 수정 등 지원 안 함)을 개선하였다. 파일 시스템의 최대 크기는 블록 사이즈에 따라 2TiB ~ 32TiB 이며, 서브 디렉토리 개수 제한은 32768개 이다.
■ ext3 파일시스템
저널링 파일 시스템 (Journaling FileSystem) - ext3 파일 시스템 등장 배경
리눅스의 표준 파일 시스템은 ext2 파일 시스템이다. ext2 파일 시스템은 리눅스의 표준 파일 시스템으로 오랜 동안 안정적이고 뛰어난 성능을 보여 왔다. 그러나 ext2 파일 시스템은 정전이나 시스템 장애로 인하여 비정상적으로 시스템이 shutdown 되었을 때 파일 시스템이 umount 되지 않은 경우나 Maximal mount에 도달하였을 때 데이터의 손실을 막기 위하여 데이터 구조 일치성을 파일 시스템이 체크하도록 되어 있는데, 파일 시스템이 작을 경우에는 무의미 할 뿐더러 파일 시스템이 큰 경우에는 부팅하는 데 상당한 오랜 시간이 걸리는 문제점이 있다.
그래서 부팅 할 때의 시간을 단축하면서 비정상적인 시스템 종료시 파일 시스템을 체크하지 않고 인덱스(index)에 대한 로그를 기록하여 문제 발생 시 이를 복구할 수 있는 대체 파일 시스템이 요구되어 등장한 것이 저널링 파일 시스템이다. (ext3는 Stephan Tweedie가 개발하여, 2001년 11월에 Linux 2.4.15에 추가 되었다.)
리눅스에서 지원하는 저널링 파일 시스템으로 ext3, reiserfs, XFS등이 많이 사용되고 있습니다. 레드햇 리눅스 9 버전은 ext2 파일시스템의 대안으로 ext3 파일 시스템을 기본 파일 시스템으로 지원한다. ext3 파일시스템은 ext2 파일 시스템과 호환성을 유지하는 파일 시스템이다. 한 디렉토리당 서브 디렉토리 개수 제한은 31998개 이다.
<주요 특징>
① ext3 파일 시스템의 가용성과 데이터 무결성 (Data Integrity)
앞서 언급한 대로 ext2 파일 시스템은 예기치 못한 정전이나 시스템 충돌로 인하여 시스템이 비정상 종료 되었을 때 다시 부팅시 파일 일치성을 fsck 프로그램에 의해서 점검하게 된다. ext2 파일 시스템에서는 파일 데이터를 바로 동기화시키지 않기 때문에 이러한 비상 사태가 일어나게 되면 데이터 일치성이 맞질 않기 때문에 부팅시 이를 점검하게 되는 것이다. 데이터 일치성 점검은 파일 시스템 크기에 따라서 걸리는 시간이 달라 질 수 있다. 수기가 바이트의 파일 시스템을 갖고 있는 경우라면 파일 시스템을 체크하는데 있어서 상당한 오래 걸리며, 이 시간 동안에 시스템을 사용 할 수 없는 단점이 있다. 그러나 ext3 파일 시스템은 변경되는 파일 데이터를 바로 동기화시키기 때문에 시스템이 급작스럽게 정지되더라도 다음 부팅시에는 파일 시스템을 체크하지 않고, 구조 일치성을 체크하는데 불과 몇 초 밖에 걸리지 않기 때문에 부팅 속도가 빨라지는 이점이 있다. 항상 파일시스템의 일치성을 유지하고 있어서 데이터 무결성을 보장해 주는 이점이 있다.
② ext2 파일 시스템에서 ext3 파일 시스템으로 변환 용이
레드햇 리눅스에서 저널링 파일 시스템으로 reiserfs 파일 시스템 대신에 ext3를 채택하게 된 것은 기존의 ext2 파일 시스템과의 호환성과 변환이 쉽기 때문이다. Tune2fs 프로그램으로 사용하면 ext2 파일 시스템에 저널 (journal)을 추가하여 ext3 로 변환할 수 있으며 (이때 tune2fs - j 파티션)으로 저널링을 추가해 준다. 레드햇 리눅스 9에서는 e2fsprogs 프로그램을 지원하고 있어서 이 프로그램이 설치되어 있으면 ext3 파일 시스템을 거꾸로 ext2 파일 시스템으로 사용할 수 있게 해준다. 이와 같이 ext3파일 시스템은 ext2 파일 시스템에서 쉽게 변환 할 수 있는 이점이 있다.
③ 속도
ext3 파일 시스템은 하드디스크의 헤더 동작을 최적화 시켜 주기 때문에 동일한 데이터를 여러 차례 반복 저장하더라도 ext2 파일 시스템에 비해 빠른 속도를 제공한다. ext3 파일 시스템에서는 데이터 일치성 속도를 최적화할 수 있는 data=writeback, data=ordered, data=journal 등 세가지 저널링 모드를 제공하는데, /etc/fstab 파일에서 마운트 옵션으로 저널링 모드 값을 ‘data = 모드값’ 형태로 지정해 주어 사용할 수 있다. 레드햇 리눅스에서는 기본 저널링 기본값으로 data=ordered를 지원하며, 이 모드는 블록이 순서대로 디스크에 저장되면서 완전한 데이터 일치성을 갖도록 해준다.
■ ext4 파일시스템
ext3는 ext2 파일 시스템과의 호환을 목표로 설계 되어 구조가 ext2 파일 시스템과 비슷하기 때문에 아이노드의 동적 활당, 다양한 블록 크기등과 같은 기능이 부족하며 Extends 기능도 지원하지 않는다. 또한 온라인 조각모음 프로그램이 없다는 것이 단점이다. 오프라인 조각모음 프로그램이 있기는 하지만, 이를 사용하기 위해서는 ext2 파일 시스템으로 변환 시켜야 하며, ext3에서 ext2로 변환 후 조각모음을 하면 조각모음 프로그램이 ext3의 새로운 기능을 인식하지 못해 자료가 손상될 수 있다. ext3는 조각모음이 필요 없다는 주장이 있는데, FAT 시스템보다는 덜 조각화 되기는 하지만 계속된 사용으로 인해 ext3도 조각화 될 수 있다. 이는 ext4에서 다시 조각 모음 프로그램이 만들어지는 계기가 된다. ext3 파일 시스템은 또한 저널링을 할 때 체크섬을 검사하지 않는다.
ext4는 ext3의 단점을 보안하여 Mingming Cao, Andreas Dilger, Alex, Tomas, Dave Kleikamp, Theodore Ts'o, Efic Sandeen과 그 외 여러 사람에 의해 ext3를 바탕으로 개발되었다. 2006년 8월 10일 리눅스 2.16.19에서 Unstable 버전이 공개되었으며, 2008년 8월 21일에 Stable 버전이 공개되었다.
<주요 특징>
① 큰 파일 시스템
1 EBS까지의 볼륨과 16 TB 까지의 파일을 지원한다.
② Extents
ext2, ext3의 block mapping 방식 대신 extends 방식을 새로 사용한다. 이는 큰 파일 처리를 개선하고 조각화 현상을 줄여준다.
③ 호환성
ext2, ext3를 ext4 방식으로 마운트하여 성능이 향상된 상태로 사용할 수 있으며, ext4는 ext3 방식으로 마운트 될 수 있다. 그러나 extends를 사용하는 ext4 파티션은 ext3 방식으로 마운트 될 수 없다.
④ 저널 체크섬
ext3 파일 시스템에 없었던 저널 체크섬 기능이 추가됨으로써 파일 시스템 손상 가능성이 더 줄어들었다.
⑤ 32000개 서브 디렉토리 제한이 깨짐
서브 디렉토리 개수 제한이 32000개에서 64000개로 늘어났다.
⑥ 온라인 조각모음
ext4는 ext3에서 지원하지 않았던 온라인 조각모음을 지원할 수 있다.
⑦ 빠른 파일 시스템 검사
ext4는 디스크 검사를 할 때 사용하지 않는 부분은 건너뜀으로써 시스템 검사를 빨리 할 수 있다.
⑧ 파일스탬프 향상
타임스탬프가 초 단위가 아닌 나노 초 단위로 재어지며, ext2, ext3에서는 1901년 12원 14일 ~ 2038년 1월 18일을 지원했지만 ext4에서는 1901년 12월 14일 ~ 2514년 4월 25일을 지원한다.
⑨ 영속적 선행 할당
디스크 공간을 프로그램이 실제로 사용하기 전에 할당해야 한다면 대부분의 파일 시스템은 아직 사용하지 않은 공간에 0을 기록함으로써 선행 할당을 하지만 ext4는 이렇게 하니 않고도 선행 할당을 할 수 있다.
⑩ 지연 할당
ext4는 디스크 공간 할당을 마지막까지 지연하므로 성능이 향상된다.
⑪ 그 외
Multiblock allocator, 파일 복구 기능 추후 구현 가능성 등.
■ xfs 파일시스템
xfs(eXtended File System -고성능 저널링 파일 시스템)는 예전 커널에서는 패치를 적용하여 사용할 수 있었지만 2.4.25 이후 버전의 2.4 커널과 2.6 대의 커널에서는 정식으로 커널 소스 트리에 포함되었다. xfs는 SGI에서 개발한 고성능 저널링 파일 시스템으로 64비트 주소를 지원하며 확장성 있는 자료 구조와 알고리즘을 사용한다.
<주요 특징>
① 저널링(신속한 복구 기능)
xfs의 저널링 기법을 사용하여 파일 수에 관계없이 예상치 못한 상황으로부터 신속하게 복구하여 재시작이 가능하다. 기존의 저널링을 사용하지 않는 파일 시스템의 경우에는 이러한 일을 수행하기 위해 오랜 시간에 걸쳐 파일 시스템 체크 프로그램을 수행해야만 했었다. xfs는 이러한 체크 프로그램을 사용하지 않는다.
② 신속한 트랜잭션
xfs는 저널링 기법의 장점을 제공하면서도 데이터 읽기/쓰기 트랜잭션으로 인한 성능 저하를 최소화한다. xfs의 저널링 구조와 알고리즘은 트랜잭션에 대한 로그 기록을 신속하게 할 수 있도록 최적화되어 있다.
③ 높은 확장성
xfs는 완전한 64비트 파일 시스템이기 때문에 100만 테라바이트 크기의 파일도 다룰 수 있다. 100만 테라바이트는 현재 사용되고 있는 가장 큰 파일 시스템이 처리할 수 있는 것보다 10만 배나 더 큰 것이다. 이것은 극히 큰 주소 공간인 것 같지만 요즘 디스크 크기의 발전 추세에 볼 때 근래에 유용하게 쓰이게 될 것이다. 디스크 공간이 커짐에 따라 단지 주소 공간만이 커질 것이 아니라 그에 따른 자료 구조나 알고리즘도 같이 확장되어야 한다. xfs는 이러한 확장성을 제공하는 준비된 파일 시스템이다.
④ 뛰어난 처리량
xfs는 거의 raw IO 성능에 가까운 성능을 낼 수 있는 파일 시스템이다. xfs는 수 GB/s의 성능을 내는 SGI MIPS 시스템에서 테라바이트 단위의 파일 시스템 확장성을 검증받았다. 리눅스가 엔터프라이즈 영역에서 차지하는 비중이 날로 커지고 있으며, 리눅스 서버의 처리량이 증가 함에 따라 xfs이 리눅스에서도 이러한 양의 데이터를 신속히 처리할 수 있게 된다.
4
파일시스템의 구조
리눅스에서 파일의 개념은 파일을 바이트의 단순한 연속으로 간주한다. 리눅스는 모든 입출력 디바이스들을 파일로 취급하여 심지어 NIC, Disk, Keyborad, printer도 파일로 취급한다. 파일시스템은 모든 입출력을 제어하는 Device Driver와 연결되어 있고 시스템 호출을 통하여 사용자로부터 데이터를 받아 처리한다.
리눅스는 VFS(Virtual File System)을 통하여 ext2, jfs2, proc와 같은 다양한 파일시스템을 지원하고 있다.
■ 가상 파일시스템 구조(Virtual File System)
VFS는 모든 파일 시스템이 필요로 하는 일련의 function을 정의하고 있다. 이러한 인터페이스는 세 종류 대상과 관련된 일련의 동작으로 구성된다. 즉 파일시스템, 아이노드, 열린 파일이다.
VFS는 커널에서 지원하는 파일시스템 타입을 알고 있다. 이는 커널 구성 동안에 만들어지는 테이블을 사용한다. 이 테이블 내의 각 엔트리가 하나의 파일 시스템 타입을 정의한다. 즉 파일시스템 타입의 이름과 function에 대한 포인터이다.
어떤 파일 시스템이 마운트 될 때 그에 맞는 마운트 function이 불러 들여진다. 이 function이 디스크의 슈퍼블록을 읽는 것을 담당하며, 내부 변수를 초기화하고 VFS에 마운트된 파일시스템 descriptor를 돌려준다.
파일시스템이 마운트 된 후에 VFS function은 물리적인 파일시스템 루틴을 접근하는데 이 descriptor를 사용한다. 마운트된 파일시스템 descriptor는 모든 파일시스템 타입에 공통된 몇 가지의 데이터를 포함 한다. 물리적 파일시스템 커널코드에 의해 제공되는 function에 대한 포인터와 물리적인 파일 시스템 코드에 필요한 고유정보이다. 파일시스템 descriptor에 포함된 function 포인터는 VFS가 파일 시스템 내부 루틴을 접근하는 것을 허용한다.
두 가지의 다른 descriptor가 VFS에 의해 사용된다. 아이노드 descriptor와 열린 파일 descriptor이다. 각 descriptor는 사용 중인 파일에 관련된 정보와 물리적인 파일시스템 코드에 의해 제공되는 일련의 동작을 갖고 있다. 아이노드 descriptor는 어떤 파일에 대해서도 사용되는 function에 대한 포인터를 포함하는데 비해 (e.g. create, unlink) 파일 descriptor는 열린 파일에 대해서만 작동하는 function에 대한 포인터를 갖는다. (e.g.read,write)
◎ 파일시스템 구조 분석하기
대부분의 리눅스 사용자들은 ext2 파일시스템을 많이 사용하고 있다. 자신이 사용하고 있는 배포본의 파일시스템을 모르고 있다면 mount 명령을 수행하면 알 수 있다. ext2 파일시스템은 Remy Card와 Wayne Davison에 의해 고안되었고, Remy Card, Theodore Ts‘o, Stephen Tweedie에 의해 개량되었다. ext2 파일시스템은 위에서도 언급했듯이 가장 많은 리눅서들이 사용하고 있는 파일시스템이다. ext2는 전통적인 유닉스 파일시스템이 가진 대부분의 특성들을 가지고 있고 블럭, 아이노드(inodes), 디렉토리의 개념을 가지고 있다. 즉, ext2는 할당할 수 있는 최소의 단위로 블럭을 사용하고, 연속된 블럭의 집합을 블럭 그룹이라 한다. 또한, 파일시스템 내의 파일이나 디렉토리를 이이노드라 한다. Ext2 파일시스템에서 주축이 되는 것은 블럭과 아이노드다.
# dumpe2fs /dev/sda1
Filesystem volume name: /
Last mounted on: <not available>
Filesystem UUID: 82920799-881f-4e53-b2d9-eb8917e5e6e3
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 4723520
Block count: 4719085
Reserved block count: 235954
Free blocks: 3049401
Free inodes: 4462080
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1023
Blocks per group: 32760
Fragments per group: 32760
Inodes per group: 32576
Inode blocks per group: 1018
Filesystem created: Tue Jan 26 06:50:43 2010
Last mount time: Wed Feb 10 10:23:16 2010
Last write time: Wed Feb 10 10:23:16 2010
Mount count: 9
Maximum mount count: -1
Last checked: Tue Jan 26 06:50:43 2010
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
First orphan inode: 3096298
Default directory hash: tea
Directory Hash Seed: cd586031-f279-402d-b6d7-3a64e4835b3d
Journal backup: inode blocks
Journal size: 128M
Group 0: (Blocks 0-32759)
Primary superblock at 0, Group descriptors at 1-2
Reserved GDT blocks at 3-1025
Block bitmap at 1026 (+1026), Inode bitmap at 1027 (+1027)
Inode table at 1028-2045 (+1028)
0 free blocks, 32565 free inodes, 2 directories
Free blocks:
Free inodes: 12-32576
Group 1: (Blocks 32760-65519)
Backup superblock at 32760, Group descriptors at 32761-32762
Reserved GDT blocks at 32763-33785
Block bitmap at 33786 (+1026), Inode bitmap at 33787 (+1027)
Inode table at 33788-34805 (+1028)
12427 free blocks, 30551 free inodes, 105 directories
Free blocks: 37672-38900, 40005-40064, 40066-40070, 40080-40091, 40094-40115, 40128-40219, 40223-40243, 40267-40371, 40373-40947, 41123-42994, 43146-43211, 43505-43507, 43510-43515, 43523-45041, 45236-47088, 47547-49135, 49235-49237, 49239-49480, 49482-49493, 49495-49560, 49562-49643, 49646-49665, 49667-49680, 49682-49859, 49861-49917, 49919-49958, 49960-49986, 49988-50054, 50056-50418, 50420-50464, 50468-50513, 50515-50566, 50568-50673, 50675-50866, 50868-50905, 50907-50941, 50943-51089, 51091-51132, 51134-51148, 51151-51155, 51157-51164, 51166-51169, 51171-51173, 51175-51177, 51179-51182, 51733-51842, 51844-51850, 51852-51946, 51948-51959, 51961-51992, 51994-52046, 52048-52110, 52112-52328, 52330-52358, 52360-52370, 52372-52430, 52432-52456, 52458-52667, 52669-52683, 52685-52732, 52734-53229
Free inodes: 34602-65152
Group 2: (Blocks 65520-98279)
Block bitmap at 65520 (+0), Inode bitmap at 65521 (+1)
Inode table at 65522-66539 (+2)
4 free blocks, 22304 free inodes, 319 directories
Free blocks: 82695-82696, 96098, 97490
Free inodes: 65254, 65587-65588, 75428-97728
..... (중략) .....
Group 136: (Blocks 4455360-4488119)
Block bitmap at 4455360 (+0), Inode bitmap at 4455361 (+1)
Inode table at 4455362-4456379 (+2)
31692 free blocks, 32538 free inodes, 0 directories
Free blocks: 4456380-4469688, 4469737-4488119
Free inodes: 4430375-4462912
Group 137: (Blocks 4488120-4520879)
Block bitmap at 4488120 (+0), Inode bitmap at 4488121 (+1)
Inode table at 4488122-4489139 (+2)
30535 free blocks, 32494 free inodes, 0 directories
Free blocks: 4489140-4502448, 4503633-4503745, 4503766-4516777, 4516779-4520879
Free inodes: 4462983-4462986, 4462999-4495488
5
mkfs 명령어를 통한 파일 시스템 생성
mkfs 명령은 한 장치(보통 한 하드디스크 파티션)를 리눅스 파일 시스템으로 만드는데 사용된다. 장치이름은 /dev/hda1, /dev/sdb2 이런 식의 디스크 장치 이름이거나, /, /usr/, /home 같은 파일시스템을 위한 마운트 경로가 사용된다. 블럭인자는 그 파일 시스템을 위해 사용되는 블럭의 개수이다. 성공적으로 끝나면, 0, 실패하면, 1을 리턴한다. 실질적으로, mkfs 명령은 파일 시스템을 만드는데 각각 그 특정 파일 시스템을 만드는 명령을 사용한다.
(명령어 형식)
# mkfs -t ext3 /dev/sdb1 (-t : File System Type)
# mkfs.ext3 /dev/sdb1
# mkfs -t ext2 /dev/sdb1
# mkfs.ext2 /dev/sdb1
# mkfs.ext3 -m 10 /dev/sdb1 (-m : minfree)
# mkfs.ext3 -L mkfs /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
만들어질 파일 시스템의 형태를 지정
(정리) 디스크를 추가해서 작업하는 방법
(ㄱ) 디스크 인식
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
6
minfree(Minimum Free Space)
(1) minfree(Mininum Free Space)
최소 남은 공간(Mininum Free Space)는 전체 공간의 퍼센트로 할당된다. 이 공간은 파일시스템이 만들어질 당시에 예약되서 생성된다. 기본 예약 값은 ((64 MB / 파티션 크기) * 100) 이다. 이 값은 0%에서 50% 사이 값이 할당이 되고, 근사값으로 결정이 된다.
최소 남은 공간은 파일시스템이 Full 되었을 때 파일시스템을 접근 할 수 있는 최소로 공간으로 남겨져 있어야 하기 때문에 중요하다. 파일시스템이 Full 되면, root 사용자만 사용할 수 있는 공간으로 예약되어진 남은 공간이다.
Minfree 공간은 하나의 파티션에 0 ~ 50% 사이 값으로 정의된다. Minfree 공간은 파티션이 풀(Full)난 경우 root 사용자가 사용하기 위한 공간으로 사용된다. 일반사용자는 이 공간을 사용할 수 없다. 파일시스템에서 Minfree 공간은 0(zero)일수 없다. 최소 minfree는 0%이다.
① 파일 시스템 생성시 minfree 공간 할당
(minfree 5%) # mkfs.ext3 /dev/sdb1
(minfree 1%) # mkfs.ext3 -m 1 /dev/sdb1
(minfree 5%) # tune2fs -m 5 /dev/sdb1
7
파일 시스템 점검 fsck (File system check)
파일시스템이 전원이상이나 커널에서 동작하는 프로그램의 이상, 하드웨어적인 이상, 비정상적인 시스템 shutdown이 발생하여 데미지(Damaged)를 입게 되면, 파일시스템을 fsck 명령어를 통해 파일시스템의 무결성을 점검하게 된다. fsck 명령어와 비슷한 명령어로는 fsck.ext3, e2fsck가 있다. 이들 모두는 파일시스템을 점검하고, 손상된 파일시스템을 복구하는 명령어이다.
(명령어 형식)
# fsck /dev/sda1
# fsck -y /dev/sd1
# 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
수퍼 블럭을 이용한 복구
8
파일 시스템 사용량 측정 (df, du)
(1) df (disk free space) - 파티션 단위의 사용량 점검
df 명령어는 남은 디스크 블럭과 남은 파일의 수를 출력하는 명령어이다. df 명령어에 -k, -h 옵션 등을 사용하면 출력 결과는 파일시스템 크기, 사용된 공간, 남은 공간, 전체에서 사용중인 %사용량, 마운트 포인트등을 출력한다.
(명령어 형식)
# df
# df -k (-k : KB)
# df -m (-m : MB)
# df -h (-h : human)
# df -k /data1
# df -k /data1 /home
# df -T (# alias df='df -T -h')
(명령어 옵션)
옵션
설명
-k
여유 용량을 킬로바이트(kilobyte) 단위로 출력
-h
여유 용량을 사용자가 보기 쉽게 킬로바이트(kilobyte)와 메가바이트(megabyte) 단위등으로 출력
-F
파일 시스템의 타입을 지정하여 지정한 파일시스템 영역만을 출력
-i
블록 여유 용량 대신 inode 사용 정보로 출력
-a
디플로이로 생략된 0 블록 크기의 파일 시스템도 보여줌
-t
fstype 값을 가진 파일 시스템에 대한 디스크 정보
-T
파일 시스템의 종류와 함께 디스크의 정보를 보여줌
(2) du (disk usage) - 디렉토리 단위의 사용량 점검
du 명령어는 디스크와 파일의 사용량을 보여준다. du 명령어에 -s, -a, -k, -h 옵션 등을 사용하면 출력 결과는 디렉토리와 파일의 크기, 사용된 공간, 남은 공간, 전체에서 사용중인 사용량을 출력한다.
(명령어 형식)
# du /etc
# du -k /etc /* -k : KBytes */
# du -m /etc /* -m : MBytes */
# du -h /etc /* -h : human */
# du –ak /etc
# du –am /etc
# du -ah /etc
# du –sk /etc /* -s : sum */
# du –sm /etc
# du -sh /etc
(명령어 옵션)
옵션
설명
-s
해당 경로의 디스크 용량 총 합계만 출력
-a
해당 경로에 대한 사용한 디스크 용량 표시
-k
용량 표시를 킬로바이트(kilobyte) 단위로 표시
-m
용량 표시를 메가바이트(megabyte) 단위로 표시
-h
여유 용량을 사용자가 보기 쉽게 킬로바이트(kilobyte)와 메가바이트(megabyte) 단위등으로 출력
'linux > centOS' 카테고리의 다른 글
LVM 생성 및 관리 (0) 2018.06.22 마운트 관리 (0) 2018.06.21 장치 인식과 파티션 작업 (0) 2018.06.19 디렉토리 관리 (0) 2018.06.18 원격 접속과 파일 전송 (0) 2018.06.18