- 
          
          파일시스템Computer Science/File System 2023. 8. 13. 17:51파일시스템 : 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘파일시스템을 사용하는 이유 ● 0과 1을 비트로 고나리하기에는 오버헤드(시간, 메모리, 자원)이 너무 큼 ● 블록 단위로 관리하기로함(4KB) ● 블록마다 고유번호를 부여해서 관리 -> 사용자가 블록 고유번호를 관리하기 어려움 ● 추상적(논리적)객체가 필요 -> 파일 ● 각 파일을 블록 단위로 관리하기 위함 파일 저장방법 -> 가능한 연속적인 공간에 파일을 저장하는 것이 좋음 But 외부단편화, 파일사이즈 변경 문제로 불연속 적인 공간에 파일 저장기능이 요구됨 -> 해결방안 제시 1) 블록체인 : 블록을 링크드리스트로 연결 (맨 처음 블록부터 주소를 따라가면 연결 ) 2) 인덱스 블록 기법 : 각 블록에 대한 위치정보를 기록해서 한번에 끝 블록을 찾아갈 수 있도록 함 (블록 위치정보를 저장) ※외부단편화  외부단편화 설명 위와 같이 남아있는 메모리 공간은 50MB+50MB =100MB로 요청한 메모리 공간 80MB보다 크지만, 남아있는 공간이 연속적이지 않아 Process C를 할당할 수가 없게 된다. 따라서 남아있는 메모리 공간이 낭비되게 되는 문제가 발생한다. 참조 : https://code-lab1.tistory.com/54 파일시스템 예시 ● Linux : ext2, ext3, ext4 ● Windows : FAT, FAT32, NTFS 파일시스템 1) inode : UNIX 스타일의 파일 시스템 크게 3가지 구조 ● Super Block : 파일 시스템 정보 및 파티션 정보 (리눅스에서 df) ● inode Block : 파일상세정보 (PCB) ● Data Block : 실제데이터 저장 모든 파일이나 디렉토리는 반드시 inode를 하나씩 가지게 됨 -> 파일 or 디렉토리를 inode 번호랑 매칭시켜 인식 파일처리방법 1) 파일 생성 -> inode번호 부여 2) 생성된 inode block에 메타데이터(파일권한, 소유자정보, 파일사이즈, 생성기간, 데이터저장위치) 를 저장 3) inode block의 메타데이터 정보를 기반으로 파일 접근  각 block group 마다 다음과 같은 파일 시스템 구조를 가진다(Inode table = inode block) ● Super Block -> 파일 시스템의 전체 크기, 마운트 정보, Data Block의 개수, 파일 시스템과 같은 주요 정보를 담음 ● Group descriptors(GDT) -> 해당 파일 시스템 내에 모든 Block Group 들의 정보를 기록 -> Group 내의 Free Block의 개수, inode의 개수 및 디렉토리 개수 저장 ● inode table -> inode block들의 모임 -> inode block 안에 inode 들이 모여있음 -> 접근 권한, 소유주, inode번호 등, 파일에 대한 정보를 저장하고 있는 부분 -> 파일 하나당 하나의 inode가 사용됨 ● Data blocks Bitmap -> Data block 내에서 빈공간을 관리하기위해 비트맵을 사용 -> Block의 할당 상태를 나타내며, Block을 할당하거나 해제할때 사용 ● inode Bitmap -> inode table 내에서 빈공간을 관리하기위해 비트맵을 사용 -> inode를 할당하거나 해제할때 사용 ● Data blocks -> 실제 데이터 내용이 저장되는 디스크 영역 inode 구조  ● mode  i_mode File mode -> type(4bit) : directory, file, link를 결정 -> u (setuid) : 파일이 수행될 때 파일을 생성한 사용자의 권한을 동작할 수 있게 함 -> g (setgid) : 파일이 수행될 때 파일 소유 그룹의 멤버로의 권한을 동작할 수 있게 함 -> s (sticky bit) : 해당 bit 설정된 디렉토리에서는 누그든 파일을 저장할 수 있으나, 파일 삭제는 해당 파일 소유자만 가능하게 함 -> 하위 9bit : r(read), w(write), x(excute) ※ link file 하드링크 : 같은 inode를 가르킴 심볼릭 링크 : 새로운 inode를 할당하고 새로운 inode가 data block을 가르킴 ● Owner Info (i_oid, i_gid) -> 파일을 생성한 소유자의 user id -> 파일을 생성한 소유자의 group id ● Size -> 파일의 사이즈를 표시 ● Timestamps (i_atime, i_ctime, i_mtime) -> 파일 접근시간, 생성시간, 수정시간 ● Direct Blocks -> 실제 데이터를 담고 있는 하나의 크기가 4kb인 Block을 가르키는 포인터 ● Indirect Blocks (Single, Double, Triple) -> Data Block을 가르키는 포인터를 가르키는 포인터 테이블 2) ext 계열 파일 시스템 (extended file system) ● ext2 : 리눅스에서 적용하는 시스템 inode구조를 따르고 있다./ ● ext3 : ext2구조에서 저널링 기능이 추가되었다. ● ext4 : Extent Tree를 사용하여 인접한 물리적 블록의 묶음 및 대용량 파일 접근 성능을 향상시키도 단편화를 줄임  Extend Tree 구조  ext 비교 ※저널링(Journaling) 파일 수정 중 시스템 충돌이나 전원 문제가 발생하면 여러문제가 발생할 수 있다. ex) inode 번호를 할당 받았으나 데이터를 할당 받지 못하는경우 -> Data Block을 사용하지 못해 스토리지 누수가 발생 inode나 비트맵의 수정이 있으면 그 내용을 로그로 남긴다. 이렇게 남겨진 로그를 추적하여 변경사항을 반영한다. 로그를 작성중 크래시가 발생하는 경우 -> 실제 파일에 반영되지 않아 파일의 일관성이 깨지지 않음 실제 파일에 반영하는 중에 크래시가 발생하는 경우 -> 저널에 기록된 로그를 기반으로 다시 반영 3가지 저널링 모드 - Journal : 모든 데이터는 파일 시스템에 쓰여지기전에 Journal에 커밋되고, 나중에 실제 파일 시스템에 복사됨, 속도는 라지만 높은 안정성 보장 - Ordered (ext4 default mode) : 데이터는 저널링 없이 기록하고 , 메타 데이터만 journal에 기록, 속도 측면에서 성능이 좋아지나 journal에 기록되어지지 않았다면 데이터 손실 가능성이 있다. - Writeback - 데이터를 먼저 저너링하여 기록 후 메타데이터를 journal에 기록한다. 성능향상을 기대할 수 있으나 안정성이 떨어짐 3) FAT (File Allocation Table) - 디지털 카메라의 저장 장치, USB 메모리등에서 사용 - FAT12, FAT16, VFAT, FAT32 등의 구조가 있다. FAT32 구조 - FAT32 는 크게 예약영역, FAT 영역, DATA영역 3가지로 나눌 수 있다.  FAT32 구조 ● 예약된 영역 (Reserved Area)  Resesrved Area 구조 - BR(Boot Record) : window를 부팅시키기 위한 기계어 코드와 FAT 파일 시스템의 여러 설정 ㄱ밧 저장 - FSINFO(File System Information) : 파일시스템의 정보를 저장 - Boot Strap : 부팅시 동작해야할 명령어 코드가 들어있는 부분 - Reserved Sector : 예약된 섹터 공간 - Boot Record Backup : BR의 정보를 백업하는 섹터 - FSINFO Backup : FSINFO의 정보를 백업하는 섹터 ● FAT 영역  FAT영역 구조 - FAT1 -> 파일이나 디렉토리 할당 유무구 기록되는 부분 -> 클러스터 단위로 기록되며 1개의 클러스터에 대한 사용 유무를 기록하기 위해 4byte 필요 - FAT2 -> FAT1 영역의 백업 영역 -> FAT1 구조와 동일 ● DATA 영역 - 실제 데이터인 파일이나 디렉토리가 저장되어 있는 영역 4) NTFS - Window NT 부터 사용되기 시작한 파일 시스템 - 모든 데이터를 파일 형태로 관리 - VBR(Volume Boot Record), MFT(Master File Table), Data 영역으로 나뉘어진다.  NTFS 파일 시스템 구조 - VBR 영역 
 -> Boot Sector 와 추가적인 Boot Code가 저장되는 영역- MFT -> 파일의 위치, 시간정보, 크기, 파일 ,이름등의 속성 정보를 보관 - Data 영역 'Computer Science > File System' 카테고리의 다른 글하드디스크 / cluster, block (0) 2023.08.28