Всем привет.
Полгода назад я уже писал о корпоративных зомбарях, считающих франкенштейна из виндофс-10 и диска 32 Гб рабочим, готовым к продаже решением. Оказалось, что эта тема вовсе не заглохла.
Там перлы в каждом абзаце. Сперва автор запускает на этом нечто-девайсе гниловс-10, прилетает крупный апдейт, место кончается, начинается лютое колдунство и шаманство в тяжких попытках выжать из раздела требуемое свободное место — снос бэкапов/контрольных точек, отключение швопа, удаление ранее поставленного софта, и как финальный аккорд — включение сжатия файловой системы для системного раздела.
Не знаю, как насчёт 30 лет назад, но сейчас, в 2019-м, я признаю сжатие только в изначально спроектированных под это дело специализированных файловых системах, таких как SquashFS. Там это работает изумительно. Во всех остальных случаях это существенный головняк как минимум со скоростью работы.
Дело в том, что времена, когда основным объемом данных были прекрасно сжимаемые текстовые файлы, прошли как раз примерно 30 лет назад. Сейчас у нас на ФС полно картинок, музыки, видео, инсталляторов, архивов (docx / xlsx / odt / ods — тоже архивы по сути) и прочих данных, совершенно не поддающихся сжатию. Исполнимые файлы и всякий текстовый PDF жмутся, но цена за это — резкий рост задержек и нагрузок. Но жест отчаяния вышел артистично, таки да.
А беда эта идёт от того, что в виндовс до сих пор нет менеджера пакетов. Не надо только мне говорить про шоколате !
Возможно, эта утилита и снижает уровень жжения в жопе от работы с гнидовс, но ей до менеджера пакетов — как папуасам карго-культа до Альфа-Центавры. То есть в общем случае ОС виндовс имеет лишь очень приблизительное представление, что творится в её кишках. То есть версию сервис-пака она конечно знает, и даже может знать, какие из апдейтов и софтин установлены, если в реестре что-нить не побилось. Но вот произвести чистую деинсталляцию что родного, что стороннего приложения, вернув систему в исходное состояние — то есть с полной вычисткой всех хвостов, штатными средствами невозможно. Точно также может оказаться предельно сложным или и вовсе нереальным обновить только один компонент из сервис-пака, не сломав всё остальное. Да даже просто сказать, какой файл каким апдейтом был обновлён — уже квест. Автор хабро-заметки знатно зарубился с ветряной мельницей.
Ещё виндовс не умеет убирать за собой. Ну вот поставился СП. Все работает. Месяц, два, три. Что мешает удалить ненужные файлы самостоятельно ?! Из-за такой нечистоплотности каталог виндовс, изначально немаленький, разпухает иной раз до каких-то совсем нереальных размеров. Ситуация, когда виндовс-10 может апдейтиться больше часа, вполне стала привычной, и даже SSD уже не спасает.
Меня же позабавило то, что у меня тоже были подобные случаи, но там не было виндовс, и решалось это несопоставимо проще.
Я просто расскажу, как это сделано у здоровых людей, на примере той же федоры.
Сперва о примерах. В моём случае у меня не было 32 Гб — на таком просторном накопителе я бы даже не заметил каких-либо проблем.
В первых двух случаях система ставилась на мелкий диск, я забил на lvm, и пожмотил места под корневую фс.
Раздел — 15 Гб в одном случае и 20 Гб во втором. Под всю систему вместе с софтом. Третий случай был экстремальный — 2 Гб весь винт, но это была тестовая платформа вообще без графики.
Понятное дело, что накатить крупные апдейты разом невозможно — места просто не хватит. В случае виндовс такая ситуация фатальна — штатная обновлялка не работает, а закат солнца вручную чреват перезагрузкой в синий экран и даже потерей данных.
Как же делаем мы в таком случае, если у нас ОС здорового человека ? Нет, мы ничего из софта по-крупному не сносим, не занимаемся удалением «косынок», не говоря уже о библиотеках и системном ПО. И швоп не отключаем. И даже не трогаем файловую систему.
Ключевые идеи такие:
— перенести кэш скачанного /var/cache/dnf на другой диск, можно внешний, и заменить его симлинком.
— если места совсем пипец как мало, меньше 200 Мб — расчистить логи/журнал/древние копии ядер, разгрести /var/tmp — может найтись так нужный в этой ситуации лишний гектар, чтобы не переставлять тяжелые пакеты.
— обновлять частями. Да, вместо dnf update делаем сперва серию dnf update a* b* с*, потом dnf update d* e* f* и в самом конце — завершающий и всеобщий dnf update. Это позволит разбить одну огромную транзакцию на несколько более мелких, и в итоге успешно обновиться. Поскольку пакетный менеджер стирает старые версии бинарей и кэшированные файлы после успешной установки, каждая успешно завершенная малая транзакция будет вам давать дополнительное место.
— Только в очень запущенном случае вам возможно придется снести и заново поставить после завершения апдейтов какой-нибудь один крупный пакет (типа либреоффиса, гимпа или виртуалбокса) — но для этого место должно быть выжрано почти под ноль.
Да, тут лучше снести таки офис / гимп / блендер — их реинсталл делается одной командой. А вот всякие виртуалбоксы и нвидиа-драйверы лучше так не мочить — нет смысла создавать себе лишние сложности.
— прочистить кэши с помощью dnf clean all и вернуть /var/cache/dnf на исходное место.
Самое зачетное, что даже переход на следующий релиз через dnf system-upgrade можно делать таким образом (но съемный диск надо будет добавить в /etc/fstab , таки да). Это совершенная ерунда по сравнению с той болью, что испытал автор заметки.
Ну и немного упомяну про идиотские советы, которые часто встречаются в комментариях от всяких левых «гуру».
— не разбивать диск. Исключительно тупой совет, независимо от ОС. Он был плох даже во времена MS-DOS.
Когда у вас пользовательские данные и системные файлы лежат в разных разделах — вы обладаете гораздо большей свободой действий в плане работ по системному разделу. Переустановка / миграция ОС, восстановление систем, проверки целостности, снятие образов системного тома, сохранение необходимого минимума свободного места под логи / кэши / апдейты — всё это на порядки проще и куда менее нервозно, когда у вас в той же ФС не болтается куча ценных пользовательских файлов.
То, что так делают вендоры — не означает, что так делать надо. Вендоры ставят виндовс-10 на ноут с целероном и 32 Гб ссд.
— не обновлять систему. Я очень угорел, что ещё есть люди, наивно верящие, что они вот сейчас настроят ОС, всё там вычистят и поотключают, снимут образ системного раздела и будут спать спокойно. Нет, фиг вам. Это работало в 90-х и немного в начале 2000-х. Сейчас это не работает так хорошо, как работало раньше. Необновленная ОС опасна и рискованна в применении, даже если это JunOS или Cisco IOS на магистральной железке. Со старой виндовс можно особенно запросто стать жертвой крипто-вымогателей. Особенно зачётно будет, если у вас в сети будет гулять червь, а в последнем образе будет дамп уязвимой версии системы — вы с него даже восстановиться безопасно не сможете, не прибегнув к дополнительным ухищрениям.
При этом сама идея снятия образов — вполне здравая. НО!! Только при условии их автоматического обновления и ротации версий. Так работают бэкап-системы для виртуальных машин. Если у вас есть +/- постоянно работающая система, которую вы бэкапите образом — то и её образ тоже надо актуализировать. Старый образ часто имеет нулевую ценность, а иногда даже весьма опасен.
— полагаться на чистильщики / твикеры / оптимизаторы. Я вообще этот софт считаю сугубо вспомогательным, а существенную его часть — просто мусорным. Чисто обычно там, где специально не серут. Где серут постоянно — дворник обычно не справляется.
Конечно, есть случаи, когда даже сильно усратую систему переставлять сильно не хочется. Но надо понимать, что после качественного заражения или глубокого осквернения всякими «амиго», майл-ру-агентами, спай-хантерами, кондуитами и прочим рекламно-адварным трешем, вычистить систему «в ноль», какой она была до заражения, чтобы вот прям ни одного лишнего ключа в реестре не осталось — это очень вряд ли. Тут как в медицине — лучше предотвратить, чем лечить. Увы, но в мире виндовс пока к этому не пришли.
Пользуйтесь хорошими системами, и да пребудет с вами Сила =)