.执行
输入
找到要扩容的盘,应该是/dev/sdq3,检查大小
resizepart 3 100% quit
再检查大小
退出parted
更新物理卷的大小,当然这里前提是使用了LVM
lvdisplay
lvextend -l +100%FREE -f pve/root
resize2fs /dev/mapper/pve-root
.执行
parted /dev/sdq
输入
print
找到要扩容的盘,应该是/dev/sdq3,检查大小
resizepart 3 100% quit
再检查大小
退出parted
更新物理卷的大小,当然这里前提是使用了LVM
pvresize /dev/sda3
lvdisplay
lvextend -l +100%FREE -f pve/root
resize2fs /dev/mapper/pve-root
216.239.38.120 是 Google 提供的一个特殊 DNS 服务器,用于强制开启 YouTube 受限模式(Restricted Mode)。
如果你想在家里强制 YouTube 进入受限模式,可以在 路由器的 DNS 设置 中配置以下 DNS 服务器:
DNS 服务器 | 作用 |
---|---|
216.239.38.120 | YouTube 受限模式 |
216.239.38.119 | YouTube 严格受限模式 |
配置方式:
192.168.1.1
)。216.239.38.120
(或 216.239.38.119
)。方法 | 适用场景 | 结果 |
---|---|---|
216.239.38.120 | 限制 YouTube 内容 | 仍能访问 YouTube,但内容受限 |
屏蔽 YouTube 域名/IP | 完全禁止访问 | YouTube 无法打开 |
如果你想完全屏蔽 YouTube,可以考虑 DNS 黑名单、路由器防火墙等更严格的方法。
510-01:~$ cat /proc/mdstat
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] [raidF1]
md2 : active raid5 sdj5[1] sdt5[11] sds5[9] sdr5[8] sdq5[7] sdo5[6] sdn5[5] sdm5[4] sdl5[3] sdk5[2]
117140506880 blocks super 1.2 level 5, 64k chunk, algorithm 2 [11/10] [_UUUUUUUUUU]
md3 : active raid0 sdg1[0] sdp1[2] sdh1[1]
1406540736 blocks super 1.2 64k chunks [3/3] [UUU]
md1 : active raid1 sdk2[3] sdt2[12] sds2[11] sdr2[10] sdq2[9] sdo2[7] sdn2[6] sdm2[5] sdl2[4]
2097088 blocks [26/9] [___UUUUU_UUUU_____________]
md0 : active raid1 sdk1[3] sdt1[12] sds1[11] sdr1[10] sdq1[9] sdo1[7] sdn1[6] sdm1[5] sdl1[4]
2490176 blocks [26/9] [___UUUUU_UUUU_____________]
对比md0, md1, md5, 看看哪里缺少磁盘,然后
mdadm /dev/md0 -a /dev/sdj1
mdadm /dev/md1 -a /dev/sdj2
缺哪个加哪个
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
size | 副本数量,决定数据在 OSD 之间的冗余度 | 2-3 副本保证数据安全 | 生产环境建议 3 ,测试环境 2 |
min_size | 最小副本数,低于该值时数据不可写 | 一般设置为 size 的一半 | size / 2 向上取整,例如 2 副本时建议 2 ,3 副本时建议 2 |
pg_num / pgp_num | 置换组数量,决定数据在 OSD 之间的分布情况 | 高吞吐量时需合理设置 | 使用 ceph pg autoscaler 自动调整或手动计算合适的值 |
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
hit_set_type | 用于追踪最近访问过的对象,通常用于 writeback 或 readproxy 缓存模式 | 仅在 writeback 缓存需要统计访问频率时使用 | bloom (适用于热点缓存),none 表示未启用 |
hit_set_period | hit_set 统计的时间窗口(秒) | 影响数据推广(promote)策略 | 一般 120s |
hit_set_count | 维护的 hit_set 历史记录数量 | 用于访问统计 | 适用于 readproxy 缓存,建议 8 |
cache_target_dirty_ratio | writeback 模式下,缓存池中允许的“脏”数据比例(未回写到主存储池) | 0 表示未启用缓存写回 | 0.2 ~ 0.4 (即 20%-40%) |
cache_target_dirty_high_ratio | writeback 模式下,达到此比例后强制回写 | 控制写缓存溢出 | 0.6 ~ 0.8 |
cache_target_full_ratio | 缓存池达到该比例时,触发对象驱逐(eviction) | 防止缓存池填满 | 0.8 ~ 0.9 |
cache_min_flush_age | 最小的回写等待时间(秒) | writeback 模式下生效,延迟数据写入,提高缓存命中率 | 60 ~ 300s |
cache_min_evict_age | 最小的驱逐时间(秒),低于该时间的数据不会从缓存池清除 | 控制缓存淘汰策略 | 300 ~ 600s |
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
min_read_recency_for_promote | 读操作提升数据到缓存的最小访问次数 | 适用于 readproxy ,减少缓存污染 | 3 ~ 5 (减少临时访问数据进入缓存) |
min_write_recency_for_promote | 写操作提升数据到缓存的最小访问次数 | 适用于 writeback ,避免冷数据进入缓存 | 3 ~ 5 |
参数 | 作用 | 适用场景 | 建议值 |
---|---|---|---|
fast_read | 是否开启快速读取(跳过缓存直接读后端池) | readproxy 或 readonly 模式时可用 | 1 (开启) |
hit_set_grade_decay_rate | hit_set 统计数据的衰减速度 | 影响数据淘汰率 | 0.9 ~ 0.95 |
hit_set_search_last_n | 在最近 N 个 hit_set 周期内搜索热点数据 | 用于热点统计 | 8 |
你的 cache-pool 目前:
cache_mode
没有显示:说明缓存池可能未正确启用,建议检查 ceph osd pool get cache-pool cache_mode
。0
:表示当前没有配置缓存策略,缓存机制可能未生效。hit_set_type
为 none
:说明没有开启热点追踪,建议启用 bloom
过滤器以提高缓存效率。检查缓存模式
bashceph osd pool get cache-pool cache_mode
none
,需要设置缓存模式,例如:bashceph osd tier cache-mode cache-pool writeback
设置基本缓存参数
bashceph osd pool set cache-pool cache_target_dirty_ratio 0.3
ceph osd pool set cache-pool cache_target_dirty_high_ratio 0.7
ceph osd pool set cache-pool cache_target_full_ratio 0.9
ceph osd pool set cache-pool cache_min_flush_age 120
ceph osd pool set cache-pool cache_min_evict_age 600
ceph osd pool set cache-pool min_read_recency_for_promote 3
ceph osd pool set cache-pool min_write_recency_for_promote 3
启用 hit_set
以追踪热点
bashceph osd pool set cache-pool hit_set_type bloom
ceph osd pool set cache-pool hit_set_period 120
ceph osd pool set cache-pool hit_set_count 8
ceph osd pool set cache-pool hit_set_grade_decay_rate 0.9
ceph osd pool set cache-pool hit_set_search_last_n 8
确认是否正确绑定
bashceph osd tier set-overlay cephfs_data cache-pool
你的 cache-pool
目前的缓存机制似乎未生效(所有缓存参数都为 0
),可能只是创建了缓存池但未启用。如果你希望真正利用缓存池提高 CephFS 读写性能,建议:
writeback
模式,允许缓存数据写入并在后台同步到主存储池。cephfs_data
正确使用 cache-pool
作为缓存层。这样可以充分发挥 CephFS 的缓存能力,提高 I/O 性能!
在 Proxmox VE (PVE) 中,你需要一个能被识别为**独立硬盘(block device)**的 RAM 盘,才能用于 Ceph OSD(对象存储守护进程)。通常,PVE 只会把标准的 块设备(block device) 当作物理磁盘,而不会识别 tmpfs
或 zram
之类的文件系统盘。
✅ 使用 brd
(Block RAM Disk)或 loopback
设备来创建块存储,这样 PVE 可以识别它为硬盘,并让 Ceph OSD 使用它。
brd
(推荐,PVE 直接识别为硬盘)brd
(block ramdisk)是 Linux 内核的 RAM 盘模块,它可以创建 /dev/ramX
设备,并被 PVE 识别为块设备。
brd
模块bashsudo modprobe brd rd_nr=1 rd_size=1048576
rd_nr=1
:创建 1 个 RAM 盘rd_size=1048576
:设置大小为 1GB(可修改)/dev/ram0
设备存在bashls -lh /dev/ram*
在 PVE Web 界面:
/dev/ram0
作为未使用的磁盘。如果 PVE 没有自动识别,手动运行:
bashpveceph osd create /dev/ram0
这会将 /dev/ram0
添加到 Ceph OSD 集群。
✅ 优点:
❌ 缺点:
loopback
设备(适用于 QEMU/KVM)如果你想要模拟真实 SSD 并支持 PVE 直接使用,你可以:
tmpfs
内存盘tmpfs
目录bashsudo mkdir -p /mnt/ramdisk
sudo mount -t tmpfs -o size=10G tmpfs /mnt/ramdisk
(这里 10G
可以调整大小)
bashdd if=/dev/zero of=/mnt/ramdisk/ssd.img bs=1M count=10240
(创建一个 10GB 的虚拟硬盘)
loop
设备bashsudo losetup /dev/loop0 /mnt/ramdisk/ssd.img
进入 PVE Web UI:
/dev/loop0
作为新磁盘✅ 优点:
❌ 缺点:
brd
稍低losetup
额外操作NVMe-oF
(让 PVE 识别为 NVMe 盘)如果你想让 PVE 识别 RAM 盘为 NVMe SSD,可以使用 nvmet
创建 NVMe over Fabrics 设备。
nvmet
bashsudo modprobe nvmet
bashsudo 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
进入 PVE Web UI:
✅ 优点:
❌ 缺点:
方案 | PVE 识别为硬盘 | 适合 Ceph OSD | 适合 VM | 速度 | 复杂度 |
---|---|---|---|---|---|
brd (/dev/ramX) | ✅ 是 | ✅ 是 | ❌ 否 | 🚀 快 | ⭐ 简单 |
loopback (/dev/loopX) | ✅ 是 | ✅ 是 | ✅ 是 | ⚡ 快 | ⭐⭐ 适中 |
NVMe-oF | ✅ 是(NVMe) | ✅ 是 | ✅ 是 | 🚀 超快 | ⭐⭐⭐ 复杂 |
✅ 推荐 brd
(方案 1),直接识别为块设备
bashsudo modprobe brd rd_nr=1 rd_size=1048576
然后在 PVE Web UI 里创建 Ceph OSD。
✅ 推荐 loopback
(方案 2)
bashsudo losetup /dev/loop0 /mnt/ramdisk/ssd.img
然后 PVE 会识别 /dev/loop0
为硬盘。
✅ 推荐 NVMe-oF
(方案 3)
bashsudo modprobe nvmet
然后在 PVE 里识别为 NVMe SSD。
最终建议
brd
loopback
NVMe-oF
在 Ceph 中,erasure-code-profile
是用于定义纠删码(Erasure Code)存储池的配置文件。纠删码是一种数据保护技术,通过将数据分割成多个片段并生成冗余片段,可以在节省存储空间的同时提供数据冗余和高可用性。
以下是对 erasure-code-profile
的详细介绍,包括其配置参数、使用方法以及示例。
纠删码通过将数据分割成 k
个数据片段,并生成 m
个冗余片段,总共存储 k + m
个片段。当部分片段丢失时,可以通过剩余的片段恢复原始数据。
优点:
节省存储空间(相比副本机制)。
提供数据冗余和高可用性。
缺点:
计算开销较大,可能影响性能。
需要至少 k
个片段才能恢复数据。
erasure-code-profile
配置参数erasure-code-profile
的主要配置参数包括:
参数名 | 描述 |
---|---|
k | 数据片段的数量。 |
m | 冗余片段的数量。 |
plugin | 使用的纠删码插件,如 jerasure 、isa 、lrc 等。 |
crush-failure-domain | 故障域(如 host 、rack ),用于控制数据片段的分布。 |
crush-device-class | 设备类型(如 hdd 、ssd ),用于指定存储设备的类型。 |
technique | 纠删码算法(仅适用于 jerasure 插件),如 reed_sol_van 、cauchy 。 |
directory | 插件库的路径(可选)。 |
ruleset-failure-domain | 故障域(旧版本参数,建议使用 crush-failure-domain )。 |
erasure-code-profile
使用以下命令创建纠删码配置文件:
ceph osd erasure-code-profile set <profile-name> \ [<parameter>=<value> ...]
创建一个名为 myprofile
的纠删码配置文件,k=4
,m=2
,使用 jerasure
插件:
ceph osd erasure-code-profile set myprofile \ k=4 m=2 \ plugin=jerasure \ crush-failure-domain=host
创建一个使用 cauchy
算法的纠删码配置文件:
ceph osd erasure-code-profile set myprofile \ k=4 m=2 \ plugin=jerasure \ technique=cauchy \ crush-failure-domain=host
erasure-code-profile
可以使用以下命令查看已创建的纠删码配置文件:
ceph osd erasure-code-profile ls
查看特定配置文件的详细信息:
ceph osd erasure-code-profile get <profile-name>
erasure-code-profile
创建存储池创建纠删码存储池时,需要指定纠删码配置文件。
ceph osd pool create <pool-name> <pg-num> <pgp-num> erasure <profile-name>
创建一个名为 mypool
的纠删码存储池,使用 myprofile
配置文件:
ceph osd pool create mypool 128 128 erasure myprofile
erasure-code-profile
如果需要修改纠删码配置文件,可以先删除旧配置文件,然后重新创建。
ceph osd erasure-code-profile rm <profile-name>
按照上述步骤重新创建。
Ceph 支持多种纠删码插件,常见的有:
特点:性能较好,支持多种算法。
算法:reed_sol_van
、cauchy
等。
特点:基于 Intel ISA-L 库,性能优化。
适用场景:适用于 Intel 硬件。
特点:支持本地修复,减少修复时的数据读取量。
适用场景:大规模集群。
ceph osd erasure-code-profile set myprofile \ k=4 m=2 \ plugin=jerasure \ technique=cauchy \ crush-failure-domain=host
ceph osd pool create mypool 128 128 erasure myprofile
ceph osd pool ls detail
性能影响:纠删码的计算开销较大,可能影响性能,建议在性能要求不高的场景中使用。
数据恢复:确保 k
和 m
的值合理,以平衡存储空间和数据冗余。
故障域:合理设置故障域,确保数据片段分布在不同的故障域中。
erasure-code-profile
是 Ceph 中用于定义纠删码存储池的核心配置。通过合理配置 k
、m
、故障域和插件参数,可以在节省存储空间的同时提供数据冗余和高可用性。熟练掌握纠删码的配置和使用,是优化 Ceph 集群存储效率的关键。
在 Ceph 中,crush rule
和 erasure-code-profile
是两个独立但相关的概念。crush rule
用于定义数据在集群中的分布方式,而 erasure-code-profile
用于定义纠删码的编码参数。要将两者结合起来使用,需要在创建纠删码存储池时指定 erasure-code-profile
,并自动生成或关联一个 crush rule
。
以下是详细说明如何在 Ceph 中调用纠删码配置文件并关联 crush rule
。
首先,创建一个纠删码配置文件(erasure-code-profile
)。这个配置文件定义了纠删码的参数,如 k
(数据块数量)、m
(校验块数量)、插件类型(如 jerasure
)等。
ceph osd erasure-code-profile set myprofile \ k=4 m=2 \ plugin=jerasure \ technique=cauchy \ crush-failure-domain=host
k=4
:数据块数量为 4。
m=2
:校验块数量为 2。
plugin=jerasure
:使用 jerasure
插件。
technique=cauchy
:使用 cauchy
算法。
crush-failure-domain=host
:数据块分布在不同的主机上。
在创建纠删码存储池时,Ceph 会自动生成一个与纠删码配置文件关联的 crush rule
。
ceph osd pool create <pool-name> <pg-num> <pgp-num> erasure <profile-name>
ceph osd pool create mypool 128 128 erasure myprofile
mypool
:存储池名称。
128
:PG(Placement Group)数量。
128
:PGP(Placement Group for Placement)数量。
erasure
:指定存储池类型为纠删码。
myprofile
:使用的纠删码配置文件。
创建纠删码存储池后,Ceph 会自动生成一个与纠删码配置文件关联的 crush rule
。可以使用以下命令查看生成的规则:
ceph osd crush rule ls
ceph osd crush rule dump <rule-name>
{ "rule_id": 1, "rule_name": "mypool", "type": 3, "steps": [ { "op": "take", "item": -1, "item_name": "default" }, { "op": "chooseleaf", "num": 0, "type": "host" }, { "op": "emit" } ] }
rule_name
:规则的名称,通常与存储池名称相同。
type
:规则类型,3
表示纠删码规则。
steps
:定义了数据的分布方式,如 chooseleaf
表示数据块分布在不同的故障域(如 host
)中。
如果需要手动创建纠删码 CRUSH Rule,可以使用以下命令:
ceph osd crush rule create-erasure <rule-name> <profile-name> <root>
<rule-name>
:规则的名称。
<profile-name>
:纠删码配置文件的名称。
<root>
:CRUSH 层次结构的根节点(通常是 default
)。
ceph osd crush rule create-erasure myrule myprofile default
如果需要修改纠删码 CRUSH Rule,通常需要先删除旧规则,然后重新创建。
ceph osd crush rule rm <rule-name>
按照上述步骤重新创建。
创建纠删码存储池时,Ceph 会自动使用与纠删码配置文件关联的 CRUSH Rule。如果需要将现有存储池切换到纠删码规则,可以使用以下命令:
ceph osd pool set <pool-name> crush_rule <rule-name>
ceph osd pool set mypool crush_rule myrule
在 Ceph 中,纠删码存储池的创建会自动生成一个与纠删码配置文件关联的 CRUSH Rule。通过以下步骤可以实现两者的结合:
创建纠删码配置文件(erasure-code-profile
)。
创建纠删码存储池,Ceph 会自动生成 CRUSH Rule。
如果需要,可以手动创建或修改 CRUSH Rule。
使用 ceph osd pool set
命令将存储池与 CRUSH Rule 关联。
通过合理配置纠删码和 CRUSH Rule,可以在 Ceph 集群中实现高效的数据分布和存储。
.执行 parted /dev/sdq 输入 print 找到要扩容的盘,应该是/dev/sdq3,检查大小 resizepart 3 100% quit 再检查大小 退出parted 更新物理卷的大小,当然这里前提是使用了LVM pvresize /dev/sda3 lvdis...