데이터베이스는 논리적으로 조직된 서로 연관된 테이블에 데이터를 구조적으로 저장하기 위한 방법이다. 데이터베이스는 데이터 저장과 검색을 최적화하는 데 도움을 준다. DBMS는 데이터베이스의 생성과 관리, 사용을 제어한다. DBMS는 애플리케이션의 데이터 요청을 처리하고 운영체제에 스토리지로부터 데이터를 가져오도록 지시한다.
사용자는 애플리케이션을 통해 데이터를 저장하고 추출한다. 애플리케이션을 실행하는 컴퓨터를 호스트(host) 또는 컴퓨트 시스템(compute system)이라 한다. 호스트는 물리적 머신 혹은 가상 머신일 수도 있다. 컴퓨트 가상화 소프트웨어는 물리적인 컴퓨트 인프라스트럭처를 기반으로 가상 머신을 만든다. 물리적 호스트의 예로는 데스크톱 컴퓨터나 서버, 서버 클러스터, 랩톱, 모바일 디바이스가 있다. 호스트는 CPU와 메모리, I/O 디바이스, 컴퓨팅 연산을 수행하는 여러 소프트웨어로 구성된다. 소프트웨어에는 운영체제와 파일 시스템, 논리적 볼륨 매니저, 디바이스 드라이버 등이 있다. 이런 소프트웨어는 운영체제의 일부 또는 별개의 엔티티로 설치될 수도 있다.
CPU는 산술 논리 장치(ALU, Arithmetic Logic Unit)와 제어 장치, 레지스터, L1 캐시라는 네 가지 컴포넌트로 구성된다. 호스트의 메모리는 랜덤 액세스 메모리(RAM, Random Access Memory)와 읽기 전용 메모리(ROM, Read-Only Memory), 두 종류가 있다. I/O 디바이스는 호스트와의 통신을 담당한다. I/O 장치의 예로는 키보드와 마우스, 모니터 등이 있다.
소프트웨어는 호스트에서 실행되며, 데이터 입/출력을 담당한다.
전통적인 컴퓨팅 환경에서는 운영체제(operating system)가 컴퓨팅의 모든 것을 제어했다. 운영체제는 애플리케이션과 컴퓨트 시스템의 물리적 컴포넌트 사이의 작업을 담당했다. 애플리케이션에 제공되는 서비스 중 하나는 데이터 액세스다. 운영체제는 사용자의 활동과 환경을 모니터링하고 이에 대한 처리를 담당한다. 하드웨어 컴포넌트를 조직하고 제어하며, 하드웨어 리소스의 할당을 관리한다. 관리하는 모든 리소스의 액세스와 사용에 대한 기본적인 보안을 제공한다. 운영체제는 기본적인 스토리지 관리도 수행하며 파일 시스템과 볼륨 매니저, 디바이스 드라이버도 관리한다.
가상 컴퓨트 환경에서는 운영체제와 하드웨어 리소스 사이에 가상 레이어가 동작한다. 여기서 OS의 역할은 컴퓨트 가상화의 구현에 따라 달라진다. 일반적인 경우 OS는 게스트로 동작하며 애플리케이션과의 상호작용 관련 역할만 수행한다. 이때 하드웨어 관리 기능은 가상화 레이어에서 수행한다.
메모리는 지금까지도 그랬지만 앞으로도 호스트에서 비용이 높은 컴포넌트일 것이다. 메모리는 호스트에서 실행할 수 있는 애플리케이션의 크기와 개수를 결정한다. 메모리 가상화(memory virtualization)를 이용해, 총 메모리 요구량이 실제 사용 가능한 물리적 메모리보다 많은 애플리케이션과 프로세스를 서로 영향을 주지 않고 실행할 수 있다.
메모리 가상화는 호스트의 물리적 메모리(RAM)를 가상화해주는 운영체제의 기능이다. 이 기능은 컴퓨트 시스템의 물리적 메모리 공간보다 큰 주소 영역을 가진 가상 메모리를 만든다. 가상 메모리는 물리적 메모리의 주소 공간과 디스크 스토리지의 일부 영역을 함께 사용한다. 가상 메모리를 관리하는 운영체제 유틸리티를 가상 메모리 관리자(VMM, virtual memory manager)라고 한다. VMM은 가상 메모리에서 물리 메모리로의 매핑을 관리하고, 프로세스가 디스크 스토리지에 있는 데이터의 가상 주소를 참조할 때 디스크 스토리지에서 데이터를 가져온다. VMM이 사용하는 디스크 영역을 스왑 공간이라고 한다. 스왑 공간(swap space [또는 페이지 파일이나 스왑 파일이라고도 함])은 운영체제가 물리 메모리처럼 취급하는 디스크 드라이브의 일부 영역이다.
가상 메모리는 시스템 메모리를 지정한 크기의 페이지로 구성된 연속된 블록으로 나눈다. 페이징(paging)이라고 하는 프로세스는 비활성 물리 메모리 페이지를 스왑 파일로 옮기고, 필요할 때 이 페이지를 다시 물리 메모리로 읽어 들인다. 이렇게 해 사용 가능한 물리 메모리를 여러 애플리케이션이 효율적으로 사용할 수 있다. 운영체제는 가장 적게 사용된 페이지를 스왑파일에 옮겨 좀 더 활발한 프로세스가 메모리를 충분히 사용할 수 있게 한다. 스왑 파일 페이지는 물리 메모리보다 느린 디스크에 할당됐기 때문에, 스왑 파일 페이지에 액세스하는 것은 물리 메모리 페이지에 대한 액세스보다 느리다.
디바이스 드라이버(device driver)는 운영체제가 프린터나 마우스, 디스크 드라이버 같은 디바이스와 상호작용할 수 있게 하는 소프트웨어를 말한다. 디바이스 드라이버를 통해 운영체제는 디바이스를 인식하며, 디바이스를 액세스하고 제어한다. 디바이스 드라이버는 하드웨어와 운영체제에 따라 달라진다.
예전에는 운영체제가 디스크 드라이브를 여러 개의 연속적인 디스크 블록의 집합으로 봤다. 디스크 드라이브 전체가 파일 시스템에 할당되거나, OS나 애플리케이션에서 사용하는 다른 엔티티에 할당됐다. 이런 방법의 단점은 유연성이 없다는 것이다. 디스크 드라이브의 공간이 부족해도 파일 시스템의 크기를 증가시킬 방법이 없었다.
이후 내용은 볼륨 매니저와 파일 시스템에서 다루도록 하겠다.
'IT > Storage' 카테고리의 다른 글
RAID (0) | 2022.06.29 |
---|---|
볼륨 매니저와 파일 시스템 (0) | 2022.06.29 |
가상화와 클라우드 컴퓨팅 (0) | 2022.06.29 |
스토리지 아키텍처 (0) | 2022.06.12 |
데이터 (0) | 2022.06.12 |