⌨️系统相关配置

swap交换空间:

创建swap文件:

sudo fallocate -l 2G /swapfile  #fallocate快速创建一个2GB的文件
# sudo dd if=/dev/zero of=/swapfile bs=1G count=2  #如果fallocate不可用则用dd命令
sudo chmod 600 /swapfile #设置权限
sudo mkswap /swapfile #格式化
sudo swapon /swapfile #启用
free -h  #查看是否生效

让swap永久生效(重启不失效):

sudo nano /etc/fstab
/swapfile none swap sw 0 0  #添加这一行

调整swap使用优先级:

sysctl -a | grep vm.swappiness  #查看当前优先级
sudo sysctl -w vm.swappiness=10  #临时修改优先级

永久修改优先级:

sudo nano /etc/sysctl.conf
vm.swappiness=10  #添加或修改这一行

vm.swappiness应该被设置为多少?

对于桌面系统,或者内存非常宽裕的机器(一般8GB以上),可以设置为50或者60,超高配机器(16GB甚至以上)可以设置的更高;对于服务器,内存非常小的话1~2G,可以设置为20-30,内存相对够用(2-4G),建议修改为10

为什么?这个值的意思大概可以理解成,剩余多少物理内存的时候开始大量使用swap,首先需要明确使用swap会明显降低系统性能,尤其是对于服务器这种硬盘性能不强,又非常依赖长时间大量内存读写的,所以尽量设置小一些;但是对于家用桌面版,首先一般NVMe硬盘的性能很强大,其次,比如一共16GB内存,设置为60,系统要在已经占用了40%也就是6.4GB内存时才会大量使用swap,普通情景不会占用到那么多内存。

系统升级

虽然一般情况下云服务商都会为我们的机器定制一个最合适的状态的系统,不建议自己瞎折腾,尤其是对于追求稳定的生产环境,最好都是别升级。但是我这个人吧,就喜欢都升级到最新的系统,那就来说说Ubuntu怎么进行系统升级

Ubuntu系统升级之前需要先升级所有的软件包:

sudo apt-get update && apt-get upgrade -y

正常来说这样就能自动完成所有升级了,但是有时候云服务器会保留一些旧版的依赖导致通不过Ubuntu升级前的检查,可以用下面的命令强制升级:

sudo apt-get dist-upgrade -y
reboot

重启后应该就可以正常使用升级命令了:

sudo do-release-upgrade

这时有可能还会遇到一个问题,就是 /boot 空间不足导致无法写入新的内核,可以用下面的命令清理旧的内核:自动安全清理方案(会保留最新的两个版本的内核):

# 查看当前已安装的内核版本
ls -l /boot/vmlinuz-*
# 删除旧内核和冗余文件
sudo apt autoremove --purge

如果还是空间不够,可以手动清理,只保留最新的一个内核(有风险):

uname -r  # 查看当前正在使用的内核
sudo apt purge linux-image-5.15.0-84-generic linux-modules-5.15.0-84-generic  #手动清理其他版本的内核(注意替换命令中的版本号!!)
sudo apt autoremove --purge

这样空间应该就够用了,否则的话还可以尝试压缩文件系统:

# 修改压缩算法为 xz
sudo sed -i 's/COMPRESS=.*/COMPRESS=xz/' /etc/initramfs-tools/initramfs.conf

# 重新生成 initramfs
sudo update-initramfs -u -k all

如果这一顿操作下来还是不行。。。那就算了吧

合并磁盘分区

有些服务商会“像模像样”地给机器分配系统盘和数据盘,可能对于一些有分离数据需求的人群来说比较有用,但是对我这种主用 docker 的就很难受了,所以就可以将他们进行合并:

先用 df -h 查看空间结构,输出的内容应该能看懂,找到数据盘的挂载目录,比如我的主机将其挂载到了建站用的 /www 目录下,然后强制卸载该目录并确认挂载情况:

umount -l /www  # 强制卸载,即使有进程占用
mount | grep /dev/vdb  # 应无输出
lsblk | grep vdb       # 检查是否有挂载点

重置文件系统并初始化物理卷:

wipefs -a /dev/vdb  # 强制擦除所有文件系统签名
pvcreate /dev/vdb --force  # 强制创建PV

扩展LVM逻辑卷(注意替换VG名称和路径,路径就是df -h 命令里的挂载点:

vgdisplay | grep "VG Name"  #查看VG名称
vgextend <你的VG名称> /dev/vdb
lvextend -l +100%FREE /dev/mapper/<LV路径>  # 例如 /dev/mapper/ubuntu--vg-root

调整文件系统:

resize2fs /dev/mapper/<LV路径>  # ext4 使用
# 或
xfs_growfs /                   # xfs 使用

验证结果:

df -h /  # 检查根目录是否扩容
lsblk    # 确认 /dev/vdb 已合并

删除启动挂载点(非常重要!否则会导致无法开机):删除 /etc/fstab 文件中相关的挂载点信息

Ubuntu服务器挂载数据盘

首先使用命令 lsblk 查看磁盘结构和分区信息,可以得到类似于下面的输出:

root@ser405828275808:~# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0     7:0    0 63.8M  1 loop /snap/core20/2501
loop1     7:1    0 61.9M  1 loop /snap/core20/1434
loop2     7:2    0 79.9M  1 loop /snap/lxd/22923
loop3     7:3    0 89.4M  1 loop /snap/lxd/31333
loop4     7:4    0 50.9M  1 loop /snap/snapd/24505
sr0      11:0    1  376K  0 rom  
vda     253:0    0   30G  0 disk 
├─vda1  253:1    0 29.9G  0 part /
├─vda14 253:14   0    4M  0 part 
└─vda15 253:15   0  106M  0 part /boot/efi
vdb     253:16   0   80G  0 disk 
└─vdb1  253:17   0   80G  0 part

这里的80GB的数据盘就是目前还没有挂载(后面没有挂载点),我们需要挂载的,他已经有了一个分区是/dev/vdb1,这时我们需要确定文件系统格式:

sudo file -s /dev/vdb1

然后可以从输出信息中得知其是否为ext4格式,如果是就按照下面的步骤,如果没有文件系统则创建文件系统:

sudo mkfs.ext4 /dev/vdb1

然后我们需要创建挂载点目录,比如/data文件夹:

sudo mkdir /data

创建临时挂载:

sudo mount /dev/vdb1 /data

这个时候应该已经挂载成功了,可以通过df -h 命令看到挂载信息了,然后我们需要永久化挂载(非常重要):

先获取数据盘的uuid:

sudo blkid /dev/vdb1

然后在 fstab 文件中添加这个挂载:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2

重启测试是否成功永久挂载

最后更新于