这系统我大概也用了大半个月了,遇到了很多问题,有些问题我到现在也没办法解决,这里先把解决了的在这里做一个记录吧。
Btrfs filesystem full
首先是btrfs文件系统的一个问题,明明硬盘还有很多空闲的空间但写不进去数据,提示硬盘满了。
因为我也没怎么接触过这个文件系统,我当时就很纳闷,搜了下很多人都说btrfs用df命令查看的空间不准。
那好吧,我就是用df命令看的,可能是不准?所以我当时就把一些快照给删除了,腾出了一些空间,确实也没报错了。
但是好景不长啊,第二天又开始提示空间不足了,我就寻思应该没这么简单,因为这两次提示空间不足都是在我用find命令查找全盘某一个文件后才出现的。
后来在arch的wiki上发现了这个:
https://wiki.archlinux.org/index.php/Btrfs_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E6%95%B0%E6%8D%AE%E5%B9%B3%E8%A1%A1_(Balance)
很明显我这个症状和这上面说的几乎是一模一样的:
https://btrfs.wiki.kernel.org/index.php/FAQ#Help.21_Btrfs_claims_I.27m_out_of_space.2C_but_it_looks_like_I_should_have_lots_left.21
简单点说就是btrfs把硬盘所有空间都分配了,但实际上这些空间也没真正的用掉(df命令此时就能看到大量空闲空间)
接着btrfs还有一个元数据的存储空间,这个元数据是单独存储的,也有一个可用的大小,如果元数据接近满了,在btrfs里面也会提示空间不足。
要验证是不是这个问题,首先用下面的命令查看btrfs是否分配了所有空间:
sudo btrfs fi show /dev/sda4
已使用的值如果等于总计的值说明满足这个问题的第一个条件。
然后看元数据的大小是否满了,或者接近满:
sudo btrfs fi df /
也可以用这个命令查看:
sudo btrfs fi usage /
这是满足这个问题的第二个条件,我当时看的时候已经用了93%。
此时问题就比较明朗了,就是元数据空间满了,同时硬盘空间又已经被全部分配了,虽然此时有一部分空间是空闲没有使用的,但是btrfs这个时候并不能自动把这些没有使用的空闲空间再分配给元数据用。
解决办法是做一次数据平衡,把一部分data空间内的空间平衡给元数据空间用。
但是在做数据平衡之前还有一个坑,你需要自己先想办法腾出来一部分空间,否则在做数据平衡的时候会直接提示你空间不足。
这里我还是老样子把快照删了一些,使用下面的命令查看快照列表:
sudo snapper list
然后删除不需要的快照:
sudo snapper delete number
接下来就可以做数据平衡了,我当时用的是这条命令:
sudo btrfs balance start /
但是后来发现直接用这个命令不做限制的话,耗时很长,我100GB的硬盘等了快1小时才好,如果硬盘再大点那耗时不敢想象,可能你需要限制一下平衡的大小:
sudo btrfs balance start / -dlimit=3
在平衡的过程中可以通过下面的命令查看状态:
sudo btrfs balance status /
平衡做好后应该会把之前那一部分空闲的没有使用的空间变为未分配的空间,同时元数据空间会相应的增大一点。
未分配的空间btrfs后续会根据你的需要自动进行分配,不需要手动干预。
那么到这里也就明白了为啥之前只要一用find命令就提示空间不足,因为find在查找全盘文件的时候会增加很多元数据空间的使用。
CPU频率
说句老实话我用了这个系统20天后才发现我的这块i5-8400在openSUSE上竟然默认是以“省电模式”来运行的。。。
因为我之前在主板里面设置过把CPU频率锁定到最大频率运行,在Windosw10下面这个也是正常的,CPU一直都是最大频率运行,所以我以为openSUSE也会遵循主板上面的设置。
结果没想到,我在折腾kde桌面部件的时候偶然发现,我的CPU怎么不是最大频率运行???
后来经过一番搜索得知,openSUSE默认是以省电模式运行的,如果要改成最大频率运行,需要自己手动操作。
使用下面的命令查看当前的模式:
sudo cpupower frequency-info
如果显示powersave说明CPU是省电模式,要改为最大频率运行,执行下面的命令:
sudo cpupower frequency-set -g performance
根据CPU架构不同,这个可配置的模式也不一定相同,具体的可以参考:
https://wiki.archlinux.org/index.php/CPU_frequency_scaling_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#cpupower
这个设置不会永久保存,每次开机都需要你自己手动执行一次命令很麻烦,这里可以创建一个systemd服务:
sudo nano /usr/lib/systemd/system/cpupower.service
写入如下配置:
[Unit] Description=Change CPU governor [Service] Type=oneshot User=root ExecStart=/usr/bin/sh -c "/usr/bin/cpupower frequency-set -g performance" [Install] WantedBy=multi-user.target
设置开机自启即可:
sudo systemctl enable cpupower
CPU缓解措施
这个CPU缓解措施其实就是之前针对intel爆出的一系列漏洞的补丁,虽然这些补丁是能够修补漏洞,但是CPU的性能会大打折扣,而openSUSE在CPU缓解措施这里是设置的很严格的。
根据这篇文章的介绍:
https://linuxreviews.org/HOWTO_make_Linux_run_blazing_fast_(again)_on_Intel_CPUs
最后我选择把这些CPU缓解措施都关闭了,在openSUSE上要关闭这些很简单,你只需要打开Yast-引导加载器:
按如下图设置保存即可:
重启之后执行下面的命令查看:
cat /sys/devices/system/cpu/vulnerabilities/*
如果回显这些说明OK:
KVM: Mitigation: VMX disabled Mitigation: PTE Inversion; VMX: vulnerable, SMT disabled Vulnerable; SMT disabled Vulnerable Vulnerable Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers Vulnerable, IBPB: disabled, STIBP: disabled Vulnerable Not affected
提醒:更改这些设置可能会有安全风险,仅供参考。
KDE的一些问题
KDE这桌面我是又爱又恨啊,爱它的高度可自定义,恨它的稳定性欠佳~
KDE Baloo
Baloo是KDE桌面的一个文件索引和搜索框架,openSUSE默认是打开这个功能的,但是实际上我基本不用这个东西,而且这东西很占资源,索性我把这个直接关闭了:
balooctl suspend balooctl disable
KDE桌面卡死
KDE虽然是个非常强大且功能齐全的桌面环境,但是都0202年了,依旧会经常出现卡死的情况,说实话我用了openSUSE这大半个月来,KDE卡死的情况已经出现了很多次,基本都是kwin_x11这个进程卡CPU100%,然后桌面没有任何反映。
最开始我都是直接强制重启,后来发现总这样也不是个事,要知道我用Windows10两年了基本就没死过机,我不说你KDE要有这个稳定性,但好歹让我卡死的时候有个紧急的解决办法吧,就像Windows那样可以切个任务管理器出来。
后来搜索了一下发现如果不是卡的完全无可救药,键盘还能有响应的话可以按组合键:
ctrl+alt+f2
这样会进入命令行模式,有命令可以输入了就好办很多了,现在把卡死的kwin_x11杀掉:
killall kwin_x11
之后再把startplasma-x11进程杀掉会重新进入到SDDM界面:
killall startplasma-x11
按照往常一样登录即可。
开机自动启用NumLock键
每次开机的时候,SDDM都不会自动打开小键盘上面的NumLock,这对于我来说有点不习惯。
在如下位置新建一个sddm的配置文件:
sudo nano /etc/sddm.conf.d/numlock.conf
写入如下配置即可:
[General] Numlock=on
KDE桌面这里也要设置一下,在硬件-输入设备-键盘,开启Numlock:
NVIDIA驱动配置
安装驱动可以参考这篇文章:
NVIDIA驱动安装后,实际上还提供了两个工具,可以进一步的配置,但是感觉用处不大(我的这块GTX750Ti配置来配置去还不如直接用默认的)
这里的问题是如果不配置一下的话,NVIDIA驱动里面的X Server Display Configuration等一些设置是无法保存的。
这里还是简单做个记录,说不定以后有用。首先你需要切到root用户下,普通用户(sudo)没有权限做下面的这些更改:
su - root
这个命令可以初始化一个xorg配置文件:
nvidia-xconfig
路径在:
/etc/X11/xorg.conf
后续你要更改NVIDIA驱动的配置执行下面的这个命令:
nvidia-settings
会打开一个界面,在这个界面内更改相应的配置,然后点箭头所指的按钮保存:
这样操作之后NVIDIA的配置才能正常保存,下次开机就不会还原了。
硬件视频加速
这就是一个天坑,虽然我配置了很久也没能让chrome/firefox用上硬件视频加速,但后来一想我在Windows10上面看Youtube也没能用上,心里稍微平衡了一点233
我这边用不了的原因是硬件和chrome等软件不支持导致的,配置的过程是肯定没问题的,这里记录一下,留给需要的人。
NVIDIA的驱动安装下面这个包:
sudo zypper in libva-vdpau-driver
接着安装这个包来验证VA-API/VDPAU是否正常:
sudo zypper in libva-utils
执行下面的命令:
vainfo
如果回显类似于下面这些说明正常:
libva info: VA-API version 1.9.0 libva info: User environment variable requested driver 'vdpau' libva info: Trying to open /usr/lib64/dri/vdpau_drv_video.so libva info: Found init function __vaDriverInit_1_8 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.9 (libva 2.9.1) vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG4Simple : VAEntrypointVLD VAProfileMPEG4AdvancedSimple : VAEntrypointVLD <unknown profile> : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264High : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD
执行下面的命令:
vdpauinfo
主要就看这块:
Decoder capabilities: name level macbs width height ---------------------------------------------------- MPEG1 0 65536 4080 4080 MPEG2_SIMPLE 3 65536 4080 4080 MPEG2_MAIN 3 65536 4080 4080 H264_BASELINE 51 65536 4096 4096 H264_MAIN 51 65536 4096 4096 H264_HIGH 51 65536 4096 4096 VC1_SIMPLE 1 8190 2048 2048 VC1_MAIN 2 8190 2048 2048 VC1_ADVANCED 4 8190 2048 2048 MPEG4_PART2_SP 3 8192 2048 2048 MPEG4_PART2_ASP 5 8192 2048 2048 DIVX4_QMOBILE 0 8192 2048 2048 DIVX4_MOBILE 0 8192 2048 2048 DIVX4_HOME_THEATER 0 8192 2048 2048 DIVX4_HD_1080P 0 8192 2048 2048 DIVX5_QMOBILE 0 8192 2048 2048 DIVX5_MOBILE 0 8192 2048 2048 DIVX5_HOME_THEATER 0 8192 2048 2048 DIVX5_HD_1080P 0 8192 2048 2048 H264_CONSTRAINED_BASELINE 51 65536 4096 4096 H264_EXTENDED 51 65536 4096 4096 H264_PROGRESSIVE_HIGH 51 65536 4096 4096 H264_CONSTRAINED_HIGH 51 65536 4096 4096 H264_HIGH_444_PREDICTIVE 51 65536 4096 4096 VP9_PROFILE_0 --- not supported --- VP9_PROFILE_1 --- not supported --- VP9_PROFILE_2 --- not supported --- VP9_PROFILE_3 --- not supported --- HEVC_MAIN --- not supported --- HEVC_MAIN_10 --- not supported --- HEVC_MAIN_STILL --- not supported --- HEVC_MAIN_12 --- not supported --- HEVC_MAIN_444 --- not supported ---
如果这里显示VP9 not supported那就说明chrome这类浏览器基本可以放弃了。
不过此时VLC这类播放器应用是已经可以正常工作的,对于VLC播放器你只需要改一下下面的配置即可:
以上是我目前遇到并且能够解决的问题,还有一些真的是特别蛋疼的问题,实在是找不到解决办法。
比如chrome浏览器窗口拖动/最大化/最小化的时候特别卡。实际上就是是掉帧,KDE桌面在某些应用窗口下不能稳定在60fps。
我几乎试了google出来的所有办法还是无法解决,这里我只能说NVIDIA可能要出来背这个锅。
此外最近NVIDIA的闭源驱动又出幺蛾子问题了,不支持kernel5.9,而前两天openSUSE风滚草已经滚到了5.9,还好我看到了相关的公告,不然这又要踩一个大坑。。。
居然有在用opensuse作桌面,之前关注系列文章还以为只是服务器玩玩
10年前的笔记本,虽然配置相当拉夸,但是archlinux+xfce也是如丝般顺滑。前几天加了一根内存条以后一直想试试KDE,看到博主也提到稳定性欠佳,成功除草了……
xfce是比较轻量的一个桌面环境,比较适合老爷机,用KDE就是想折腾各种特效,花里胡哨的东西。。。自然资源也吃的很多。。。
其实我感觉 KDE 稳定性还不错啊
那个 Systemd 服务我认为写的有点小瑕疵。
第一个是 /usr/bin/sh 其实是不需要的,除非你要运行的是 Shell 脚本,然而人家自己就有二进制文件,所以根本没必要用 sh 去调用。
第二个问题是用户默认就是 root,所以没必要指定啦。
是可以不需要用sh去调用,但是这个程序运行一次就会退出不属于常驻在后台的程序,这里加sh是为了systemd status可以获取到运行结束后的状态(回显)
默认用户是root这个我还真不知道。。