23.12.18 최초 작성
application
system call
open(), read(), write())file system
file로 추상화device driver
device를 디스크 블록(disk block)의 집합으로 추상화device
platter, track, sector, cylinder, spindle로 구성 됨head, arm을 통해 특정 구역의 데이터 읽음seek time, rotational latency, transmission time등의 성능 지표가 있음file system은 data/metadata로 이루어져 있음Super block
inode
write, read권한 등) 및 디스크 블록의 위치 등bit map
indirect block이라는 포인터가 존재하며 몇 단계에 걸쳐 디스크 블록을 가르키는지에 따라 double, triple등으로 나눔indirect block이 가리킬 수 있는 용량이 1024배 씩 증가/foo/bar, 12KB라 가정open()과정 : fd와 inode 연결
root의 inode를 읽고(read) data 읽음(read)foo의 inode를 읽고(read) data 읽음(read)bar의 data읽음(read)read()과정 :
bar의 inode정보 읽고(read) data읽음(read), 그리고 bar의 inode에 접근 시간을 수정 (write) close()를 fd 및 관련 자료구조 해제
open()과정 : bar을 위한 inode할당
root의 inode를 읽고 data 읽음(read)foo의 inode를 읽고(read) data 읽어(read) 파일이 없다는 사실 알게 됨inode bitmap을 읽고(read) bar에 대한 inode 할당 받아 정보 생성(write)foo의 data에 bar가 추가됨 알림(write)bar의 inode를 읽고(read) 접근 시간 갱신(write)foo의 inode에 새로운 정보 갱신(write)write()과정
bar의 inode정보 읽고(read) 디스크 블록 할당 위해 data bitmap을 읽어(read) bitmap 할당(write)bar의 data 기록(write), 그리고 bar의 inode에 접근 시간을 수정 (write) close()를 fd 및 관련 자료구조 해제
read(), write() 과정을 보면 디스크 I/O가 자주 발생해 성능 저하가 발생할 수 있음caching해 이를 방지할 수 있음write()과정에서 여러번의 write()과정을 통합하는 방법write()과정에서 bar의 inode정보 읽고(read) 마지막 write()과정에서 디스크 블록 할당 위해 data bitmap을 읽어(read) bitmap 할당(write)bar의 data 기록(write), 그리고 bar의 inode에 접근 시간을 수정 (write) sector로 크기는 512B 임LBA (Logical Block Address)라 하며 이를 디스크 블록이라고 함단위I/O time (ms) : I/O에 걸리는 단위 시간 (Seek Time + Rotational Delay + Transfer Time)I/O rate (MB/s) : I/O 시 데이터가 전송되는 양 (데이터 양 / I/O time)workloadrandom : 디스크 임의의 위치에서 작은 크기(4KB) I/O 요청sequential : 연속적인 큰 크기 I/O 요청sequential하게 참조하는 것이 더 빨라 고안된 파일 시스템inode와 bitmap같이 연속적으로 참조되는 데이터의 경우 같은 cylinder 구역에 저장하도록 함patition이라는 단위로 나누고 그 아래 superblock, boot block, cylinder groups으로 나눠짐 cylinder group : super block copy + inode map + bitmap + inode + data blocksequential하게 참조하고 확장성 향상을 위해 고안된 파일 시스템inode와 관련 data block을 인접한 cylinder에 할당 (block group)pre-allocation)을 통해 8개 연속된 블록 할당boot record + additional boot record data + superblock + block group record data + block bitmap + inode bitmap + inode table + data blocksGroup Size
Allcation
inode가 가장 적게 할당된 group에 할당 (load balancing)group에 할당 (locality)locality)