2025年2月3日星期一

创建pve 可以识别的内存盘

 


Proxmox VE (PVE) 中,你需要一个能被识别为**独立硬盘(block device)**的 RAM 盘,才能用于 Ceph OSD(对象存储守护进程)。通常,PVE 只会把标准的 块设备(block device) 当作物理磁盘,而不会识别 tmpfszram 之类的文件系统盘。

最佳方案

使用 brd(Block RAM Disk)或 loopback 设备来创建块存储,这样 PVE 可以识别它为硬盘,并让 Ceph OSD 使用它。


方案 1:使用 brd(推荐,PVE 直接识别为硬盘)

brd(block ramdisk)是 Linux 内核的 RAM 盘模块,它可以创建 /dev/ramX 设备,并被 PVE 识别为块设备。

1. 启用 brd 模块

bash
sudo modprobe brd rd_nr=1 rd_size=1048576
  • rd_nr=1:创建 1 个 RAM 盘
  • rd_size=1048576:设置大小为 1GB(可修改)

2. 确保 /dev/ram0 设备存在

bash
ls -lh /dev/ram*

3. 在 PVE 识别为硬盘

在 PVE Web 界面:

  • 进入 "Datacenter" → "Nodes" → "Disks",你应该能看到 /dev/ram0 作为未使用的磁盘。
  • 你可以用它创建 LVM、ZFS,或者直接用于 Ceph OSD

4. 在 PVE 中手动添加 OSD

如果 PVE 没有自动识别,手动运行:

bash
pveceph osd create /dev/ram0

这会将 /dev/ram0 添加到 Ceph OSD 集群。

优点:

  • PVE 识别为物理硬盘
  • 适用于 Ceph OSD
  • 无额外配置

缺点:

  • 内存大小固定,无法动态扩展

方案 2:使用 loopback 设备(适用于 QEMU/KVM)

如果你想要模拟真实 SSD 并支持 PVE 直接使用,你可以:

  1. 创建 tmpfs 内存盘
  2. 在其中创建虚拟磁盘文件
  3. 将其映射为块设备

1. 创建 tmpfs 目录

bash
sudo mkdir -p /mnt/ramdisk sudo mount -t tmpfs -o size=10G tmpfs /mnt/ramdisk

(这里 10G 可以调整大小)

2. 创建虚拟磁盘文件

bash
dd if=/dev/zero of=/mnt/ramdisk/ssd.img bs=1M count=10240

(创建一个 10GB 的虚拟硬盘)

3. 绑定到 loop 设备

bash
sudo losetup /dev/loop0 /mnt/ramdisk/ssd.img

4. 在 PVE 识别为硬盘

进入 PVE Web UI:

  • "Datacenter" → "Nodes" → "Disks"
  • 你应该能看到 /dev/loop0 作为新磁盘
  • 你可以用它创建 Ceph OSD、LVM 或 ZFS

优点:

  • 动态调整大小
  • 可用于虚拟机(QEMU/KVM)
  • PVE 识别为 SSD

缺点:

  • 性能比 brd 稍低
  • 需要 losetup 额外操作

方案 3:使用 NVMe-oF(让 PVE 识别为 NVMe 盘)

如果你想让 PVE 识别 RAM 盘为 NVMe SSD,可以使用 nvmet 创建 NVMe over Fabrics 设备。

1. 启用 nvmet

bash
sudo modprobe nvmet

2. 绑定 RAM 盘到 NVMe

bash
sudo mkdir -p /sys/kernel/config/nvmet/subsystems/ram_ssd/namespaces/1 echo -n /dev/ram0 | sudo tee /sys/kernel/config/nvmet/subsystems/ram_ssd/namespaces/1/device_path echo 1 | sudo tee /sys/kernel/config/nvmet/subsystems/ram_ssd/namespaces/1/enable

3. 在 PVE 识别为 NVMe

进入 PVE Web UI:

  • 进入 "Datacenter" → "Nodes" → "Disks"
  • 你应该看到新的 NVMe 设备

优点:

  • 模拟 NVMe 设备
  • 适用于高性能存储
  • PVE 识别为 SSD

缺点:

  • 配置复杂
  • 非所有系统都支持

最终选择

方案PVE 识别为硬盘适合 Ceph OSD适合 VM速度复杂度
brd(/dev/ramX)✅ 是✅ 是❌ 否🚀 快⭐ 简单
loopback(/dev/loopX)✅ 是✅ 是✅ 是⚡ 快⭐⭐ 适中
NVMe-oF✅ 是(NVMe)✅ 是✅ 是🚀 超快⭐⭐⭐ 复杂

如果你要在 PVE 作为 Ceph OSD 使用

推荐 brd(方案 1),直接识别为块设备

bash
sudo modprobe brd rd_nr=1 rd_size=1048576

然后在 PVE Web UI 里创建 Ceph OSD。

如果你要用于 QEMU/KVM 虚拟机

推荐 loopback(方案 2)

bash
sudo losetup /dev/loop0 /mnt/ramdisk/ssd.img

然后 PVE 会识别 /dev/loop0 为硬盘。

如果你想模拟 NVMe SSD

推荐 NVMe-oF(方案 3)

bash
sudo modprobe nvmet

然后在 PVE 里识别为 NVMe SSD。


最终建议

  • Ceph OSD:使用 brd
  • 虚拟机存储:使用 loopback
  • 模拟 NVMe 盘:使用 NVMe-oF

















没有评论:

发表评论

youtube的dns屏蔽方法

  216.239.38.120 是 Google 提供的一个特殊 DNS 服务器,用于强制开启 YouTube 受限模式(Restricted Mode) 。 如果你想在家里强制 YouTube 进入受限模式,可以在 路由器的 DNS 设置 中配置以下 DNS 服务器: D...