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


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

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

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

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #15 : 24 Март 2013, 22:28:54 »
кстати вот провёл опыт.

$dd if=/dev/zero bs=1M count=1024 of=btrfs.img
скопировано 1073741824 байта (1,1 GB), 0,788048 c, 1,4 GB/c

sudo mkfs.btrfs ./btrfs.img
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on ./btrfs.img
        nodesize 4096 leafsize 4096 sectorsize 4096 size 1.00GB
Btrfs Btrfs v0.19

$sudo mount -t btrfs -o compress=lzo ./btrfs.img /mnt
$df -h /mnt/
Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
/dev/loop0       1,0G          56K  894M            1% /mnt
$cd /mnt
$sudo wget http://mirror.yandex.ru/linuxmint//stable/14/linuxmint-14.1-mate-dvd-64bit.iso
--2013-03-24 22:23:17--  http://mirror.yandex.ru/linuxmint//stable/14/linuxmint-14.1-mate-dvd-64bit.iso
Распознаётся mirror.yandex.ru (mirror.yandex.ru)... 213.180.204.183, 2a02:6b8:0:201::1
Подключение к mirror.yandex.ru (mirror.yandex.ru)|213.180.204.183|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 1015021568 (968M) [application/octet-stream]
Сохранение в: «linuxmint-14.1-mate-dvd-64bit.iso»

29% [==================================>                                                                                     ] 303 678 915 6,30M/s   за 55s


Невозможно записать в «linuxmint-14.1-mate-dvd-64bit.iso» (На устройстве кончилось место).
Конечно места впритык, но сжатие должно было сработать и сохранить файл. А оно даже и половины не записало...

$df -h /mnt/
Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
/dev/loop0       1,0G         231M   86M           73% /mnt
а это ваще как ???
как такие проблемы решать ?

Пользователь решил продолжить мысль 24 Март 2013, 22:38:17:
----------------
Размер ФС можно менять

btrfs filesystem resize [+/-]<newsize>[gkm]|max <filesystem>
« Последнее редактирование: 24 Март 2013, 22:38:17 от xan »

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #16 : 25 Март 2013, 01:58:20 »
кстати вот провёл опыт.

$dd if=/dev/zero bs=1M count=1024 of=btrfs.img
скопировано 1073741824 байта (1,1 GB), 0,788048 c, 1,4 GB/c

sudo mkfs.btrfs ./btrfs.img
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on ./btrfs.img
        nodesize 4096 leafsize 4096 sectorsize 4096 size 1.00GB
Btrfs Btrfs v0.19

$sudo mount -t btrfs -o compress=lzo ./btrfs.img /mnt
$df -h /mnt/
Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
/dev/loop0       1,0G          56K  894M            1% /mnt
$cd /mnt
$sudo wget http://mirror.yandex.ru/linuxmint//stable/14/linuxmint-14.1-mate-dvd-64bit.iso
--2013-03-24 22:23:17--  http://mirror.yandex.ru/linuxmint//stable/14/linuxmint-14.1-mate-dvd-64bit.iso
Распознаётся mirror.yandex.ru (mirror.yandex.ru)... 213.180.204.183, 2a02:6b8:0:201::1
Подключение к mirror.yandex.ru (mirror.yandex.ru)|213.180.204.183|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 1015021568 (968M) [application/octet-stream]
Сохранение в: «linuxmint-14.1-mate-dvd-64bit.iso»

29% [==================================>                                                                                     ] 303 678 915 6,30M/s   за 55s


Невозможно записать в «linuxmint-14.1-mate-dvd-64bit.iso» (На устройстве кончилось место).
Конечно места впритык, но сжатие должно было сработать и сохранить файл. А оно даже и половины не записало...

$df -h /mnt/
Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
/dev/loop0       1,0G         231M   86M           73% /mnt
а это ваще как ???
как такие проблемы решать ?

Пользователь решил продолжить мысль 24 Март 2013, 22:38:17:
----------------
Размер ФС можно менять
btrfs filesystem resize [+/-]<newsize>[gkm]|max <filesystem>
Можно уточнить версию ядра? uname -aЯ искренне не знаю, почему оно у вас так сработало, я только что провёл аналогичный эксперимент, только файл записывал с жд.
(Нажмите, чтобы показать/скрыть)
Смутно предпологаю что это баг и оно у вас почему то (видимо wget пишет маленькими блоками) записало всё в inline, лечится это опцией монтирование max_inline=256
Можно ещё попробывать отключить сжатие и использовать опцию enospc_debug
Второе, команда df не работает на btrfs, т.к. измеряет не то, пользуйтесь встроенной в btrfs-tools
btrfs fi df /mnt

Я не говорил что размер фс btrfs менять не умеет, я говорил что она не умеет менять размер раздела, это разные вещи.

Уточняю, btrfs сразу после создания допустим на 2 TB разделе, занимает несколько килобайт, когда вы пишите туда данные, допустим вы записали 100 гигобайт, то и fs имеет размер равный 100 гигобайтам, но если вы из них 20 стёрли и 40 записали, то fs имеет размер уже в 140 гигобайт, из-за CoW, если вы выставите ограничение в 130 гигобайт, то она тогда просто перезапишет 10 из 20 стёртых гигобайт, когда кончится место не использованное ранее.

Вы можете обрезать раздел, но только спереди, где место не использовалось, в начале раздела обрезать скорее всего не получится, если только программа для управления разделами не умеет перемещать содержимое раздела по диску (этим занимается lvm).
« Последнее редактирование: 25 Март 2013, 10:32:30 от nefelim4ag »

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #17 : 25 Март 2013, 12:28:30 »
Можно уточнить версию ядра? [code]uname -a$uname -a
Linux mail 3.5.0-26-generic #42~precise1-Ubuntu SMP Mon Mar 11 22:17:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux[/code]

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


WARNING! - Btrfs v0.20-rc1 IS EXPERIMENTAL

UPS !!! 20 ??? а там у меня .19

Цитировать
Смутно предпологаю что это баг и оно у вас почему то (видимо wget пишет маленькими блоками) записало всё в inline, лечится это опцией монтирование max_inline=256
и что это дает ? эта опция

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #18 : 25 Март 2013, 14:37:18 »
Можно уточнить версию ядра? [code]uname -a$uname -a
Linux mail 3.5.0-26-generic #42~precise1-Ubuntu SMP Mon Mar 11 22:17:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux[/code]

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


WARNING! - Btrfs v0.20-rc1 IS EXPERIMENTAL

UPS !!! 20 ??? а там у меня .19

Цитировать
Смутно предпологаю что это баг и оно у вас почему то (видимо wget пишет маленькими блоками) записало всё в inline, лечится это опцией монтирование max_inline=256
и что это дает ? эта опция
Странно, нормальное ядро, на нём всё не плохо работало.
(Нажмите, чтобы показать/скрыть)

Проверьте для этого пробного раздела btrfs fi df [path]
Там будет показано сколько занимают данные и метаданные.

Смысл в том что если записываются маленькие блоки, по умолчанию меньше 8 кб, то они пишутся в inode, т.е.  в меттаданные. Это эффективно для мелких файлов, но для больших сами видите (если баг в этом конечно).
max_inline=256 - делает так, что файлы размером больше 256 байт, пишутся в листья, это помогает избежать подобного бага.
Отдельно попробуйте сделать это без compress, или с compress=lzo.
(Нажмите, чтобы показать/скрыть)

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #19 : 25 Март 2013, 23:27:34 »
а могу ли я снимки бекапить ?
допустим я хочу сделать резервную копию рута, но он постоянно меняется на живой системе.
Тогда через снимок
mkdir /mnt/b1
sudo btrfs subvolume snapshot / /mnt/b1
а что дальше ?



Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #20 : 26 Март 2013, 00:32:27 »
а могу ли я снимки бекапить ?
допустим я хочу сделать резервную копию рута, но он постоянно меняется на живой системе.
Тогда через снимок
mkdir /mnt/b1
sudo btrfs subvolume snapshot / /mnt/b1
а что дальше ?

Получившаяся папка и есть снапшот,
(Нажмите, чтобы показать/скрыть)
но это топорный метод, снапшоты нужно делать не корня, а подразделов.
Их тогда намного легче восстанавливать, нельзя заменить корень его снапшотом.
Т.е. условно, если вы сделали снимок корня, вы никак его вместо корня не накатите, только теоретически можно через опцию subvol=[path] подключать.
Если вы используете и монтируете подразделы, то вы без вопросов на работающей системе делаете снапшоты и потом систему
[@ - система, @_snapshot - соответственно снапшот]
Прямо на лету, можете подмонтировать раздел:
sudo mount /dev/sda1 /mnt
затем переименовать или удалить @ корень работающий, а корень снапшота переименовать в @, после перезагрузки загрузится корень снапшота, если через опцию монтирования указано монтирование по имени.

Ещё один момент, папку создавать не нужно, он сам создаст её для снапшота.
Снимок=подраздел, это просто копия  меттаданных.
(и вроде снимки нельзя в снимки вкладывать, они тогда не как снимки срабатывают и нельзя удалить снимок если внутри него лежат снимки)

(Нажмите, чтобы показать/скрыть)
Для подробностей, ls корня раздела sda1
timofey@Beplan:~$ ls /mnt
@  @_13.04_10:24_14.03.2013  2_old  @home
Содержимое fstab:
# / was on /dev/sda1 during installation
UUID=58316bfb-08be-42e9-8e86-f04daa1cb63b /               btrfs   defaults,subvol=@,compress=lzo 0       1
# /home was on /dev/sda1 during installation
UUID=58316bfb-08be-42e9-8e86-f04daa1cb63b /home           btrfs   defaults,subvol=@home,compress=lzo 0       2
« Последнее редактирование: 26 Март 2013, 00:55:24 от nefelim4ag »

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #21 : 26 Март 2013, 00:51:17 »
#btrfs subvolume snapshot / /mnt/b1

ERROR: incorrect snapshot name ('/')

вроде всё как написано. параметры корень  и куда делать снимок. Так ?
или ошибка потому что корень ?

у меня кстати boot root home разные разделы. значит надо для каждого делать снимок.
опция scrub устарела ? почему то не распознает её btrfs
« Последнее редактирование: 26 Март 2013, 00:57:21 от xan »

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #22 : 26 Март 2013, 00:58:32 »
Странно что выдаёт ошибку создания, видимо это потому что у вас там данные, а у меня там только снимки. (т.е. да, потому что корень)

А зачем разные разделы, боюсь спросить? В том и весь смысл btrfs, что разделы создавать не нужно и место перераспределять тоже, нужно только подразделы использовать.
В общем если это разные разделы, то для них надо разные снимки делать, но мысля не меняется, сделать снимок корня удачно не получится (у меня создаётся пустой снимок, без данных).

Опция монтирования? Первый раз слышу, есть только обработка в виде проверки целостности:
btrfs scrub start [-Bdqr] <path>|<device>
        Start a new scrub
    btrfs scrub cancel <path>|<device>
        Cancel a running scrub
    btrfs scrub resume [-Bdqr] <path>|<device>
        Resume previously canceled or interrupted scrub
    btrfs scrub status [-dR] <path>|<device>
        Show status of running or finished scrub
Опции монтирования (English) https://btrfs.wiki.kernel.org/index.php/Mount_options
Они же, но не все и менее подробно, наша вики: http://help.ubuntu.ru/wiki/fstab#btrfs
« Последнее редактирование: 26 Март 2013, 01:10:31 от nefelim4ag »

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #23 : 26 Март 2013, 09:51:52 »
А зачем разные разделы, боюсь спросить? В том и весь смысл btrfs, что разделы создавать не нужно и место перераспределять тоже, нужно только подразделы использовать.
В общем если это разные разделы, то для них надо разные снимки делать, но мысля не меняется, сделать снимок корня удачно не получится (у меня создаётся пустой снимок, без данных).
Хоть и боялись, но спросили...  :coolsmiley: есть сервер который будет держать виртуалки. Когда я всё это это ставил я прочёл что BTRFS умеет делать снимки.
у меня есть опыт работы с LVM  и я подумал, что если виртуальная машина содержит несколько дисков то будет проблема.
ПРоблема в том что когда потребуется откатиться, то откатится не только тот файл что нужно, а все вместе.
Поэтому я заменил целый раздел на LVM и поверх стал делать разделы BTrfs. Теперь я хочу получить полную выгоду от этой комбинации.
LVM подстрахует в целом раздел, а BTRFS на уровне файлов. Да масло масляное !  ;D
Снимок на уровне образа тоже вариант, но образ qcow2 жирнеет  :-\ и потом удалить снимок из образа можно, но у меня размер образа остался таким же и я так понял что его пережимать надо через конвертирование.
Если виртуалка имеет два файла.. то мне значит чтобы делать отдельные снимки каждого образа мне потребует положить их в разные подразделы ?
есть раздел с дисками от почты /vm/mail/
там два образа самой машины и ящиков.
Верно ли я понимаю  ::)
#btrfs subvolume create /vm/mail/box

#btrfs subvolume create /vm/mail/mail

1. а после мне надо будет подключить всё что я создал в fstab ??? чтобы автоматом монтировалось или хватит того что уже весь раздел смонтирован?

2. как мне разложить образы по этим подтомам ?
просто mv boxes.img /vm/mail/box ?
mv mail.img /vm/mail/mail?

« Последнее редактирование: 26 Март 2013, 09:56:54 от xan »

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #24 : 26 Март 2013, 12:24:26 »
LVM подстрахует в целом раздел, а BTRFS на уровне файлов. Да масло масляное !  ;D
Снимок на уровне образа тоже вариант, но образ qcow2 жирнеет  :-\ и потом удалить снимок из образа можно, но у меня размер образа остался таким же и я так понял что его пережимать надо через конвертирование.
Если виртуалка имеет два файла.. то мне значит чтобы делать отдельные снимки каждого образа мне потребует положить их в разные подразделы ?
есть раздел с дисками от почты /vm/mail/
там два образа самой машины и ящиков.
Верно ли я понимаю  ::)
#btrfs subvolume create /vm/mail/box

#btrfs subvolume create /vm/mail/mail

1. а после мне надо будет подключить всё что я создал в fstab ??? чтобы автоматом монтировалось или хватит того что уже весь раздел смонтирован?

2. как мне разложить образы по этим подтомам ?
просто mv boxes.img /vm/mail/box ?
mv mail.img /vm/mail/mail?
Вы можете не делать снимки, а просто копировать файл машины куда вам угодно (например в папку backup), будет тот же самый снимок.
Если по каким то причинам файлы копируются физически, а не делается копия меттаданных, то для cp используйте ключ --reflink=always

Если / системы, это корень раздела, то не нужно подразделы прописывать отдельно в fstab и если они просто вложены в подраздел их тоже не нужно прописывать, они будут как папки в подразделе отображаться (по идее, если нет то нужно будет дописать).

Да, файлы можно положить в подраздел просто отправив их туда.
« Последнее редактирование: 26 Март 2013, 12:26:01 от nefelim4ag »

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #25 : 26 Март 2013, 21:24:55 »
Вы можете не делать снимки, а просто копировать файл машины куда вам угодно (например в папку backup), будет тот же самый снимок.

копировать весь образ ?
а теперь смотрите, раз сделал что то образ изменился и надо файл в 120 Г копировать, потом еще раз что то и так далее...
а так наберется куча копий разной скважности, на кучу Терабайт

насколько я понял когда делаешь снимок, то запоминаются только изменения и в этом преимущества перед обычным копированием.

Цитировать
Если по каким то причинам файлы копируются физически, а не делается копия меттаданных, то для cp используйте ключ --reflink=always
можете пояснить это

Цитировать
Если / системы, это корень раздела, то не нужно подразделы прописывать отдельно в fstab и если они просто вложены в подраздел их тоже не нужно прописывать, они будут как папки в подразделе отображаться (по идее, если нет то нужно будет дописать).
как папка отображаются, что смутило ...

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #26 : 26 Март 2013, 22:11:29 »
https://btrfs.wiki.kernel.org/index.php/Changelog
В ядре 3.6 добавлено "allowed cross-subvolume file clone (aka. reflink)"
Фокус в том, что начиная с этого ядра, копирование в пределах раздела создаёт копию меттаданных, а не самих данных. Потому на практике вы получите те же самые снимки, только только на уровне отдельных файлов, что более удобно.
Опция --reflink=always для cp на случай, если оно не срабатывает по умолчанию.
Но учитывая версию ядра на сервере, этого нету =[


(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 27 Март 2013, 00:10:53 от nefelim4ag »

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #27 : 27 Март 2013, 17:36:04 »
а более новое ядро можно поставить ? я так понимаю в репе его нет. как это сделать ?

Оффлайн nefelim4ag

  • Автор темы
  • Любитель
  • *
  • Сообщений: 56
  • Гик
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #28 : 27 Март 2013, 18:01:24 »
а более новое ядро можно поставить ? я так понимаю в репе его нет. как это сделать ?
Это будет большой эксперимент, потому что некоторые ядра могут не корректно работать, но с теми которые не RC проблем быть не должно.
Простая инструкция:
Открываем ссылку http://kernel.ubuntu.com/~kernel-ppa/mainline/
Там выбираем нужную версию ядра, выкачиваем файлы в зависимости от битности системы i386 - 32 бит или amd64 - 64 бита.
По порядку скачиваем и устанавливаем ( sudo dpkg -i [path to deb] ) нужное нам ядро:
        linux-image
        linux-image-extra
        linux-headers*all
        linux-headers
Вот для примера 3.8.4 amd64:
   linux-image-3.8.4-030804-generic_3.8.4-030804.201303201832_amd64.deb   20-Mar-2013 22:40    13M        
   linux-image-extra-3.8.4-030804-generic_3.8.4-030804.201303201832_amd64.deb   20-Mar-2013 22:40    30M   
   linux-headers-3.8.4-030804_3.8.4-030804.201303201832_all.deb   20-Mar-2013 22:32    12M   
   linux-headers-3.8.4-030804-generic_3.8.4-030804.201303201832_amd64.deb   20-Mar-2013 22:40   961K
Поясняю (не уверен, но эксперементально выяснено) первый файл ядро, extra - драйвера, headers нужен для модулей ядра.
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 27 Март 2013, 18:03:58 от nefelim4ag »

Оффлайн xan

  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Re: wiki/Btrfs
« Ответ #29 : 27 Март 2013, 19:11:08 »
   linux-image-3.8.4-030804-generic_3.8.4-030804.201303201832_amd64.deb   20-Mar-2013 22:40    13M        
   linux-image-extra-3.8.4-030804-generic_3.8.4-030804.201303201832_amd64.deb   20-Mar-2013 22:40    30M   
   linux-headers-3.8.4-030804_3.8.4-030804.201303201832_all.deb   20-Mar-2013 22:32    12M   
   linux-headers-3.8.4-030804-generic_3.8.4-030804.201303201832_amd64.deb   20-Mar-2013 22:40   961K
Поясняю (не уверен, но эксперементально выяснено) первый файл ядро, extra - драйвера, headers нужен для модулей ядра.
(Нажмите, чтобы показать/скрыть)
а какая разница что там в каком файле если ставить dpkg -i файл ?? и ставить все 3(4) надо ? или что то можно не ставить ?

и как я понимаю, можно сохранить и загрузку со старым ядром.

 

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