本人用的揽睿平台做的一些试验。
但最近真正使用了,却发现这个持久化真的是让人头大。
我好不容易下载了相关环境,结果下次登录又需要重新下载,太坑爹了。
持久化
揽睿的持久化是有自己的规则的,查看 官方文档
简单概括结果如下。
持久化有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