Online video hd

Смотреть вудман видео

Официальный сайт avto4avto 24/7/365

Смотреть видео бесплатно

19.03.10 12:10

razum2umBtrfs пускает корни на "корне"

И вроде бы о ней много писали...

И вошла она в ядро с помпой...

И все-таки хорошего обзора, показывающего, что автор реально пользует фичи, а не цитирует ман/вики - не увидел.

Btrfs.


Но чего-то я ничего лучше, чем ее вики (ее я принципиально не цитирую) не нашел, есть правда перевод от Федорчука, но мне, пробующем на своей
шкуре, а точнее на своем корне эту фс - кажется все мало и поверхностно.

По порядку.


Заявлена поддержка Multiple Devices, с чем она на первый взгляд хорошо справилась. Зайдя с бекапа системы, я снес старый корень на raid0 с двумя дисками и сначала попытался сделать все по-человечески.

mkfs.btrfs -d raid0 -m raid0 /dev/sda2 /dev/sdb2 /dev/sdc2


(Да, у меня три физических жеских и я решился раскинуть рейд0 данных (параметр -d raid0) и метаданных (параметр -m raid0) на всех. Кстати, результат налицо:

hdparm -t гласит

для одного раздела:
Timing buffered disk reads:  290 MB in  3.01 seconds =  96.22 MB/sec

для двух (raid0):
Timing buffered disk reads:  456 MB in  3.00 seconds = 152.00 MB/sec

для трех (raid0):
Timing buffered disk reads:  690 MB in  3.00 seconds = 229.65 MB/sec

(по одному разделу на диск)


Впрочем даже если отвлечься от попугаев, на рабочей (в конце концов) машине на глаз быстрее грузятся и ООо (бинарный) и FF (собраный) и вообще
приятней... На отказоустойчивость корня я, очевидно, забил.


В общем, раскинув пространство на 3 диска, и скопировав обратно корень (cp -ax / /mnt/) и /dev/null,
/dev/console (не удивляйтесь, если без них ничего не загрузится), попытался загрузиться на этот монстр, подумав мельком, что нечисто это: в строке kernel строке grub`а
указывать только root=/dev/sda2. Но факт фактом, после копирования, новая система монтировалась по любому диску...


Конечно.

Нихрена не загрузилось. Залез опять на бекап-систему, попытался примонтировать свежий корень.

Не тут-то было! Классический wrong type. Проняло нас (корень и меня) только после btrfsctl -a, - своеобразный autodetect для btrfs, раскинутой по Multiple Devices. Стало ясно, что простого решения нет: во время загрузки она же должна отрабатывать перед монтированием корня. А откуда, если она сам на корне?! Ответ один - initrd. И ясно, что тупой-дефолтный initrd (после genkernel --mdadm --lvm --install all) не поможет этого.


Попытался "прокачать" его:

  1. "раскатал" образ
    mkdir init; cd init

    gzip -dc /boot/initramfs-genkernel-x86_64-2.6.31 | cpio -id

  2. теперь посмотрел, что
    ldd /sbin/btrfsctl
    linux-vdso.so.1 =>  (0x00007fff653ff000)

    libuuid.so.1 => /lib/libuuid.so.1 (0x00007fb65a9ca000)

    libc.so.6 => /lib/libc.so.6 (0x00007fb65a675000)

    /lib64/ld-linux-x86-64.so.2 (0x00007fb65abcf000)


    libc.so, ld-linux-x86-64.so, libuuid.so,  btrfsctl скопировал в соотв. места распакованного initramfs
  3. "закатал" образ заново
    find ./ | cpio -H newc -o >
    /tmp/initramfs-genkernel-x86_64-2.6.31

    cd /tmp; gzip -9 initramfs-genkernel-x86_64-2.6.31; cp
    initramfs-genkernel-x86_64-2.6.31.gz /boot


Загрузился, оно, ясно не нашло корня и выкинуло в sh. btrfsctl -a
ругнулся на отсутствие /dev/btrfs-control, сбегал на живую систему, понял, что надо mknod /dev/btrfs-control c 10 62


Опять загрузился, btrfsctl -a страшно заругался на кучу файлов в /dev, мол, can't read и виснет.

Опять
сбегал на живую систему и попробовал собрать sys-fs/btrfs-progs с ROOT=init (место, куда распаковал initrd). Сжал, установил initrd опять - все равно ругается на кучу файлов в /dev, мол, can't read и опять-таки виснет.


Надоело.

Сделал
mdadm --create /dev/md2 --level=0 --raid-devices=3
/dev/sd[abc]2



и тупо отформатировал /dev/md2. И еще помучился, пока не вспомнил, что для моего способа загрузки (монолит, без initrd) ВСЕ составляющие рейд разделы должны быть промаркированы типом "fd". (fdisk, команда t, выбираем номер раздела, вбиваем fd, сохраняем (w))


Загрузилось. Приятно удивила скорость загрузки некоторых вещей даже по сравнению с прошлым 2х дисковым корнем. (Цифры см. выше).

Пришло время пользовать удобства.

  1. Подразделы.
    1. Тренируемся на кошках (sdc4 - тестовый раздел в btrfs):
      mkfs.btrfs /dev/sdc4
      mount /dev/sdc4 /mnt/temp/
      cd /mnt/temp/                        
      # Очень важно перейти на раздел! Иначе не получится
      echo 'new fs' > new-fs.txt      
      # Тестовый файл
      btrfsctl -s subvol .                  
      #Если вместо точки - полный путь, то получите ioctl:: Invalid argument
      # для этого и надо cd. subvol- имя подраздела на ваш вкус.
      # (Лучше латиницей и без пробелов)
      ls                                            
      # Проверьте! subvol - папка, содержащая new-fs.txt с тем же содержимым,
      # что и new-fs.txt в корне!
      echo 'new subvol' > subvol/new-fs.txt    
      # Перетираем тестовый файл в осн. дереве
      cd; umount /mnt/temp

      Теперь самое интересное: монтируя sdc4 с разным параметром subvol, кажется, что монтируем разные разделы!

      mount -o subvol=subvol /dev/sdc4 /mnt/temp/    
      # subvol - понятно, имя подключаемого подраздела
      cat /mnt/temp/new-fs.txt           
      # видим "new subvol"

      umount /mnt/temp
      mount -o subvol=. /dev/sdc4 /mnt/temp/ 
             
      # Точка - имя "главного" тома, с которого мы сняли копию
      cat /mnt/temp/new-fs.txt             
      # видим "new fs"

      # И ура! Начиная с ядра 2.6.32 можно удалять подразделы и снапшоты моментально!
      btrfsctl -D subvol /mnt/temp

      Схема устройства:
      Design-roots.png
      Видно, что помимо самих файлов, есть куча служебных данных, так что при достижении 75% заполнения раздела данными, он уже будет полон, но меня это мало волнует (пока 44%). Минималисты: осторожнее - "df -h" врет!
    2. Делаем операцию на себе:
      cd /
      btrfsctl -s backup .


      Повторяю: операция мгновенна и места (сразу) не отнимает
      Теперь на "главном" томе я обновил portage, перезагрузился на снапшот backup,
      нашел portage старой версии (еще бы :), обновил udev и с ним два конфига. Перезагрузился обратно в главный - нашел их нетронутыми.

      Вы даже не представляете, насколько такое положение дел может обрадовать гентушника :)
      Не работает система после обновления? - Перезагрузился на старую!
    3. Пара слов о grub.conf:
      Строка kernel должна выглядеть примерно так:

      kernel /boot/2.6.33 root=/dev/md2 rootfstype=btrfs rootflags=subvol=.


      ну и потом vga= (разрешение фреймбуфера), video= (драйвер фреймбуфера), elevator= (I/O планировщик) по вкусу. Т.е. как у вас и было
      rootfstype=btrfs предпочтительно указывать даже если вы не играетесь снапшотами. Точка - имя "главного" тома, с которого можно увидеть backup в корне и chroot`нуться в него.
      Из rootflags=subvol=backup увидеть "главный" том в корне НЕЛЬЗЯ. Только
      mount -o subvol=.
    4. UPD
      Есть приятная фича онлайн-дефрагментации btrfsctl -d <путь к файлу или каталогу>
      Сделал на корне.
      Разницы не заметил, хотя использую фс около 5 месяцев.
  2. Опции монтирования и тесты
    Тесты проводились на [email protected], 3Gb, 3xSATA2 под raid0
    дерево portage (165M) - распакованный архив portage.tar.bz2
    file (1G) готовился так: dd if=/dev/urandom of=file bs=8M count=128

    /etc/fstab: defaults (т.е. relatime):

    $ time cp -R portage portage2
    real    0m15.551s

    $ time rm -rf portage2
    real    0m10.373s

    $ time cp file file2
    real    0m9.435s


    /etc/fstab: noatime,nodatasum,compress:

    $ time cp -R portage portage2
    real   0m8.113s

    $ time rm -rf portage2
    real   0m9.025s

    $ time cp file file2
    real   0m9.218s

    sn8.png - image uploaded to Picamatic
    Видно, что включение noatime,nodatasum,compress положительно сказывается на быстродействии везде, но незначительно, кроме как на копировании - почти в 2(!) раза быстрее - портажа. Отказоустойчивость при nodatasum, ясно снижается.
  3. И последнее предупреждение.
    Фс в активной разработке, и не позволительно ставить старые версии, имхо. Смотрите чейнджлог и ставьте из гита. Тем более, что в генту со всякими live-прогами меньше всего проблем с их обновлением ;)

Статьи Федорчука по теме, в хронологическом порядке: 
Знакомство с btrfs,
Btrfs: поговорим о конверсии,
Про улучшения в
0.19 + тесты

UPD
Про фичи btrfs (на анлийском), где кстати утверждается выигрыщ в производительности против ext3/4 из-за особого поведения при fsync()

Performance of synchronous operations has been an important issue over the last year. On filesystems like ext3, an fsync() call will flush out a lot of data which is not related to the actual file involved; that adds a significant performance penalty for fsync() use and discourages careful programming. Btrfs has improved the situation by creating an entirely separate Btree on each filesystem which is used for synchronous I/O operations. That tree is managed identically to, but separately from, the regular filesystem tree. When an fsync() call comes along, Btrfs can use this tree to only force out operations for the specific file involved. That gives a major performance win over ext3 and ext4


PS

Желания и времени тестировать (т.е. реально пожить) на корню всякие разные фс сейчас, к сожалению, нет.

Если у кого есть идеи по поводу синтетического теста на свободной партиции - предлагайте.



bosha 19.03.10 12:28 # +0
Ухх. Уж сколько я не пытался этот btrfs побороть. так и не вышло ни разу нормально. Плюнул, поставил reiser4 ☺
muhas 19.03.10 12:39 # +0
я ща тоже планирую один раздел на reiser4 перевести, а ядрышко патчить лениво для рейзера на этой машине - да и плюсы сомтинельные (или я не вник просто до конца)
bosha 19.03.10 12:40 # +0
если верить вики то плюшек не мало, но я пока ещё все не прочухал - времени нет)

А на счёт патчить ядро, мне в этом плане легче: у меня gentoo, и я на zen-sources где этот патч уже есть)
ava1ar 19.03.10 13:24 # +0
Для арча это тоже несложно, zen-kernel'овские PKGBUILD'ы есть в АУРЕ, а у x-demon'а в репозитории есть готовые сборки для i686
bosha 19.03.10 13:26 # +0
Я чес слово не знаю где в вашем арчике и что. Я уже всё забыл и слава богу ☺
muhas 19.03.10 13:26 # +0
ну zen ядро поставить не проблема. проблема в лени его собирать (хотя вроде и автоматизировано всё - но лень матушка)
bosha 19.03.10 13:26 # +0
Да господи, даже на нетбуке ведро собирается за часа полтора )
ava1ar 19.03.10 13:29 # +0
Сюда стоило комент написать, а я не в ту ветку попал... Если собирать лень - вощьми готовый в репозитории x-demon'a. Я пока на i686 был его использовал - теперь сам собираю, под x86_64 из аура.
razum2um 19.03.10 13:52 # +0
побороть

эм?
поставил reiser4

как долго уже стоит? было, но давно. свежеформатированный четвертый радует, да, помню, но сложилось впечатление, что от насилования корня установкой-удалением все замедлялось пропорционально времени жизни.
и еще, вроде на balancer.ru о том же пост был.

razum2um 19.03.10 13:54 # +0
а да. особенно обсчет зависимостей перед установкой при подключенных оверлеях (без овереев-то портаж шустрый). ну просто неприлично долго думало.
wiz 19.03.10 12:34 # +0
На форониксе BTRFS регулярно тестируют на разных ядрах и устройствах.

http://www.phoronix.com/scan.php?page=article&item=btrfs_benchmarks&num=1
http://www.phoronix.com/scan.php?page=article&item=ext4_btrfs_nilfs2&num=1
http://www.phoronix.com/scan.php?page=article&item=btrfs_019&num=1
razum2um 19.03.10 14:26 # +0
последний тест
June 29, 2009

старо уже
chemikadze 19.03.10 17:57 # +0
А вы что хотели от команды, у которой GUI к системе бенчмарков написан на php-gtk?
wiz 20.03.10 19:18 # +0
я их через RSS читаю, там на самом деле довольно часто по бтр-у проезжаются, просто я так сразу выцепить ссылки не смог.
bosha 19.03.10 12:35 # +4
Имхо, форониксу верить - себе дороже.
muhas 19.03.10 12:40 # +0
в фортунки, однозначно!

кстати, цитатник вилинукса был бы явно весел ^_^ хотя до лорквотесов явно не дотянет =)
Shtsh 19.03.10 13:15 # +0
Так лор постарше будет.

Со временем и у нас может что-то появиться
muhas 19.03.10 13:25 # +0
да я не про время, а про отжиги..
bosha 19.03.10 13:25 # +0
А где это я отжёг о_О
muhas 19.03.10 15:23 # +0
истину про фороникс сказал! это не отжиг, это истинная правда - и её должны все знать!
booley 19.03.10 15:46 # +0
Смесь школоты и слоупока опасна — что такое фороникс? Чем знаменит?
muhas 19.03.10 16:08 # +0
тынц
wiz 20.03.10 19:19 # +0
а что с ним не так?
TiGR 19.03.10 14:16 # +6
Похоже не на обзор, а на поток сознания на заданную тему :)

Но в любом случае, познавательно ;)
razum2um 19.03.10 14:40 # +0
дык я еще и совета прошу
вы лучше скажите, что сделать, чтобы без прослойки raid0 ее на дисках раскинуть, чтоб загрузиться с такого корня?
ner_uto 19.03.10 15:37 # +0
Последняя картинка только у меня не кажет?
razum2um 19.03.10 20:20 # +0
исправил
xtavras 19.03.10 20:25 # +0
у меня и щас не кажет.
razum2um 19.03.10 21:28 # +0
ну не знаю, у меня в хроме норм. просто http://www.picamatic.com/view/6449153_sn8/
там график для наглядности, никаких блекдеков, ш...
xtavras 19.03.10 21:31 # +0
ага, так вижу, спасибо)
nvbn 19.03.10 20:03 # +0
Захотелось перевести все разделы на ноуте на бтрфс =)

Лучшие блоги (все 96)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 1991 из 151 города)
Топ пользователей Топ блогов
В сети: ginz, Alexander, al1e, Vzlom

Новенькие: motonarola, mixailperm, HATE_YOU, marazmatik, r0di0n
welinux.ru

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн