⚙️ Гайд на Btrfs
📁 Вы наверняка уже знаете ext4. Она хороша для простого хранения файлов.
😭 А если, например, вы неудачно обновили какой-то пакет, система упала, вы не знаете что делать. А отката естественно нет. Что тогда делать?
❓ Что такое Btrfs?
📂 Это файловая система на базе механизма Copy-on-Write. Он позволяет делать снимки системы без расхода места на полную копию, а также предотвращает порчу данных при внезапном выключении компа (ну например свет выключили).
⚡️ Как работать с ней
⬇️ Чтобы работать с файловой системой Btrfs, вам нужно установить пакет btrfs-progs. Он точно есть в 💻 Ubuntu.
⚙️ Подготовка
⬇️ Установите пакет через
sudo apt install btrfs-progs.📄 Сделайте
lsblk. Это нужно, чтобы найти нужный вам раздел. Раздел будет в формате/dev/sd<буква><цифра>или/dev/nvme<цифра>p<цифра>.🔗 Размонтируйте:
sudo umount /dev/<раздел>
🗑 Если на разделе нет важных данных
⚠️ Внимание. ВСЕ ДАННЫЕ НА ВЫБРАННОМ РАЗДЕЛЕ БУДУТ УДАЛЕНЫ!!!
Чтобы это сделать, просто отформатируйте раздел: sudo mkfs.btrfs /dev/<ваш раздел>.
📂 Если на диске есть важные данные
➡️ Если у вас есть важные данные, советую сразу сделать бэкап. Здесь мы будем конвертировать раздел в Btrfs на месте без потери данных.
▶️ Тут тоже очень просто: sudo btrfs-convert /dev/<раздел>. Дальше ждите, это будет очень долго, время зависит от размера раздела и скорости диска.
🔗 Как смонтировать
⚙️ Команда та же как и для других файловых систем: sudo mount /dev/<раздел> <точка монтирования>. Но у нее есть очень много параметров, которые можно передать с помощью -o и разделением запятой:
📥
compress=zstd— автоматически сжимает файлы, экономя место и увеличивая скорость чтения. Если процессор слабый, может замедлять запись.⏰️
noatime— экономит ресурс SSD, не записывая даты последнего доступа к файлам.⚡️
space_cache=v2— включает кэш свободного места, чтобы ускорить работу с большими файлами.📥
discard=async— автоматический TRIM для того, чтобы SSD не терял скорость от мусора в свободной области.✅
commit=<секунды>— меняет интервал сброса данных на диск. Чем меньше, тем меньше данных вы потенциально потеряете при выключении света. Но если вам нужна скорость, повышайте.
🔣 Например: sudo mount /dev/sda2 -o compress=zstd,noatime,space_cache=v2,discard=async,commit=30.
⬆️ Самое интересное: снапшоты
📁 Вы наверняка захотели btrfs именно для снапшотов. Они очень круты, потому что они занимают место только под разницу. То есть если вы файлы не меняли или чуть-чуть меняли, снапшот почти не займет место.
⚙️ Для простоты мы здесь будем использовать snapper.
⬇️ Установка
🎛 Просто выполните 2 команды:
sudo apt install snapper
sudo snapper -c root create-config /✅ После этого он готов к работе.
⬆️ Создание снапшота
☁ Дальше все просто. Чтобы создать снапшот, выполните sudo snapper create -d "<описание>". Кстати, описание необязательно, если оно не нужно, опустите -d и строку.
1⃣ Дальше если вы сделаете sudo snapper list, вы увидите ваш снапшот в аккуратной таблице и у него будет номер. Он будет использоваться для дальнейших операций над этим снапшотом.
✏ Если вам когда-нибудь захочется изменить описание снапшота, сделайте sudo snapper modify <номер> -d "<новое описание>".
🗑 Если надо удалить снашпот, sudo snapper delete <номер>. Подтверждения не будет, поэтому будьте аккуратны, восстановить потом будет очень сложно.
⬇️ Как восстановить снапшот
❗️ Если вы вдруг что-нибудь сломали, не помните что именно сделали, но у вас сохранился снапшот, делайте следующее:
1⃣ Найдите номер вашего снапшота. Выполните
sudo snapper list, чтобы увидеть все снапшоты.🔁 Выполните
sudo snapper rollback <номер> --ambit classic. Параметр--ambitнужен только в первый раз, во всех следующих выполнениях команды его можно опустить. После выполнения создастся новый снапшот перед откатом и записываемая копия снапшота, к которому вы откатываетесь⚙ Перезагрузитесь. После этого система будет ровно в том состоянии, в котором вы сделали этот снапшот.
👀 И это еще не все!
🆒 С Btrfs есть еще очень много интересных штук, которые я тупо не умещу в этот пост. Если хотите, чтобы я что-нибудь еще обьяснил — пишите.
#️⃣ #linux #btrfs
👨💻 denis0001-dev.life | 📲 MAX