Как удалить btrfs подобъемы с <FS_TREE> на их имя

Я не знаю, включено ли это или отключено по умолчанию, но mkdir может кэшироваться:

http://goo.gl/QIW4V (cache_mkdir)

Даже при том, что сама команда mkdir выглядит атомарной и достаточно ориентированной на многопотоковое исполнение...

http://goo.gl/LC1Ze (sshfs_mkdir)

http://goo.gl/NHkNH (sftp_request_send)

Я рискнул бы и сказал бы, что mkdir по sshfs не является атомарным из-за кэширования.

9
19.10.2013, 15:22
2 ответа

Я смог удалить эти снимки первым монтированием целого btrfs объема (не @ подобъем) и затем работающий оттуда:

# mount /dev/mapper/whatever /mnt -o subvol=/
# ls /mnt
@
@apt-snapshot-2013-04-17_21:44:30
...

Таким образом в этой точке, все подобъемы (включая броское apt-snapshot ), видимы в /mnt, таким образом, мы можем удалить их:

# btrfs subvol delete /mnt/@apt-snapshot-2013-04-17_21:44:30
# umount /mnt
10
27.01.2020, 20:06
  • 1
    Необходимо ли было использовать живой CD для этого? –  mlissner 07.03.2015, 02:10
  • 2
    Нет, я смог сделать это при выполнении системы от @ из той же файловой системы. –  Cactus 07.03.2015, 03:25

Самый простой способ сделать это - использовать встроенные команды apt-btrfs-snapshot:

В отличие от обычного удаления снимков, для удаления снимков вам не нужно монтировать файловую систему.

Сначала перечислите доступные apt-btrfs-snapshot снимки с помощью следующей команды:

sudo apt-btrfs-snapshot list

Вот пример вывода этой команды:

@apt-snapshot-old-root-2015-10-19_20:20:10
@apt-snapshot-2015-10-28_19:00:46
@apt-snapshot-2015-10-28_19:09:14
@apt-snapshot-2015-10-29_04:40:07
@apt-snapshot-2015-10-29_06:35:57
@apt-snapshot-2015-10-29_07:03:39
@apt-snapshot-2015-10-30_03:49:05
@apt-snapshot-2015-10-30_17:53:59

Чтобы удалить снимок @apt-snapshot-2015-10-30_17:53:59, выполните:

sudo apt-btrfs-snapshot delete @apt-snapshot-2015-10-30_17:53:59

Вы также можете удалить несколько снимков по дате. Вот пример команды, которая удалит все моментальные снимки, которые старше 0 дней.

sudo apt-btrfs-snapshot delete-older-than 0d   

Вот пример вывода этой команды:

Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-odfe0o4g/@apt-snapshot-old-root-2015-10-19_20:20:10'
ERROR: cannot delete '/tmp/apt-btrfs-snapshot-mp-odfe0o4g/@apt-snapshot-old-root-2015-10-19_20:20:10' - Directory not empty
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-b2zv18qr/@apt-snapshot-2015-10-28_19:00:46'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-zjglvefe/@apt-snapshot-2015-10-28_19:09:14'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-lj3v74qa/@apt-snapshot-2015-10-29_04:40:07'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-vztc82zr/@apt-snapshot-2015-10-29_06:35:57'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-q0ou8e24/@apt-snapshot-2015-10-29_07:03:39'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-dw8eq0vv/@apt-snapshot-2015-10-30_03:49:05'
Delete subvolume (no-commit): '/tmp/apt-btrfs-snapshot-mp-vgo2yuf2/@apt-snapshot-2015-10-30_17:53:59'

Как вы можете видеть, доступные снимки были удалены. Однако самый старый снимок "old-root" не был удален, и его все еще можно использовать для отката, несмотря на то, что он намного старше 0 дней.

Выполните следующую команду для получения полного списка возможностей:

apt-btrfs-snapshot --help
1
27.01.2020, 20:06

Теги

Похожие вопросы