实验室的服务器又崩了,在更新 openssl 的过程中所有指令都只返回 Segmentation Fault,安装网上的办法重启后无法正常启动了,遇到 Kernel panic – not syncing: Attempted to kill init 的错误。尝试了不少办法后还是选择了重装。
实验室的服务器的home分区是由多块硬盘组装而成的,希望重装系统同时保留实验室大家的实验数据,而网上没有对应的博客,折腾了好久终于搞定了,这里记录一下。
1. 使用U盘重装Ubuntu 20.04系统
制作U盘插入服务器,启动时按 F11 进入启动设备选项,选择从u盘启动,检查完文件系统后进入系统重装。
。前面选择默认即可,在安装选项这一步,选择 Something else。进入后会显示之前的分区,这里只需要选择系统盘进行分区即可。
- 分配挂载根目录 / 的分区,设置为 ext4 文件系统
- 分配挂载 /boot 的分区,设置为 ext4 文件系统,我的大小为500M,与之前保持一致即可。
- 分配 swap 分区
- 注意:挂载 /home 的几个硬盘不要使用,选择 don’t use the partition 即可,注意不要格式化!
之后按着安装流程走即可,安装完毕后重启使用硬盘启动进入系统。
2. 将之前的多块硬盘挂载恢复为 /home 分区
通过查看 /prop/scsi/scsi 以及 /dev/ 下的设备,可以找到有哪几块硬盘及对应的设备号,如下为 sdb、sdc、sdd、sde。
将这些硬盘组装成RAID阵列,由于这些硬盘之前已经是组装好的,重装系统后只需要重新组合一下即可,无需考虑RAID的版本。sudo apt-get install mdadm 下载 mdadm 进行磁盘的组装。
sudo mdadm --assemble /dev/md0 /dev/sdb /dev/sdc /dev/sdd /dev/sde
需要事先确定好没有 /dev/md0 这个设备,如果有请换一个名字。这一指令将多个硬盘组合成了一个逻辑分区,接下来将其挂载:
sudo mount /dev/md0 /mnt/tmp
可以进入 /mnt/tmp 中检查文件是否都在,之后将现在 /home 中的文件同步到这个目录中
sudo rsync -avx /home /mnt/tmp
之后将现有的 /home 删除,并将 /dev/md0 挂载为新的 /home
# 删除home sudo rm -rf /home/* sudo umount -l /home # 挂载home sudo mount /dev/md0 /home
设置启动挂载,首先查看硬盘的信息。
sudo blkid
找到新硬盘对应的 UUID 和 TYPE 之后会用到:
编辑 /etc/fstab 文件,将下列信息加入到最后
UUID=刚刚查看到的UUID /home 刚刚查看到的文件系统类型 defaults 0 2
此时通过 df -h 即可查看新挂载的硬盘设备。
3. 恢复用户配置
此时服务器已经恢复了所有的文件,但是之前的账户都没有了,需要重新创建,并将之前每个用户的目录分配回去。对每个需要创建的用户:
- 创建用户
sudo useradd -r --home-dir /home/{usernam} -s /bin/bash username sudo passwd username # 分配密码
- 修改用户目录下所有文件的拥有者
sudo chown username:username /home/username -R
- 修改 /etc/sudoers 添加管理员
至此服务器重装完毕,且用户数据未丢失,但是一些环境和包可能需要重新配置安装。
原文链接:https://blog.51cto.com/u_16213591/8643435