标签: ramdisk

在 Linux 上创建 ram 磁盘

我有一台机器有 62GB 的 RAM,而后备箱只有 7GB,所以我想我会创建一个 RAM 磁盘并在那里编译。我不是 Linux 专家。我在互联网上找到了创建 RAM 磁盘的说明:

mkfs -q /dev/ram1 8192
Run Code Online (Sandbox Code Playgroud)

但是我将 8192 更改为 16777216 以尝试分配 16GB 的 ram 磁盘。

我收到以下错误:

mkfs.ext2: Filesystem larger than apparent device size.
Proceed anyway? (y,n) 
Run Code Online (Sandbox Code Playgroud)

在这一点上,我受到惊吓并被保释。

sudo dmidecode --type 17 | grep Size
Run Code Online (Sandbox Code Playgroud)

显示

8x8192MB + 2048MB = 67584 MB
Run Code Online (Sandbox Code Playgroud)

du/dev804K

这是问题吗?我能克服那个/dev尺寸吗?

linux ramdisk

84
推荐指数
4
解决办法
10万
查看次数

保留固定 RAM 内存区域作为块设备(具有给定的起始物理地址)

有很多关于 RAM 磁盘的问题,我知道 ramfs 和 tmpfs 允许将 ram 用作块设备。然而,我的兴趣是使用固定的内存地址范围作为块设备。

这是因为必须使用我的系统中可用的非易失性 RAM。我有 6GB 的 RAM 可用,以及 8GB 的​​非易失性 RAM。/proc/iomem 的输出给了我以下内容

100000000-17ffffffff:系统内存

180000000-37ffffffff : 保留

这里从 6GB 到 14GB 的区域对应于非易失性 RAM 区域,该区域由 E820 BIOS 内存映射标记为保留。我的主要意图是将此 NVRAM 用作 linux 中的块设备。这对于测试 NVRAM 系统很有用。是否已经存在任何允许我将此区域用作块设备的 linux 命令,或者我是否必须编写自己的内核设备驱动程序来实现相同的功能?

linux memory ramdisk

13
推荐指数
1
解决办法
4218
查看次数

是否有可以完全加载到 RAM 中的 linux 操作系统?

我的 PC 中有 32 GB 内存。这对于 linux 操作系统来说已经足够了。是否有易于使用的 Linux 版本(最好是 Ubuntu),可以通过光盘或 USB 磁盘启动并完全在 RAM 中运行?我知道 Live 光盘可以用硬盘启动,但内容仍然会从光盘上运行,这需要一段时间才能加载。我希望所有内容都加载到 RAM 中,然后从那里运行,完全不稳定。我需要创建的任何文件都将保存到 USB 磁盘。

我知道http://en.wikipedia.org/wiki/List_of_Linux_distributions_that_run_from_RAM但这些都依赖于一点点 RAM。我更喜欢像 Ubuntu 这样的东西而不是这些轻量级的版本。

ram ramdisk

13
推荐指数
2
解决办法
5万
查看次数

tmpfs从哪里来以及如何挂载

我正在使用带有 Linux 的 BeagleBone 板。

当我输入命令“ df -h ”时,我看到 tmpfs 被安装了几次。

这是否意味着所有这些条目都安装在同一位置,或者 tmpfs 的不同部分?

这让我想到了另一件事我不太明白。这个 tmpfs 文件系统实际上是在哪里创建的?我猜它是在 Linux 启动时发生的。我应该能够找到创建此文件系统的脚本吗?

tmpfs                   242.4M         0    242.4M   0% /dev/shm
tmpfs                   242.4M      8.3M    234.2M   3% /run
tmpfs                   242.4M         0    242.4M   0% /sys/fs/cgroup
tmpfs                   242.4M     36.0K    242.4M   0% /tmp
tmpfs                   242.4M     16.0K    242.4M   0% /var/volatile
tmpfs                   242.4M     16.0K    242.4M   0% /var/lib
Run Code Online (Sandbox Code Playgroud)

linux filesystems mount tmpfs ramdisk

13
推荐指数
1
解决办法
2万
查看次数

Debian 8 KVM 来宾 - 加载初始 ramdisk

我已经为 Ubuntu 14.04 KVM 主机更新了我的KVM 管理脚本以支持 debian 8 来宾。手动安装后(预置脚本还不起作用),我在启动时遇到以下消息:

在此处输入图片说明

在安装过程中,我:

  • 仅选择 ssh 服务器和基本系统实用程序。
  • 将 grub 引导加载程序设置为安装到唯一列出的选项。
  • 对一个分区上的所有内容使用引导式分区模式。
  • 使用当地的英国镜像。

是否需要小心执行某些步骤,或者 Debian 8 尚未安装为 KVM 来宾?


更新

在放弃并决定通过将所有行更新/etc/apt/sources.listjessie而不是将 debian 7 VM 升级到 debian 8之后wheezy,我发现我最终得到了相同的行为。

然而,这个实例有一个静态 IP,我发现我仍然可以通过 SSH 连接到该 IP 上的服务器,所以看起来这是某种图形问题,服务器确实设法启动,我们只是看不到登录文本。我该如何解决这个问题?


更新

这一次,在通过升级 debian 7 创建的 debian 安装上,我可以从 grub 菜单中单击高级并选择现在可用的 (sysvinit) 选项。我希望这可以解释启动的正常版本出了什么问题?

在此处输入图片说明

kvm boot debian ramdisk

10
推荐指数
1
解决办法
9969
查看次数

您可以将带宽限制到基于 tmpfs 的 ramdisk 吗?

我使用 tmpfs 创建了一个 ramdisk,如下所示:

sudo mount -t tmpfs -o size=1024m tmpfs /myramdisk
Run Code Online (Sandbox Code Playgroud)

我正在研究 cgroup blkio 子系统带宽限制“read_bps_device”和“write_bps_device”,但它们似乎需要您想要限制访问的块设备的主要和次要编号。

有没有办法实现与内存中 tmpfs ramdisk 类似的带宽限制?

更新:我找到了一种迂回的方法来完成这个。我先nfs 导出ramdisk 挂载。然后 nfs 在同一台机器上通过环回挂载它。然后我使用 linux 网络流量整形来设置带宽限制。这似乎提供了我需要的东西。我正在执行一些测量以查看这种可怕的分层所带来的损失。过几天我会更新这方面的信息。

io bandwidth limit cgroups ramdisk

9
推荐指数
1
解决办法
986
查看次数

RAM 替代 SSD 上的交换分区或交换文件

我的 Debian 伸展系统有很多内存。目前,它在 SSD 上使用加密交换分区,但在正常情况下,我不希望内存不足导致使用它。

但是根据 Snakedoc 的评论,完全关闭交换是一个坏主意:

请注意,完全禁用交换永远不会“安全”。即使系统具有 96+ GB 的内存,运行至少 512MB 的交换也是一个很好的安全措施。如果某些东西运行异常并意外吃掉所有 ram,它会让您的系统有时间杀死不必要的进程......禁用交换的替代方法是内核恐慌。

如何安全地永久关闭交换并回收空间?(在 Debian Jessie 上)

所以我想我可能会保留一些内存,比如 0.5G 用于“RAM 磁盘”,并将其用作交换文件,将写入保存到 SSD。

我怎么做?出于某种原因,这是一个坏主意吗?

swap ram ramdisk

8
推荐指数
1
解决办法
4425
查看次数

使用 LUKS 更新内核后,Ubuntu 21.04 挂在“正在加载初始 ramdisk”

我已经从全新安装中复制了两次 - 设置最初工作正常,但是当应用内核更新时,系统在重新启动时挂起。选择 GRUB 提供的旧内核效果很好。

系统详细信息:

  • XPS 13 9380
  • i5-8265U
  • BIOS 版本 1.15.0
  • 微代码版本报告为“0xea”。apt list 的输出 --installed | grep 微码:intel-microcode/hirsute-updates,hirsute-security,现在 3.20210608.0ubuntu0.21.04.1 amd64 [已安装,自动]
  • 我认为安全启动设置为审核模式。
  • Ubuntu 毛毛(如上所述)
  • 从 LiveUSB 安装在 LUKS 分区上
  • 目前使用的是 5.11.0-37-generic,但我也使用较旧的 5.11 内核进行了复制。绝对似乎是内核版本的变化而不是版本本身。5.11.0-36-generic 启动,不需要异常的 GRUB 选项。

我尝试过的 GRUB 设置肯定不起作用

  • dis_ucode_ldr 和 Mitigations=off (一起或单独);
  • 无模式集
  • 消除安静的飞溅
  • 恢复
  • 调试(输出没有变化)
  • “initrd /initrd.img-5.11.0-37-generic”行后的任何形式的 echo

及其所有排列。

initrd.img 和 initrd.img.old(我可以启动)文件的 lsinitramfs 不会弹出任何明显的候选者。

它似乎可能与微代码或 cryptsetup 相关,但由于调试没有提供任何信息,并且一旦我用 36 启动,dmesg 可能会报告正常启动,所以我有点不知所措。

有什么想法吗?似乎存在相关的错误,但没有完全重现。

ubuntu initrd linux-kernel luks ramdisk

8
推荐指数
1
解决办法
1万
查看次数

tmpfs 磁盘溢出?

我正在寻找一种方法来拥有一个类似 tmpfs 的文件系统,该系统的大小可以不受限制,但会使用指定数量的 RAM,之后“超大”数据将存储在另一个磁盘支持的文件系统上

临时文件系统

我在仅 SSD 的系统上运行,可用空间较低(通常< 3 GB),因此我不想为 SWAP 或类似内容保留任何空间(这是我的主要要求)

您知道有适合我的用例的解决方案吗?

linux tmpfs ramdisk

7
推荐指数
1
解决办法
2047
查看次数

如何为 ramdrive 指定内存区域

我们正在建立一个基于 Linux 的基准测试集群。每个节点都将是一个无头、无盘的机器,通过 tftp 启动,将操作系统复制到本地 ramdrive,并且相同的 ramdrive 被基准测试应用程序用作本地驱动器。我的问题如下:

这些机器有 2 个 CPU,每个 CPU 都有自己的内存条,并有 4 个通往这些内存条的内存通道(因此内存条中装有 4 个内存芯片的倍数,以获得最大的内存吞吐量)。如果我无法控制 ramdisk 使用哪些内存区域,那么它可能会在一个单通道上的区域中创建,并使用该芯片上的所有内存。这意味着当我的应用程序运行时,在从其内存组中获取 ramdisk 的 CPU 上运行的线程到其“本地”内存的内存带宽将比其他 CPU 上的线程少 25%。那太糟糕了。因此希望控制 ramdisk 使用哪些内存区域。

或者这不是问题,我可以相信内存控制器在 4 个通道上的芯片之间以跨步方式布置连续的内存地址?这是有道理的,因为这将在将大块内存拉入缓存时最大化内存带宽。

我只是不知道这些东西是如何工作的,希望得到一些启发......

linux memory ramdisk

7
推荐指数
1
解决办法
1354
查看次数

标签 统计

ramdisk ×10

linux ×5

memory ×2

ram ×2

tmpfs ×2

bandwidth ×1

boot ×1

cgroups ×1

debian ×1

filesystems ×1

initrd ×1

io ×1

kvm ×1

limit ×1

linux-kernel ×1

luks ×1

mount ×1

swap ×1

ubuntu ×1