资讯详情

六.开发记录之实验室服务器LXD部署

专栏系列文章如下:

一.开发记录之AHRS、惯导传感器SBG-Ellipse-N配置和使用传感器_goldqiu的博客-CSDN博客

二.派勤工控机的远程使用和开发记录ubuntu和ROS环境配置_goldqiu的博客-CSDN博客

三.移动硬盘装载开发记录ubuntu系统配置、环境、各种软件安装备份等_goldqiu的博客-CSDN博客

四.开发记录之ubuntu系统安装ROS和开发环境_goldqiu的博客-CSDN博客

五.开发记录之ubuntu每个软件都安装在系统中_goldqiu的博客-CSDN博客

背景

管理员应在桌面上新建使用说明read.txt,写下系统版本等信息,安装了什么软件,各种注意事项等等

LXD的安装

以前已经安好了。

LXD 实现虚拟容器

ZFS 管理物理磁盘,支持LXD高级功能

bridge-utils 用于搭建网桥

sudo apt-get install lxd zfsutils-linux bridge-utils

由于学校信息中心网络的限制,如果配置桥接网卡,会导致流量异常,直接断网,实现每人一个ip如果方式失败,我们必须使用端口监控来连接每个容器(如果您不想使用监控方式,请在线查询LXD配置桥接网卡)

首先,我们运行sudo fdisk -l列出服务器上的可用磁盘和分区。我们有两个硬盘,第一个是系统磁盘,第二个是数据磁盘,用于构建数据磁盘LXD系统。

在块设备 /dev/sdb上创建一个ZFS存储池(硬盘地址根据实际情况变化)

sudo lxc storage create zfs-pool zfs source=/dev/sdb(硬盘地址根据实际情况变化)

sudo lxd init

Would you like to use LXD clustering? (yes/no) [default=no]: Do you want to configure a new storage pool? (yes/no) [default=yes]: yes Name of the new storage pool [default=default]: default Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]: zfs Create a new ZFS pool? (yes/no) [default=yes]: yes Would you like to use an existing block device? (yes/no) [default=no]: yes # 在这里输入我们刚刚做的分区 Path to the existing block device:/dev/sda1 # 每个容器的默认尺寸 Size in GB of the new loop device (1GB minimum) [default=30GB]: 1024G Would you like to connect to a MAAS server? (yes/no) [default=no]: # 桥接网络是否创建 Would you like to create a new local network bridge? (yes/no) [default=yes]: yes What should the new bridge be called? (yes/no) [default=yes]: yes What should the new bridge be called? [default=lxdbr0]: lxdbr0 What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto Would you like the LXD server to be available over the network? (yes/no) [default=no]: Would you like stale cached images to be updated automatically? (yes/no) [default=yes] Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

sudo lxc profile edit default

使用清华镜像源(加速创建)

sudo lxc remote add tuna-imageshttps://mirrors.tuna.tsinghua.edu.cn/lxc-images/--protocol=simplestreams --public

列出可用的镜像

sudo lxc image list tuna-images:

使用清华源ubuntu镜像创建了一个名字test的容器

sudo lxc launch tuna-images:ubuntu/18.04 test

sudo lxc exec test bash

我们登录的是root在这个容器中,用户已经存在了一个名字ubuntu的用户

passwd root

passwd ubuntu

容器里的ubuntu这是一个非常简单的系统,需要安装各种软件

apt install ssh

检查容器和宿主机ip因为没有桥接网卡,不能从外部电脑访问容器(不能ping通容器的ip),因此,我们通过端口监控访问我们的容器。

退出容器

exit

在宿主机上查看容器

sudo lxc list

可知容器的ip地址

ip addr

sudo lxc config device add test(这是容器名) proxy0(ssh为proxy0) proxy liste=tcp:172.22.24.126(宿主机ip):60601 connect=tcp:10.152.210.183(容器ip):22 bind=host 60601是我们定的端口号,通过宿主机的60601端口号监听容器中22端口号(SSH默认端口号) sudo lxc config device add test(这里是容器名) proxy1(RDP为proxy1) proxy listen=tcp:172.22.24.126(宿主机ip):60611 connect=tcp:10.152.210.183(容器ip):3389 bind=host 60611是我们定的端口号,通过宿主机的60611端口号监听容器中3389端口号(RDP默认端口号)

RDP用于远程界面(转播3389端口),SSH用于远程命令和传输文件(转播22端口)

ssh  ubuntu@172.22.24.126(宿主机ip) -p 60601

备份原来的源

sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak

编辑写入网易源 (中国源)

(注意系统版本 ubuntu 18.04 bionic)

sudo vim /etc/apt/sources.list

deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse

lxc config device add yourContainerName gpu gpu

添加指定GPU:

lxc config device add yourContainerName gpu0 gpu id=0

安装驱动添加好显卡后,就相当于我们给容器安装了显卡,我们回到容器,然后安装显卡驱动与宿主机的显卡版本必须一致,安装方法参考第一步NVIDIA显卡驱动、CUDN、cuDNN的安装需要注意的是容器里面安装显卡驱动时需要加上后面的参数,安装时不需要安装到内核

sudo sh ./NVIDIA-Linux-X86_64-[YOURVERSION].run --no-kernel-module

到了这一步可以看第七步:容器模板,将server版的容器导出为镜像,可供不需要桌面的同学使用(推荐可以使用VSCode安装Remote SSH插件连接远程服务器)

刷新源

sudo apt update

安装无推荐软件的ubuntu桌面(默认安装gnome,完整安装会有很多无关的软件)

sudo apt install --no-install-recommends ubuntu-desktop

使用安装脚本(安装git后下载我们之后需要用的东西)

sudo apt install gitgit clone https://github.com/shenuiuin/LXD_GPU_SERVER

打开文件夹

cd LXD_GPU_SERVER/

赋予脚本可执行权限

sudo chmod a+x xrdp-installer-1.2.sh

脚本会下载一些文件,需要有Downloads文件夹

mkdir -p ~/Downloads

安装脚本

./xrdp-installer-1.2.sh -c -l -s

安装完成

端口转发在安装好XRDP后,与之前一样,因为我们ping不通容器,所以我们需要使用宿主机的端口号监听容器的xrdp的端口

sudo lxc config device add test proxy1 proxy listen=tcp:172.22.24.126:60611 connect=tcp:10.152.210.183:3389 bind=host

远程连接60611是我们定的端口号,通过宿主机的60611端口号监听容器中3389端口号(XRDP默认端口号)可以通过windows的远程连接来使用容器(windows运行mstsc)

icon图标主题

sudo apt updatesudo apt install papirus-icon-theme

GTK主题

git clone https://github.com/vinceliuice/vimix-gtk-themescd vimix-gtk-themes

sudo ./vimix-installer

应用主题主题安装好后用使用gnome-tweak-toos来应用主题

搜狗输入法、谷歌浏览器等等显示Linux系统信息

sudo apt install neofetchneofetch

查看CPU运行以及内存占用情况

sudo apt install htop

htop

查看显卡运行情况

nvidia-smi

实时查看显卡运行情况(按照0.1s的频率实时刷新)

watch -n0.1 nvidia-smi

查看zfs储存卷的占用情况

zpool list

为容器修改参数配置

我们不想每个人使用全部的硬件资源,所以还需要限制每个人的参数容器参数配置说明配置容器参数lxc config edit YourContainerName

sudo lxc profile edit default

我们把这个配置好的容器当成模板,保存为镜像。

停止容器

sudo lxc stop test

将test容器保存为ubuntudemo镜像

sudo lxc publish test --alias ubuntudemo --public

从模板镜像中新建容器以后直接用模板镜像来创建容器,容器创建好后修改它的配置文件:添加端口映射(远程连接与SSH)、添加显卡(显卡驱动已经有了)、配置硬件参数,(可使用默认配置文件,使得新容器的参数继承于它,这一步就可以省略)

lxc restart YourContainerName

LXD的使用(重要)

导入做好的镜像

通过lxc image ls 查看本机已有的镜像

通过lxc exec tf bash 可以进入容器内进行操作:

exit

:退出容器

lxc stop tf

:停止容器

lxc delete tf

:删除容器

lxc restart tf

:重启容器

新建容器

sudo lxc image list 查看镜像id

sudo lxc launch id name(容器名)

配置容器

在宿主机查看容器

sudo lxc list

可知容器的ip地址

ip addr

sudo lxc config device add test(这里是容器名) proxy0(ssh为proxy0) proxy listen=tcp:172.22.24.126(宿主机ip):60601 connect=tcp:10.152.210.183(容器ip):22 bind=host 60601是我们定的端口号,通过宿主机的60601端口号监听容器中22端口号(SSH默认端口号) sudo lxc config device add test(这里是容器名) proxy1(RDP为proxy1) proxy listen=tcp:172.22.24.126(宿主机ip):60611 connect=tcp:10.152.210.183(容器ip):3389 bind=host 60611是我们定的端口号,通过宿主机的60611端口号监听容器中3389端口号(RDP默认端口号)

RDP用于远程界面(转播3389端口),SSH用于远程命令和传输文件(转播22端口)

lxc config device add yourContainerName gpu gpu

添加指定GPU:

lxc config device add yourContainerName gpu0 gpu id=0

远程连接

ssh  ubuntu@172.22.24.126(宿主机ip) -p 60601(ssh转播端口号)

ubuntu或者window远程桌面软件

172.22.24.126(宿主机ip):60611(rdp转播端口号)

lxd系统安装驱动

安装显卡驱动

sudo apt-get remove --purge nvidia*

设置为清华源

sudo apt-get update

sudo apt install nvidia-driver-470

sudo reboot

nvidia-smi

搞定

安装cuda:

https://blog.csdn.net/weixin_43742643/article/details/115355545

安装其他如ros、webots、anaconda后续有问题可以在这里补充。

参考博客

https://github.com/shenuiuin/LXD_GPU_SERVER

https://www.wangt.cc/2021/09/基于lxd搭建多人共用gpu服务器,简单易用,全网最详/

标签: 2202传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台