如何将 /var/log 移动到 btrfs 子卷? (ubuntu 15.04 桌面)[关闭]

Posted

技术标签:

【中文标题】如何将 /var/log 移动到 btrfs 子卷? (ubuntu 15.04 桌面)[关闭]【英文标题】:How can I move /var/log to a btrfs subvolume? (ubuntu 15.04 desktop) [closed] 【发布时间】:2015-07-25 23:46:00 【问题描述】:

我正在尝试移动 /var/log/。到它自己的子卷。我已经尝试了很多事情,但是 /etc/fstab 条目从来没有像我希望的那样。我在这里的示例使用/spam,因为我不想在解决这个问题时丢弃日志文件。我的问题以粗体在下方。

我不会让你厌烦那些不起作用的东西。但这是我所在的位置:

thor / 158# btrfs subvolume create /spam
Create subvolume '//spam'
thor / 161# ll -d spam
drwxr-xr-x 1 root root 0 Jul 25 16:19 spam/
thor / 163# df -T
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
udev           devtmpfs   1540072       0   1540072   0% /dev
tmpfs          tmpfs       310140    5380    304760   2% /run
/dev/sdb1      btrfs     33739776 7791536  24482480  25% /
tmpfs          tmpfs      1550684     156   1550528   1% /dev/shm
tmpfs          tmpfs         5120       4      5116   1% /run/lock
tmpfs          tmpfs      1550684       0   1550684   0% /sys/fs/cgroup
/dev/sdb1      btrfs     33739776 7791536  24482480  25% /home
cgmfs          tmpfs          100       0       100   0% /run/cgmanager/fs
tmpfs          tmpfs       310140      44    310096   1% /run/user/1000


thor / 164# btrfs subvolume list /
ID 257 gen 289 top level 5 path @
ID 258 gen 286 top level 5 path @home
ID 263 gen 41 top level 257 path var/lib/machines
ID 275 gen 287 top level 257 path spam
thor / 165#  grep -v '^#' /etc/fstab
UUID=ee321c37-2ccc-4016-aa0b-9cf9280be11e /               btrfs   defaults,subvol=@ 0       1
UUID=ee321c37-2ccc-4016-aa0b-9cf9280be11e /home           btrfs   defaults,subvol=@home 0       2
UUID=aff22fd4-48d6-4c8c-9c2e-260c05028fba none            swap    sw              0       0
thor / 166#

我的 OpenSUSE 机器(因此有不同的 UUID)从 fstab 挂载了一堆子卷,其条目如下:

UUID=2c2aa4ed-bb4e-4c44-b222-4e75dc0469f2 /spam btrfs subvol=spam 0 0

如果我在我的 Ubuntu 机器上尝试这个,它不会启动。来自单用户模式的 strace 显示 mount(2) 失败并显示:

mount("/dev/sdb1", "/spam", "btrfs", MS_MGC_VAL, "subvol=spam") = -1 ENOENT (No such file or directory)

此外,如果我 df 目录,我会得到:

thor /spam 174# df -T /spam/.
Filesystem     Type 1K-blocks    Used Available Use% Mounted on
-              -     33739776 7791776  24482368  25% /spam
thor /spam 175#

我的第一个问题:我错过了什么?出了点问题,因为它行为不端。 第二个问题:我在正确的地方发帖吗? 谢谢!

更新 1:

thor /spam 175# uname -a
Linux thor 3.19.0-23-generic #24-Ubuntu SMP Tue Jul 7 18:52:29 UTC 2015 i686 i686 i686 GNU/Linux

【问题讨论】:

【参考方案1】:

我的第一个问题:我错过了什么?出了点问题,因为它行为不端。

目前,spam 子卷相对于 btrfs 根的路径是 @/spam,因为 spam 子卷是在 @ 子卷中创建的。使用btrfs sub list -a / 来查看。您将需要在 fstab 中的 subvol=@/spam 来挂载它。

但我认为您实际上想在 btrfs 根本身中创建子卷,在这种情况下,您需要将根挂载到某个地方以创建子卷:

mkdir -p /mnt/tmp/
mount -o subvol=/ /dev/sdb1 /mnt/tmp/
btrfs sub create /mnt/tmp/spam/

第二个问题:我在正确的地方发帖吗?

对于此类问题,我建议使用Unix/Linux Stack Exchange。

【讨论】:

太棒了!我会将未来的问题发布到 Unix/Linux Stack Exchange。

以上是关于如何将 /var/log 移动到 btrfs 子卷? (ubuntu 15.04 桌面)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Linux btrfs子卷 subvolume之create

+++++++btrfs压缩/解压缩和编程之if和for总结

btrfs

btrfs管理及应用

btrfs文件系统学习

btrfs文件系统学习总结