在 Linux 上,如何在不挂载的情况下创建和附加 RAM 磁盘?另外,如何/dev/sdb
找到分配给 RAM 磁盘的设备名称?最后,如何分离RAM盘(未挂载的)呢?
我想创建并附加 RAM 磁盘,但不想安装它。我想把它卸下来。
在 Mac OS X 上,以下命令创建并附加 100MiB RAM 磁盘而不安装它。
hdiutil attach -nomount ram://204800
# In terms of the number of 512-byte sectors,
# 100 MiB is equivalent to 204800 sectors.
成功完成后,上述命令将返回设备名称,例如/dev/disk1
分配给 RamDisk 的设备名称。但是,稍后当您忘记设备名称时,可以通过以下 OSX 命令(以及 GUI 应用程序磁盘工具)找到它。
# Displays the list of attached disks.
diskutil list
# Displays the details of a specific disk.
diskutil info /dev/disk1
最后,在 Mac OS X 上,要分离 RAM 磁盘,无论是否已安装,以下命令(以及 GUI 应用程序磁盘工具)都有效。如果已安装,此命令将首先自动卸载它。
hdiutil detach /dev/disk1
在Linux上,如何实现以上三个操作呢? (如果我要求的操作可能依赖于发行版,那么我对 Debian 9 特别感兴趣。)
我不想挂载 RAM 磁盘的原因之一是我想对dd
直接在磁盘(或设备)上读写的命令进行一些实验,绕过文件系统。事实上,直写模式dd
需要卸载设备上的卷,但设备仍处于附加状态且不弹出。
在 Linux 上,以下mount
命令创建、附加并安装 100MiB RAM 磁盘。
mkdir /mnt/ramdisk
mount -t tmpfs -o size=100m tmpfs /mnt/ramdisk
但是,我不知道如何禁用“安装”部分。
顺便说一句,对于那些想知道除了创建和附加之外如何在 Mac OS X 上安装 RAM 磁盘的人,这里是命令。
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.
答案1
您的情况的问题是,对于 tmpfs,没有可以安装的基于 RAM 的块设备。通常,当 Linux 从文件系统读取时,文件驻留在块设备上,通常是硬盘分区。当从磁盘(后备存储)读取文件时,数据会缓存在 RAM 中。
Tmpfs 切断后备存储:写入到缓存,读取从缓存读回写入的数据。这意味着没有可以dd
访问的块设备。
根据您的需要,我建议使用循环设备,它使您能够将存储在文件中的磁盘映像挂载为文件系统。例如:
losetup /dev/loop0 filesys.image
其中filesys.image
是包含文件系统映像的文件。这使得/dev/loop0
看起来像一个以文件filesys.image
作为后备存储的块设备。看man losetup
。