重装服务器系统

背景

我们研究小组跑程序一直使用的新配的服务器,每人分配了一个lxd容器。这本是一份极为美妙的事情,但是容器内出现过两次ping不通百度的情况,导致需要下载新环境时,不能直接使用命令,本人找过许多人,想了许多方法都无效,索性直接重装暴力解决。下面记录一下我们重装的过程和其中遇到的问题

Ubuntu服务器备份数据到硬盘

找到需要备份的文件,使用tar打包。(例:/home/Project文件夹)

cd /home
tar cvf Project.tar Project/

#可以查看文件/文件夹的大小

du -ach Project.tar

方法一:

如果大家使用的图形化界面或者U盘路径可以直接显示,那么就用此方法
使用scp命令 将打包的文件发送给硬盘,其中ubuntu下的硬盘路径为 : /media/ubuntu/KESU/Ubuntu_File 。其中10.118.158.1是目标主机的ip,KESU即硬盘名称,Ubuntu_File是文件名。例:

发送文件

scp Project.tar [email protected]:/media/ubuntu/KESU/Ubuntu_File

发送文件夹时需要加 -r

scp -r Project/ [email protected]:/media/ubuntu/KESU/Ubuntu_File

#传输文件这个事情可以有很多种做法,他们的效率各不相同,因为要备份的数据多,所以我们使用效率最高的scp

  • Filezilla : 5M/s (max)
  • scp : 50M/s (avg)
  • scp:100M/s (双硬盘拷贝)

scp传数据速度

方法二(挂载方法):

如果大家是文字界面或U盘路径不能直接显示。那就要先把设备挂载到路径下。
首先查看设备情况

lsblk

这里的sdb和sdc就是我们外接的、需要访问的硬盘。由于对Ubuntu对格式的要求,我们不能直接挂载disk格式的sdb和sdc,而是他们part格式的子目录。
在这里插入图片描述创建我们要挂载的目录,并挂载磁盘到目录

sudo mkdir /mnt/mount_point
sudo mount /dev/sdb1 /mnt/mount_point

#注意:一次只能挂载一个part,所以这样挂载的方式传输效率会稍微慢一些

数据传输按照方法一进行。

卸载lxd

首先停止lxd容器并删除(容器名:paige)

lxc stop paige
lxc delete paige

照以上方法删除其余容器,然后卸载lxd。由于服务器lxd是用snap安装的,所以也需要用snap命令卸载。如图
参考:ubuntu中snap包安装、更新删除与使用的示例分析
在这里插入图片描述
卸载lxd

sudo snap remove lxd

#关于lxd容器没网的问题,有种说法是docker和lxd冲突了,正好本机也通过snap安装过docker,但是没使用。这里正好也卸载了
参考:LXD/LXC 奇怪的重启断网问题解决

sudo snap remove docker

到目前为止就是纯净的宿主机系统了

lxd

sudo snap install lxd # 安装lxd
sudo apt install zfsutils-linux bridge-utils # 用于搭建网桥
sudo lxc init # 初始化lxd,全选默认选项
#选错也没关系,还能使用下面命令改
#sudo lxc profile edit default

这样lxd基本就下好了,接下来是一些主机的配置

宿主机显卡配置

主机需要下载显卡驱动才能使用nvidia-smi命令,同时容器要与主机版本完全一致。由于找不到以前的版本 这里选择重装:
卸载宿主机显卡驱动

sudo apt-get remove --purge nvidia*
sudo apt autoremove

安装宿主机显卡驱动,去NVIDIA官网 下载最新驱动(.run文件),然后用Filezila传给宿主机

sudo apt install gcc g++ make # 安装依赖
sudo apt install nvidia-driver-xxx #xxx为指定的驱动版本号
sudo reboot #重启
nvidia-smi #查看是否生效

设置显卡驱动不要⾃动更新,在弹出的界⾯中选择 no

sudo dpkg-reconfigure unattended-upgrades

在这里插入图片描述
重装显存后发现两个问题,一个是功率占用比较高,另一个是nvidia-smi命令后要几秒时间才会出结果。
在这里插入图片描述
为了解决这些问题,将显卡模式改为持久模式

sudo nvidia-smi -pm 1 # 改为持久模式

然后如果出现xorg占用显存的问题(如下所示),可以关闭可视化界面

sudo service gdm stop

在这里插入图片描述# 容器的中不用安装显卡驱动。最好的方式是宿主机安装显卡驱动,容器使用宿主机的共享即可,在后面我们会说到

容器配置——lxd共享存储池

查看我们数据要存放的设备

sudo lsblk

在这里插入图片描述
在块设备/dev/nvme0n1上创建⼀个ZFS存储池
#注意:这里同样只能操作part格式的内容,所以命令是

lxc storage create zfs-pool zfs source=/dev/nvme0n1p1

这样我们就创建好了一个存储池

lxc storage list #列出存储池

在这里插入图片描述

查看存储池使用情况和总容量

lxc storage info zfs-pool

请添加图片描述

容器配置——ssh连接

sudo lxc launch ubuntu:20.02 paige -s zfs-pool#创建名为paige的容器,ubuntu版本与宿主机一致,并挂载到共享存储池中
lxc exec paige bash #进入容器,进去之后是root用户,实际上还自带一个ubuntu用户
passwd root #设置root密码
passwd ubuntu #设置ubuntu密码,最好与root密码相同
# 设置ssh
sudo vim /etc/ssh/sshd_config #将 PasswordAuthentication 改为yes
systemctl restart sshd #重启ssh服务

通过上诉步骤后返回宿主机,建立端口与容器的映射关系,这里宿主机的6002端口映射到了容器的22端口,ssh连接宿主机的6002端口即可进入容器

sudo lxc config device add paige proxy0 proxy listen=tcp:192.168.2.85:6002 connect=tcp:10.228.141.116:22 bind=host 

到此我们就可以使用ssh直接连接容器了

ssh [email protected] -p 6002

#如果端口映射写错 我们可以通过以下命令删除

sudo lxc config device remove paige proxy0

容器配置——使用容器模板批量生成

可以现在容器中安装一些必要的软件或文件夹,例如:anaconda,之后批量生成的容器中也会包含这些软件、文件夹、配置等内容

  • 停止容器paige
lxc stop {
    
    容器名}
#例如:lxc stop paige
  • 打包
sudo lxc publish {
    
    容器名} --alias {
    
    镜像名} --public
#例如:sudo lxc publish paige --alias paige_copy --public
  • 生成
lxc launch [镜像名] [新的容器名]
#例如:lxc launch paige_copy yui

#注意:新生成的容器虽然ssh配置正确,但是ubuntu密码没能被拷贝。所以不能直接使用ssh连接,需要先进容器修改用户ubuntu的密码。

容器配置——权限

sudo lxc config device add [container_name] gpu gpu #允许paige容器使用所有显卡
lxc config set [container_name] limits.cpu [xx] # xx表示指定的cpu核心数 我们没设置
lxc config set [container_name] limits.memory=[xx]GB # xx表示指定的内存的大小 我们是24
lxc config set [container_name] security.privileged false #设置容器的特权为false,不然可能与显卡驱动共享不兼容
lxc config set [container_name] nvidia.runtime true #设置容器可以共享宿主机的显卡驱动
lxc restart [container_name] # 重启容器 让权限生效

参考链接

  1. 多人共用GPU服务器LXD安装
  2. 基于LXD搭建多人共用GPU服务器
  3. 完整步骤!如何使用LXD构建多人使用GPU服务器
  4. Ubuntu 命令(随时更新)
  5. LXD/LXC 奇怪的重启断网问题解决
  6. 虚拟容器LXD命令详解
  7. ubuntu中snap包安装、更新删除与使用的示例分析
  8. Ubuntu 中查看防火墙的状态
  9. ssh连接被拒
  10. 端口映射建立与删除
  11. ubuntu关闭/usr/lib/xorg/Xorg /usr/bin/gnome-shell ubuntu清理图形界面占用的显存

猜你喜欢

转载自blog.csdn.net/Norton_Paige/article/details/131699315