Linux 램 디스크 (/ dev / ram0-/ dev / ram15)의 크기와 크기를 어떻게 변경합니까? 디스크의 크기를

Linux를 사용하면 부팅 할 때 16MB의 16MB 램 디스크가 자동으로 생성되지만 소프트웨어를 테스트하기 위해 실제로 큰 램 디스크 하나를 만들고 싶습니다.

커널 부트 매개 변수를 사용하여 시스템에 이미있는 램 디스크의 크기를 조정할 수 있다는 것을 알았 ramdisk_size습니다. 그러나 이것은 16 개의 램 디스크 (/ dev / ram0-/ dev / ram15)를 모두 지정된 크기로 만듭니다. 따라서 1GB 램 디스크를 만들려면 16GB의 메모리가 필요합니다.

기본적으로 / dev / ram0 인 하나의 10GB 램 디스크를 만들고 싶습니다. 어떻게하면 될까요? 커널 부팅 매개 변수가 있다고 가정했지만 찾지 못했습니다.



답변

커널 컴파일 시간

.config파일 에서 설정할 수있는 두 가지 커널 구성 옵션이 있습니다 .

CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=10485760

이것은 부팅시 10G 인 하나의 램 디스크를 생성하도록 커널을 구성했습니다.

노트:

  • CONFIG_BLK_DEV_RAM_SIZE KB입니다.
  • 컴퓨터에 실제로 RAM보다 많은 메모리를 지정하지 마십시오.
  • 에서 menuconfig장치 Drivers-> 블록 장치에서보기.

부팅 시간

커널 부트 매개 변수를 통해 생성 한 램 디스크의 크기를 지정할 수 있습니다 ramdisk_size. 예를 들면 다음과 같습니다.

kernel /vmlinuz-2.6.32.24 ro root=LABEL=/ rhgb quiet ramdisk_size=10485760

이제 컴퓨터를 부팅하고 파일 시스템을 만들어 마운트하고 블록 장치처럼 정확하게 사용할 수 있습니다.

# mkfs.xfs /dev/ram0
# mount /dev/ram0 /mnt/ramdisk

출처 :

  1. http://www.vanemery.com/Linux/Ramdisk/ramdisk.html [dead]
  2. https://www.kernel.org/doc/Documentation/blockdev/ramdisk.txt

답변

당신은 사용해야 의 tmpfs를 대신합니다.

mount -t tmpfs -o size=10g none /mnt/point

답변

커널 매개 변수를 사용하지 않고 부팅 후 큰 램 디스크를 만듭니다. tmpfs를 사용하고 파일을 만들고 루프를 통해 마운트 한 다음 파일 시스템을 통해 마운트하십시오.

mount -t tmpfs -o size=200M tmpfs temp/
cd temp/
dd if=/dev/zero of=disk.img bs=1M count=199
losetup /dev/loop0 disk.img
mkfs.ext4 /dev/loop0
cd ..
mount /dev/loop0 temp2/

아마도 여러 다른 계층을 거치는 약간의 성능 저하가 있지만 적어도 작동합니다.


답변

다른 옵션은 루프 장치를 사용하는 것입니다 (앞서 언급 한대로 마운트의 loobpack 기능과 반대).

dd if=dev/zero of=myfs.img bs=1M count=1024
losetup /dev/loop0 myfs.img
mkfs.xfs /dev/loop0

이제 / dev / loop는 파일 백업 된 것을 제외하고 앱이 물리적 장치 나 램 디스크처럼 작동하는 합법적 인 블록 장치입니다. 어딘가에 마운트하거나 표준 노드 ioctl을 구현하는 장치 노드에 응용 프로그램을 작동시킬 수 있습니다. 시스템 램을 저장하고 테스트 케이스 등에 유용합니다.

(fdisk myfs.img, 파티션을 생성하고 losetup과 함께 –offset 및 –sizelimit를 사용하여 각 / dev / loopX를 이미지의 특정 파티션으로 지정하면 loop0, loop1은 sdc1, sdc2와 같이됩니다. )


답변

대신 루프 파일을 사용할 수 있습니다. 원하는 크기의 루프 파일을 만들고 (tmpfs 램 디스크에 넣을 경우), 루프 파일을 포맷하고 마운트하십시오.

dd if=/dev/zero of=myfile bs=1G count=10
mkfs.xfs -d file myfile
mount -t xfs -o loop myfile mymntpoint

답변

램 드라이브의 목표는 속도입니다. Tmpfs는 드라이브가 아닙니다. 루프 장치는 드라이브가 아니지만 루프 이미지에 드라이브 이미지를 넣을 수 있습니다. 램 디스크는 “드라이브”드라이브이며 매우 빠른 드라이브입니다. 달리기를 시도하십시오.

hdparm -t /dev/sda

그리고:

hdparm -t /dev/ram0

당신은 내가 무슨 뜻인지 알 수 있습니다! 그러나 hdparm은 때때로 램 드라이브를 파괴합니다. 따라서 다시 만들어야합니다.

때로는 / dev / ram 장치가 없습니다. 하나 만들기 :

mknod -m 0777 /dev/ram0 b 1 0

그러나 크기는 없습니다. 크기를 주려면

dd if=/dev/zero of=/dev/ram0

드라이브가 가득 차면 중지됩니다. 최대 크기는 커널 구성 매개 변수에 의해 결정됩니다 CONFIG_BLK_DEV_RAM_SIZE.

그런 다음 형식을 지정하십시오. 즉

mke2fs /dev/ram0

그리고 그것을 마운트하십시오 :

mount /dev/ram0 /mnt/ramdrive

내가 가장 좋아하는 것은 램 ​​드라이브에 저장된 코드를 디버깅하는 것입니다. 컴파일은 하드 드라이브에 저장된 코드 속도의 10 배 이상입니다. ramdrive에 저장된 데이터베이스 테이블도 작동하지만 하드 디스크에 정기적으로 쓰는 스크립트가 있어야합니다. 대부분의 관리자는 램 디스크에 데이터를 넣을 용기가 없습니다. 그리고 일부 테이블이 너무 큽니다.


답변

등대 64 (슬랙웨어 기반의 puupy linux)에서 나는 이것을했다.

mke2fs /dev/ram1 4096000 # nearly 4G ramdisk, choose the size of ramdisk less than actual ram!
mount /dev/ram1 /mnt/dvd # dvd on my laptop is unused choose your device from /mnt/

램 디스크는 램을 /mnt/dvd제외하고 hd 디렉토리에서와 같이 모든 것을 복사하여 붙여 넣기 할 수 있는 디렉토리로 램 디스크를 마운트했습니다 . 종료하기 전에 파일을 hd에 저장하십시오.