静看光阴荏苒
不管不顾不问不说也不念

openSUSE使用过程中遇到的一些问题

这系统我大概也用了大半个月了,遇到了很多问题,有些问题我到现在也没办法解决,这里先把解决了的在这里做一个记录吧。

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驱动配置

安装驱动可以参考这篇文章:

安装openSUSE后要做的一些事

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,还好我看到了相关的公告,不然这又要踩一个大坑。。。

赞(2)
未经允许不得转载:荒岛 » openSUSE使用过程中遇到的一些问题
分享到: 更多 (0)

评论 7

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    居然有在用opensuse作桌面,之前关注系列文章还以为只是服务器玩玩

    Tee3年前 (2020-11-04) Google Chrome 86.0.4240.111 Google Chrome 86.0.4240.111 GNU/Linux x64 GNU/Linux x64回复
  2. #2

    10年前的笔记本,虽然配置相当拉夸,但是archlinux+xfce也是如丝般顺滑。前几天加了一根内存条以后一直想试试KDE,看到博主也提到稳定性欠佳,成功除草了……

    小白3年前 (2020-11-04) Google Chrome 86.0.4240.111 Google Chrome 86.0.4240.111 GNU/Linux x64 GNU/Linux x64回复
    • xfce是比较轻量的一个桌面环境,比较适合老爷机,用KDE就是想折腾各种特效,花里胡哨的东西。。。自然资源也吃的很多。。。

      LALA3年前 (2020-11-04) Google Chrome 86.0.4240.183 Google Chrome 86.0.4240.183 GNU/Linux x64 GNU/Linux x64回复
    • 其实我感觉 KDE 稳定性还不错啊

      Daniel3年前 (2020-11-04) Google Chrome 86.0.4240.185 Google Chrome 86.0.4240.185 Android 9 Android 9回复
  3. #3

    那个 Systemd 服务我认为写的有点小瑕疵。
    第一个是 /usr/bin/sh 其实是不需要的,除非你要运行的是 Shell 脚本,然而人家自己就有二进制文件,所以根本没必要用 sh 去调用。
    第二个问题是用户默认就是 root,所以没必要指定啦。

    Daniel3年前 (2020-11-04) Google Chrome 86.0.4240.185 Google Chrome 86.0.4240.185 Android 9 Android 9回复
    • 是可以不需要用sh去调用,但是这个程序运行一次就会退出不属于常驻在后台的程序,这里加sh是为了systemd status可以获取到运行结束后的状态(回显)
      默认用户是root这个我还真不知道。。

      LALA3年前 (2020-11-12) Google Chrome 80.0.3987.163 Google Chrome 80.0.3987.163 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿