Linux: Como criar e anexar um RamDisk sem montá-lo?

0

No Linux, como um disco RAM pode ser criado e anexado sem ser montado? Além disso, como pode ser encontrado o nome do dispositivo como /dev/sdb atribuído ao disco RAM? Por fim, como o disco RAM (que não está montado) pode ser desanexado?

Eu gostaria de criar e anexar um disco RAM, mas não quero montá-lo. Eu quero deixar desmontado.

No Mac OS X, o seguinte comando cria e anexa um disco RAM de 100MiB sem montá-lo.

hdiutil attach -nomount ram://204800

# In terms of the number of 512-byte sectors,
# 100 MiB is equivalent to 204800 sectors.

Após a conclusão bem-sucedida, o comando acima retorna o nome do dispositivo, como /dev/disk1 , atribuído ao RamDisk. Entretanto, mais tarde, quando você esquecer o nome do dispositivo, poderá encontrá-lo pelos seguintes comandos OSX (bem como pelo Utilitário de Disco do aplicativo GUI).

# Displays the list of attached disks.
diskutil list

# Displays the details of a specific disk.
diskutil info /dev/disk1

Por fim, no Mac OS X, para desconectar o disco RAM, não importando se ele foi montado, o seguinte comando (assim como o Utilitário de Disco do aplicativo GUI) funciona. Este comando automaticamente desmonta primeiro se tiver sido montado.

hdiutil detach /dev/disk1

No Linux, como todas as três operações acima podem ser alcançadas? (Se as operações que estou pedindo podem depender de distros, então estou particularmente interessado no Debian 9.)

Uma das razões pelas quais eu não quero que o disco RAM seja montado é que eu quero executar alguns experimentos no comando dd lendo e gravando diretamente em um disco (ou dispositivo), ignorando o sistema de arquivos. Na verdade, o modo de gravação direta de dd exige que o volume no dispositivo seja desmontado, mas o dispositivo ainda esteja conectado e não seja ejetado.

No Linux, o comando mount a seguir cria, anexa e monta um disco RAM de 100 MiB.

mkdir /mnt/ramdisk
mount -t tmpfs -o size=100m tmpfs /mnt/ramdisk

No entanto, não sei como desativar a parte "montagem".

A propósito, para aqueles que querem saber como montar, além de criar e anexar, um disco RAM no Mac OS X, aqui está o comando.

diskutil erasevolume HFS+ "RamD" $(hdiutil attach -nomount ram://204800)

# 204800 is the number of 512-byte sectors,
# resulting in 100 MiB.
#
# "RamD" is a volume name or label.
#
# "erasevolume" means to format the volume, 
# but it does not necessarily write zeros.
    
por i7pj3qnuz 20.12.2017 / 10:06

1 resposta

2

O problema no seu caso é que com o tmpfs não há nenhum dispositivo de bloco baseado em RAM para montar. Normalmente, quando o Linux lê de um sistema de arquivos, os arquivos residem em um dispositivo de bloco, normalmente uma partição do disco rígido. Quando os arquivos são lidos do disco (o armazenamento de apoio), os dados são armazenados em cache na RAM.

Tmpfs corta o armazenamento de apoio: as gravações vão para o cache e leem os dados gravados do cache. Isso significa que não há nenhum dispositivo de bloco para o qual você pode dd .

Para sua necessidade, recomendo usar um dispositivo de loop, que permite montar uma imagem de disco armazenada em um arquivo como um sistema de arquivos. Por exemplo:

losetup /dev/loop0 filesys.image

onde filesys.image é um arquivo contendo uma imagem do sistema de arquivos. Isso faz com que /dev/loop0 pareça um dispositivo de bloco com o arquivo filesys.image como armazenamento de apoio. Veja man losetup .

    
por 20.12.2017 / 10:56