
Linux를 사용하면 부팅할 때 자동으로 16개의 16MB 램디스크가 생성되지만 일부 소프트웨어를 테스트하기 위해 매우 큰 램디스크 하나를 만들고 싶습니다.
커널 부팅 매개변수를 사용하여 시스템에 이미 있는 램디스크의 크기를 조정할 수 있다는 것을 알았습니다. ramdisk_size
그러나 이렇게 하면 16개의 램디스크(/dev/ram0 - /dev/ram15)가 모두 지정된 크기가 됩니다. 따라서 1GB 램디스크를 생성하려면 16GB의 메모리가 필요합니다.
기본적으로 /dev/ram0이라는 10GB 램디스크 하나를 만들고 싶습니다. 그렇게 하려면 어떻게 해야 할까요? 커널 부팅 매개변수가 있다고 가정하지만 찾지 못했습니다.
답변1
커널 컴파일 시간
파일에서 설정할 수 있는 커널 구성 옵션은 두 가지가 있습니다 .config
.
CONFIG_BLK_DEV_RAM_COUNT=1
CONFIG_BLK_DEV_RAM_SIZE=10485760
이는 부팅 시 10G인 램디스크 하나를 생성하도록 커널을 구성했습니다.
노트:
CONFIG_BLK_DEV_RAM_SIZE
KB에 있습니다.- 컴퓨터에 실제로 있는 RAM보다 더 많은 메모리를 지정하지 마십시오.
menuconfig
장치 드라이버->블록 장치를 살펴보세요 .
부팅 시간
커널 부팅 매개변수를 통해 생성하는 RAM 디스크의 크기를 지정할 수 있습니다 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
출처:
답변2
당신은 사용해야합니다tmpfs대신에.
mount -t tmpfs -o size=10g none /mnt/point
답변3
커널 매개변수를 조작하지 않고 부팅 후 대형 램 디스크를 만듭니다. 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/
아마도 여러 다른 레이어를 거치면서 약간의 성능 저하가 있을 수 있지만 적어도 작동합니다.
답변4
램드라이브의 목적은 속도입니다. Tmpfs는 드라이브가 아닙니다. 루프 장치는 드라이브가 아니지만 루프 장치에 드라이브 이미지를 넣을 수 있습니다. RAM 디스크는 드라이브이며 매우 빠른 드라이브입니다. 다음을 실행해 보세요.
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배입니다. 램드라이브에 저장된 데이터베이스 테이블도 작동하지만 주기적으로 하드 디스크에 쓰는 스크립트가 있어야 합니다. 대부분의 관리자는 램 디스크에 데이터를 저장할 용기가 없습니다. 그리고 일부 테이블은 너무 큽니다.