Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: wiki/Btrfs  (Прочитано 14536 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #30 : 27 Март 2013, 19:35:18 »
а какая разница что там в каком файле если ставить dpkg -i файл ?? и ставить все 3(4) надо ? или что то можно не ставить ?

и как я понимаю, можно сохранить и загрузку со старым ядром.
Просто для справки я уточнил что в каком.
Нужно ставить все 4, для избежания перлов, вроде сбивания разрешения, исчезновения некоторых pci устройств и т.д..
Например при неустановленных headers, у меня не запускались виртуальные машины, из-за невозможности подключить модуль ядра.
Загрузка старого ядра останется в grub, вы в любой момент сможете на него вернуться.

Оффлайн dcum

  • Любитель
  • *
  • Сообщений: 93
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #31 : 03 Июнь 2013, 20:01:20 »
Все привет, возник вопрос.

Экспериментирую на вируталке с btrfs. Изначально система сама разбила диск на @ (/) и @home (/home). Затем я сделал снапшот
@home и зачем-то написал btrfs subvolume set-default ID путь_до_снапшота. После перезагрузки понятно, что ничего не запустилось.
Дальше я загружаюсь в live-cd и монтирую раздел /dev/sda1 (размер около 800 мб), но вижу сделанный снапшот (@home), отсюда и вопрос, как вернуть все как было?

Пользователь решил продолжить мысль 03 Июнь 2013, 20:08:47:
нашел решение
mount -o subvol=@ /dev/sda1 /mntНо возник вопрос, как на /dev/sda1 просмотреть все subvolume?
« Последнее редактирование: 03 Июнь 2013, 20:08:47 от dcum »

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #32 : 03 Июнь 2013, 20:15:08 »
Попробуйте
sudo btrfs subvolume set-default 0 <путь к примонтированному диску>
или параметр монтирования subvolid=0
//Не уверен, но вроде рут фс это 0, можете пробить числа от 0 до 9
//Вот мой вывод get-default
timofey@beplan:~$ sudo btrfs subvolume get-default /mnt
ID 5 (FS_TREE)
« Последнее редактирование: 03 Июнь 2013, 20:25:07 от nefelim4ag »

Оффлайн dcum

  • Любитель
  • *
  • Сообщений: 93
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #33 : 03 Июнь 2013, 21:39:43 »
Спасибо, сменил вот так

sudo btrfs subvolume set-default 5 /mnt
из Wiki Ubuntu
since the id 5 is a permanent alias for the top of the btrfs tree.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11389
  • Xubuntu 16.04 (64bit)
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #34 : 22 Декабрь 2015, 19:22:49 »
Подправил и дополнил статью по своим наблюдениям и познаниям.
Поменял немного структуру документа, поправил ошибки и форматирование, а также упростил и дополнил некоторые моменты.

Написал по btrfs subvolume set-default:

Дело в том что если указывать при монтровании нужное имя подтома (@ для корня и @home для хомяка) - то без разницы, что там установлено через set-default, А вот если опций монтирования, которые указывают имя или ID подтома нет, то монтируется без set-default тот самый служебный ID 5 (FS_TREE), а если поставить через set-default какой-то подтом с ФС (корня или хомяка), то при монтировании раздела будет монтироваться уже указанный подтом:

btrfs subvolume list /
ID 257 gen 7529 top level 5 path @
ID 258 gen 7534 top level 5 path @home
mount /dev/sda2 /mnt
ls /mnt
@   @home
umount /mnt
btrfs subvolume set-default 257 /
mount /dev/sda2 /mnt
ls /mnt
bin    dev   initrd.img      lib64  opt   run   sys  var
boot   etc   initrd.img.old  media  proc  sbin  tmp  vmlinuz
cdrom  home  lib             mnt    root  srv   usr  vmlinuz.old
« Последнее редактирование: 22 Декабрь 2015, 20:20:10 от Sly_tom_cat »
Индикатор для Yandex-Disk: http://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11389
  • Xubuntu 16.04 (64bit)
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #35 : 22 Декабрь 2015, 20:10:07 »
Кстати про ID 0 - на самом деле - это алиас для ID = 5 (FS_TREE). Других подтомов нужно пользовать ID из вывода команды btrfs sub list
Индикатор для Yandex-Disk: http://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11389
  • Xubuntu 16.04 (64bit)
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #36 : 22 Декабрь 2015, 20:17:24 »
nefelim4ag, а не подскажите - как я могу посмотреть сколько реально занято на корне (@) и хомяке (@home)?

Команды btrfs dev us, btrfs fi df -  все дают только обобщенную информацию, а df - так просто врет и для / и для /home показывает одни и те же данные (что в принципе верно конечно, но только от части).
Индикатор для Yandex-Disk: http://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #37 : 22 Декабрь 2015, 22:43:24 »
@Sly_tom_cat, точного способа нету, т.к. в идеале надо учитывать ещё и сжатие с дедубликацией, если оное имеет место
Мне как правило хватает примонтировать корень диска и сделать что-то на подобие:
du -hs /mnt/@homeТехнически, это будет место используемое данными на диске, без учёта сжатия и дедубликации, но с учётом наличия разряженных файлов

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11389
  • Xubuntu 16.04 (64bit)
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #38 : 22 Декабрь 2015, 23:09:59 »
nefelim4ag, ну это еще и за вычетом inode и других метаданных.
Индикатор для Yandex-Disk: http://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11389
  • Xubuntu 16.04 (64bit)
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #39 : 16 Март 2016, 16:17:35 »
Собственно статью продолжаем править.

Я внес свои наблюдения по работе btrfs на нескольких устройствах (баловался на loop девайсах поверх файловых образов).

Попутно возникли некоторые вопросы (написал ТС в личку, но потом подумал что это можно и тут обсудить):


В части про своп сказано, что просто файлом - нельзя, сломает ФС, а можно только через loop устройство. Тут возникает вопрос, а как же loop устройство помогает и от чего оно помогает - почему своп рушит ФС?

Некоторую подсказку (возможно) преподносит настройка атрибута С (через chattr) - COW крайне неприятен для образов дисков виртуалок....

И вот подумалось - а нельзя ли на своп файле отключить COW и тем решить проблему, которую предложено решать через loop устройство?
Индикатор для Yandex-Disk: http://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6702
  • Ubuntu 16.04
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #40 : 16 Март 2016, 16:58:54 »
А я вот не рад, что вырезали способ установки на сжатую ФС с подменой /bin/mount. Мне так было удобнее, чем создавать том с компрессией. А потом я захотел без компрессии, вырубил в fstab и все.
Кроме того по новой версии невозможно выполнить установку, потому что не известно как сделать это
Цитировать
Но можно сразу поставить систему на том с компрессией, это довольно просто сделать: нужно самостоятельно создать файловую систему btrfs пред началом установки. Установить у корневого подтома атрибут compression, после чего можно создать подтома @ и @home (проверьте что они унаследовали атрибут компресси).
ведь об этом ни слова.

==========

Вернул старый метод, но сохранил новый, разделив их на 2 способа на выбор.
« Последнее редактирование: 16 Март 2016, 17:12:22 от thunderamur »

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11389
  • Xubuntu 16.04 (64bit)
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #41 : 16 Март 2016, 17:12:50 »
получил в личке ответ про своп процитирую тут т.к. может быть интеренсо всем.


Чисто технически, проблем несколько:
1. При маппинге свапфайла, ядро для работы использует доступ к блокам диска напрямую, что ломает как концепцию COW - повреждает файловую систему (грубо говоря, btrfs решила что блок перезаписан и освобождён, записала туда что-то новое, ат тут раз и новые данные из swap), так и чек суммы
2. Маппинг не может корректно отрабатывать на btrfs RAID массивах, т.к. изначально рассчитывался под традиционные FS

В результате тип маппинга, которым работает swap запрещён со стороны кода ядра и вы просто не сможете примонтировать swap file

Loop позволяет обойти все эти ограничения, т.к. добавляет полноценный слой абстракции между swap и btrfs, но loop даёт приличный overhead и при жёстком недостатке памяти, может получиться что система схлопнется:
Система попробует записать данные в swap, выделит память при обращении к loop устройсву, а память уже кончилась, запрос не сможет быть обработан, данные небыли записаны в swap, сбой в механизме управления виртуальной памятью и что будет дальше сложно предсказать

Но в целом, если не ожидается резких OOM и нужно чтобы система тихенько свопила на диск в фоне, например данные с tmpfs, хак с loop устройством позволяет это осуществить и в принципе безопасен

Как я понимаю, может быть и еще одна засада - балансировка и дефрагментация может перемещать блоки btrfs и опять директмаппинг будет промахиваться  :-\ ...  :(

Если своп попадет в файл с включенной компрессией то опять засада :-[

Так что просто отключить СOW на своп файле - не выход, увы. :(
« Последнее редактирование: 16 Март 2016, 17:18:51 от Sly_tom_cat »
Индикатор для Yandex-Disk: http://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11389
  • Xubuntu 16.04 (64bit)
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #42 : 16 Март 2016, 18:57:12 »
thunderamur, ну и ок - пусть будет два метода установки на ФС со сжатием - я дополнил вариант с предварительным созданием фс вручную командами которые надо для этого выполнить.

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

Но заранее соглашусь, что выполнять пять-шесть команд для создания ФС в ручную тоже может вызвать проблемы у новичка при банальной ошибке при перепечатывании.
Индикатор для Yandex-Disk: http://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн thunderamur

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6702
  • Ubuntu 16.04
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #43 : 16 Март 2016, 19:40:02 »
Sly_tom_cat,
Да прибудет с нами выбор. Пусть народ сам выбирает на какие грабли наступать, мы же за свободу выбора тут собрались :)

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 10825
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #44 : 16 Март 2016, 19:41:03 »
Sly_tom_cat,
Я против того, чтобы писать в официальной wiki писать про set-default в корень.
Это ломает многие инструкции, которые уже есть. Может людям повредить, если не то смонтируют.

Да и очень удобно иметь дефолтом корень, а не @.

Я добавил свои пару слов, а ты это все потер похоже.
Я в личке не консультирую. Вопросы задавайте на форуме.

 

Страница сгенерирована за 0.181 секунд. Запросов: 23.