본문 바로가기

카테고리 없음

파일시스템의 정의와 가상화개념

파일시스템

파일은 관련 레코드의 집합 또는, 이름을 가진 단위로 저장된 데이터를 말한다. 파일시스템은 파일의 계층 구조다. 파일 시스템은 디스크 드라이브나 디스크 파티션, 논리적 볼륨에 저장된 데이터 파일에 접근할 수 있게 한다. 파일 시스템은 논리적 구조와 파일 접근을 조정하는 소프트웨어 루틴으로 구성된다. 파일 시스템을 이용해 사용자는 파일을 만들고 수정, 삭제할 수 있으며 파일에 접근한다. 디스크의 파일에 대한 접근은 소유자가 지정한 권한에 따라 제어되며, 이는 파일 시스템이 관리한다.
파일 시스템은 데이터를 디렉터리를 이용해 계층 구조로 관리한다. 디렉터리는 여러 파일에 대한 포인터를 저장하는 컨테이너다. 모든 파일 시스템은 디렉터리와 서브디렉토리, 파일에 대한 포인터 랩을 관리한다. 유명한 파일 시스템의 예는 다음과 같다.

• 마이크로소프트 윈도우의 FAT 32
• 마이크로소프트 윈도우의 NT 파일 시스템
• 유닉스의 UNIX 파일 시스템 (UF5)
• 리녹스의 확장파일 시스템 (EXT2/3)

파일과 디렉터리 외에 파일 시스템은 메타데이터라는 관련 정보를 관리한다. 예를 들어 유닉스에서는 슈퍼블록 super block 과 노드inode, 사용 기능한 블록의 리스트 및 사용 중인 블록의 리스트를 관리한다. 파일 시스템 메타데이터의 정합성이 맞아야 파일 시스템에 문제가 없다고 간주한다.
슈퍼블록은 파일 시스템 유형과 생성 및 수정 날짜, 크기, 레이아웃 같은 파일 시스템의 주요 정보를 저장한다. 또한 사용 기능한 리소스(프리 블록 개수, 아이 노드 둥)의 개수와 파일 시스템의 마운트 상황을 알려주는 플래그를 포함한다. 아이노드는 모든 파일과 디렉터리에 대해 만들어지며 파일 길이와 소유권, 접근 권한, 최근 접근/수정 시간, 링크 개수, 데이터 주소 등의 정보를 저장한다. 

파일 시스템 블록 block은 데이터를 저장하기 위해 할당하는 가장 작은 단위다. 각 파일 시스템 블록은 물리적 디스크에서의 연속 영역이다. 파일 시스템의 블록 크기는 생성 시 지정한다. 파일 시스템의 크기는 블록의 크기와 블록의 전체 개수로 정해진다. 파일은 블록 크기보다 큰 경우가 대부분이기 때문에 파일 시스템의 여러 블록을 사용한다. 새로운 블록을 추가하거나 삭제하면 연속적인 블록이 파편화될 수 있다. 파일이 점점 커지면 파일 시스템이 점점 파편화된다.

다음은 사용자 파일을 LVM을 사용하는 디스크 스토리지 서브시스템에 매핑하는 과정이다.
1. 사용자와 애플리케이션이 파일을 만들고 관리한다.
2. 이 파일은 파일 시스템에 존재한다.
3. 파일 시스템은 파일 시스템 블록에 매핑된다.
4. 파일 시스템 블록은 논리 볼륨의 논리적 익스텐트로 매핑된다.
5. 논리적 익스텐트는 os나 LVM에 의해 물리적 익스텐트로 매핑된다
6. 이 물리적 익스텐트는 스토리지 서브시스템의 디스크 섹터로 매핑된다.
LVM 이 없다면 논리적 익스텐트도 없고, 파일 시스템 블록이 직접 디스크 섹터로
매핑된다.

파일 시스템은 크게 저널링 파일 시스템과 비저널닝 파일 시스템으로 나눌 수 있다. 비저널닝 파일 시스템은 데이터와 메타데이터를 업데이트할 때 별도의 쓰기 연산을 사용하기 때문에 파일을 잃을 수 있는 잠재적인 위험이 존재하다. 쓰기 도중 시스템이 중단되면 메타데이터나 데이터가 깨지거나 잃어버릴 수 있다. 시스템을 다시 부트하면 파일 시스템은 메타데이터를 조사하고 복구해 메타데이터의 구조를 업데이트하려 한다. 이 작업은 큰 파일 시스템에서는 매우 오래 걸린다. 이전 구조를 복구하는 데 필요한 정보가 없는 경우에는 파일의 위치가 잘못되거나 잃게 돼 파일 시스템이 망가진다.
저널링 파일 시스템은 로그 또는 저널이라 불리는 별도의 영역을 사용한다. 이 저널에는 모든 쓰기 연산의 데이터를 저장하거나 물리적 저널 또는 업데이트된 메타데이터 논리적 저널만 가질 수 있다. 파일 시스템에 변경사항을 적용하기 전에 먼저 이 영역에 변경사항을 기록한다. 저널을 업데이트한 후 파일 시스템에 대한 작업을 수행한다. 작업 도중 시스템이 중단돼도 로그 레코드를 재실행해 작업을 완료할 수 있는 충분한 정보가 로그에 있다. 저널링은 파일 시스템 체크 과정을 빠르게 해준다. 이는 체크 시에 가장 최근에 액세스된 부분만을 검사하면 되기 때문이다, 또한 지연된 작업에 대한 정보도 저장되기 때문에 파일을 잃을 위험도 줄어든다. 저널링 파일 시스템의 단점은 여타 파일 시스템보다 느리다는 점이다. 이 속도 저는 파일 시스템을 변경할 때마다 저널에 대한 부가적인 작업을 수행해야 하기 때문이다. 그러나 파일 시스템 체크 시간이 줄어들고 파일 시스템의 정합성이 보장된다는 장점이 단점보다 훨씬 크다. 오늘날 거의 대부분의 파일시스템은 저널링을 사용한다. 전용 파일 서버를 셜치 해 네트워크를 통해 파일을 관리하고 공유할 수 있다. 이런 파일 서버는 여러 파일 시스템을 지원하며, 운영체제에 특화된 파일 공유 프로토콜을 사용한다 이런 파일 시스템의 예로는 NFS 와 CIFS가 있다.

컴퓨터가상화 

컴퓨터 가상화는 운영체제로부터 물리적 하드웨어를 감추는 기술이다 단일 또는 클러스터 머신에서 여러 운영체제를 동시에 운영할 수 있다. 이 기술로 가상 VM, virtual machine이라 불리는 포터블 가상 시스템을 만들 수 있다. 각 VM 은 고립된 방식으로 운영체제와 애플리케이션을 실행한다. 하드웨와 가상 머신 사이의 가상화 레이어를 이용해 컴퓨트 가상화를 실현한다. 이 레이어는 하이퍼바이저 hypervisor 라고도 불린다. 하이퍼바이저는 CPU와 메모리, 네트워크 같은 하드웨어 리 소스를 기장 머신에 제공한다. 물리적인 서버의 하드웨어 사양에 따라 한 서버 안에 많은 가상 머신을 만들 수 있다. 가상 머신은 논리적인 요소이지만 운영체제에는 CPU와 메모리, 네트워크 컨트롤러, 디스크를 가진 논리적 호스트로 인식된다. 그러나 모든 VM은 같은 물리적인 하 어를 독립적으로 공유한다 하이퍼바이저의 관점에서 가장 머신은 VM 설정 파일과 데이터 파일 등의 독립적인 파일의 집합이다. 보통 한 서버에서 수행되는 여러 애플리케이션이 같은 리소스를 요청하면 리소스 충돌 이슈가 발생한다. 예를 들어 같은 레지스트리 엔트리에 다른 값이 필요하거나, 같은 DLL의 다른 버전이 필요할 수 있다. 결과적으로 아래와 같이 서버는 한 번에 한 애플리케이션만을 실행할 수 있다 결국 조직은 배치하려는 모든 애플리케이션에 대해 물리적 머신을 구매해야 하고, 이로 인해 매우 값비싸고 유연하지 못한 인프라스트럭처를 갖게 된다. 그러나 각 애플리케이션은 할당된 하드웨어를 전부 용하진 못한다. 따라서 프로세서와 메모리 스토리지 같은 리소스의 활용도가 떨어진다. 컴퓨트 가상화는 한 물리적 머신에서 여러 운영체제와 애플리케이션을 실행하게 함으로써 이런 문제를 해결할 수 있다. 이 기술은 서버 활용도를 상당히 높이며 서버를 합칠 수 있게 해준다

서버를 합치면 조직이 더 적은 수의 서버를 갖고 데이터 센터를 운영할 수 있게 해 준다. 그러면 새로운 서버의 비용을 낮추고 랙 공간 등을 절약할 수 있다. VM을 만드는 것은 물리적 서버를 세팅하는 것보다 시간이 적게 걸린다. 조직은 서버를 쉽고 빠르게 공급할 수 있다. VM은 같은 물리 머신의 다른 VM에 영향을 주지 않고 재시작하거나 업그레이드할 수 있으며, 심지어는 중단되는 경우에도 다른 VM에 영향을 미치지 않는다. 또한 애플리케이션다운 타임 없이 VM을 한 논리적 머신에서 다른 머신으로 복사하거나 옮길 수 있다. 물리적 머신 간의 로드 밸런싱과 하드웨어 관리, 가용성 측면에서 중단 없는 마이그레이션이 필요하다.

데스크톱 가상화 

전통적인 데스크톱에서는 OS와 애플리케이션 사용자 프로 파일은 모두 특정 하드웨어에 종속돼 있었다. 클라이언트 다바이스가 고장 나거나 분실되면 비즈니스 생산성에 매우 악영향을 미친다. 데스크톱 가상화는 하드웨어와 애플리케이션, 사용자 프로파일. 설정 간의 의존성을 없애준다. 데스크톱 가상화 도구를 사용하면 IT 스태프가 이런 요소들을 독립적으로 변경하고 업데이트, 배치할 수 있다. 데이터 센터의 데스크톱은 가상 머신에서 실행되며, 사용자는 랩톱이나 데스크톱, 모바일 디바이스(씬(thin) 디바이스라 불림) 등의 여러 클라이언트 디바이스에서 원격으로 이 데스크톱에 액세스한다. 애플리케이션 실행이나 데이터 저장은 각 클라이언트 디바이스 가 아닌 데이터 센터에서 중앙 집중적으로 처리된다. 가상 머신으로 데스크톱이 운영되기 때문에 데이터 유출이나 도난의 위험을 줄여준다. 또한 중앙화된 백업이 가능하며 규정 절차를 단순화할 수 있다. 가상 데스크톱은 쉽게 패치를 적용할 수 있고, 새로운 애플리케이션을 간단히 설치할 수 있으며, 사용자를 중앙에서 관리하기 때문에 관리적인 측면에서 이득이 많다.

연결

연결이란 호스트 사이 또는 호스트와 프린터, 스토리지 디바이스 같은 주변 기기와의 연결을 말한다. 호스트와 스토리지 사이의 연결과 통신은 물리적 컴포넌트와 인터페이스 프로토콜을 통해 이뤄진다.
연결의 물리적 컴포넌트 연결의 물리적 킴포넌트는 호스트와 스토리지를 연결하는 요소다. 여기에는 호스트 인터페이스 디바이스와 포트, 케이블이라는 세 가지 컴포넌트가 있다. 호스트 인터페이스 디바이스나 호스트 어댑터는 호스트와 다른 호스트 또는 호스트와 스토리지 디바이스를 연결한다. 호스트는 여러 개의 HBA를 가진다. 포트 port는 호스트와 외부 디바이스를 연결해주는 통로다. HBA는 호스트와 스토리지 디바이스를 연결하는 2개 이상의 포트를 가질 수 있다. 케이블 cable은 구리 또는 광 섬유 미디어를 사용해 호스트와 내부 혹은 외부 디바이스를 연결한다.

 

인터페이스 프로토콜 

프로토콜 protocol은 호스트와 스토리지 사이를 통신할 수 있게 한다. 프로토콜은 인터페이스 기기(또는 컨트롤러)를 사용해 양쪽 소스와 목적지에서 구현한다. 많이 사용되는 인터페이스 프로토콜로는 FC, IP 등이 있다.