Appearance
常用操作
一. OA相关
1. 内网资源获取
黄区、绿区
安装sdk、driver、获取软件源、证书
repo.metax-tech.com2. 绿区文件上传下载
1. 上传文件到跳板机
1 打开oa-driver
bash
https://oa-drive.metax-tech.com/2 上传到文件夹
bash
团队文件夹-> oa2sw_ai-models3 在跳板机访问资源
bash
https://models.hub.metax-tech.com/2. 从跳板机下载文件到本地电脑
待补充二. OS操作
1. 安装docker
bash
# 麒麟系统自带docker包
sudo dnf install -y docker
或者
sudo yum install -y docker
# 将当前用户加入docker组,避免每次输入超级密码
sudo usermod -aG docker $USER
# 刷新起作用
newgrp docker
# ubuntu安装docker
sudo apt install docker.io docker-compose2. PiP软件源
bash
# 外网使用
pip3 install tqdm -i https://mirrors.aliyun.com/pypi/simple/
# 内网使用
pip3 install tqdm -i https://repo.metax-tech.com/r/pypi/simple --trusted-host repo.metax-tech.com5. Kenel Not Found
bash
root:~$ modprobe metax # 加载沐曦驱动6. 麒麟系统改密码修改策略
tex
# 在这些文件中找到包含 pam_pwquality.so 的行,同样在末尾添加 usercheck=0
sudo vim /etc/pam.d/system-auth # 系统全局认证配置
sudo vim /etc/pam.d/password-auth # 密码相关认证配置
sudo vim /etc/security/pwquality.conf
# 关闭“密码包含用户名”检测(0=关闭,1=开启,默认1)
usercheck = 07. 创建新用户
bash
# ubuntu
sudo useradd -m -s /bin/bash test
passwd test
usermod -aG sudo test
# kylin
adduser metax
usermod -aG wheel metax
passwd metax8 . nmcli配置IP地址
bash
# 查看所有网络连接(名称、UUID、类型等)
nmcli connection show # 可缩写为 nmcli con show
# 查看设备状态(接口名、类型、连接状态等)
nmcli device status # 可缩写为 nmcli dev status
# 修改连接的 IPv4 配置(静态模式)
nmcli connection modify ens33 \
ipv4.method manual \ # 手动配置(静态 IP)
ipv4.addresses 192.168.1.100/24 \ # IP 地址+子网掩码(CIDR 格式)
ipv4.gateway 192.168.1.1 \ # 网关
ipv4.dns "8.8.8.8,114.114.114.114" # DNS 服务器(多个用逗号分隔)
# 创建以太网连接(类型为 ethernet)
nmcli connection add \
type ethernet \ # 连接类型(以太网)
con-name ens33-static \ # 连接名称(自定义)
ifname ens33 \ # 接口名(需与实际设备一致)
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8,114.114.114.114"
# 激活连接(替换为实际连接名)
nmcli connection up ens33-static # 静态连接示例
# 或
nmcli connection up ens33-dhcp # DHCP 连接示例
# 查看接口的 IP 信息
ip addr show ens33 # 替换为实际接口名
# 查看连接的详细配置(确认 DNS、网关等)
nmcli connection show ens33-static | grep ipv4
在 现代主流发行版(如 Ubuntu 18.04+、CentOS 7+、Fedora) 中,当 netplan 目录无配置文件时,第一时间尝试 nmcli 是高效且合理的,因为 NetworkManager 是最常见的默认网络管理服务。若 nmcli 操作提示 “无可用连接” 或服务未运行,再进一步排查 systemd-networkd 或传统配置方式即可。9. 麒麟系统固定内核版本
bash
sudo yum install yum-plugin-versionlock
sudo yum versionlock add kernel-$(uname -r)10. ssh免密登录
1. 手动免密
bash
# 在本机生成密匙,然后推送到另一主机,两边都这样操作
ssh-keygen -t rsa
ssh-copy-id metax@192.168.1.20
# 批量分发公钥(替换为你的用户名,比如root)
for ip in $(cat nodes.txt); do
ssh-copy-id -i /root/.ssh/id_rsa.pub root@$ip
done
# 用你的dis_cmd.py脚本执行,批量更换内网源
python3 dis_cmd.py -t nodes.txt -m "sed -i \
-e 's/http.*com\/ubuntu/http:\/\/repo.metax-tech.com\/r\/ubuntu/g' \
-e 's/http.*cn\/ubuntu/http:\/\/repo.metax-tech.com\/r\/ubuntu/g' \
/etc/apt/sources.list"2. 脚本免密
bash
#!/bin/bash
#
# 脚本名称:setup_bidir_ssh.sh
# 功能描述:为多台 Ubuntu 22.04 节点的 root 用户配置双向免密 SSH
# 节点 IP 从文件中读取,每行一个 IP
# 使用方法:
# 1. 默认读取当前目录下的 ip.txt : sudo ./setup_bidir_ssh.sh
# 2. 指定文件路径 : sudo ./setup_bidir_ssh.sh /path/to/iplist.txt
#
# 注意事项:所有节点 root 密码必须相同,脚本必须以 root 权限执行
set -euo pipefail
# ---------- 全局变量 ----------
SSH_USER="root"
AUTH_KEYS_FILE="authorized_keys"
TMP_DIR="/tmp/ssh_setup_$$"
TMP_AUTH_KEYS="${TMP_DIR}/authorized_keys_merged"
SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=5"
# ---------- 颜色输出函数 ----------
red() { echo -e "\033[31m$*\033[0m"; }
green() { echo -e "\033[32m$*\033[0m"; }
yellow() { echo -e "\033[33m$*\033[0m"; }
# ---------- 检查运行权限 ----------
if [ "$EUID" -ne 0 ]; then
red "错误:请使用 root 用户执行此脚本。"
exit 1
fi
# ---------- 确定 IP 列表文件 ----------
IP_FILE="${1:-ip.txt}" # 若未提供参数,默认使用 ip.txt
if [ ! -f "$IP_FILE" ]; then
red "错误:IP 列表文件 '$IP_FILE' 不存在!"
echo "请提供文件路径作为参数,或将文件命名为 ip.txt 放在当前目录。"
exit 1
fi
# ---------- 从文件读取 IP,去除空行和前后空白 ----------
mapfile -t NODES < <(grep -v '^\s*$' "$IP_FILE" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
if [ ${#NODES[@]} -lt 2 ]; then
red "错误:IP 列表文件中至少需要 2 个有效 IP。"
exit 1
fi
green "待配置节点数:${#NODES[@]}"
green "节点列表:"
printf " %s\n" "${NODES[@]}"
# ---------- 安装必要工具 ----------
if ! command -v sshpass &> /dev/null; then
yellow "未找到 sshpass,正在安装..."
apt-get update -qq && apt-get install -y sshpass
fi
# ---------- 获取 root 密码 ----------
read -s -p "请输入所有节点的 root 统一密码: " ROOT_PASS
echo
if [ -z "$ROOT_PASS" ]; then
red "密码不能为空!"
exit 1
fi
SSHPASS_CMD="sshpass -p \"${ROOT_PASS}\""
# ---------- 连通性测试 ----------
green "测试所有节点的 SSH 连通性..."
for node in "${NODES[@]}"; do
yellow "正在测试 $node ..."
eval $SSHPASS_CMD ssh $SSH_OPTS -q ${SSH_USER}@$node exit
if [ $? -eq 0 ]; then
green " $node 连接成功"
else
red " $node 连接失败,请检查网络或密码"
exit 1
fi
done
# ---------- 创建临时目录 ----------
mkdir -p "$TMP_DIR"
touch "$TMP_AUTH_KEYS"
# ---------- 1. 在各节点生成密钥对并收集公钥 ----------
for node in "${NODES[@]}"; do
yellow "处理节点 $node ..."
# 确保远程 ~/.ssh 目录存在且权限正确
eval $SSHPASS_CMD ssh $SSH_OPTS ${SSH_USER}@$node \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh"
# 生成密钥对(若不存在)
eval $SSHPASS_CMD ssh $SSH_OPTS ${SSH_USER}@$node \
"[ -f ~/.ssh/id_rsa ] || ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa"
# 获取公钥内容并追加到本地合并文件
PUB_KEY=$(eval $SSHPASS_CMD ssh $SSH_OPTS ${SSH_USER}@$node \
"cat ~/.ssh/id_rsa.pub")
echo "$PUB_KEY" >> "$TMP_AUTH_KEYS"
green " 已收集 $node 的公钥"
done
# ---------- 2. 去重并分发合并后的 authorized_keys ----------
sort -u -o "$TMP_AUTH_KEYS" "$TMP_AUTH_KEYS"
for node in "${NODES[@]}"; do
yellow "向 $node 分发 authorized_keys ..."
# 将合并文件复制到远程节点
eval $SSHPASS_CMD scp $SSH_OPTS "$TMP_AUTH_KEYS" \
${SSH_USER}@$node:~/.ssh/$AUTH_KEYS_FILE
# 远程设置权限
eval $SSHPASS_CMD ssh $SSH_OPTS ${SSH_USER}@$node \
"chmod 600 ~/.ssh/$AUTH_KEYS_FILE"
done
# ---------- 3. 清理临时文件 ----------
rm -rf "$TMP_DIR"
green "临时文件已清理"
# ---------- 4. 验证双向免密 ----------
green "验证双向免密登录(随机抽取 3 对节点)..."
declare -a nodes=("${NODES[@]}")
for i in {1..3}; do
src=${nodes[$RANDOM % ${#nodes[@]}]}
dst=${nodes[$RANDOM % ${#nodes[@]}]}
[ "$src" = "$dst" ] && continue
yellow "测试从 $src 免密登录到 $dst ..."
ssh -o StrictHostKeyChecking=no -o BatchMode=yes ${SSH_USER}@$src \
"ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 ${SSH_USER}@$dst echo OK" \
2>/dev/null | grep -q "OK" && green " 成功" || red " 失败"
done
green "所有配置完成!"11. 配置BMC
bash
yum install -y ipmitool
ipmitool lan set 1 ipsrc static
ipmitool lan set 1 ipaddr 10.0.233.100
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 10.0.232.115. 改DNS
bash
1. 编辑 DNS 配置文件
sudo vim /etc/resolv.conf
2. 添加以下 DNS 服务器(任选其一或都加)
nameserver 8.8.8.8
nameserver 10.2.129.612. 麒麟系统查看内核与固定
bash
grubby --info=ALL # 插卡所有内核
grubby --set-default /boot/vmlinuz-4.19.90-24.4.v2101.ky10.x86_64 # 设置为固定内核
reboot13. rsync传输
bash
rsync -avzP metax@10.7.179.43:/home/metax/maca-sdk-3.2.1.10/appimage/megatron_lm.tar.gz /drives/c/Users/你的Windows用户名/Desktop
C:\Users\o25497\Desktop14. 内核顺序修改
bash
# 1. 查看所有 GRUB 菜单项
awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
你会得到类似这样的输出:
plaintext
Ubuntu
Advanced options for Ubuntu
Ubuntu, with Linux 5.15.0-168-generic
Ubuntu, with Linux 5.15.0-168-generic (recovery mode)
Ubuntu, with Linux 5.15.0-119-generic
Ubuntu, with Linux 5.15.0-119-generic (recovery mode)
UEFI Firmware Settings
# 2. 修改 GRUB 配置固定内核
编辑 GRUB 配置文件:
sudo vim /etc/default/grub
将 GRUB_DEFAULT 的值修改为你想要固定的内核菜单项的完整路径,例如要固定为 5.15.0-119-generic:
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-119-generic"
💡 注意:> 符号用于表示从 “Advanced options for Ubuntu” 子菜单中选择具体内核,名称必须和上一步 awk 命令的输出完全一致。
# 3. 更新 GRUB 并重启
sudo update-grub
sudo reboot
为了防止系统自动更新内核覆盖你的设置,可以锁定当前内核包:
sudo apt-mark hold linux-image-5.15.0-119-generic linux-headers-5.15.0-119-generic15. 逻辑卷扩展
bash
# 1. 查看根目录属于哪个卷组的哪个卷:ubuntu--vg--1-ubuntu--lv(ubuntu-vg-1下的ubuntu-lvs卷)
df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg--1-ubuntu--lv 295G 88G 195G 32% /
# lvs可以看到卷组和卷的对应关系(根目录对应的卷组和卷就是第二个)
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ubuntu-lv ubuntu-vg -wi-a----- <1.10t
ubuntu-lv ubuntu-vg-1 -wi-ao---- 300.00g
# 查看对应卷还有多少空间可以用(根目录所在的卷已用443G,还有143G可以用来扩展)
vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 1 0 wz--n- 6.98t 5.88t
ubuntu-vg-1 1 1 0 wz--n- 443.57g 143.57g
# 二、正式扩容操作(核心步骤)
# 方式 1:扩容到指定大小(例如 2TB,按需修改数值)
sudo lvextend -L 2T /dev/ubuntu-vg-1/ubuntu-lv
resize2fs /dev/ubuntu-vg-1/ubuntu-lv
# 方式 2:增加指定容量(例如增加 500GB)
sudo lvextend -L +500G /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
执行后会看到类似输出:
plaintext
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 141, new_desc_blocks = 256
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 536870912 (4k) blocks long.
# 四、异常处理(可选,仅当步骤 2 报错时用)
如果执行 resize2fs 时报 xfs filesystem 相关错误,说明你的文件系统是 xfs(非默认),改用以下命令:
sudo xfs_growfs /16. 固定IP配置
bash
# 方法1:将默认yml文件改名
mv /etc/netplan/50-clould.xxx.yml 00-cloud.xxx.yml
# 添加配置
tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg > /dev/null <<'EOF'
network: {config: disabled}
EOF17. 安装fuse
bash
sudo apt install fuse libfuse2 -y18. 改ulimit值
bash
sudo cat << EOF >> /etc/security/limits.conf
* soft nofile unlimited
* hard nofile unlimited
EOF19. rdma
bash
#!/bin/bash
# 网卡列表(通过ibdev2netdev查看可获得)
ens="ens123np0 ens120np0 ens121np0 ens118np0 ens122np0 ens116np0 ens117np0 ens119np0"
mlxs="mlx5_0 mlx5_1 mlx5_3 mlx5_10 mlx5_4 mlx5_5 mlx5_6 mlx5_7"
for ens1 in ${ens}
do
mlnx_qos -i ${ens1} --trust=dscp --pfc 0,0,0,0,0,1,0,0
echo 1 > /sys/class/net/${ens1}/ecn/roce_np/enable/5
echo 1 > /sys/class/net/${ens1}/ecn/roce_rp/enable/5
done
for mlx1 in ${mlxs}
do
cma_roce_tos -d ${mlx1} -t 160
echo 160 > /sys/class/infiniband/${mlx1}/tc/1/traffic_class
done
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
ip -s -s neigh flush all20. 多线程压缩文件
bash
pigz -9 -p 100 oonx-arm-1.12.0.tar
# -9 极限压缩,-p 指定多少线程
# 执行后会生成 oonx-arm-1.12.0.tar.gz,原文件 oonx-arm-1.12.0.tar 会被删除
# 解压后同时保留 oonx-arm-1.12.0.tar.gz 和 oonx-arm-1.12.0.tar
gzip -dk oonx-arm-1.12.0.tar.gz
# tar.xz 标准解压(推荐)
tar -xJf 文件名.tar.xz
# xz文件解压
xz -d 文件名.xz21. 软件源
bash
# ubuntu源
cat > /etc/apt/sources.list <<'EOF'
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF
apt update
# 麒麟源
sed -i.bak 's@http.*/NS/@http://repo.metax-tech.com/r/kylin/@g' /etc/yum.repos.d/*.repo
yum makecache
# bclinux源
sed -i.bak 's@http.*bclinux/@https://repo.metax-tech.com/r/bclinux/@g' /etc/yum.repos.d/*.repo
yum makecache23. 看板卡board_type
bash
sudo bash -c 'smi_dirs=($(find /sys/devices/pci* -name smi)); for m in "${!smi_dirs[@]}"; do smi_dir=${smi_dirs[$m]}; echo 1 0 > $smi_dir/testmode; echo 28 1 > $smi_dir/reade2prom; raw_data=$(cat $smi_dir/reade2prom); values=$(echo "$raw_data" | awk -F": " "{print \$2}" | tr -s " \t" " "); values=($(echo "$values" | tr " " "\n" | grep -v "^$" | tac | tr "\n" " ")); board_type="0x00"; if [[ ${#values[@]} -gt 0 ]]; then board_type="0x$(IFS=; echo "${values[*]}")"; fi; echo "GPU$m: $board_type"; done'24. 硬盘操作
31.1 格式化
bash
mkfs.ext4 /dev/nvme1n131.2 nfs共享目录
服务端:10.0.232.61(/data 目录共享)
客户端:另外 5 台服务器(挂载 /data)
一、服务端
1. 安装 NFS 服务
bash
apt update && apt install -y nfs-kernel-server2. 配置共享目录
bash
vim /etc/exports写入这一行(直接复制):
bash
/mnt/share *(rw,sync,no_root_squash,no_subtree_check) # 所有都能访问
/nvme1n1/share 10.0.232.0/24(rw,sync,no_root_squash,no_subtree_check) # 只允许这个网段访问服务端 /etc/exports 配置:
rw:可读写sync:数据安全no_root_squash:root 有权限(服务器集群必备)no_subtree_check:提升性能
3. 生效配置 + 启动服务
bash
exportfs -ra
systemctl restart nfs-server
systemctl enable nfs-server4. 放行防火墙(必须)
bash
ufw allow from 10.0.232.0/24 to any port nfs二、客户端
1. 安装 NFS 客户端
bash
apt update && apt install -y nfs-common2. 创建挂载目录
bash
mkdir -p /mnt/share3. 挂载 NFS
bash
mount 10.0.232.61:/mnt/share /mnt/share4. 永久挂载(开机自动挂)
bash
echo "10.0.232.61:/mnt/share /mnt/share nfs defaults 0 0" >> /etc/fstab三、验证
任意机器执行:
bash
df -h看到:
10.0.232.61:/data 7.0T 95G 6.9T 2% /data就是成功!
25. 更改用户名
- 要用另一个用户操作,不要占用metax用户,并且杀掉所有跟metax有关的进程
bash
sudo -i
pkill -9 -u metax- 验证
bash
id metax
ps -u metax- 更改
bash
usermod -l mars metax
groupmod -n mars metax
usermod -d /home/mars -m mars26. 更改系统第一启动项
- 查看启动顺序
bash
sudo efibootmgr 输出如下信息:
tex
root@metax:~# sudo efibootmgr
BootCurrent: 0013
Timeout: 3 seconds
BootOrder: 0001,0002,0003,0004,0010,0013,0007,000D,000E,0005,0006,0008,0009,000A,000B,000C,000F,0011,0012,0000
Boot0000* Enter Setup
Boot0001* CTyunOS(UEFI NVME(PCI5-0-0): SAMSUNG MZQL27T6HBLA-00B7C)
Boot0002* UEFI NVME(PCI6-0-0): SAMSUNG MZQL27T6HBLA-00B7C
Boot0003* UEFI NVME(PCI45-0-0): SAMSUNG MZQL27T6HBLA-00B7C
Boot0004* UEFI NVME(PCI46-0-0): SAMSUNG MZQL27T6HBLA-00B7C
Boot0005* UEFI SLOT10: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:28:1C PXE IPv4
Boot0006* UEFI SLOT7: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:2B:A4 PXE IPv4
Boot0007* UEFI CPU0_P6A_SLOT11: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:62:20 PXE IPv4
Boot0008* UEFI SLOT8: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:63:08 PXE IPv4
Boot0009* UEFI SLOT9: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:63:50 PXE IPv4
Boot000A* UEFI SLOT3: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:2A:9C PXE IPv4
Boot000B* UEFI SLOT4: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:27:84 PXE IPv4
Boot000C* UEFI SLOT6: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:2B:AC PXE IPv4
Boot000D* UEFI CPU1_G4C_SLOT1: Port 0 - Mellanox Network Adapter - CC:40:F3:FB:6E:DC PXE IPv4
Boot000E* UEFI CPU1_G4C_SLOT1: Port 1 - Mellanox Network Adapter - CC:40:F3:FB:6E:DD PXE IPv4
Boot000F* UEFI SLOT5: Port 0 - Nvidia Network Adapter - 8C:91:3A:2C:61:A8 PXE IPv4
Boot0010* UEFI MegaRAID Controller (PCI:E1-0-0) Drive 0 Logical Channel Pun 239
Boot0011* BootMenu
Boot0012* PxeMenu
Boot0013* Ubuntu Linux(UEFI MegaRAID Controller (PCI:E1-0-0) Drive 0 Logical Channel Pun 238)
Boot0015*
root@metax:~#- 修改顺序,将Boot0013移动到Boot0001的位置
bash
efibootmgr -o 0013,0001,0002,0003,0004,0010,0007,000D,000E,0005,0006,0008,0009,000A,000B,000C,000F,0011,0012,0000- 重启生效