파일 시스템 블록(block)은 데이터를 저장하기 위해 할당하는 가장 작은 단위다. 각 파일 시스템 블록은 물리적 디스크에서의 연속 영역이다. 파일 시스템의 블록 크기는 생성 시 지정한다. 파일 시스템의 크기는 블록의 크기와 블록의 전체 개수로 정해진다. 파일은 블록 크기보다 큰 경우가 대부분이기 때문에 파일 시스템의 여러 블록을 사용한다. 새로운 블록을 추가하거나 삭제하면 연속적인 블록이 파편화될 수 있다. 파일이 점점 커지면 파일 시스템이 점점 파편화된다.
다음은 사용자 파일을 LVM을 사용하는 디스크 스토리지 서브 시스템에 매핑하는 과정이다.
1. 사용자와 애플리케이션이 파일을 만들고 관리한다.
2. 이 파일은 파일 시스템에 존재한다.
3. 파일 시스템은 파일 시스템 블록에 매핑된다.
4. 파일 시스템 블록은 논리 볼륨의 논리적 익스텐트로 매핑된다.
5. 논리적 익스텐트는 OS나 LVM에 의해 물리적 익스텐트로 매핑된다.
6. 이 물리적 익스텐트는 스토리지 서브 시스템의 디스크 섹터로 매핑된다.
LVM이 없다면 논리적 익스텐트도 없고, 파일 시스템 블록이 직접 디스크 섹터로 매핑된다.
파일 시스템 트리(file system tree)는 루트 디렉토리(root directory)에서 시작한다. 루트 디렉토리는 여러 서브디렉토리를 갖는다. 파일 시스템은 사용하기 전에 마운트해야 한다.
fsck 시스템 유틸리티는 유닉스와 리눅스 호스트의 파일 시스템 일관성을 체크하는 데 사용한다. 파일 시스템의 일관성이 깨지는 예로는, 파일 시스템에 상당한 변화가 있고 변경 사항이 디스크에 커밋(commit)되기 전에 컴퓨터 시스템이 중단된 경우가 있다. 부팅 시에 fsck 명령어가 성공적인 부팅을 위해 파일 시스템의 일관성을 체크한다. 파일 시스템이 일관적이면 다른 모든 파일 시스템의 일관성을 체크한다. 비일관적인 상태의 파일 시스템이 있으면 마운트하지 않는다. 이런 파일 시스템은 fsck 명령어가 자동으로 복구하거나 사용자 인터페이스를 통해 복구할 수 있다. CHKDSK 명령어는 DOS와 OS/2, 마이크로소프트 윈도우에서 사용한다.
파일 시스템은 크게 저널링 파일 시스템과 비저널닝 파일 시스템으로 나눌 수 있다. 비저널닝 파일 시스템(nonjournaling file system)은 데이터와 메타데이터를 업데이트할 때 별도의 쓰기 연산을 사용하기 때문에 파일을 잃을 수 있는 잠재적인 위험을 갖고 있다. 쓰기 도중 시스템이 중단되면 메타데이터나 데이터가 깨지거나 잃어버릴 수 있다. 시스템을 다시 부팅하면 파일 시스템은 메타데이터를 조사하고 복구해 메타데이터의 구조를 업데이트하려 한다. 이 작업은 큰 파일 시스템에서는 매우 오래 걸린다. 이전 구조를 복구하는 데 필요한 정보가 없는 경우에는 파일의 위치가 잘못되거나 잃게 돼 파일 시스템이 망가진다.
저널링 파일 시스템(journaling file system)은 로그(log) 또는 저널(journal)이라 불리는 별도의 영역을 사용한다. 이 저널에는 모든 쓰기 연산의 데이터를 저장하거나(물리적 저널) 또는 업데이트된 메타데이터(논리적 저널)만 가질 수 있다. 파일 시스템에 변경 사항을 적용하기 전에 먼저 이 영역에 변경 사항을 기록한다. 저널을 업데이트한 후 파일 시스템에 대한 작업을 수행한다. 작업 도중 시스템이 중단돼도 로그 레코드를 재실행해 작업을 완료할 수 있는 충분한 정보가 로그에 있다. 저널링은 파일 시스템 체크 과정을 빠르게 해준다. 이는 체크 시에 가장 최근에 액세스된 부분만을 체크하면 되기 때문이다. 또한 지연된 작업에 대한 정보도 저장되기 때문에 파일을 잃을 위험도 줄어든다.
저널링 파일 시스템의 단점은 여타 파일 시스템보다 느리다는 점이다. 이 속도 저하는 파일 시스템을 변경할 때마다 저널에 대한 부가적인 작업을 수행해야 하기 때문이다. 그러나 파일 시스템 체크 시간이 줄어들고 파일 시스템의 정합성이 보장된다는 장점이 단점보다 훨씬 크다. 오늘날 거의 대부분의 파일 시스템은 저널링을 사용한다.
전용 파일 서버를 설치해 네트워크를 통해 파일을 관리하고 공유할 수 있다. 이런 파일 서버는 여러 파일 시스템을 지원하며, 운영체제에 특화된 파일 공유 프로토콜을 사용한다. 이런 파일 시스템의 예로는 NFS와 CIFS가 있다.
컴퓨트 가상화는 운영체제로부터 물리적 하드웨어를 감추는 기술이다. 단일 또는 클러스터 머신에서 여러 운영체제를 동시에 운영할 수 있다. 이 기술로 가상 머신(VM, virtual machine)이라 불리는 포터블(portable) 가상 컴퓨트 시스템을 만들 수 있다. 각 VM은 고립된 방식으로 운영체제와 애플리케이션을 실행한다. 하드웨어와 가상 머신 사이의 가상화 레이어를 이용해 컴퓨트 가상화를 실현한다. 이 레이어는 하이퍼바이저(hypervisor)라고도 불린다. 하이퍼바이저는 CPU와 메모리, 네트워크 같은 하드웨어 리소스를 가상 머신에 제공한다. 물리적인 서버의 하드웨어 사양에 따라 한 서버 안에 많은 가상 머신을 만들 수 있다.
가상 머신은 논리적인 요소이지만 운영체제에게는 CPU와 메모리, 네트워크 컨트롤러, 디스크를 가진 물리적 호스트로 인식된다. 그러나 모든 VM은 같은 물리적인 하드웨어를 독립적으로 공유한다. 하이퍼바이저의 관점에서 가상 머신은 VM 설정 파일과 데이터 파일 등의 독립적인 파일의 집합이다.
'IT > Storage' 카테고리의 다른 글
인터페이스 프로토콜과 스토리지 (0) | 2022.06.29 |
---|---|
컴퓨트 가상화와 연결 (0) | 2022.06.29 |
미러링과 패리티 (0) | 2022.06.29 |
RAID (0) | 2022.06.29 |
볼륨 매니저와 파일 시스템 (0) | 2022.06.29 |