mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-10-29 19:20:49

램 디스크

램디스크에서 넘어옴
1. 개요2. 부팅3. 종류
3.1. 소프트웨어 램 디스크
3.1.1. 목록
3.2. 하드웨어 램 디스크
3.2.1. 제품
4. 사용 시 생길 수 있는 문제점

1. 개요

RAM disk. 혹은 램 드라이브(RAM drive)라고도 불린다.

부족한 메모리를 디스크로 대신하는 페이징파일·스왑[1]과 달리 RAM의 공간 일부를 보조 기억 장치로 사용하는 기법으로, MS-DOS 시절에 정식으로 지원되어 온 기능이다. 메모리가 모자라는데 대체 무슨 생각인가 싶겠지만, 과거 8비트 16비트 시절에는 한 번에 어드레싱 가능한 영역이 무척 작아[2] 그 이상의 메모리는 특수한 기법을 동원하지 않는 한 쉽게 사용할 수 없는 영역이기도 하고 램디스크의 속도가 워낙 압도적이다보니 약간의 공간을 할애하여 램디스크로 쓰는 경우도 많았다.

4GB 메모리가 보편적인 시대가 되면서 64비트 운영체제 이행으로의 과도기 시절에는 32비트 운영체제가 다 사용하지 못하는 짜투리 영역을 램디스크로 할당하여 사용하는 시도가 많이 있었다. 이때는 웹사이트가 너도나도 고해상도의 그림을 뿌려대며 무거워지던 시기였는데 캐쉬파일 영역을 램드라이브로 돌려주면 속도가 엄청나게 향상되었었다.

HDD ~ SSD 초기 시기에는 저장장치의 실제 전송 퍼포먼스가 RAM과 CPU 사이의 통신 속도보다 압도적으로 느려 램디스크의 체감 성능향상이 확실했으나, 현재에는 PCI-Express를 통한 저장장치의 대역폭이 RAM-CPU 간 통신 대역폭에 그리 뒤지지 않을 정도로 커진 데다, 기본적으로 모든 작업에 있어 RAM과의 통신을 사용해야 하는 컴퓨터의 동작 특성 상 그 우월성이 압도적이지 않다. 따라서 램디스크를 순수하게 성능 향상을 체감하려고 사용하는 것은 효율적인 선택이 아니며, 아래에 있듯이 명확한 목적을 가지고 활용하는 것이 바람직하다.

2. 부팅

램 디스크 부팅으로 iso, wim 같은 파일들로하여 시스템을 부팅해준다. 간단한 원리로 부팅하기전 램디스크를 먼저 할당하고 그안에 부팅파일을 복사하여 부팅해주는 방식. 과거에는 USB 지원이 낮아서 오래 걸렸지만 현재는 고속화되어 훌륭한 수준에 이르렀다.

운영체제 특성상 디스크IO 가 많이 발생하는데 이를 램으로 대체하여 드라이브의 수명에 영향을 거의 안주는 반면 램의 용량을 얼마 못쓰고 업데이트하려면 패키지를 풀어서 부팅한다음 다시 패키징 해야한다.

아직까지는 윈도우 PE Linux initrd[3] 정도에만 공식적인 사용이 되고 있는데 트윅을 통한 경량화, 앱내장으로 PE를 쓰는 사람들도 종종 보인다.

3. 종류

3.1. 소프트웨어 램 디스크

보통 메인 메모리로 장착되어 있는 DRAM 메모리를 가상 드라이브로 사용한다. 이런 램 디스크를 만들어주는 프로그램은 과거부터 꽤 많이 나와있다. 당연하지만, 이걸 쓰려면 램을 빵빵하게 갖춰두어야 한다. 메인 메모리도 부족한데 그걸 보조 메모리로 돌려 쓰는 건 앞뒤가 바뀐 일이다.

32비트 운영체제를 사용하는 컴퓨터에서 기본적으로 지원되는 3GiB ~ 3.5GiB 공간 밖의 주소 영역을 다른 방식으로나마 활용하는 방법으로 쓰인다. 백방을 노력해도 정상적인 환경에서는 사용할 수 없는 부분이니까. [4]

반면 64비트 운영체제에선 16EiB까지 쓸 수 있기 때문에 저런 상황은 없다고 봐도 된다. 메모리 용량이 거기까지 커지려면 이론상 32년은 기다려야 한다.[5] 그러니 64비트 운영체제에서는 극한의 I/O 처리를 해야 하는 특수한 경우가 아닌 이상 램 디스크가 필요하지 않다.

램 디스크는 보통 다음과 같이 활용된다.
  1. 윈도우즈 시스템[6] 및 사용자[7] TMP, TEMP 영역
  2. OS에서 관리하는 페이징 파일(혹은 다른 이름으로 스왑 영역, 속칭 디스크 캐시[8])
  3. 그래픽 툴 등의 워크스테이션 소프트웨어, 웹 브라우저, 기타 업무용 소프트웨어 등의 자체적 캐시 경로를 램 디스크에 할당
  4. 저장장치 액세스 대신 램 위에서 파일 접근 및 조작을 수행하고, 작업의 종류가 휘발성이기를 바라는 경우

1번은 시스템에서 항시 사용하는 부분이므로 이 부분을 램 디스크에 할당할 경우 평소의 시스템 퍼포먼스는 기하급수적으로 올라간다, 단 이 부분은 페이징 파일보다는 적게 요구하긴 하지만 일반적으로 HDD SSD같이 넉넉한 공간임을 가정하고 시스템에서 사용하기에 대부분의 작업에서는 공간이 부족하지 않더라도 몇몇 임시파일을 작성하는 작업(고성능 모드로 실시간 감시를 하는 안티바이러스 소프트웨어, 아래에 설명된 동영상 스트리밍 임시 저장)등에서는 공간이 부족할 수도 있다.

사용 패턴에 따라 적절히 점진적으로 램 디스크 크기를 늘려보고, 그래도 안되면 하단에 설명된 동적 공간으로 설정해보거나 그냥 SSD 등에 할당하자.

요즘에는 웹 브라우저들이 대체로 메모리 캐시 Only 모드를 자체적으로 지원하기에 활용도가 떨어지긴 하지만, 이를 지원하지 않거나 초보가 세팅하기 어려운 웹 브라우저의 디스크 캐시의 호환 용도로 사용하는 경우는 1기가 정도면 넉넉하고 좀 과하게 쓰더라도 2기가면 떡을 친다.
그러나 이 경우 고화질 스트리밍 동영상을 보는 경우 캐시 용량이 모자라서 뻗어버리는 일이 발생하는 점에 유의를 요한다.[9]

몇몇 램디스크 소프트웨어의 경우는 동적 메모리 디스크 기능으로 메모리를 필요할 때만 OS 상에서 더 끌어오고 필요가 없어지면 다시 반환하는 식의 운용으로 위의 문제를 극복 가능하다.

2번의 경우, 32비트 환경에서 이 방식으로 꼼수를 이용해서 4GB 이상의 램을 확장하는 것이 가능하다. 4GB를 넘어서는 남는 용량을 램 디스크로 돌린 다음, 이 공간에 페이징 파일을 올리는 것. 다만 OS는 페이징 파일보다 "실제" 메모리를 우선적으로 사용하기 때문에 64비트 환경만큼의 효율은 나오지 않는다.

이런 경우와 관계 없이 단순히 속도를 향상시키는 방법이라며 이런 팁이 나도는 경우가 있는데, 위와 같은 경우가 아닌, 64비트 환경이거나 32비트 환경에서 메모리가 4GB가 넘지 않는 시스템에서는 이것은 그저 뻘짓에 지나지 않다. 이 문서의 개요 부분을 유심히 읽어보았다면 그 이유를 쉽게 알 수 있을 것이다. 애초에 페이징 파일이란 놈의 주 목적이 램 디스크의 반대 개념인 '실제 메모리가 부족할 때 디스크에서 끌어 쓰는 영역'으로, 램 디스크를 써도 될 정도로 메모리가 충분하다면 딱히 페이징 파일을 신경 써서 관리할 이유가 없는 것. 억지로 이 짓을 하면 램이 부족해서 페이징 파일을 끌어 쓰는데 정작 페이징 파일은 램 디스크 위에 있는 사태가 벌어진다.(...)[10] 더욱이 애초에 램 디스크를 할당하지 않았다면 페이징 파일을 꺼낼 필요가 없었을 수도 있으니(...)

램의 용량이 충분하지 않던 시절에 만들어진 프로그램의 경우 좀 크게 쓸 듯한 데이터를 메모리에 할당할 때 페이지 파일에 먼저 접근하는 경우가 있었지만 최근 프로그램들은 램이 충분하면 무조건 램을 먼저 사용하거나, 정 크다 싶으면(1번이나 3번과 같은 경우) 하드디스크 상에 별도의 임시 파일 폴더를 만들어 사용한다. 굳이 성능 페널티가 발생하는 점을 찾아보자면, 일단 페이징 파일이 할당돼 있으면 운영체제는 이를 캐시 등의 용도로 활용하려 들지만 메모리에 비해서는 보조 기억 장치가 느릴 수밖에 없으므로 여기서 속도 페널티가 발생하는 경우가 생긴다. 이를 막고 싶다면 페이지 파일을 램디스크에 올리는 것 보다는 차라리 페이지 파일을 최소화하거나 안 쓰는 것이 바람직하다.[11]

이러한 캐시를 '휘발성으로 만들어서 작업 후 디스크의 흔적을 없애주는' 프로그램이 Sandboxie 같은 샌드박스 프로그램인데, 원래부터 휘발성이 있는 램디스크의 특성상 이러한 동작이 램디스크와 궁합이 잘 맞는다. Sandboxie의 최근 버전부터는 아예 램디스크 통합 기능을 제공하여 샌드박스를 생성할 때 램디스크로 만들어 주는 옵션이 추가되었다.

3번은 작업용으로 사용할 때 아주 유용한데, 고용량 메모리를 요구하는 소프트웨어는 램디스크 보급 이전의 기존의 시스템 구성을 전제로 1번의 임시 파일 경로 공간을 사용하는데, 이를 아예 소프트웨어 자체에서 제공하는 캐시 경로 설정을 이용해 램디스크의 일반 공간을 사용하는 방법이다.

WinRAR나 IE와 같이 작업 전후로 시스템의 임시 파일 공간이나 디스크에 쓴 후 지정 경로에 복사를 하는 보수적인방식으로 동작하는 소프트웨어, 포토샵이나 동영상 인코딩 등의 스토리지 입출력 병목이 적을수록 유리한 작업에서 각 소프트웨어의 설정에서 램디스크를 골라주거나, 램디스크 하위의 임시 파일용 폴더로 경로를 지정해주면 된다.

4번의 경우에는 드라이브의 수명 감소를 걱정하지 않고 마음껏 고부하의 작업을 수행할 수 있으며, 파일 시스템의 작업 결과가 디스크에 흔적으로 남지 않고 삭제/종료 시 완전히 사라지는 것을 원할 경우에 유용하다. 개인 사용자의 입장에서는 날아가도 큰 문제가 없는 임시작업이나 잡다한 작업을 저장장치 부담 없이 수행할 수 있다는 것이 장점이며, 기업/기관에서는 In-Memory Database 와 같이 저장장치의 성능 한계를 넘는 시스템을 운용할 수 있다는 장점이 있다.

램디스크의 데이터를 종료 및 재부팅 시 날리지 않고 일반 스토리지에 저장 및 읽어 다시 쓰는 옵션을 사용하는 경우, 용량이 너무 커지면 내용 자체를 이미지를 떠서 부팅 시마다 읽어와 다시 저장하는 구조상 시스템 성능에 따라 부팅 속도가 느려질 수도 있기 때문에 램디스크를 사용하는 용도에 따라 적당한 할당량을 부여하는 것이 바람직하다.

그래픽카드의 VRAM도 램디스크로 활용할 수 있다. 예시로 VRAM에 게임을 설치해서 구동시키는 사람이 있다.(...) # 심지어 윈도우 10을 부팅한 사람도 있다.(...)[12]

3.1.1. 목록

무료
상용

3.2. 하드웨어 램 디스크


소프트웨어 램 디스크와 같은 기능을 하드웨어로 지원하는 제품이다.

파일:attachment/gigabye_i_ram.jpg
사진은 GIGABYTE사의 GC-RAMDISK i-RAM이다. 상품 설명 페이지 아마존(US) 판매 페이지

보조기억장치 인터페이스를 거쳐야 하므로 CPU와 버스로 직접 연결된 소프트웨어 램 디스크와 비교하면 속도가 좀 느리다. 일반 사용자용으로 나온 제품은 SATA 인터페이스의 속도가 한계 속도가 될 수밖에 없었다. 그렇다고 해도 초기에는 경쟁 상대가 HDD였으므로, 지금의 SSD와 HDD를 비교하는 것과 마찬가지로 랜덤 읽기/쓰기 성능에서 압도적인 강점을 보여줬으며 순차읽기/쓰기 성능 또한 물리적인 한계로 SATA 인터페이스의 버전과 무관하게 100 MB/s를 조금 넘는 게 고작이었던 HDD에 비해 SATA1 (150MB/s) 인터페이스에서 지원하는 거의 최대 성능을 뽑아낼 수 있는 램디스크가 오히려 우위에 있었다. 하지만 DRAM의 특성 상 전원이 끊기면 데이터가 사라진다는 단점이 있었고, 그래서 배터리를 붙여서 이를 대비했다. 그렇지만, 배터리 용량 문제로 길어 봐야 반나절 정도를 겨우 버티는 정도였기에 사용에 아주 심한 제약을 가지고 있었다. 또한, 배터리 자체가 리튬 이온 전지를 이용하였기 때문에 오래 사용할 시 배터리 수명이 급격히 짧아지는 등의 치명적인 문제가 있었다.

다만 PCI-E 슬롯에 꽂히는 물건의 경우는 전용 전원공급 단자가 브라켓에 달려있어서 거기에 별도의 어댑터같은 걸 물려두게끔 해서 건물의 전기가 나가지 않는 이상 사실상 비휘발성 기억장치처럼 쓸 수 있게 해 주는 참신한(?) 아이디어도 있었다. 컴퓨터 시스템 전체를 24시간 켜두기에는 전기를 너무 많이 먹어서 안 된다면 해당 램디스크 부품 (PCB)만 켜두면 되지 않느냐는 것. 쉽게 말해서 위에 언급된 리튬 이온 전지가 달린 램디스크 모듈의 브라켓에 micro-5pin이(실제로는 다른 전원 단자 규격을 사용하겠지만.) 달려 있고, 컴퓨터 본체 On/Off와 무관하게 휴대폰 충전기같은 걸로 벽 콘센트에 24시간 연결해서 배터리를 24시간 충전하는 컨셉이라고 보면 좋다. 이러면 개인용 모듈이라면 공유기 하나 더 돌리는 전력밖에 안 먹는다.

SATA2 인터페이스의 등장으로 더 빠른 대역폭을 확보할 수 있게 되었고, 램 슬롯도 늘려서 용량도 더 확장 가능한 후속 제품이 출시될 즈음에, SSD 라는 무시무시한 경쟁자가 등장해 버렸다. SSD 역시 SATA2 한계 속도인 300MB/s 에 근접한 성능이 나왔는데, SSD는 배터리도 필요 없고 가격도 램 디스크에 비해서 훨씬 저렴했기 때문에 경쟁이 되질 않았다. 더 나아가 SATA 3의 보급을 가속시킨 것도 모자라 이제는 PCI-E에 직결되는 구조로 정착되고 있다. 결국 하드웨어 기반 램디스크는 SSD에게 밀려났다.

그래도 플래시를 이용한 SSD에 비해서, DRAM 을 이용한 제품은 접근 속도(Latency)면에서 장점이 있기 때문에, 산업용으로는 아직 생산되고 있긴 하다. Texas Memory Systems 라는 회사에서 만드는 RAMSAN 이라는 램디스크 제품군 중에서 RAMSAN-440 이란 제품이 DRAM 을 사용한다. [19] 이 제품은 산업용으로 Fiber Channel 인터페이스를 사용하기 때문에 일반 PC에서 연결하려면 FC 카드가 필요하며, 가격도 상상을 초월하는데 512GB짜리 제품이 무려 1억원을 넘어 간다.(...)

3.2.1. 제품


4. 사용 시 생길 수 있는 문제점

램 디스크 프로그램 및 드라이버의 종류에 따라, 사용하는 프로그램의 호환성 문제가 발생할 수 있다. 소프트웨어가 하드웨어의 동작을 에뮬레이션해주는 특성상, 일반적인 파일 관리 명령만 처리가능해도 램 디스크가 '드라이브로서 인식' 하는 데에는 문제가 없지만, 하드웨어의 세부 명령들까지 충실히 드라이버가 재현해서 램 디스크로 수행해 주는지 여부에 따라, 일부 저수준 시스템 콜을 실행하는 프로그램들에서는 '이 드라이브가 명령을 내린 대로 동작하지 않음' 으로 보일 수 있기 때문이다. 예를 들어 비주얼 스튜디오에서 디버거를 실행하려면 해당 프로젝트 위치에서 저장장치가 특수한 명령들을 수행할 수 있어야 하는데, 일부 고급 소프트웨어를 제외한 많은 램 디스크 소프트웨어에 포함된 드라이버들은 해당 시스템 명령들까지 구현하지 못하기 때문에 제대로 동작을 하지 않는다.

즉, 이러한 이유로 램 디스크에 Temp 폴더 등을 넣어두고 임시 파일을 정리하는 용도로 쓰면 일부 프로그램에서 설치 혹은 업데이트 등에서 문제가 발생할 수 있다. 특히 환경 변수를 직접 램 디스크 폴더로 옮기는 경우에 많이 발생한다. 이런 경우에는 잠시 환경 변수를 기본값으로 원상복구한 후( 하드링크 설정도 해두었다면 반드시 풀어주자), 재부팅하고 진행하면 정상적으로 진행될 때가 많다.

[1] 둘은 비슷한 개념으로, 주로 운영체제에 따라 이름이 달라진다. [2] 기종과 장착 CPU에 따라 다르긴 해도 당시 PC 기준 8비트는 대략 64KB, 16비트는 대략 1MB가 보편적이였다. 이 영역에 I/O라던가 부팅 ROM 영역까지 할당해야 하므로 실제 메인 메모리로 사용 가능한 영역은 훨씬 더 적었다. 예를 들어 8비트 애플 II는 48KB까지를 직접 관리하고 그 이상의 RAM은 뱅크 스위치 방식으로 블럭을 변경, 불편하게 사용할 수밖에 없어 프로그램(명령어 코드)을 넣기 힘들고 그냥 데이터 저장 영역으로 쓰는게 일반적이였으며, 16비트 IBM PC XT 같으면 640KB까지를 직접 관리하고 그 이상은 EMS나 XMS 등으로 별도의 관리 기법이 필요했다. [3] 이것도 결국은 부팅용인 경우가 많다. 단 일부 배포판은 완전한 부팅을 지원한다. [4] 아주 없는 건 아니고 PAE라고 32비트에서 메모리를 확장시키는 규격이 있기는 하다. 다만 Microsoft Windows에서는 2015년 6월 현재 윈도우 최신버전인 윈도우 8버전까지, 서버용 버전을 빼고는 이 기능을 지원하더라도 4GB 이상의 메모리를 쓸 수 있는 버전이 없다(...) 참고. 서드파티 드라이버 관련 문제라고 한다. [5] 간단하다. 2^64=16*1024^6. 32년은 그 유명한 무어의 법칙...혹은 그 파생인 황의 법칙. 하지만 무어의 법칙은 공식적으로 깨졌다고 발표했다... 현재도 미세공정이 극한에 가깝기 때문에 저 정도로 줄이는 것은 기존의 패러다임을 완전히 뒤엎는 기술혁명이 일어나지 않는 이상 어렵다. [6] 기본값 %SystemRoot%\\TEMP [7] 기본값 %USERPROFILE%\\AppData\\Local\\Temp [8] 디스크 캐시라는 말은 엄밀히 말하면 틀린 것이다. 정확한 정의는 디스크에 파일이 실질적으로 기록되기 전 임시로 머무는 장소 혹은 자주 사용되는 파일을 로드해 두는 장소로, 사용자가 직접 건드릴 수 없는 영역이다 [9] 그래서 옛날 유튜브에서는 문제가 되었으나 DASH 방식으로 필요한 부분만 동적으로 스트리밍을 하는 지금은 문제가 없다, 단 그런 유튜브같이 세련된 방식이 아닌 고전적인 방식을 사용하는 고용량 동영상 스트리밍의 경우는 여전히 캐시 크기 부족 문제가 생기므로 유의할 것. [10] 램디스크가 아무리 빠르다고 한들, OS의 디스크 I/O 특성상 램을 네이티브로 읽는 것보다는 훨씬 느리다. 애초에 OS의 디스크 I/O는 HDD NAND SSD 정도에 최적화된 수준이라 3D XPoint의 성능조차 다 써먹지 못한다. [11] 참고로 리눅스에서는 스왑 영역은 할당하고 싶지만 자주 사용되지는 않기를 바라는 사람들을 위해 swappiness라는 설정 변수가 존재하여 스왑 사용 빈도를 설정할 수 있다. 무작정 스왑 영역을 없앨 수는 없는 것이, 리눅스에서는 최대 절전 모드로 들어갈 때 스왑 영역에 시스템 이미지를 저장한다. 윈도우에서는 hiberfil.sys라는 별도의 파일에 저장. [12] 요즘 나오는 하이엔드 그래픽카드는 VRAM 용량이 커서 여유 공간이 많이 있는데 이부분을 활용한 것. [13] 2014-02-17 [14] 2014-08-15 [15] 2022-12-23 [16] 2022-08-26 [17] 2019-01-08 [18] 2023-4-19 [19] 다른 제품군은 모두 플래시 메모리를 사용한다. 참고로 TMS사는 2012년에 IBM에 인수합병됐다. [20] 덕분에 최대 용량이 1GiB * 4가 끝이다. 윈도우 XP만 깔더라도 세심하게 용량 관리를 해줘야 집어넣을 수 있는 수준 [21] 모두 바탕 화면내 PC에서 우클릭 - 속성을 통해서 진행해도 같다. [22] 보통은 따로 설치한 프로그램이 쓰나, 일부 시스템이나 윈도우 내장 프로그램이 쓰기도 한다. 램 디스크에서 하드링크로 할 때에 가장 문제가 될 수 있는 건 TextInputHost.exe. 작업 종료와 거의 동시에 하드링크 설정 명령어를 입력하면 옮길 수 있다(...). [23] 보통은 시스템이나 윈도우 내장 프로그램이 쓴다. 램 디스크에서 하드링크로 할 때에 가장 문제가 될 수 있는 건 Microsoft Office Click-to-Run Service. [24] 설치 및 제거에서만 문제가 발생하는 경우, 대부분 실사용에서는 별다른 문제가 생기지 않는다. 그래서 문제점이 정확하게 무엇인지 더욱 잘 알 수 없게 만든다. 널리 알려진 해결책이 먹히지 않는데 자신이 램 디스크를 쓴다면 상당수가 램 디스크에 환경 변수 변경 등으로 임시 폴더를 옮겨놓아서 생기는 문제이다. [25] 램 디스크 빈공간 최소 5GB 확보 필요 [26] 무한 안전 모드 부팅이 될 때도 있는데, 이 경우에는 윈도우 키 + R을 눌러서 뜬 창에서 msconfig를 입력하고, 일반 탭에서 정상 모드에 체크, 부팅 탭에서 모든 부팅 설정을 영구히 유지(K)에 체크하고 재부팅하면 무한 안전 모드에서 탈출할 수 있다. [27] 파일:0x80070005.png [28] 특히 오류 0x80242008, 0x8024200B, 0x80240017, 0x8024001E 등에 대해 거의 복붙으로 제시되는 해결책들이 안 먹히는 경우, 자신이 램 디스크를 쓴다면 환경 변수를 기본값으로 돌리고 재부팅한 후에 업데이트를 다시 시도해보자. 사실 이 복붙처럼 제시되는 해결책은 다른 원인인 경우에도 생각보다 별로 도움이 안 된다(...).

분류