StoneRen

揽睿持久化的避坑策略

Mar 15, 2025

本人用的揽睿平台做的一些试验。
但最近真正使用了,却发现这个持久化真的是让人头大。

我好不容易下载了相关环境,结果下次登录又需要重新下载,太坑爹了。

持久化

揽睿的持久化是有自己的规则的,查看 官方文档

简单概括结果如下。

持久化有3类盘:

数据类型存放目录是否收费共享
高速数据盘/hs-storage/取决于自己挂载
工作空间共享/data本工作空间共享
可用区共享/az-data可用区共享

所以我们接下来的动作就是要让各类环境都安装在以上目录上。

Conda

揽睿是自带conda的,看一下安装地址

which conda
# /opt/conda/bin/conda

conda info --base
# /opt/conda

从结果上看,我们的conda以及安装的内容都不在指定的持久化目录下。

改造

方式一: 重新安装

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /data/Miniconda3.sh
bash /data/Miniconda3.sh -p /data/conda

执行这条命令后,根据提示一步步进行安装。

方式二:修改配置 【推荐】

touch /data/conda_init.sh
echo 'export CONDA_ROOT="/data/conda"' >> /data/conda_init.sh
echo 'export PATH="$CONDA_ROOT/bin:$PATH"' >> /data/conda_init.sh

source /data/conda_init.sh

Rust

创建持久化目录

mkdir -p /data/rust/{.cargo,.rustup}

echo 'export RUSTUP_HOME="/data/rust/.rustup"  # Rustup 元数据和工具链'>>/data/conda_init.sh
echo 'export CARGO_HOME="/data/rust/.cargo"    # Cargo 包管理器和全局配置'>>/data/conda_init.sh
echo 'export PATH="$CARGO_HOME/bin:$PATH"      # 将 cargo 和 rustc 添加到 PATH'>>/data/conda_init.sh
source /data/conda_init.sh

重新安装

export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /data/rust/rustup-init.sh
sh /data/rust/rustup-init.sh -y --default-toolchain stable --no-modify-path

验证安装

source "$CARGO_HOME/env"  # 加载 Cargo 环境
rustc --version           # 应输出版本信息
cargo --version           # 应输出版本信息

which rustc  # 应输出 /data/rust/.cargo/bin/rustc
which cargo  # 应输出 /data/rust/.cargo/bin/cargo

使用

每次在机器上执行如下命令。

source /data/conda_init.sh

which conda # 应输出 /data/conda/bin/conda

conda init
conda env list

问题

启动时间巨慢

执行每一条命令非常非常慢,有5分钟以上
这个重新启动,从初始化,到我启动完环境,总共用时30分钟,
实在是难以忍受。

简单的一个source命令,正常执行基本在秒级回复的,现在这么简单的一个命令都需要接近6分钟。

执行巨慢

conda env list也需要5分钟。

执行巨慢

Caution

希望官方能够对此此进行优化,
否则用户的忍耐是有限的

conda 启动问题

揽睿conda启动报错信息

查看下信息 conda info,显示结果如下:

     active environment : None
       user config file : /root/.condarc
 populated config files : /data/conda/.condarc
          conda version : 25.1.1
    conda-build version : not installed
         python version : 3.12.9.final.0
                 solver : libmamba (default)
       virtual packages : __archspec=1=icelake
                          __conda=25.1.1=0
                          __glibc=2.35=0
                          __linux=5.15.161=0
                          __unix=0=0
       base environment : /data/conda  (writable)
      conda av data dir : /data/conda/etc/conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /data/conda/pkgs
                          /root/.conda/pkgs
       envs directories : /data/conda/envs
                          /root/.conda/envs
               platform : linux-64
             user-agent : conda/25.1.1 requests/2.32.3 CPython/3.12.9 Linux/5.15.161-0515161-generic ubuntu/22.04.3 glibc/2.35 solver/libmamba conda-libmamba-solver/25.1.1 libmambapy/2.0.5 aau/0.5.0 c/. s/. e/.
                UID:GID : 0:0
             netrc file : None
           offline mode : False

conda info 显示 envs directories 包含 /root/.conda/envs(非持久化目录),可能导致 Conda 尝试从该路径读取环境信息。
那么我们去掉即可。

cat << EOF > /data/conda/.condarc
# 仅使用持久化目录
envs_dirs:
  - /data/conda/envs
pkgs_dirs:
  - /data/conda/pkgs
EOF

覆盖conda之前的配置

## /data/conda_init.sh
#  CONDA INIT START
export CONDA_ROOT="/data/conda"
export PATH="$CONDA_ROOT/bin:$PATH"

# 强制指定环境路径,避免读取默认路径
export CONDA_ENVS_DIRS="/data/conda/envs"
export CONDA_PKGS_DIRS="/data/conda/pkgs"

# 加载 Conda Shell 集成
source "$CONDA_ROOT/etc/profile.d/conda.sh"

# 禁用用户级配置(防止加载 /root/.condarc)
export CONDARC="$CONDA_ROOT/.condarc"
# CONDA INIT END

export RUSTUP_HOME="/data/rust/.rustup"  # Rustup 元数据和工具链
export CARGO_HOME="/data/rust/.cargo"    # Cargo 包管理器和全局配置
export PATH="$CARGO_HOME/bin:$PATH"      # 将 cargo 和 rustc 添加到 PATH

每次登录

vim ~/.bashrc
# 去掉pash中conda的默认配置

## 增加下面配置
source /data/conda_init.sh

source ~/.bashrc
which conda
conda init

source ~/.bashrc
which rustc

其他

AutoDL

0-PRESENT © StoneRenver:2509181051