830 likes | 978 Views
Managing Filesystems , Swap Space, and Devices. Wheel Seminar #5 By noname. 파일 시스템 관리 스왑 영역 관리 장치 파일 관리. 파일 시스템이란 ?. 컴퓨터상에서 보관 , 접근 등이 용이하도록 파일들을 관리하는 조직 체계이다 운영체제별로 지원하는 파일 시스템의 종류가 다르다. 파일 시스템의 동작 원리. 파일 시스템에서 관리되는 파일 용량의 최소 단위는 블록이다
E N D
Managing Filesystems,Swap Space, and Devices Wheel Seminar #5 By noname
파일 시스템 관리 스왑 영역 관리 장치 파일 관리
파일 시스템이란? • 컴퓨터상에서 보관, 접근 등이 용이하도록 파일들을 관리하는 조직 체계이다 • 운영체제별로 지원하는 파일 시스템의 종류가 다르다
파일 시스템의 동작 원리 • 파일 시스템에서 관리되는 파일 용량의 최소 단위는 블록이다 • 블록은 1~64개(파일 시스템 종류에 따라 다름)의 섹터로 구성되고, 섹터의 용량도 512B에서 4KB까지 다양하다 • 일반적으로 섹터의 용량은 512B이고 블록의 용량은 4KB이다
파일 시스템의 동작 원리 • 파일 시스템에 inodeblock과 data block이 있는데, inode block에는 파일들이나 디렉토리들의 메타 데이터가, data block에는 내용이 들어있다 • 파일은 inode block에 해당 파일의 data block 위치, 접근 권한 정보, 소유자 정보 등을 저장하고 data block에는 실제 파일 내용을 저장한다
파일 시스템의 동작 원리 • 디렉토리 역시 inode block에는 해당 디렉토리의 data block 위치, 접근 권한 정보, 소유자 정보 등을 저장하며 data block에는 해당 디렉토리에 속하는 파일의 이름과 inode block의 위치 목록을 저장한다
파일 시스템의 동작 원리 • 일반적으로 inode block에서 data block을 가리키는 포인터의 숫자는 고정되어 있는데, 그렇다면 data block이 많이 필요한, 크기가 매우 큰 파일에 대해서는 어떻게 될까??
파일 시스템의 동작 원리 • 그 경우 inode block의 포인터들은 빈 data block을 가리키고 그 data block 안에 포인터들을 배치시켜서 파일의 data block들을 가리키게 할 수 있는데, 이를 single indirect라 한다 • data block의 포인터들이 다른 data block들을 가리키고, 거기서 가리켜진 data block들의 포인터들이 파일의 실제 data block들을 가리키면 이는 double indirect이다 • …triple indirect, quadruple indirect…
저널링이란? • 파일 시스템에 가해진 변경 사항들을 기록해 두는 기술로, 파일 시스템의 복구를 쉽게 만들어준다 • 저널링이 적용된 파일 시스템으로는 ext3, ext4, XFS, ResierFS등이 있다
저널링의 동작 원리 • 저널링을 위해 새로운 자료 구조인 저널이 이용된다 • 파일 시스템 드라이버는 파일의 메타 데이터를 변경하기 전에 해당 사항을 저널에 기록한다 • 파일 시스템이 마운트된 상태에서 정전 등의 사태가 발생하면 메타 데이터에 문제가 발생할 수 있다
저널링의 동작 원리 • 저널링을 이용하지 않는 파일 시스템에서는 fsck유틸리티가 모든 메타 데이터가 정상적인 정보를 가지고 있는지를 검사하여 오류를 수정해야 하고, 이는 많은 시간을 요하는 작업이 될 것이다 • 저널링을 이용한다면 최근의 변경 사항 기록을 통해 파일 시스템을 이전의 상태로 되돌릴 수 있어 빠르게 온전한 상태로의 복구가 가능하다
윈도우즈에서 쓰이는 파일 시스템의 종류 • FAT16/FAT32 • FAT는 File Allocation Table, 즉 파일의 위치 정보 등을 기록하기 위한 테이블을 말하는데 이것이 파일 시스템 자체를 가리키게 되었다 • FAT16은 단일 파티션의 최대 용량이 2GB로 저용량 장치에만 쓰일 수 있어 요즘에는 이동식 드라이브 외에는 거의 사용되지 않는다 • FAT32는 단일 파티션의 최대 용량이 8TB에 달하지만, 4GB 이상의 파일을 가질 수 없고 보안상의 결점이 많아 대신 NTFS를 쓰는 것이 일반화되었다
윈도우즈에서 쓰이는 파일 시스템의 종류 • NTFS • 기존의 FAT 시리즈에 비해 메타 데이터를 지원하고 성능을 개선하는 등 장점이 많다 • 윈도우즈NT 계열에서부터 사용되었다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • ext2 • ext3 • ext4 • XFS • ReiserFS • NFS • 요즘 가장 많이 쓰이는 것은 ext3와 ext4이다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • ext3 • ext2와의 호환성을 유지하여 쉽고 안전한 업그레이드가 가능하도록 하며, 저널링 방식이라는 장점을 가지고 있다 • JBD(Journaling Block Device layer)라고 하는 특수한 API를 사용하는데, 다른 일반적인 저널링 파일 시스템들과는 달리 data block뿐만 아니라 모든 종류의 block에 대해 저널을 구현한다 • 그러므로 메타 데이터 손상뿐만 아니라 데이터 손상에 대해서도 대처 가능하다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • 단, 모든 데이터에 대한 저널을 만들기 때문에 속도상 약간의 저하가 있을 수 있다 • ext3에서의 저널은 inode block에 저장되며하나의 파일이라 볼 수 있는데, 따라서 필요에 따라 파일 시스템에 저널을 추가할 수 있다 • JBD는 물리적 저널링(변경된 바이트 범위만을 저장하는 것이 아닌 변경된 전체 블록의 복사본을 저장하는 저널링) 방식이다 • 최근 ext3에 추가된 저널링 모드는 메타 데이터에 대해서만 저널링을 수행하되 그에 상응하는 특정 데이터 블록을 트래킹하여 속도 저하 문제를 해결하였다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • XFS • 저널링을 사용하는 64비트 파일 시스템이다 • 디스크를 쓰기보다는 메모리상에 많은 데이터를 캐시하여 전반적으로 좋은 퍼포먼스를 보이며, 특히 큰 파일을 주로 다루는 시스템에서 좋다 • 블록 디바이스를 8개 이상의 할당 그룹(allocation group)으로 나눠 각 할당 공간마다 inode와 data를 관리하여, 병렬적인 입출력이 가능하게 한다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • 따라서 하드웨어의 성능이 좋을 수록 XFS의 성능도 좋아지게 된다 • 변경 바이트 범위를 저장하는 논리적 저널링 방식을 사용하며, 데이터가 손실되는 경우가 있더라도 해당 data block을 완전히 지워 보안상의 허점을 제거한다 • 디스크가 활발히 작동하면 보다 짧은 주기로 보류중이던 메타 데이터를 디스크에 기록하여 메타 데이터 손실을 줄인다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • 할당 지연 • XFS만이 가지고 있는 특성이다 • 저장할 데이터가 생겼을 때에는 해당 데이터를 위해 공간은 남겨두지만, 어떠한 블록에 기록할지는 결정하지 않는다 • 그리고 디스크에 기록할 때가 오면공간을 지능적으로 할당할 수 있게 되는데, 예를 들어 새로운 데이터가 파일에 첨가되면 이를 인접한 지역에 저장할 수 있다 • 또한 금방 사라지는 임시 파일들에 대해서는 디스크 블록이 할당되지 않기 때문에 할당 해제 작업도 필요하지 않다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • ReiserFS • 논리적 저널링 파일 시스템이다 • B Tree(자료 구조의 하나)로 데이터를 관리하는데, 이는 그 자체로 좋은 퍼포먼스를 가지고 있으며 inode를 필요할 때마다 동적으로 할당할 수 있게 한다 • 또한 고정된 크기의 블록으로 저장 공간을 할당하지 않고 각각의 데이터를 “끝”을 지정하여 저장한다 • 위 장점들 덕분에 ReiserFS는 작은 파일들을 다루는 데에 훌륭한 성능을 보이며, 또 공간을 절약하는 효과도 있다
리눅스에서 주로 쓰이는 파일 시스템의 종류 • NFS • Network File System으로 뒤쪽의 휠 세미나에서 다뤄질 예정이다
파티션(partition)이란? • 하드디스크 등의 저장 장치를 구획해놓은 것이다 • 물리적 파티션(physical partition) • 실제 장치를 직접적으로 나눈 파티션으로, 3개까지 만들어질 수 있다 • 논리적 파티션(logical partition) • 남은 공간에 새로 마스터 영역을 만들어, 그 내에서 만들어져 관리되는 파티션들로 60개까지 만들어질 수 있다
파티션과 파일 시스템의 관계 • 하나의 파일 시스템은 하나의 파티션 위에 얹어져, 해당 파티션 내의 파일과 디렉토리를 관리하는 역할을 하게 된다
파티션이 가지는 장점 • 하드디스크(또는 다른 저장매체)가 여러 개의 파티션으로 나뉠 수 있음으로써 가지게 되는 장점으로는…
파티션이 가지는 장점 • 안정성 • 어떤 한 파티션의 파일 시스템에 손상이 가더라도, 다른 파티션의 파일 시스템에는 보통 문제가 없다 • 물론, 시스템 백업을 충실히 한다면 위와 같은 점은 큰 문제가 되지 않는다
파티션이 가지는 장점 • 업그레이드 용이 • 리눅스를 업그레이드할 때, /home 디렉토리에데이터를 보관시키고 나머지 파티션들에 대해서 업그레이드를 진행할 수 있다 • 저장 매체가 여러 개인 경우 • 저장 매체가 2개 이상인 경우, 이를 하나로 묶어 하나의 파일 시스템을 설정할 수도 있지만, 여러 개의 파일 시스템으로 각각 설정하는 것도 가능하다
현재 당신의 리눅스에서 쓰이고 있는 파일 시스템은? • /proc/filesystems파일을 열어보면 현재 리눅스커널에 어떠한 파일 시스템이 마운트되어있는지 그 종류들을 볼 수 있다 • $ cat /proc/filesystems
현재 당신의 리눅스에서 쓰이고 있는 파일 시스템은? • putty로 sparcs.org에 접속하여 스팍스 서버 커널에 로드된 파일 시스템 종류들을 보면…
현재 당신의 리눅스에서 쓰이고 있는 파일 시스템은?
현재 당신의 리눅스에서 쓰이고 있는 파일 시스템은? • 파일 시스템 이름들 앞에 붙어있는(안붙은 것도 있음) “nodev”는 그 파일 시스템 장치(파일 시스템은 장치로 관리됨)가 실제 장치를 필요로 하지 않는다는 것을 의미한다
파일 시스템 관리 • 파티션 설정(fdisk) • 파일 시스템 만들기(mkfs) • 장치 마운트/언마운트 하기(mount/umount) • 파일 시스템 점검 및 복구(fsck)
파티션 설정(fdisk) • 리눅스 시스템의 장치파일들은 /dev에서 볼 수 있는데, IDE 형식의 하드디스크는 /dev/hda, /dev/hdb, /dev/hdc, …와 같이 지정되고 S-ATA 형식의 하드디스크는 /dev/sda, /dev/sdb, /dev/sdc, …와 같이 지정된다
파티션 설정(fdisk) • 이러한 물리적인 디스크에 파티션이 생성되면 그 장치 파일 뒤에 1번부터 번호가 붙은 이름으로 파티션에 해당하는, 가상의 장치의 파일이 생성된다 • 예를 들어 /dev/hda에 대해 파티션 두개를 만들었다면 /dev/hda1, /dev/hda2로 지정된다
파티션 설정(fdisk) • # fdisk –l [디스크 장치] • 해당 디스크의 파티션 테이블을 보여준다 • 장치를 지정하지 않으면 시스템의 파티션 테이블을 보여준다 • # fdisk –s [파티션 장치] • 해당 파티션의 크기를 블록(파일 시스템에서의 용량 관리 단위) 단위로 보여준다
파티션 설정(fdisk) • # fdisk [디스크 장치] • 해당 디스크에 대해서 파티션 설정을 한다 • 이는 대화형으로 이루어지므로 쉽게 할 수 있다 • 그래도 거기서 쓸 수 있는 명령어들에 대해 알아보면…
파티션 설정(fdisk) • 명령어 종류 • a: 부트 플래그 설정(설정시 파티션 테이블에서 Boot 항목에 * 표시됨) • b: bsd 디스크 레이블 편집 • c: 도스 호환 여부 플래그 설정 • d: 파티션 삭제 • l: 알려진 파티션 형태의 목록 출력 • m: 도움말 출력 • n: 파티션 생성 • o: 새로운 도스 파티션 테이블 생성
파티션 설정(fdisk) • p: 파티션 테이블 출력 • q: 변경 사항을 저장하지 않고 종료 • s: sun 디스크 레이블 생성 • t: 파티션의 시스템 아이디 변경 • u: 표시 및 엔트리 단위 변경(섹터/실린더) • v: 파티션 테이블 점검 • w: 변경 사항을 저장하고 종료 • x: 추가적인 기능들
부트 플래그(boot flag)란? • 부팅시, 부트 플래그가 인식되는 파티션에 대해서 부팅이 진행된다 • 단, GRUB 등의 부트 로더가 있다면 멀티 부팅이 가능해진다
파티션 설정(fdisk) • 리눅스의 경우 fdisk로 파티션을 잘못 설정했을때 실린더(또는 섹터)의 수만 맞추면 복원이 가능하다
파일 시스템 만들기(mkfs) • 각각의 파일 시스템들은 자신과 관련된 고유의 mkfs명령을 가지고 있으며, mkfs자체는 각각을 실행시켜주는 녀석에 불과하다 • 따라서 mkfs가 없다면 그냥 mkfs.ext3나 mkfs.msdos와 같이 해당 파일 시스템을 만들어 주는 프로그램을 직접 호출하면 된다 • 여기서는 mkfs프로그램이 있다고 가정한다
파일 시스템 만들기(mkfs) • # mkfs –c [파티션 장치] • 파티션의 배드섹터 검사를 한다 • # mkfs –t [파일 시스템 타입] [파티션 장치] • 해당 파티션을 지정한 파일 시스템 타입으로 포맷한다
장치 마운트/언마운트 하기(mount/umount) • 리눅스에서는 파일 시스템이 각각의 디렉토리에대응된다 • 따라서 마운트(mount)라는 연결 작업을 거쳐야만 사용 가능하다
마운트(mount)란? • 파일 시스템을 사용하기 위해 해당 파티션 장치와 디렉토리를 연결하는 것을 말한다 • 설정에 따라 리눅스가 시작될 때 자동으로 되는 것도 있고, 수동으로 해줘야 하는 것도 있다
장치 마운트/언마운트 하기(mount/umount) • 파일 시스템들의 정보를 가지고 있는 파일 시스템 테이블이 있는데, 이는 /etc/fstab 파일이다 • 이 fstab에서 부팅시 자동으로 마운트되도록 옵션을 지정할 수 있다
장치 마운트/언마운트 하기(mount/umount) • /etc/fstab 파일의 각 행은 다음과 같이 이루어진다 • [파티션 장치(또는 레이블명)] [마운트 포인트] [파일 시스템 타입] [옵션] [dump 설정] [파일 점검 옵션] • 옵션에 “auto”가 지정되어 있으면 해당 파일 시스템은 자동적으로 마운트될 수 있다 • “default” 옵션은 “auto” 옵션을 포함한다 • mount는 기본적으로 root 권한이 필요하지만, “user” 옵션을 가지는 파일 시스템들에 대해서는 일반 유저들도 마운트시키는 것이 가능하다