在本周更新的 openSUSE Tumbleweed 20180117 快照中有个重要的变化就是引入了新的 BtrFS 默认子卷结构。任何使用默认的 BtrFS root 文件系统新安装的 Tumbleweed 系统都不再会有多个 /var
目录下的子卷(如 /var/lib/mysql
、/var/cache
等)而只有一个唯一的 /var
子卷。这样做的好处是简化了快照和回退操作且避免了回退时候丢失用户保存在 /var
中的数据。
这种改变也可以提升那些将数据存储在 /var
中的应用的性能,因为系统默认关闭了 /var
上的 BtrFS 的 CoW(Copy-on-Write)特性。比如数据库或者是虚拟机镜像存放在 /var
目录中的情况。还有就是利于 openSUSE Kubic (基于 openSUSE Tumbleweed 的 SUSE Container as a Service Platform)的开发,因为多数 /var
的部分都是只读的,而它被认为是 openSUSE Kubic 的只读根文件系统。
随着这一改变,之前很多存放在 /var
中的重要系统文件现在都默认放在 /usr
目录中。例如 RPM 的数据库 /var/lib/rpmdb
就移到了 /usr
下面。当然设置了连接以向后兼容。还有 /var/adm/fillup-templates
移动到了 /usr/share/fillup-templates
。随着新版本 rpmlint 即将发布,它将会阻止将文件存储在旧的 /var/adm/fillup-templates
目录下。
但是社区的 Richard Brown 表示目前不会将现有的用户数据从旧结构转移到新结构,除非有人能提供可行的好方法。不过 Linux 的好处之一是用户数据很少(不是没有)写在 /home
的地方,基本不要担心系统的重新设置之类的,重装系统还不是分分钟搞定的事情么?
注:今天尝试了一下,下面指出的问题已经不存在了。楼主已经重新安装了系统(只覆盖了 root 分区而没有动 /home 分区)来采用新的子卷结构。(2018.06.18)
不过重装系统的话还有一点要注意的。安装器(AutoYaST)默认推荐的子卷结构是新的结构,总共 8 个子卷(subvolume),如下,
@ @/var (no Copy on Write) @/usr/local @/tmp @/srv @/opt @/boot/grub2/x86_64-efi @/boot/grub2/i386-pc
但是如果安装的时候发现其推荐的分区不合适而决定自行使用「专家模式(Expert mode)」来重新安排分区的话,此操作之后的子卷结构有可能是类似于,
@ /var (no Copy on Write) /usr/local /tmp /srv /opt /boot/grub2/x86_64-efi /boot/grub2/i386-pc
注意上面前导的 @
不见了。
所以对于已有的系统而言,除非用户打算采用安装器推荐的布局(也许需要备份 /home
分区,等安装完成后再导入原来的用户数据),否则还是需要再等等。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/new-default-subvolume-layout-of-btrfs-root-in-opensuse-tumbleweed/>。转载请保留此信息及相应链接。
引用通告: openSUSE Tumbleweed 更新 Linux 内核 4.14.13、RPM 4.14.0、Mesa 17.3.2 和 KDE Applications 17.12.1 等 | 水景一页
引用通告: openSUSE Tumbleweed 更新 Linux 内核 4.15.0/1、Mesa 18.0.0、 和 KDE Plasma 5.12 等 | 水景一页
引用通告: openSUSE Tumbleweed 更新 snapper 0.8.0 和 Mozilla Thunderbird 60.3.0 等 | 水景一页
引用通告: openSUSE Linux 的默认分区 | 水景一页
引用通告: openSUSE Tumbleweed 更新 Linux Kernel 4.20.4/6、Python 3.7.2、Bash 5.0 和 Readline 8.0 等 | 水景一页
引用通告: openSUSE Tumbleweed 本周更新 Linux Kernel 5.0.7 和 LibreOffice 6.2.3 等 | 水景一页