Skip to content

硬盘

算力舱默认携带的硬盘是 1T 版本的固态硬盘。但算力舱具有两个 pcie4 的接口,您可以按照您的需求来更换硬盘。

换硬盘

  1. 将换下来的硬盘的数据拷贝到新硬盘上(原来的硬盘上有一些模型的数据和算力舱的客户端)
  2. 换上新的硬盘即可

警告操作

换硬盘时需要确保 /etc/fstab 中的挂载路径是对应上的,要不然系统进不去。

下面这个是一个示例,里面将固态盘挂载到 /ssd 这个目录下。

UUID=942a4d75-e509-4fa2-8d3a-23cb6925b68c /ssd ext4 defaults 0 2
/ssd/home /home none bind 0 0

迁移系统到固态

在算力舱现在系统中,系统是在 64G 的 emmc 存储上的,而 dockerhome 是在 SSD 存储上的,您可以按照下面的命令来将系统迁移到 SSD 上。

  1. /ssd 目录

这个目录是现在 1T 硬盘的挂载路径,您可以在里面看到 docker, home, lzc-ai-agent 等目录。

  1. 拷贝当前的系统到 nvme 硬盘中, 假设您的 nvme 为 nvme0n1p1
sudo mount /dev/nvme0n1p1 /mnt
sudo rsync -axHAWX --numeric-ids --info=progress2 --exclude={"/dev/","/proc/","/sys/","/tmp/","/run/","/mnt/","/media/*","/lost+found", "/ssd/", "/home/"} / /mnt

sudo mkdir -p /mnt/ssd # 迁移之前的 /ssd 到新的目录

sudo systemctl stop lzc-ai-agent
sudo systemctl stop docker
systemctl stop nvzramconfig
systemctl disable nvzramconfig

mkdir -p /mnt/ssd
mv /mnt/docker /mnt/ssd/
mv /mnt/lzc-ai-agent /mnt/ssd/lzc-ai-agent
  1. 更改 /etc/fstab

需要将 /ssd/ 相关的行注释掉,更新后的 /etc/fstab 看起来类似下面的文本

# /etc/fstab: static file system information.
#
# These are the filesystems that are always mounted on boot, you can
# override any of these by copying the appropriate line from this file into
# /etc/fstab and tweaking it as you see fit.  See fstab(5).
#
# <file system> <mount point>             <type>          <options>                               <dump> <pass>
/dev/root            /                     ext4           defaults                                     0 1
UUID=A9EE-ABCF /boot/efi vfat defaults 0 1
  1. 写入 /etc/systemd/system/setssdroot.service
[Unit]
Description=Change rootfs to SSD in M.2 key M slot (nvme0n1p1)
DefaultDependencies=no
Conflicts=shutdown.target
After=dev-nvme0n1p1.device
Requires=dev-nvme0n1p1.device
Before=shutdown.target
ConditionPathExists=/dev/nvme0n1p1
ConditionPathExists=/etc/setssdroot.conf
ConditionVirtualization=!container
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/setssdroot.sh
[Install]
WantedBy=default.target
  1. 写入 /sbin/setssdroot.sh
#!/bin/sh
# Runs at startup, switches rootfs to the SSD on nvme0 (M.2 Key M slot)
NVME_DRIVE="/dev/nvme0n1p1"
CHROOT_PATH="/nvmeroot"

INITBIN=/lib/systemd/systemd
EXT4_OPT="-o defaults -o errors=remount-ro -o discard"

modprobe ext4

mkdir -p ${CHROOT_PATH}
mount -t ext4 ${EXT4_OPT} ${NVME_DRIVE} ${CHROOT_PATH}

cd ${CHROOT_PATH}
/bin/systemctl --no-block switch-root ${CHROOT_PATH}
  1. 执行命令
sudo chmod 777 /sbin/setssdroot.sh
systemctl daemon-reload
sudo systemctl enable setssdroot.service

sudo cp /etc/systemd/system/setssdroot.service /mnt/etc/systemd/system/setssdroot.service
sudo cp /sbin/setssdroot.sh /mnt/sbin/setssdroot.sh
sudo cp /etc/fstab /mnt/etc/fstab

sudo touch /etc/setssdroot.conf

/etc/setssdroot.conf 为一个标识文件,这个文件存在才会使用 nvme 上的 rootfs 启动。所以如果您需要切换会 emmc 系统,您可以

  • 将 nvme 硬盘拔掉
  • 手动 mount emmc 硬盘,然后将里面的 /etc/setssdroot.conf 文件删除重启即可
  1. 重启生效

配置 Swapfile

在您迁移系统后,重启系统,lsblk 可以看到当前系统已经在 nvme 上,配置 swapfile

fallocate -l 32G /swapfile
mkswap /swapfile

创建一个 /etc/systemd/system/swapfile.swap 文件写入下面的内容

[Swap]
What=/swapfile

[Install]
WantedBy=swap.target

执行下面的命令进行启动

systemctl daemon-reload
systemctl status swapfile.swap

systemctl enable swapfile.swap
systemctl start swapfile.swap

修复 apt man 数据库错误

# 修复权限
sudo chown -R man:root /var/cache/man
sudo chmod -R 755 /var/cache/man

# 重建数据库
sudo mandb