램 디스크
1. 개요
RAM disk. 램 드라이브(RAM drive)라고도 불린다.
MS-DOS 시절부터 지원된 기능으로, RAM의 공간 일부를 주 기억 공간이 아니라 보조 저장 공간으로 끌어오는 소프트웨어/장치. 반대 개념으로는 페이징 파일 혹은 스왑 영역[1] 이 있다. 이들은 메인 메모리가 부족할 때 디스크의 일부 공간을 메모리 용도로 쓰는 것이다.
2. 용도
크게 두 가지가 있다. 32비트 운영체제는 4GB 이상의 램을 사용할 수 없는데, 4GB 이상의 램을 장착한 32비트 시스템에서 남는 램을 사용할 수 있도록 하는 것이 가능하다. 또한 안전한 임시 저장소의 역할을 할 수 있다. 휘발성 장치라는 램의 특성상 전원이 날아가 버리면 저장해둔 내용도 몽땅 날아가므로, 캐시 데이터나 남들이 나중에 훔쳐보면 안 되는 데이터를 저장하는데 사용한다. 아니면 삭제할 파일들.
'''32비트 운영체제에서 4기가 이상의 램을 정상적인 램처럼 추가로 쓸 수 있게 해주는 것만이 용도가 아니다.''' 램 디스크는 남는 램을 '''기억 장치'''로 돌려 쓰는 것이며, 즉 '''탐색기나 다른 프로그램을 이용해 파일을 쓰고 지울 수 있는 공간이 되는 것'''이다. 램은(RAID NVMe SSD를 제외한[2] ) 어떤 보조 기억 장치보다도 빠른 기억 장치이므로 이것을 이용해 읽기/쓰기 속도를 최대화하는 것이 주 목적이다.
2.1. 부팅
램 디스크 부팅으로 iso, wim 같은 파일들로하여 시스템을 부팅해준다. 간단한 원리로 부팅하기전 램디스크를 먼저 할당하고 그안에 부팅파일을 복사하여 부팅해주는 방식. 과거에는 USB 지원이 낮아서 오래 걸렸지만 현재는 고속화되어 훌륭한 수준에 이르렀다.
운영체제 특성상 디스크IO 가 많이 발생하는데 이를 램으로 대체하여 드라이브의 수명에 영향을 거의 안주는 반면 램의 용량을 얼마 못쓰고 업데이트하려면 팻키지를 풀어서 부팅한다음 다시 팻키징 해야한다.
아직까지는 윈도우 PE 정도에만 공식적인 사용이 되고 있는데 트윅을 통한 경량화, 앱내장으로 PE를 쓰는 사람들도 종종 보인다.
2.2. 소프트웨어 램 디스크
보통 메인 메모리로 장착되어 있는 DRAM 메모리를 가상 드라이브로 사용한다. 이런 램 디스크를 만들어주는 프로그램은 과거부터 꽤 많이 나와있다. 당연하지만, 이걸 쓰려면 램을 빵빵하게 갖춰두어야 한다. 메인 메모리도 부족한데 그걸 보조 메모리로 돌려 쓰는 건 앞뒤가 바뀐 일이다.
32비트 운영체제를 사용하는 컴퓨터에서 기본적으로 지원되는 3GiB ~ 3.5GiB 공간 밖의 주소 영역을 다른 방식으로나마 활용하는 방법으로 쓰인다. '''백방을 노력해도 정상적인 환경에서는 사용할 수 없는 부분이니까.''' [3]
반면 64비트 운영체제에선 16EiB까지 쓸 수 있기 때문에 저런 상황은 없다고 봐도 된다. 메모리 용량이 거기까지 커지려면 이론상 32년은 기다려야 한다.[4] 그러니 64비트 운영체제에서 램 디스크를 위와 같은 이유로 쓰는 것은 헛짓이라고 보면 된다.
램 디스크는 보통 1. 윈도우즈 시스템과 사용자 TMP, TEMP 영역 / 2. OS에서 관리하는 페이징 파일(혹은 다른 이름으로 스왑 영역, 속칭 디스크 캐시[5] ) / 3. Adobe사 소프트웨어 등의 업무용, 웹 브라우저등의 주 사용 소프트웨어, 기타 소프트웨어등의 자체적 캐시 경로를 램 디스크에 할당하는 방식 등으로 활용된다.
1번은 시스템에서 항시 사용하는 부분이므로 이 부분을 램 디스크에 할당할수록 평소의 시스템 퍼포먼스는 기하급수적으로 올라간다, 단 이 부분은 페이징 파일보다는 적게 요구하긴 하지만 일반적으로 HDD나 SSD같이 넉넉한 공간임을 가정하고 시스템에서 사용하기에 대부분의 작업에서는 공간이 부족하지 않더라도 몇몇 임시파일을 작성하는 작업(고성능 모드로 실시간 감시를 하는 안티바이러스 소프트웨어, 아래에 설명된 동영상 스트리밍 임시 저장)등에서는 공간이 부족할 수도 있다.
사용 패턴에 따라 적절히 점진적으로 램 디스크 크기를 늘려보고, 그래도 안되면 하단에 설명된 동적 공간으로 설정해보거나 그냥 SSD 등에 할당하자.
요즘에는 웹 브라우저들이 대체로 메모리 캐시 Only 모드를 자체적으로 지원하기에 활용도가 떨어지긴 하지만, 이를 지원하지 않거나 초보가 세팅하기 어려운 웹 브라우저의 디스크 캐시의 호환 용도로 사용하는 경우는 1기가 정도면 넉넉하고 좀 과하게 쓰더라도 2기가면 떡을 친다.
그러나 이 경우 고화질 스트리밍 동영상을 보는 경우 캐시 용량이 모자라서 뻗어버리는 일이 발생하는 점에 유의를 요한다.[6]
몇몇 램디스크 소프트웨어의 경우는 '''동적 메모리 디스크 기능'''으로 메모리를 필요할 때만 OS 상에서 더 끌어오고 필요가 없어지면 다시 반환하는 식의 운용으로 '''위의 문제를 극복 가능'''하다.
2번의 경우, 32비트 환경에서 이 방식으로 꼼수를 이용해서 4GB 이상의 램을 확장하는 것이 가능하다. 4GB를 넘어서는 남는 용량을 램 디스크로 돌린 다음, 이 공간에 페이징 파일을 올리는 것. 다만 OS는 페이징 파일보다 "실제" 메모리를 우선적으로 사용하기 때문에 64비트 환경만큼의 효율은 나오지 않는다.
이런 경우와 관계 없이 단순히 속도를 향상시키는 방법이라며 이런 팁이 나도는 경우가 있는데, 위와 같은 경우가 아닌, 64비트 환경이거나 32비트 환경에서 메모리가 4GB가 넘지 않는 시스템에서는 이것은 그저 뻘짓에 지나지 않다. 이 문서의 개요 부분을 유심히 읽어보았다면 그 이유를 쉽게 알 수 있을 것이다. 애초에 페이징 파일이란 놈의 주 목적이 램 디스크의 반대 개념인 '실제 메모리가 부족할 때 디스크에서 끌어 쓰는 영역'으로, 램 디스크를 써도 될 정도로 메모리가 충분하다면 딱히 페이징 파일을 신경 써서 관리할 이유가 없는 것. 억지로 이 짓을 하면 램이 부족해서 페이징 파일을 끌어 쓰는데 정작 페이징 파일은 램 디스크 위에 있는 사태가 벌어진다.(램디스크가 아무리 빨라봐야, OS의 디스크 I/O 특성상 램을 네이티브로 읽는 것보다는 훨씬 느리다. 애초에 OS의 디스크 I/O는 HDD와 NAND SSD 정도에 최적화된 수준이라 3D XPoint의 성능조차 다 써먹지 못한다.) 더욱이 애초에 램 디스크를 할당하지 않았다면 페이징 파일을 꺼낼 필요가 없었을 수도 있으니(...)
램의 용량이 충분하지 않던 시절에 만들어진 프로그램의 경우 좀 크게 쓸 듯한 데이터를 메모리에 할당할 때 페이지 파일에 먼저 접근하는 경우가 있었지만 최근 프로그램들은 램이 충분하면 무조건 램을 먼저 사용하거나, 정 크다 싶으면(1번이나 3번과 같은 경우) 하드디스크 상에 별도의 임시 파일 폴더를 만들어 사용한다. 굳이 성능 페널티가 발생하는 점을 찾아보자면, 일단 페이징 파일이 할당돼 있으면 운영체제는 이를 캐시 등의 용도로 활용하려 들지만 메모리에 비해서는 보조 기억 장치가 느릴 수 밖에 없으므로 여기서 속도 페널티가 발생하는 경우가 생긴다. 이를 막고 싶다면 페이지 파일을 램디스크에 올리는 것 보다는 차라리 페이지 파일을 최소화하거나 안 쓰는 것이 바람직하다.[7]
3번은 작업용으로 사용할 때 아주 유용한데, 고용량 메모리를 요구하는 소프트웨어는 램디스크 보급 이전의 기존의 시스템 구성을 전제로 1번의 임시 파일 경로 공간을 사용하는데, 이를 아예 소프트웨어 자체에서 제공하는 캐시 경로 설정을 이용해 램디스크의 일반 공간을 사용하는 방법이다.
WinRAR나 IE와 같이 작업 전후로 시스템의 임시 파일 공간이나 디스크에 쓴 후 지정 경로에 복사를 하는 방식으로 동작하는 소프트웨어, 포토샵이나 동영상 인코딩 등의 스토리지 입출력 병목이 적을수록 유리한 작업에서 각 소프트웨어의 설정에서 램디스크를 골라주거나, 램디스크 하위의 임시 파일용 폴더로 경로를 지정해주면 된다.
램디스크의 데이터를 종료 및 재부팅 시 날리지 않고 일반 스토리지에 저장 및 읽어 다시 쓰는 옵션을 사용하는 경우, 용량이 너무 커지면 내용 자체를 이미지를 떠서 부팅 시마다 읽어와 다시 저장하는 구조상 시스템 성능에 따라 부팅 속도가 느려질 수도 있기 때문에 램디스크를 사용하는 용도에 따라 적당한 할당량을 부여하는 것이 바람직하다.
참고로 Windows 10의 경우 램디스크를 켠 상태로 업그레이드[8] 를 시도하면 업데이트 중 높은 확률로 무한루프에 빠지는 경우가 생기기 때문에 반드시 끄고 업그레이드를 해야 한다.
그래픽카드의 VRAM도 램디스크로 활용할 수 있다.
2.2.1. 목록
'''무료'''
- ASRock XFast RAM v3.0.3 [9] CN - ASRock사 메인보드 번들 소프트웨어
- ImDisk v2.0.10 built 25 [10] - 부팅시 ramdisk 자동생성 기능 없음
- ImDisk Toolkit [11] - ImDisk Virtual Disk Driver포함된 All-in-one패키지
- StarWind RAM Disk
- Primo Ramdisk(VSuite Ramdisk 2) v6.3.1 [12] - 30일 평가판 제공
- RAMDisk v4.4.0 RC36 - 개인사용자 무료버전 제공
- Softperfect ramdisk v4.0.9 [13] - 30일 평가판 제공
- Ultra RAMDisk v1.65 - 개인 비상업용 Lite버전 제공 (기능제한)
2.3. 하드웨어 램 디스크
소프트웨어 램 디스크와 같은 기능을 하드웨어로 지원하는 제품이다.
[image]
사진은 GIGABYTE사의 GC-RAMDISK i-RAM이다. 상품 설명 페이지 아마존(US) 판매 페이지
보조기억장치 인터페이스를 거쳐야 하므로 CPU와 버스로 직접 연결된 소프트웨어 램 디스크와 비교하면 속도가 좀 느리다. 일반 사용자용으로 나온 제품은 SATA 인터페이스의 속도가 한계 속도가 될 수 밖에 없었다. 그렇다고 해도 초기에는 경쟁 상대가 HDD였으므로, 속도 면에서 상당히 강점을 보였다. 당시 HDD는 겨우 20~30 MB/s 정도의 전송 속도를 가졌지만, 초기의 램 디스크 제품은 SATA 1의 한계 속도인 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 을 사용한다. [14] 이 제품은 산업용이기에, 인터페이스가 Fiber Channel이기 때문에 일반 PC에서 연결하려면 FC 카드가 필요하며, 가격도 상상을 초월하는데 '''512GB짜리 제품이 무려 1억원을 넘어 간다.(...)'''
2.3.1. 제품
- 야노 전기 YR833 : PCI 슬롯을 사용하는 제품.
- GIGABYTE i-RAM : SATA 연결에 DDR 1세대를 사용하는 제품[15] . 2005년 발매. 현재 발매 중지.
- GIGABYTE i-RAM BOX : 5인치 베이에 연결하는 제품. 2008년 발매.
- ACARD ANS-9010 : 2008년 발매. 5인치 베이에 연결하는 제품. 32기가까지 지원한다.
- TMS RAMSAN-440 : 산업용 DRAM 저장장치.
[1] 둘은 비슷한 개념으로 주로 운영체제에 따라 이름이 달라진다[2] 예시로 980 PRO를 4개만 RAID 해도 램의 속도를 따라잡는다.[3] 아주 없는 건 아니고 PAE라고 32비트에서 메모리를 확장시키는 규격이 있기는 하다. 다만 Microsoft Windows에서는 2015년 6월 현재 윈도우 최신버전인 윈도우 8버전까지, 서버용 버전을 빼고는 이 기능을 지원하더라도 4GB 이상의 메모리를 쓸 수 있는 버전이 없다(...)참고. 서드파티 드라이버 관련 문제라고 한다.[4] 간단하다. 2^''64''=''16''*1024^6. 32년은 그 유명한 무어의 법칙...혹은 그 파생인 황의 법칙. 현재도 미세공정이 극한에 가깝기 때문에 저 정도로 줄이는 것은 기존의 패러다임을 완전히 뒤엎는 기술혁명이 일어나지 않는 이상 어렵다.[5] 디스크 캐시라는 말은 엄밀히 말하면 틀린 것이다. 정확한 정의는 디스크에 파일이 실질적으로 기록되기 전 임시로 머무는 장소 혹은 자주 사용되는 파일을 로드해 두는 장소로, 사용자가 직접 건드릴 수 없는 영역이다[6] 그래서 옛날 유튜브에서는 문제가 되었으나 DASH 방식으로 필요한 부분만 동적으로 스트리밍을 하는 지금은 문제가 없다, 단 그런 유튜브같이 세련된 방식이 아닌 고전적인 방식을 사용하는 고용량 동영상 스트리밍의 경우는 여전히 캐시 크기 부족 문제가 생기므로 유의할 것.[7] 참고로 리눅스에서는 스왑 영역은 할당하고 싶지만 자주 사용되지는 않기를 바라는 사람들을 위해 swappiness라는 설정 변수가 존재하여 스왑 사용 빈도를 설정할 수 있다. 무작정 스왑 영역을 없앨 수는 없는 것이, 리눅스에서는 최대 절전 모드로 들어갈 때 스왑 영역에 시스템 이미지를 저장한다. 윈도우에서는 hiberfil.sys라는 별도의 파일에 저장.[8] 윈도우 업데이트가 아니다! 대표적으로 Redstone 1 에서 Redstone 2로 판올림하는 것[9] 2014-08-15[10] 2018-11-25[11] 2020-3-15[12] 2019-01-08[13] 2019-3-14[14] 다른 제품군은 모두 플래시 메모리를 사용한다. 참고로 TMS사는 2012년에 IBM에 인수합병됐다.[15] 덕분에 최대 용량이 1GiB * 4가 끝이다. 윈도우 XP만 깔더라도 세심하게 용량 관리를 해줘야 집어넣을 수 있는 수준