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
출처 :
답변
당신은 사용해야 의 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에 저장하십시오.