因为更新cuda时误删了系统库,导致系统无法启动,需要重装系统。好在系统盘和数据盘时分开的。
第一步:重装系统
- 安装server镜像(可以选择desktop版本,先上去备份数据,桌面版好操作)
- 然后进入bios,选择uefi启动模式,启动盘选择usb(我们的server6的bios胸痛有点抽象,等下最后面有描述)
- 语言选择English
- IP设置为网线的IP地址,这个根据自己的服务器确定
- 然后代理使用默认的即可
- 因为是数据和系统分盘,所以安装的时候需要选择custom
- 注意先把数据盘取消/拔掉了(如果不能物理拔掉,也可以设置里面卸载的),然后再分区系统盘
- 系统盘分区设置为: efi分配2GB,/根目录分配200GB,然后剩下的为home目录分配即可
- 然后选择安装(我记得是这样子的,安装完之后需要重启)
第二步:重新挂载数据盘
因为我们的server-6是有两个机器硬盘作为数据盘的,一共14.5TB,所以需要先连接一下LVM的相关知识。其实就是把两个盘合起来的LVM作为一个新的卷就行了。(我找了听过LVM扩容的教程看了,发现别人的都是空盘,而我有数据的盘不能用LVM扩容,而是直接替换home就行了,具体操作看下面的流程)
- PV : Physical volume
- VG : Volume Group
- LV : Logical Volume
(step-1)先看看系统的配置
- lsblk查看有哪些设备:(这里可以看出nvme0n1是系统盘)
- 再看看系统未添加的两个机器硬盘属于哪一个逻辑卷(因为重装系统之前就添加过pv/vg/lv等等操作,所以在重装时这两个盘属于同一个lv?)
- 其中红框的
/dev/vg0/lv-0
就是lv的卷名了,跟/dev/sda是一样使用的(暂时的理解)
(step-2)先把数据卷挂载到任意一个空文件夹
因为我们的数据盘不是空盘,不需要格式化!!!!
- 其中红框的
sudo mkdir home_data
sudo mount /dev/vg0/lv-0 /home_data
这样进入到home_data文件夹里面就可以看到之前的数据了:
(step-3)在使用home_data覆盖home目录之前,备份目前的home目录
sudo mkdir /home_backup
sudo cp -arv /home/* /home_backup/*
(step-4)设置挂载方式,使用/dev/vg0/lv-0覆盖之前的home目录
之前home目录挂载的硬盘分区是:/dev/nvme0n1p3,我们这一步的操作是为了更换home文件数据! 我们现在打开
/etc/fstab
文件夹,修改其中的开机自动挂载关系:原来的挂载方式是:/dev/nvme0n1p3 -> home我们直接改成:/dev/vg0/lv-0 -> home ,需要通过UUID进行设置,因为硬盘的/dev/sda这种名字是会变的,而UUID是不会变的设备号。(详细请看截图)
- 先查看设备的UUID:
sudo blkid
- 再更换UUID:(就是注释掉原来的home,然后更换uuid即可,其它前缀和后面的内容都不用变,文件系统是ext4也不用改,好像默认是ext4比较多)
- 重启
sudo reboot
重启如果成功,就说明这一步操作成功了。(运维大哥说一般这种覆盖挂载很可能会导致重启失败,如果失败了,需要到线下去重启机器,ubuntu找不到home目录时,仍然可以使用密码进入recovery mode进行修改)
(step-5)等我们这一步操作完之后/dev/nvme0n1p3 就处于未挂载状态了,第五步再把它挂载回来
我们把home数据备份到home_backup里面了,这里我们直接重新挂载一遍就好了!!!(因为现在home_backup的分区是没有挂载的,没有办法进行复制,所以直接挂载就能访问了)
- 然后再次重启
sudo reboot
,如果重启成功(这一步失败的概率不大,就是普通挂载罢了),就说明我们的数据迁移成功了!
第三步:重新恢复用户
虽然第二步已经把数据成功挂载到home文件夹了,但是我们用户的权限还是不对的(虽然用户还没创建)。pc甚至进不去其它用户文件夹
使用下面的脚本可以添加用户+设置密码,同时设置好权限。
#!/bin/bash
# "Jiahr"
# "Linzy"
# "Pengy" 彭颖
# "Xubn"
# Wangzy 到底是王紫洋还是王志远
# "Zhaows"
declare -A keymap
keymap=(
[Mazy]="Mazhiyong"
[Huangwb]="Huangwenbin"
[Chenyl]="Chenyile"
[Chenxm]="Chenxiaomin"
[Chenyw]="Chenyawen"
[Chenzl]="Chenzhanlin"
[Dengqy]="Dengqinyi"
[Dengq]="Dengqi"
[Jiahr]="Jiahr" #
[Jianglq]="Jiangluoqian"
[Leiyj]="Leiyijie"
[Lianght]="lianghantao"
[Linzy]="Linzeyuan"
[Liqk]="Liqiuke"
[Lij]="Lijie"
[Liuc]="Liuchen"
[Lizp]="Lizhiping"
[Panhl]="Panhaolin"
[Pengy]="Pengying"
[Wangzy]="Wangziyang"
[Xubn]="Xubingna"
[Yangzh]="Yangzehang"
[Yedh]="Yedahang"
[Yumj]="Yumianjie"
# [Zhakx]="Zhakaixing"
# [Zhangrh]="Zhangronghao"
# [Zhangsl]="Zhangshulian"
# [Zhaors]="Zhaoruoshan"
# [Zhaows]="Zhaowensong"
# [Zhengwt]="Zhengwentao"
# [Zhengzy]="Zhengzhenya"
# [Zhouxb]="Zhouxuebin"
# [Guanjq]="Guanjinquan"
)
for k in ${!keymap[@]}; do
echo "${k} : ${keymap[${k}]}123."
useradd -d "/home/${k}" -s /bin/bash ${k}
echo -e "${keymap[${k}]}123.\n${keymap[${k}]}123.\n" | sudo -S passwd ${k}
sudo chown -R ${k}:${k} "/home/${k}"
sudo chmod -R 750 "/home/${k}"
done
实验室同学能够正常登录了,但是不知道为什么users查看不到其它用户:
其它奇怪问题
1. shell的路径不见了
这个问题得到了解决:https://blog.youkuaiyun.com/Du_wood/article/details/84914759
- 不过不管是哪一个用户,bash用的都是同一个:
- 不过使用
usermod -s /bin/bash username
真行!
2. 怎么没有root用户
Ubuntu22.04 安装完成之后默认是没有root账户登录权限的,需要手动创建root用户。(只需要执行
sudo passwd root
就可以创建root账户啦,它是具有root权限的,而我们一开始安装系统的用户名是pc!)
3. 用户无法访问某一些软件
明明是安装了nvidia-cuda-toolkit的,但是就是看不到!
检查/usr/local目录下的信息,发现有两个cuda文件夹,不知道两个的区别是什么。
https://blog.youkuaiyun.com/qq_34740599/article/details/106950389查看这篇文章解决了我的疑惑:cuda文件夹里面全部都是软链接,cuda-12.3才是真正下载的位置。因为cuda支持多版本共存,需要切换版本的时候,更换cuda的软连接就行了!(所以路径的设置上,当然是设置软链接啦!)
在我配置好路径之后,其它用户也能够访问cuda哩!
在/etc/profile
里面添加这些内容就行了!先vim /etc/profile
,再复制进去。(这些环境变量适用于所有用户)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
4. .用户报错 Xauthority does not exist
这个错误是因为用户创建的时候没有创建对用的用户目录,或者没有指定用户目录。(因为我们已经有了用户文件夹,所以不能使用useradd -m
强制创建,我们只需要指定就行了)
- 不过根据上面的脚本来添加用户,不会出现这个问题(因为被排雷了)。
useradd -d /home/username -s /bin/bash username
passwd username
chown -R username:username /home/username
chmod 750 /home/username
5. 更新完ssh之后gpustat和nvidia-smi无法使用
重装系统之后,已经能够使用nvidia-smi查看cuda信息了,但是更新了ssh之后,又出现了错误。
需要重新安装nvidia-cuda-toolkit、gpustat,但是安装了完这些东西之后,还是不行!
难道又需要我重装cuda驱动了吗呜呜呜。
也就是说,我nvcc -V正常,但是gpustat异常(x,报错误为:pynvml.NVMLError_DriverNotLoaded: Driver Not Loaded
查看dkms status
,信息如下:
- 但是我查看服务器推荐的nvidia driver版本时535的啊!!!
没办法,只能重装driver了
使用师兄留下来的重装driver的方法,安装了535版本的driver。(我其实很想知道这种安装方法安装的是什么,还有另一种是通过cuda.run文件进行安装的,难道说前者是安装driver,后者是安装cuda?然后cuda版本为12.3,但是driver只能最高支持到12.2,所以我这次操作之后的运行时cuda版本为12.2,然后编译时cuda版本仍然是12.3?)
现在是可以使用了!但是nvcc -V和nvidia-smi的版本是不一样的,同时ls /usr/local/
看到的cuda-12.3仍然存在。
6. SFTP挂了
这个链接提供的方法完美解决:(就是修改/etc/ssh/sshd_config文件)https://blog.youkuaiyun.com/qq_36933159/article/details/135644309
原来为:
Subsystem sftp /usr/local/openssh/libexec/sftp-server
修改为:
Subsystem sftp internal-sftp
7. 实验室有同学vscode-ssh扩展报错同时连不上服务器
尝试了两种方法:https://blog.youkuaiyun.com/hjmaAsC/article/details/107723029
最后删掉.vscode-server文件夹就行了
8. 明明权限都分配了,但是conda无法安装依赖
这里ll可以看到,文件夹的所属者属于Zhangsl,属于Jianglq Group。之前chown忘了加-R参数了,破案了。
9.需要重装的软件包有:
- zip