Kim Jinung

8. 대용량 저장장치 구조 본문

Computer Science/Operating System

8. 대용량 저장장치 구조

Kim Jinung 2023. 1. 11. 22:27
저장장치를 어떠한 관점으로 접근할 것인가?

유저가 작성한 프로그램은 저장장치에 저장된다. 그리고 이를 실행하기 위해서는 메모리에 적재 해야 한다. 이 상태를 프로세스라고 부른다. 앞서 운영체제가 CPU 사용을 극대화하기 위한 기법들로 프로세스 스케줄링, CPU 스케줄링 그리고 메모리 페이징 기법 등에 관해 정리했다. 그렇다면 실질적으로 프로그램의 저장을 담당하는 저장장치는 어떠한 구조로 구성되어 있을까? 실제로 사용하는 저장장치의 개략적인 구조 그리고 이를 이용한 운영체제 부팅 과정은 어떻게 연결될까? 더 나아가서 저장 장치이므로 다음과 같은 생각을 해볼 수 있다.

 

  • 어떻게 하면 저장해둔 데이터를 빠르게 탐색할 것인가?
  • 데이터를 어떻게 하면 안정적으로 저장할 것인가?

HDD(Hard Disk Drive) 그리고 NVM(Non-volatile Memory)

저장장치로는 HDD 그리고 SSD를 많이 사용한다. 두 장치의 가장 큰 차이점은 HDD는 기계식 장치고, SSD는 반도체다. HDD는 플래터라고 부르는 원판을 섹터로 나누고(쉽게 말해서 데이터를 저장할 영역을 섹션화 한다.) disk arm의 헤드를 통해 읽기-쓰기 작업을 수행한다. 개인적으로는 이 과정이 LP 플레이어에 LP를 올려두고 실행하는 것과 비슷한 것 같다. HDD는 실질적으로 플래터를 회전 시키면서 데이터를 처리하게 되므로 분당 회전수인 RPM을 성능에 명시한다. 즉 물리적인 움직임이 수반되기 때문에 그 속도가 전기식 장치인 NVM에 비해서 현저히 느리다.

 

플래시 메모리 기반의 NVM 장치를 SSD(Solid State Drive)라고 부른다. 내부 구성은 데이터 저장을 담당하는 낸드 플래시 메모리 그리고 이러한 저장소에서 데이터를 핸들링 하는 컨트롤러, 마지막으로 캐시 역할을 하는 DRAM이 추가적으로 구성되기도 한다. (낸드 플래시는 반도체 셀이 직렬로 구성되어 있는 타입이다. 하드웨어에 대한 구체적인 설명은 생략한다.) 

 

https://semiconductor.samsung.com/kr/support/tools-resources/dictionary/semiconductors-101-part-3-inner-workings-of-the-ssd/

SSD 컨트롤러가 데이터 읽기, 쓰기, 삭제 작업의 최적화를 대신하므로 운영체제 레벨에서는 추가로 작업해줄 것이 없다. 

 

정리하자면

  • HDD는 기계 장치로 직접 플래터를 회전시켜서 데이터를 핸들링한다.
  • SSD는 전기식 장치(반도체)로 데이터를 저장하는 플래시 메모리와 이러한 플래시 메모리에 데이터를 읽고 쓰고 삭제하는 역할을 담당하는 컨트롤러로 구성되어 있다.

 

그런데 이름이 왜 하필 플래시 메모리일까? 

그렇다고 한다. 플래시 메모리는 비휘발성 메모리라고 기억 해두는 게 더 편할 듯 하다. 


디스크 스케줄링

그렇다면 저장장치에서는 저장된 파일에 대한 스케줄링을 어떻게 진행할까?

 

HDD는 디스크 헤드 이동량을 최소화 하기위해서 SCAN, C-SCAN 등의 디스크 스케줄링 알고리즘을 사용한다. 해당 알고리즘은 Disk arm이 한 쪽 끝에서 끝으로 이동할 때 처리할 수 있는 데이터가 있다면 처리하면서 이동하는 방법이다. 즉 이동하면서 처리가능한 일을 겸사겸사 처리한다.  

 

NVM 스케줄링은 디스크 헤더에 대한 이동이 없으므로 일반적인 FCFS 알고리즘을 사용한다. Linux의 NOOP 스케줄러는 FCFS 정책을 사용하는데, 인접한 요청을 병합하도록 수정한다. NVM 장치의 작동을 관찰하면 읽기 작업에 소요되는 시간을 일정하지만, 플래시 메모리의 구조적 특징 때문에 쓰기 작업이 일정하지 않은 것을 관찰 할 수 있다고 한다. (쓰기가 더 느린 이유는 차후에 더 찾아서 추가하기) SSD의 경우 컨트롤러에서 최적화 작업을 진행하므로 OS 레벨에서는 FCFS를 사용하는 것으로 예상된다. (해당 추측이 정확한지 찾아볼 것)


저장장치에서 운영체제가 실행되기 까지

그렇다면 저장장치에 저장되어 있는 운영체제는 어떤 과정을 거쳐서 메모리를 거치고 CPU를 할당 받게 되는 걸까?

 

  1. PC에 전원 공급
  2. CPU가 ROM(Read-Only Memory)에 저장되어 있는 BIOS(Basic Input Ouput System)을 실행 시킨다.
  3. 실행된 BIOS는 POST(Power On Self Test) 과정을 거치며 하드웨어가 정상적으로 동작하는지 체크한다.
  4. Bootstrap: 부팅 디스크를 선택하고, MBR에 저장된 bootloader(부팅 정보)를 메인 메모리에 적재한다.
  5. Bootloader는 디스크에 있는 OS 코드를 메인 메모리에 적재한다.
  6. CPU는 OS의 daemon을 실행한다. 

MBR(Master Boot Record)

NVM 장치의 첫 번째 페이지에는 MBR이 위치하고 있다. 여기에는 부트로더가 저장되어 있다. BIOS는 MBR에 있는 부트로더를 메모리에 올린다. 부트로더는 OS를 메모리에 적재하는 역할을 담당한다. MBR의 저장되어 있는 부트로더를 메모리에 올리는 작업을 부트스트랩이라고 한다.


RAID(Redundant Array of Inexpensive Disk)

저장장치 여러 개를 묶어서 디스크 섹터 불량에 대응하는 방법이다. 저장장치는 소모품이므로 시간이 지나며 섹터 불량이 발생할 수 있다. 따라서 디스크 여러 개를 묶어서 중복으로 저장하겠다는 거다. 쉽게 생각해서 디스크 여러개를 묶고 데이터를 중복 저장해서 데이터의 무결성을 보장하는 방법이다. RAID 방법에 따라 레벨이 존재한다. 가장 간단한 형태만 살펴본다.

 

RAID level 1으로 DB의 Replication처럼 통째로 복사하는 방법이다.

RAID level 0은 중복없이 디스크에 분산 저장하는 방법이다.

 

각 level에 대한 설명은 다음 글 참조

 

Standard RAID levels - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Any of a set of standard configurations of Redundant Arrays of Independent Disks In computer storage, the standard RAID levels comprise a basic set of RAID ("redundant array of indepen

en.wikipedia.org


'Computer Science > Operating System' 카테고리의 다른 글

10. 파일 시스템  (0) 2023.01.13
9. I/O 시스템  (0) 2023.01.13
7. 메모리 관리  (0) 2023.01.09
6. 프로세스 동기화 그리고 데드락  (0) 2023.01.06
5. CPU 스케줄링  (0) 2023.01.05