일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 웹해킹
- 정보처리기사 실기
- System
- Spring
- Operating System
- hacking
- Spring MVC
- SQL
- Spring Framework
- stack overflow
- webhacking
- LOB
- system hacking
- 해킹
- OS
- webhacking.kr
- 네트워크
- 워게임
- Shell code
- 정보보안기사 실기
- Pwnable.kr
- 정보보안기사
- BOF
- 운영체제
- wargame
- PWN
- Lord of BOF
- Buffer Overflow
- Payload
- pwnable
- Today
- Total
DongDD's IT
File System - Allocation method, Efficiency and Performance, Log-structured file system, NFS 본문
File System - Allocation method, Efficiency and Performance, Log-structured file system, NFS
DongDD 2017. 11. 23. 16:39File System
Allocation method
Definition : Disk block으로 이루어진 File들을 Allocation하기 위한 방법
1) Contigous allocation
- 각각의 File을 disk에 연속적인 block으로 할당하는 방법이다.
- 장점
① Simple : 시작 위치부터 File의 크기만큼의 Block만 사용하면 된다.
② File을 읽는데 Disk Head의 이동이 필요하지 않다.
- 단점
① 공간이 낭비될 수 있다.(Externel fragmentation)
② File크기가 늘어날 수 없다.(다른 File의 block을 침범할 수 있기 때문에)
다음과 같이 3개의 파일이 있을 때 시작 위치와 길이를 가지고 연속적으로 disk에 할당한다.
만약 File 3의 길이가 2만큼 늘어난다면 10번에 할당된 File 2를 침범하기 때문에 File 크기의 확장이 불가능하다. 이런 단점을 보완하기 위해 Extent-based allocation이 고안되었다.
- Extent-based allocation
-> Disk의 연속적인 Block을 의미하는 Extent개념을 도입하여 하나의 File이 Extent를 하나 이상 가지게 하며 단점을 보완한다.
2) Linked allocation
- Contigous allocation에서 생기는 Externel fragmentation을 극복하기 위해 고안된 방법이다.
- 현재의 Disk block에 다음 Disk block을 기록하는 방법이다.
- 단점
① Block에 직접 접근할 수 없다. File의 시작 block부터 차례대로 탐색하며 해당 Block을 찾아야 한다.
② Block에 다음 Block에 대한 Pointer를 저장해야하기 때문에 overhead가 발생한다.
③ 한 Block이 손상될 경우 다음 Block으로 가는 Pointer를 잃어버리기 때문에 신뢰성에 문제가 생길 수 있다.
- 이 할당 방법은 FAT(File Allocation Table)에서 사용한다.
다음과 같이 FIle의 시작 block과 끝 block을 기록해두고 File의 block이 다음 block을 가리키는 형태로 되어있다. 마지막 block인 7번 block은 가리키는 것이 없기 때문에 끝을 나타낸다.
3) Indexed allocation
- 각 FIle들은 Index block을 하나 가진다.
- Index block에는 해당 File의 block의 모든 index를 저장하고 있다.
- 단점
① block의 size가 제한되어 있기 때문에 index로 저장하지 못하는 경우가 생길 수 있다. block의 size만큼 밖에 index를 저장하지 못해 file의 size가 제한된다.
② 파일 크기가 작더라도 동일한 index block을 사용하기 때문에 공간 낭비가 생길 수 있다.
-> 단점 해결방안
① Linked scheme : 파일 크기가 작을 때 사용, 하나의 index block 사용, 1024개의 index entry로 4MB까지의 파일 허용
② Multilevel index : index block을 여러개의 Level로 나누어 File의 크기 제한을 늘린다. index block이 다른 index block을 가리키는 방법을 사용한다. 큰 크기의 파일을 저장할 수 있지만 index block을 두번 참조해야한다는 단점이 있다.
③ Combined scheme : Direct block과 Indirect block을 나누어 사용하는 방법이다. indirect block은 multilevel 방식을 사용하고 File의 크기에 따라 direct block을 참조할지 indirect block을 참조할지 결정한다.
다음과 같이 하나의 File이 index block을 가지고 index block에는 해당 File의 block들의 idnex가 저장되어있다.
Efficiency and Performance
Performance Enhancement : Disk의 접근을 줄여 performance를 늘린다.
1) Disk cache
- 자주 사용되는 block을 main memory에 올려 disk 접근을 줄인다.
2) Free-behind and read-ahead
- 앞으로 읽을 block을 미리 올리고, 사용한 block은 바로 free해준다.
3) Page cache, Buffer cache, Unified cache
- Page cache : Page의 일부를 main memory에 올림
- Buffer cache : File system을 통한 I/O연산을 main memory에 올림
- Unified cache : Page cache와 Buffer cache가 통합된 형태로 Buffer cache도 page단위로 관리한다.
Log-structured file system
- Transaction이라 불리는 File system을 update하는 동작이 일어날 때마다 Log라는 공간에 기록한다.
- 모든 transacition은 Log에 기록된다.
- log에 쓰여진 후에 commit되기 전까지 실제 file system에는 적용되지 않는다. commit되면 log에 쓰여진 transaction을 모두 지운다.
- Transaction은 File system과 비동기적으로 log에 쓰여진다.
- Log에 남겨진 transaction을 보고 file system에 error가 생긴 경우 복구 가능하다.
NFS(Network File System)
Definition : Network를 통해 떨어진 File을 접근할 수 있게 해주는 software system이다.
Features
1) Remote directory가 local file system directory에 mount 된다.
2) Remote directory에 접근하기 위해 host name과 IP등 정보가 명세되어야 한다.
3) Host가 특정 directory를 export하면 client는 remote directory에 mount한다.