浪潮项目

基准测试环境

  • 网络连接超时

    • 现象:install-deps.sh 运行时,拉取 mkcodes 或其他 pip 包报 RPC failedConnect timeout

    • 原因:GitHubpip 源在国内访问受限。

    # 设置 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.txt

      find . -name "requirements-alerts.txt"
      
    • 修改这个 .txt 文件

      --hash=... 部分,只保留 PyYAML==6.0

  • 前端构建失败

    • 现象:编译过程中 npm ci 报错 cb() never called

    • 原因:Dashboard 前端构建依赖 node_modules,国内网络环境极其不稳定。

    • 解决:战略性放弃。在开发压缩算法时不需要 Web 界面。

      • 配置 CMake 时加上 -DWITH_MGR_DASHBOARD_FRONTEND=OFF
  • BoostNumPy 版本冲突

    • 现象:编译 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. 环境准备

    # 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
```
  1. 安装依赖

    # 自动安装系统库和 Python 库
    ./install-deps.sh
    

    (如果遇到 PyYAML 报错,去改 requirements-alerts.txt)

  2. 彻底清理 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.txt

      find . -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
    

posted @ 2026-01-05 22:49  xqy2003  阅读(3)  评论(0)    收藏  举报