Além disso , tmpfse ramfsoutra opção é o /dev/ram0dispositivo 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 ext4sistema 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_nrparâmetro especifica quantos discos RAM a serem criados (por padrão, ele cria 16, ou seja, /dev/ram0através /dev/ram15). O rd_sizeparâmetro é tamanho em kilobytes . A $(( ... ))sintaxe permite fazer aritmética no shell.
Para desalocar o disco RAM, desmonte-o e remova o brdmó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 truncatecomando 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 tmpfseramfs
Embora tmpfse ramfssejam mais eficientes do que usar um dispositivo de bloco, abaixo estão algumas de suas desvantagens.
tmpfspode 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 dfutilitá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 ramfspara o destino, o meu sistema tornou-se indiferente. O cputilitário aparentemente encheu os buracos na leitura , mas não na escrita.
Ambos tmpfse ramfspodem se comportar de maneira diferente de um ext4sistema de arquivos real . Criar um dispositivo de bloco na RAM e inicializá-lo ext4evita 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