О безусловном превосходстве Емакса над Вимом

12.02.2016 11:20:18

Вчера внезапно упал мой любимый браузер, то бишь, Конкверор. И отказался стартовать снова, ловя СИГБАС. Это несколько удивило, но тут я вспомнил, что при недавнем просмотре результатов дф-а был сильно удивлён тем, что корневой раздел, занимающий 40 ГБ, был забит на 95%. Проверил ещё раз и — так и есть, диск оказался забит на 100%. Однако попытки выяснить чем он забит, привели к тому, что по показаниям ду он как-то ничем забит и не был особо.

Вот тут-то я вспомнил про две вещи: во-первых, то, что у меня система стоит на Бтрфсе, во-вторых, что у него есть загадочный внутренний том /.snapshots.

Оказалось, что в Опенсузе есть чудесный Снаппер, который не менее чудесным образом по умолчанию встроен в Зиппер и если корневой раздел лежит на Бтрфсе, то при каждом обновлении системы автоматическим образом создаётся снапшот. Ясное дело, что со временем снапшоты накапливаются и возникают проблемы, причём проблемы эти известны.

В принципе, сам Снаппер может контролировать размножение снапшотов и чистить старьё, у него для этого есть /etc/snapper/configs/root, но фактически умолчальные значения (NUMBER_MIN_AGE, NUMBER_LIMIT, NUMBER_LIMIT_IMPORTANT) таковы, что 40 ГБ съедаются без проблем. Поэтому значения стоит подкрутить, а для оперативности решения вопроса со свободным местом (системе без этого плохо, поэтому лучше сразу подчистить руками) имеет смысл познакомиться с инструментами для самой файловой системы:

$ sudo btrfs subvolume list /
ID 257 gen 268242 top level 5 path boot/grub2/i386-pc
ID 258 gen 290025 top level 5 path boot/grub2/x86_64-efi
ID 259 gen 337292 top level 5 path home
ID 260 gen 343388 top level 5 path opt
ID 261 gen 337292 top level 5 path srv
ID 262 gen 350455 top level 5 path tmp
ID 263 gen 350432 top level 5 path usr/local
ID 264 gen 337292 top level 5 path var/crash
ID 265 gen 337292 top level 5 path var/lib/mailman
ID 266 gen 337292 top level 5 path var/lib/named
ID 267 gen 337292 top level 5 path var/lib/pgsql
ID 268 gen 350460 top level 5 path var/log
ID 269 gen 337292 top level 5 path var/opt
ID 270 gen 350459 top level 5 path var/spool
ID 271 gen 350459 top level 5 path var/tmp
ID 277 gen 350459 top level 5 path .snapshots
ID 382 gen 148377 top level 277 path .snapshots/83/snapshot
ID 384 gen 148398 top level 277 path .snapshots/84/snapshot
ID 386 gen 148417 top level 277 path .snapshots/85/snapshot
ID 400 gen 148592 top level 277 path .snapshots/86/snapshot
ID 421 gen 204805 top level 277 path .snapshots/107/snapshot
ID 423 gen 204831 top level 277 path .snapshots/108/snapshot
ID 424 gen 242329 top level 277 path .snapshots/109/snapshot
ID 427 gen 242351 top level 277 path .snapshots/110/snapshot
ID 447 gen 320223 top level 277 path .snapshots/127/snapshot
ID 450 gen 320268 top level 277 path .snapshots/128/snapshot
ID 452 gen 322657 top level 277 path .snapshots/129/snapshot
ID 453 gen 322659 top level 277 path .snapshots/130/snapshot
ID 454 gen 322872 top level 277 path .snapshots/131/snapshot
ID 455 gen 322873 top level 277 path .snapshots/132/snapshot
ID 456 gen 336300 top level 277 path .snapshots/133/snapshot
ID 457 gen 336310 top level 277 path .snapshots/134/snapshot
ID 459 gen 343311 top level 277 path .snapshots/135/snapshot
ID 460 gen 343317 top level 277 path .snapshots/136/snapshot
ID 461 gen 348205 top level 277 path .snapshots/137/snapshot
ID 462 gen 348209 top level 277 path .snapshots/138/snapshot

Отдельно снапшоты:

$ sudo btrfs subvolume list -s /
ID 382 gen 148377 cgen 148377 top level 277 otime 2015-11-05 22:10:00 path .snapshots/83/snapshot
ID 384 gen 148398 cgen 148397 top level 277 otime 2015-11-05 22:19:21 path .snapshots/84/snapshot
ID 386 gen 148417 cgen 148416 top level 277 otime 2015-11-05 22:29:55 path .snapshots/85/snapshot
ID 400 gen 148592 cgen 148591 top level 277 otime 2015-11-05 23:59:07 path .snapshots/86/snapshot
ID 421 gen 204805 cgen 204805 top level 277 otime 2015-12-10 23:12:21 path .snapshots/107/snapshot
ID 423 gen 204831 cgen 204830 top level 277 otime 2015-12-10 23:25:50 path .snapshots/108/snapshot
ID 424 gen 242329 cgen 242329 top level 277 otime 2015-12-31 17:54:47 path .snapshots/109/snapshot
ID 427 gen 242351 cgen 242350 top level 277 otime 2015-12-31 18:05:37 path .snapshots/110/snapshot
ID 447 gen 320223 cgen 320223 top level 277 otime 2016-01-31 16:47:30 path .snapshots/127/snapshot
ID 450 gen 320268 cgen 320267 top level 277 otime 2016-01-31 17:10:44 path .snapshots/128/snapshot
ID 452 gen 322657 cgen 322656 top level 277 otime 2016-02-01 15:31:55 path .snapshots/129/snapshot
ID 453 gen 322659 cgen 322658 top level 277 otime 2016-02-01 15:32:48 path .snapshots/130/snapshot
ID 454 gen 322872 cgen 322871 top level 277 otime 2016-02-01 17:30:06 path .snapshots/131/snapshot
ID 455 gen 322873 cgen 322872 top level 277 otime 2016-02-01 17:30:17 path .snapshots/132/snapshot
ID 456 gen 336300 cgen 336300 top level 277 otime 2016-02-07 00:01:18 path .snapshots/133/snapshot
ID 457 gen 336310 cgen 336309 top level 277 otime 2016-02-07 00:06:16 path .snapshots/134/snapshot
ID 459 gen 343311 cgen 343311 top level 277 otime 2016-02-09 17:10:33 path .snapshots/135/snapshot
ID 460 gen 343317 cgen 343316 top level 277 otime 2016-02-09 17:13:13 path .snapshots/136/snapshot
ID 461 gen 348205 cgen 348205 top level 277 otime 2016-02-11 14:53:20 path .snapshots/137/snapshot
ID 462 gen 348209 cgen 348208 top level 277 otime 2016-02-11 14:54:26 path .snapshots/138/snapshot

Грохается всё с указанием абсолютного пути:

$ sudo btrfs subvolume delete /.snapshots/107/snapshot
Delete subvolume (no-commit): '/.snapshots/107/snapshot'

Если же вернуться к Снапперу, то после редактирования конфигурации принудительно почистить можно так:

$ sudo snapper cleanup number

Откуда же превосходство Емакса? Тут всё просто. Естественно, что изначально я пробовал не руками удалять снапшоты Бтрфса, а пытался убедить Снаппер почистить за собой. Так вот именно при редактировании /etc/snapper/configs/root возникла интересная коллизия — Вим файл сохранить не смог (очевидно, пытаясь использовать временный файл), а вот Емакс вполне себе.

Закомментировать

Вам бы, по-хорошему, зарегистрироваться сначала надобно, прежде чем комментарии оставлять. Но, в порядке исключения, можете попробовать с OpenID проскочить, вдруг.