浪潮项目
基准测试环境
-
网络连接超时
-
现象:
install-deps.sh运行时,拉取mkcodes或其他pip包报RPC failed或Connect timeout。 -
原因:
GitHub和pip源在国内访问受限。
# 设置 HTTP 代理 export http_proxy="http://127.0.0.1:7897" # 设置 HTTPS 代理 export https_proxy="http://127.0.0.1:7897" # 设置所有代理(包括 git、curl 等可能走的通用代理) export ALL_PROXY="http://127.0.0.1:7897" # 告诉 git 使用这些代理,这会覆盖掉之前设置的 github.com 镜像加速 (但这个镜像加速是没问题的) git config --global http.proxy $http_proxy git config --global https.proxy $https_proxy # (可选,清除 ghproxy 的全局配置,防止冲突,虽然可能不影响) # git config --global --unset url."https://ghproxy.net/https://github.com/".insteadOf -
-
依赖包哈希校验失败
-
现象:安装
PyYAML==6.0时报错THESE PACKAGES DO NOT MATCH THE HASHES。ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them. pyyaml==6.0 from https://files.pythonhosted.org/packages/02/25/6ba9f6bb50a3d4fbe22c1a02554dc670682a07c8701d1716d19ddea2c940/PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#sha256=f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 (from -r requirements-alerts.txt (line 1)): Expected sha256 f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 Got 3763cad1d8f053b199dbcb14efcdcce963f53dd6f4ff09cfe0fd772b8bdf78eb” -
原因:本地下载的包与 Ceph 官方锁定的 hash 值不一致(可能是架构差异或代理缓存)。
-
找到
requirements-alerts.txtfind . -name "requirements-alerts.txt" -
修改这个
.txt文件除
--hash=...部分,只保留PyYAML==6.0。
-
-
前端构建失败
-
现象:编译过程中
npm ci报错cb() never called。 -
原因:
Dashboard前端构建依赖node_modules,国内网络环境极其不稳定。 -
解决:战略性放弃。在开发压缩算法时不需要
Web界面。- 配置
CMake时加上-DWITH_MGR_DASHBOARD_FRONTEND=OFF。
- 配置
-
-
Boost与NumPy版本冲突-
现象:编译
Boost库时报错PyArray_Descr has no member named elsize。 -
原因:
Ubuntu 22.04系统自带的NumPy版本太新,Ceph 17.2.6内置的旧版Boost (1.75)不兼容。 -
解决:彻底卸载
NumPy,迫使Boost跳过Python NumPy组件的编译。pip3 uninstall numpy sudo pip3 uninstall numpy sudo apt remove python3-numpy # 验证:python3 -c "import numpy" 报错才算成功
-
-
标准版
Ceph开发环境流程
-
环境准备
# 1. 安装 Git sudo apt update && sudo apt install git -y # 2. 增加 Swap (防止内存溢出) sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 3. 设置代理 (假设你开着 ***) export http_proxy="http://127.0.0.1:7897" export https_proxy="http://127.0.0.1:7897" export ALL_PROXY="http://127.0.0.1:7897" git config --global http.proxy $http_proxy git config --global https.proxy $https_proxy
2.获取源码
```
# 1. 克隆源码
git clone https://github.com/ceph/ceph.git
cd ceph
# 2. 切换到目标版本 (Quincy)
git checkout v17.2.6
# 3. 创建本地开发分支 (好习惯)
git checkout -b my-compression-dev
# 4. 下载子模块 (必须做!)
git submodule update --init --recursive
```
-
安装依赖
# 自动安装系统库和 Python 库 ./install-deps.sh(如果遇到
PyYAML报错,去改requirements-alerts.txt) -
彻底清理
NumPy# 确保系统里没有 numpy,防止 Boost 编译报错 sudo apt remove python3-numpy -y pip3 uninstall numpy -y sudo pip3 uninstall numpy -y
# 1. 安装 git
sudo apt update && sudo apt install git -y
# 2. 克隆代码 (如果 GitHub 慢,可以找国内镜像,但最好配个代理)
git clone https://github.com/ceph/ceph.git
cd ceph
# 3. 锁定版本 (师兄指定的版本)
git checkout v17.2.6
git submodule update --init --recursive
-
在
v17.2.6的基础上保存一个版本git checkout -b my-dev -
安装依赖
./install-deps.sh -
出现错误
Python依赖包哈希值不匹配问题-
找到
requirements-alerts.txtfind . -name "requirements-alerts.txt" -
修改这个
.txt文件PyYAML==6.0 -
再次运行
# 1. 清理 pip 缓存 rm -rf ~/.cache/pip # 2. 再次运行安装脚本 ./install-deps.sh
-
-
生成编译配置
# ceph 根目录 ./do_cmake.sh -
开始编译
cd build # 使用 4 线程编译 vstart 组件(本地调试够用了) ninja -j4 vstart -
跳过网页编译
cmake -DWITH_MGR_DASHBOARD_FRONTEND=OFF ..
-
编译
cd ~/ceph-dev/ceph/build ninja -j4 ceph_hrac -
重启集群
../src/stop.sh killall -9 ceph-osd ceph-mon ceph-mgr 2>/dev/null MON=1 OSD=1 MDS=0 MGR=1 ../src/vstart.sh -d -n -x --without-dashboard # 1.告诉终端 ceph 命令在哪里 export CEPH_CONF=./ceph.conf # 2.告诉终端 依赖库在哪里 export PATH=./bin:$PATH # 3.告诉终端 配置文件在哪里 export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH -
配置池
ceph osd pool create hrac_pool 32 ceph osd pool set hrac_pool compression_mode force ceph osd pool set hrac_pool compression_algorithm hrac -
测试读写
# 写入 dd if=/dev/zero of=test_data bs=1M count=4 rados -p hrac_pool put obj1 test_data # 读取 rados -p hrac_pool get obj1 read_back_file # 对比 md5sum test_data read_back_file -
生成数据 (全
0和随机)dd if=/dev/zero of=data_zero bs=1M count=4 dd if=/dev/urandom of=data_random bs=1M count=4 -
写入全零数据
rados -p hrac_pool put obj_zero data_zero -
写入随机数据
-
解压数据
rados -p hrac_pool get obj1 read_back_file

浙公网安备 33010602011771号