LINUX.ORG.RU
ФорумAdmin

Btrfs некорректно монтирует

 , , ,


2

1

Привет, ЛОР!

Использую Btrfs и много subvolume’ов: предположительно для разных ОС; сейчас — Gentoo (основная) и Arch aka тестовый полигон.

Некоторые разделы должны монтироваться без сжатия: /mnt, log, cache, ~/Media (уже сжатые файлы).

Вот fstab:

/dev/efi          	/boot/efi 	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro	0 2

/dev/btrfs           	/         	btrfs     	rw,noatime,compress=zstd:1,ssd,space_cache=v2,subvol=/@gentoo	0 1

/dev/btrfs           	/home     	btrfs     	rw,noatime,compress=zstd:1,ssd,space_cache=v2,subvol=/@home	0 2

/dev/btrfs           	/snapshots	btrfs     	rw,noatime,compress=zstd:1,ssd,space_cache=v2,subvol=/@gentoo-snapshots	0 0

/dev/btrfs           	/var/log  	btrfs     	defaults,nodatacow,ssd,space_cache=v2,subvol=/@gentoo-log	0 0

/dev/btrfs           	/var/cache	btrfs     	rw,noatime,nodatacow,ssd,space_cache=v2,subvol=/@gentoo-cache	0 0

/dev/btrfs           	/var/db/repos/gentoo	btrfs     	rw,noatime,compress=zstd:1,ssd,space_cache=v2,subvol=/@gentoo-portage	0 0

/dev/btrfs           	/mnt	   	btrfs     	rw,noatime,compress=none,ssd,space_cache=v2,subvol=/@mnt 	0 0

/dev/btrfs           	/home/dekabu/Media	   	btrfs     	rw,noatime,compress=no,compress-force=no,nodatacow,ssd,space_cache=v2,subvol=/@media 	0 0

/home/dekabu/Media/Music	/home/dekabu/Music	none	bind
/home/dekabu/Media/Videos	/home/dekabu/Videos	none	bind
/home/dekabu/Media/Games	/home/dekabu/Games	none	bind
/home/dekabu/Media/Pictures	/home/dekabu/Pictures	none	bind

Но оно упорно монтируется с compress=zstd:1!!

Вывод команды mount:

/dev/sda3 on / type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=272,subvol=/@gentoo)
devtmpfs on /dev type devtmpfs (rw,nosuid,noexec,relatime,size=10240k,nr_inodes=478627,mode=755)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=766696k,nr_inodes=819200,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
/dev/sda3 on /home type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=275,subvol=/@home)
/dev/sda3 on /snapshots type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=273,subvol=/@gentoo-snapshots)
/dev/sda3 on /var/log type btrfs (rw,relatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=276,subvol=/@gentoo-log)
/dev/sda3 on /var/cache type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=277,subvol=/@gentoo-cache)
/dev/sda3 on /var/db/repos/gentoo type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=274,subvol=/@gentoo-portage)
/dev/sda3 on /mnt type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=292,subvol=/@mnt)
/dev/sda3 on /home/dekabu/Media type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=295,subvol=/@media)
/dev/sda3 on /home/dekabu/Music type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=295,subvol=/@media)
/dev/sda3 on /home/dekabu/Videos type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=295,subvol=/@media)
/dev/sda3 on /home/dekabu/Games type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=295,subvol=/@media)
/dev/sda3 on /home/dekabu/Pictures type btrfs (rw,noatime,compress=zstd:1,ssd,discard=async,noacl,space_cache=v2,subvolid=295,subvol=/@media)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=383348k,nr_inodes=95837,mode=700,uid=1000,gid=1000)
portal on /run/user/1000/doc type fuse.portal (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)

И даже

umount part
mount -o compress=none part

не помогает! Чёрт знает, что такое…

Единственный действенный метод это

mount -o remount,compress=none

, но выполнять его всякий раз при загрузке системы — моветон. Почему монтирование некорректно, сталкивался кто-нибудь? Оно игнорирует все параметры и ставит дефолтные.


Из их же документации:

Most mount options apply to the whole filesystem and only options in the first mounted subvolume will take effect. This is due to lack of implementation and may change in the future. This means that (for example) you can’t set per-subvolume nodatacow, nodatasum, or compress using mount options. This should eventually be fixed, but it has proved to be difficult to implement correctly within the Linux VFS framework.

sehellion ★★★★★
()

Некоторые разделы должны монтироваться без сжатия: /mnt, log, cache, ~/Media (уже сжатые файлы).

В случае уже пожатых файлов монтирование со сжатием ничем почти не мешает, ибо If the first portion of data being compressed is not smaller than the original, the compression of the whole file is disabled. This is not optimal and subject to optimizations and further development.

sehellion ★★★★★
()
Ответ на: комментарий от dyonya

Хм, а при ремаунте новые опции ко всем сабвольюмам применяются или только к указанному?

Сам спросил, сам ответил. Да, ко всем.

kneedeep
()
Последнее исправление: kneedeep (всего исправлений: 1)
Ответ на: комментарий от dyonya

В данном случае ограничение именно VFS, в нём много тупых ограничений прибитых гвоздями для совместимости с POSIX. Например 255 байт на имя файла или 4096 байт на полную длину пути.

gfh ★★★
()
Ответ на: комментарий от sehellion

Хотел было позлорадствовать, что нельзя задать параметры для сабволюма прямо в ФС, как в zfs set тра-ля-ля, и приходится дрочиться с монтированием, а тут и без того отакенная жопа )

GAMer ★★★★★
()