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 文件中相关的挂载点信息