LINUX.ORG.RU

История изменений

Исправление Pinkbyte, (текущая версия) :

Я немного не о том.

Вот смотри, в btrfs qgroup show у нас есть id subvolume-а, к которому привязана группа квоты. UUID-ов нет.

В btrfs subvolume list уже можно увидеть и uuid и parent uuid, и собственно id самого subvolume(если ключи нужные расчехлить). Там уже можно понять где снапшоты, а где нет(и всё равно мне подход с ZFS со статическим именованием снапшотов через @ импонирует больше - ибо он проще).

А теперь на сладкое - как получить аналог вывода df для subvolume-ом btrfs встроенными командами...

Нуууу... как-то так:

#!/bin/bash

# Show mountpoint for all btrfs quota groups

IFS=""
while read LINE; do
        ID=$(echo ${LINE} | awk '{ print $1;'})
        SUBVOLID="${ID/'0/'/}"
        echo -ne ${LINE}
        # Add header
        if [[ "${ID}" = "qgroupid" ]]; then
                echo -ne "\t mountpoint"
        fi
        # If qgroupid is level-0(default) for subvolume...
        if [[ ! "${SUBVOLID}" = "${ID}" ]]; then
                mount | awk /subvolid="${SUBVOLID}"/'{ printf "\t %s",$3; }'
        fi
        echo
done < <(btrfs qgroup show -r -e -p /)

TL;DR - в отличие от ZFS(с командой zfs list, ибо df там тоже выдает дичь как и в btrfs - судя по всем для всех CoW FS это норма), заскриптоваться пришлось побольше

Исходная версия Pinkbyte, :

Я немного не о том.

Вот смотри, в btrfs qgroup show у нас есть id subvolume-а, к которому привязана группа квоты. UUID-ов нет.

В btrfs subvolume list уже можно увидеть и uuid и parent uuid, и собственно id самого subvolume(если ключи нужные расчехлить). Там уже можно понять где снапшоты, а где нет(и всё равно мне подход с ZFS со статическим именованием снапшотов через @ импонирует больше - ибо он проще).

А теперь на сладкое - как получить аналог вывода df для subvolume-ом btrfs встроенными командами...

Нуууу... как-то так:

#!/bin/bash

# Show mountpoint for all btrfs quota groups

IFS=""
while read LINE; do
        ID=$(echo ${LINE} | awk '{ print $1;'})
        SUBVOLID="${ID/'0/'/}"
        echo -ne ${LINE}
        # Add header
        if [[ "${ID}" = "qgroupid" ]]; then
                echo -ne "\t mountpoint"
        fi
        # If qgroupid is level-0(default) for subvolume...
        if [[ ! "${SUBVOLID}" = "${ID}" ]]; then
                mount | awk /subvolid="${SUBVOLID}"/'{ printf "\t %s",$3; }'
        fi
        echo
done < <(btrfs qgroup show -r -e -p /)

TL;DR - в отличие от ZFS, заскриптоваться пришлось побольше