Além disso , tmpfs
e ramfs
outra opção é o /dev/ram0
dispositivo de bloco. Nas versões recentes do Ubuntu, este dispositivo não existe por padrão, mas pode ser criado via modprobe brd
.
Essa abordagem é mais previsível, pois cria um ext4
sistema de arquivos real e nunca excede o limite especificado. Mas são necessárias mais etapas para configurar e usa a RAM com menos eficiência.
Usando o módulo brd kernel (/ dev / ram0)
Para criar e inicializar um disco de 4 GB de RAM:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
O rd_nr
parâmetro especifica quantos discos RAM a serem criados (por padrão, ele cria 16, ou seja, /dev/ram0
através /dev/ram15
). O rd_size
parâmetro é tamanho em kilobytes . A $(( ... ))
sintaxe permite fazer aritmética no shell.
Para desalocar o disco RAM, desmonte-o e remova o brd
módulo do kernel:
umount /ramdisk
modprobe -r brd
Criando um dispositivo de bloco dentro ramfs
Como alternativa, você pode criar um dispositivo de bloco dentro de ramfs
:
mkdir /ramdisk-storage /ramdisk
mount -t ramfs ramfs /ramdisk-storage
truncate -s 4G /ramdisk-storage/ramdisk.img
mkfs.ext4 /ramdisk-storage/ramdisk.img
mount /ramdisk-storage/ramdisk.img /ramdisk
O truncate
comando cria um arquivo vazio de um determinado tamanho, para que seja inicializado (ou seja, consome memória) sob demanda.
Para desalocar o disco RAM, desmonte-o e exclua a imagem do disco:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
Comparação com tmpfs
eramfs
Embora tmpfs
e ramfs
sejam mais eficientes do que usar um dispositivo de bloco, abaixo estão algumas de suas desvantagens.
tmpfs
pode trocar para o disco. Isso é mais eficiente, mas pode haver momentos em que você queira um disco de RAM puro:
- Os arquivos com os quais você está trabalhando são sensíveis (por exemplo, arquivos de uma partição criptografada).
- Você está testando o desempenho e não deseja que a E / S do disco seja um fator (o tempo de gravação do SSD pode variar bastante).
- Você está descompactando um arquivo grande e não deseja desgastar seu SSD.
ramfs
é fácil de configurar, recupera espaço depois de excluir arquivos e usa a RAM com mais eficiência (o sistema não armazena em buffer os arquivos porque sabe que eles estão na RAM). Mas tem suas próprias desvantagens e surpresas:
O df
utilitário não relata o uso de espaço:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
Não há parâmetro de limite de tamanho. Se você colocar muito no ramdisk, seu sistema travará.
Arquivos esparsos podem ficar desparasitados quando você menos espera. Esta manhã, copiei uma imagem de VM (150G, mas 49G usada no disco) para ramfs
(tenho 128G de RAM). Isso funcionou. Mas quando eu copiei a partir da ramfs
para o destino, o meu sistema tornou-se indiferente. O cp
utilitário aparentemente encheu os buracos na leitura , mas não na escrita.
Ambos tmpfs
e ramfs
podem se comportar de maneira diferente de um ext4
sistema de arquivos real . Criar um dispositivo de bloco na RAM e inicializá-lo ext4
evita isso.
Para uma comparação mais aprofundada: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs