Download presentation
Presentation is loading. Please wait.
1
파일 시스템과 스왑영역 coearth, george
2
파일 시스템이란? 파일 시스템은 데이터를 어떻게 저장되고 읽는지 관리한다
파일 시스템이 없으면 저장 장소에 정보가 저장되어 있어도 각자 어디가 시작이고 끝인지 알 수 없다. OS 별로 지원하는 파일 시스템의 종류가 다르다. 플로피디스크, CD-ROM, 하드 드라이브와 같이 random access를 지원하는 저장 매체에 파일 시스템이 필요하다
3
파일 시스템의 동작원리 블록: - 파일 시스템에서 데이터를 저장하는 최소 단위 섹터:
- 파일시스템에 따라 블록 크기를 조절할 수 있음 - 일반적으로 데이터의 크기가 블록의 정수배가 아니므로 공간이 낭비되는 경우가 생길 수 있음 섹터: - 하드디스크에서 데이터를 저장하는 최소 단위 - 일반적으로 512 byte이나 최근에 나온 하드디스크의 섹터 크기는 4 kilobyte (4096 byte, advanced format라고도 불림)임.
4
하드디스크 섹터 크기 확인 /dev/sda 하드디스크의 섹터 크기를 확인하려면
cat /sys/class/block/sda/queue/physical_block_size cat /sys/class/block/sda/queue/logical_block_size 실습 서버에서는 sda 대신 xvda1 쓰면 됨
5
파일 시스템의 동작원리 파일 크기와 디스크 할당 크기가 다른 이유
6
파일 시스템의 동작 원리 파일 시스템에는 크게 inode block과 data block이 있다.
Inode(Index node의 약자)는 파일시스템에 있는 디렉토리나 폴더를 나타내기 위한 데이터 구조이다 각각의 inode은 파일의 속성(metadata)과 data block 위치 등을 저장하고 있다. Metadata는 파일시스템마다 다르지만 파일의 주인, 퍼미션, 만든 시간, 접근 시간 등의 내용을 포함함.
7
파일 시스템의 동작 원리
8
파일 시스템의 종류 리눅스: Btrfs, ext2, ext3, ext4, resierfs, xfs
윈도우: ntfs, fat16, fat32 맥: hfs+
9
저널링 파일 시스템 저널링 파일 시스템이란 파일 시스템에 가해진 변경 사항들을 기록해 두는 기술로써 파일 시스템의 복구를 쉽게 만들어줌. 앞에서 설명한 파일 시스템 중 ext2, fat16/32 만 저널링 파일 시스템이 아님 종류, 동작원리는 다양함. 파일 시스템 비교해보고 싶으면 링크 참고
10
리눅스에서 주로 쓰이는 파일 시스템 종류 Ext3 Ext2와의 호환성을 최대한 유지하면서 저널링 기능을 추가한 파일시스템
지원하는 저널링의 종류: Journal: 파일과 메타데이터가 저널에 먼저 쓰인 다음에 주 파일시스템에 쓰인다. 가장 신뢰할만한 방식이지만 데이터가 두 번 쓰이기 때문에 속도가 느릴 수 있다. Ordered(기본값): 메타데이터만 저널에 쓰인다. 파일은 쓴 후에 저널에 반영하기 때문에 파일 쓰는 도중에 오류가 나면 확인이 가능함 Writeback: 메타데이만 저널에 쓰인다. 저널에 쓰기 전 또는 후에 파일 데이터가 쓰이기 때문에 신뢰성이 가장 떨어질 수 있음
11
리눅스에서 주로 쓰이는 파일 시스템 종류 Ext4 많은 배포판의 기본 파일시스템
Extents와 할당 지연와 같은 기능이 추가됨 파일을 파일 시스템에 쓸 때 최대한 할당을 지연하므로 파편화를 줄이고 성능을 향상시킬 수 있음 저널에 체크섬을 추가해 성능과 안정성을 개선했음
12
Extents란 전통적인 파일시스템의 경우 Inode block에서 data block을 가리키는 포인터의 숫자는 정해져 있다. 그래서 data block의 크기가 커지만 inode block은 indirect block을 만들어서 포인터를 늘리는 방식으로 대응한다. 큰 파일은 block의 개수가 매우 많고 매핑 또한 많아지게 된다. 매핑이 많으면 성능이 떨어진다. 연속적인 다수의 블락인 Extents라고 한다. 데이터가 다음 n블락에 연속적으로 있음을 표시되어있기 때문에 쉽게 많은 data block을 빠르게 읽고 쓸 수 있다.
13
리눅스에서 주로 쓰이는 파일 시스템 종류 XFS 실리콘 그래픽스에서 만든 고성능 64비트 저널링 파일시스템
디스크를 쓰기보다는 메모리상에 많은 데이터를 캐시해서 전반적으로 좋은 퍼포먼스를 보인다. Allocation groups를 이용해서 병렬적인 입출력 속도가 빠르다
14
파티션 하드 디스크를 나누어 놓은 구획. 하나의 하드 디스크를 마치 논리적으로 여러 개의 저장소처럼 취급
한 파티션의 파일 시스템에 손상이 가더라도 다른 파티션에 영향이 안 가기 때문에 안정성을 높일 수 있음 (물론 하드디스크가 고장 나면 다른 방도가 없음 ) 필요한 파티션만 포맷할 수 있기 때문에 업글할 때 편리함
15
파티션 종류 MBR 경우 최대 4개의 파티션만 만들 수 있음
Primary partition과 extended partition이 존재 Extended partition은 여러 개의 논리 파티션을 저장하는 그릇이라고 비유할 수 있음 4개의 파티션을 만들면 주 파티션으로도 충분하지만 4개 이상의 파티션을 만들려면 하나의 확장파티션을 만들고 그 안에 논리 파티션을 여러 개 만들 수 있다. MBR의 제약으로 2TB이상의 파티션은 만들지 못함
16
MBR and GPT MBR GPT 1980년대에 나와서 호환성이 좋음 파티션의 개수 제한이 4개임 파티션 크기 제한이 2TB
비교적 최근에 나온 파티션 테이블 레이아웃 파티션 개수 제한이 없고 모든 파티션이 주 파티션 2TB이상의 파티션을 지원 일부 구형 컴퓨터/운영체제에서는 부팅 불가능
17
리눅스에서 파일 시스템 관리 하드디스크를 새로 구입해서 설치하거나 운영체제를 다시 설치할 때 필요한 절차들
이미 되어 있는 단계는 건너뛰어도 된다 파티션 설정(fdisk, parted) 파일 시스템 만들기(mkfs) 장치 마운트하기(mount) 파일 시스템 점검하기(fsck)
18
리눅스 파티셔닝 툴 대표적으로 fdisk, parted가 있음. 리눅스 시스템의 장치 파일들은 /dev에서 볼 수 있음
IDE 형식의 하드디스크는 /dev/hda, /dev/hdb, /dev/hdc 와 같이 지정됨 Sata, schi 형식의 하드디스크는 /dev/sda, /dev/sdb, /dev/sdc 와 같이 지정됨
19
fdisk 사용법 fdisk [디스크 장치]
대화형으로 이루어지고 w명령어를 입력하기 전에 디스크에 변경사항이 저장되지 않으므로 쉽게 할 수 있다. 대표적인 명령들: p 파티션 테이블 출력 n 새로운 파티션 만들기 d 파티션 지우기 w 파티션 테이블을 저장하고 종료 q 파티션 테이블을 저장하지 않고 종료
20
fdisk 사용법 옵션들
21
fdisk 사용법 명령 목록
22
파일 시스템 만들기(mkfs) 각각의 파일 시스템들은 자신과 관련된 고유의 mkfs명칭을 가지고 있다.
Ext3 파일시스템을 만드는 명령어는 mkfs.ext3 이고 mkfs 자체는 이런 명령어를 각각 실행시켜주는 녀석에 불과함
23
파일 시스템 만들기(mkfs) 사용법: mkfs –t [파일 시스템 타입][파티션 장치]
만약 파일 시스템 타입을 지정을 안해주면 기본값은 ext2임 mkfs –c –t [파일 시스템 타입][파티션 장치] -c 옵션을 더하면 파일시스템을 만들기 전에 배드섹터 검사를 한다. 윈도우에서 빠른 포맷이 아닌 일반 포맷과 같다고 보면 된다.
24
파일 시스템 마운트하기 유닉스 시스템에서 모든 접근 가능한 파일은 하나의 트리로 정리가 되어있다. “/”가 루트가 되고 다른 파일들은 루트의 자식이 된다. 마운트란 파일시스템을 이 커다란 파일 트리에 장착을 하는 작업이다. 즉 마운트란 파일 시스템을 사용하기 위해 파일 시스템을 디렉터리와 연결시키는 과정을 의미한다.
25
수동으로 마운트하기 mount 현재 마운트돼있는 정보를 출력
26
mount –t [파일 시스템 타입] [디바이스][디렉터리]
디렉터리는 마운트 하는 파티션이 어떤 디렉터리에 대응할지 나타냄 디바이스는 /dev/sda1 와 같은 파티션을 의미함 mount –a /etc/fstab 파일에 “auto” 옵션을 가지고 있는 모든 파일 시스템들을 마운트. umount [디렉터리] 또는 [디바이스] 마운트되어있는 파일시스템을 언마운트시킴.
27
자동으로 파일 시스템 마운트하기 /etc/fstab 설정 파일은 하드 디스크 파티션과 다른 블락 디바이스, 원격 파일 시스템을 마운트 설정 파일의 각 줄은 다음과 같은 필드가 있다 <file system> <dir> <type> <options> <dump> <pass>
28
/etc/fstab 예시
29
<file system> <dir> <type> <dump> <pass>
마운트하고 싶은 장치 E.g) /dev/sda1 <dir> 마운트 포인트이며 해당 파티션이 대응하는 디렉터리 <type> 파일 시스템 타입을 의미함 E.g) ext4, xfs, nfs 등 <dump> 덤프 유틸리티가 백업을 할지 결정하는데 필요한 값. 대부분의 경우 필요없으므로 0으로 하면 됨 <pass> Fsck 가 파일시스템을 체크할지 결정하는데 필요한 값 0, 1, 2값이 들어갈 수 있고 루트 파일 시스템은 1이다 Swap파티션을 fsck가 필요 없으므로 0 을 넣어야함 나머지 일반 파티션의 경우 2를 넣으면 됨
30
파일 시스템 점검 및 복구(fsck) fsck은 파일 시스템이 정상 상태인지 확인하고 수리하는데 사용되는 도구이다
mkfs와 마찬가지로 파일 시스템마다 개별적인 fsck가 있고 fsck은 해당하는 복구 프로그램을 불러주는 역할에 불구 fsck를 쓰기 전에는 파일 시스템을 언마운트한 이후에 사용해야함
31
Fsck 사용하기
32
스왑 공간 스왑 공간이란? 보조 저장 장치를 이용해 RAM의 부족을 해결하는 용도로 쓰임
윈도우에서는 가상 메모리 또는 페이징 파일이라고도 불림 메모리 사용 상황에 맞춰 RAM과 스왑 공간 사이에서 데이터를 교환하는 방식으로 작동함 예전에는 RAM 용량의 두 배를 스왑 공간으로 할당했음
33
스왑 공간 할당 방법 파일 시스템 중 하나에 스왑 파일을 만드는 방법
시스템이 켜져 있는 도중에 메모리가 부족하면 스왑 파일을 만들고 스왑 공간을 추가할 수 있는 장점이 있음 스왑 전용 파티션을 만드는 방법 디스크상의 블록이 연속적이기 때문에 좀 더 좋은 성능을 기대할 수 있음
34
스왑 공간 관리 free 시스템 RAM용량과 SWAP용량, 사용량 등을 볼 수 있음
35
스왑 파티션 만들기 하드디스크의 두 번째 파티션을 스왑 파티션으로 쓴다고 하면: parted /dev/hda
mkpart [파티션 종류] linux-swap [시작] [끝] 파티션 종류: primary, extended, logical 시작, 끝: 숫자 + “MiB”, “KiB”, “Gib”, “s”(섹터)
36
mkswap /dev/hda2 swapon /dev/hda2 부팅시간에 스왑이 활성화되도록 하려면:
파티션을 포맷하고 스왑 공간으로 만들어줌 -c 옵션을 붙이면 배드섹터 확인함 swapon /dev/hda2 바로 스왑 파티션을 활성화시킬 수 있다 부팅시간에 스왑이 활성화되도록 하려면: /etc/fstab 파일 수정 /dev/hda2 swap swap defaults 0 0 추가 만약 ssd에 스왑공간을 만들었으면 defaults, discard 옵션도 추가하기
37
스왑 파일 만들기 dd if=/dev/zero of=[스왑 파일 만들 위치] bs=1024 count=[스왑 파일 크기(kilobytes)] 만약 512MB의 스왑 공간을 만들려면 1024 * 512 = 의 값을 넣으면 됨 mkswap [스왑 파일 위치] swapon [스왑 파일 위치] 부팅시 적용시키려면 /etc/fstab 에 다음과 같이 적으면 된다 [스왑 파일 위치] swap swap defaults 0 0
38
DD란? 파일을 복사하거나 변환하는데 사용함 디바이스(/dev/sda)나 특별한 디바이스 파일(/dev/zero)도 사용이 가능 하드디스크 내용을 통째로 백업하는데 사용할 수 있음. (개별 파티션도 가능) E.g) sda2파티션을 sdb2파티션에 복사하고 싶으면 dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=noerror DD 중요 옵션: bs=[크기]: 한번에 [크기]만큼 쓰거나 읽음 count=[N]: [N]번에 block을 복사함 if=[파일]: [파일]로부터 읽어옴(입력) of=[파일]: [파일]에 씀(출력) conv=noerror: 파일을 복사시 배드섹터가 있어도 계속 실행
39
스왑 공간 끄기 swapoff [파티션 또는 파일 이름] 만약 /etc/fstab 에도 적었으면 지워야함
40
직접 실습해봅시다 256MB에 해당하는 빈 스왑 파일 dd로 만들기
해당 파일이 루트계정만 읽고 쓸 수 있도록 권한 바꾸기(600) mkswap을 이용해서 스왑공간 만들기 swapon을 이용해서 스왑공간 활성화 free 또는 /proc/swaps을 확인해서 스왑이 적용됐는지 확인하기 swapon –s 을 통해서도 확인해보기
41
출처 Andromeda pdf
Similar presentations