Ubuntu Server 20.04安装

Ubuntu Server 20.04安装配置中的技巧与坑。

安装系统

制作启动U盘并从U盘启动,依据安装器引导进行安装。如果没有Internet连接,建议不插网线。(详见下文

分区

以下为分区的参考配置。

背景:多块硬盘使用RAID卡组RAID 5,故仅显示一块硬盘。

  1. Available Devices中选择相关硬盘“Use As Boot Device”,会自动创建ESP分区,挂载到/boot/efi
  2. 使用硬盘剩余空间创建新的分区,不格式化。
  3. 创建LVM的卷组,选择新的分区。
  4. 在卷组中创建新的逻辑卷,并挂载为//home

莫名崩溃

如果在分区页面后突然出现安装日志界面,并弹窗提示遇到问题。日志页面的最后几行有关snap。疑似因snap联网问题导致崩溃,需要断网重新进行安装。

安装后的配置

安装后根据具体情况仍有些内容需要配置。

时间与时区

联网后会自动更新时间,可以在/etc/systemd/timesyncd.conf中配置NTP服务器。

使用sudo dpkg-reconfigure tzdata更改时区。

详见时间时区

本地化

首先确认是否有zh_CN.UTF-8与相关语言包,若没有则先安装语言包,生成zh_CN.UTF-8。

然后设置LANG环境变量。建议不设置LC_MESSAGES。若设置LC_MESSAGES,系统消息可保持英文,可能在一些情况下有利于理解。但是将LC_MESSAGES设置为POSIX会使得许多命令的--help以及vim、nano的菜单为英文。

详见Locale

htop配置文件

当cpu核数过多时,小窗口显示htop极不友好。可参照其他设备的htop,“摸黑”移除cpu所有单个核的状态,只显示cpu整体平均。再将个人的htop配置文件复制到系统配置文件。配置文件位置参考htop的man,查看CONFIG FILE。

用户管理

参考用户管理文档增删用户。

默认情况下,不同用户的家目录是相互可读的。adduser的配置文件为/etc/adduser.confDIR_MODE的默认值为0755,修改为0700以禁止相互可读。

加入sudo组即可获得root权限,建议除管理员外,其他用户只赋予特定有需求的命令的sudo权限。sudo配置文件的语法可以参考Arch Linux Wiki

静态IP

若断网安装,则需安装后手动配置静态IP。编辑/etc/netplan/下的yaml文件。

参考Network Configuration博客

防火墙

防火墙默认是关闭的。配置参考Firewall

编译器与jre

安装build-essential与最新lts版本openjdk的headless jre。headless表示不支持GUI Java程序。

参考InstallingCompilers

无人值守更新(Unattended Upgrade)

Unattended-UpgradeUpdate-Package-Lists设置为0,详见AutomaticSecurityUpdates

安装英伟达闭源驱动

安装方式

考虑到服务器有长期使用的需求,而Ubuntu的软件仓库或者PPA提供的英伟达闭源驱动包随着发行版停止支持将不再更新。故舍弃一键傻瓜式安装方式,而选择较为麻烦的手动安装。

安装过程

  1. 使用apt安装dkms软件包。
  2. 英伟达网站选择并下载合适的驱动。
  3. 禁用Nouveau开源驱动。
    1
    2
    3
    4
    5
    6
    # 创建文件/etc/modprobe.d/blacklist-nvidia-nouveau.conf(文件名似乎不重要)并写入
    # blacklist nouveau
    # options nouveau modeset=0

    # 更新initramfs
    sudo update-initramfs -u
  4. sudo sh NVIDIA-Linux-x86_64-xxx.xx.run无需安装32位兼容库,也不用让驱动安装程序修改X的配置(服务器没有GUI)

英伟达显卡开启Persistence Daemon

对于HPC环境,建议开启Persistence Daemon,加快程序启动。使用/usr/share/doc/NVIDIA_GLX-1.0/sample/nvidia-persistenced-init.tar.bz2中的脚本,sudo bash ./install.sh安装成功即可。

参考Driver Persistence

深度学习无法运行多卡程序

若pytorch的ddp多卡程序无法运行,显卡总是锁死,则在BIOS中找到IOMMU选项(可能在北桥设置中),将其关闭(默认值为auto)。

IOMMU的具体含义暂不了解,问题解决原理未知。似乎使用Intel CPU的服务器默认是关闭的,使用AMD的则默认开启。

相关issue:issue1issue2

如果改不了,则可以修改环境变量NCCL_P2P_DISABLE=1以禁用显卡之间P2P,但可能会有性能损失。

这一措施还可以解决deepspeed程序正常结束或者手动终止后,cpu短暂死锁几分钟的问题。

kernel:NMI watchdog: BUG: soft lockup - CPU#xx stuck for 22s

xfs下的硬盘配额

涉及修改/etc/fstab开启配额功能,并且xfs_quota -x -c使用管理员命令limit设置特定用户或默认的限制空间。命令语法与软硬限制详见man xfs_quota