Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
FreeBSD и ZFS
Просмотров: 422
 
Ответов: 18
Как знают многие, есть такая ОС: FreeBSD. Плохая она или хорошая неважно, это выходит за рамки этого опросника. Любителям написать что-то типа «FreeBSD — RIP» просьба прогуляться на ЛОР и оставить эту надпись там.
Также, есть такая файловая система под названием ZFS, разработка недавно съеденной Sun Microsystems. Файловая система крайне интересная и достаточно замечательная.
Я — системный администратор ХабраХабра и в скором времени планирую достаточно серьезный апгрейд серверного хозяйства. Среди идей имею идею использовать ZFS. Недавно я стал тестировать ZFS на FreeBSD 8.1-RELEASE. Полет нормальный, кернел паников не было ни разу, скорость удовлетворяет. Но в интернете весьма разные отзывы, порой просто неадекватные. Уровень абстракции файловой системы просто потрясающий, разделами можно рулить как хочешь прямо на лету; скорость хорошая, местами быстрее UFS2+SU, да и развернуть ее тоже очень просто. Радует изкоробочная компрессия разделов, снапшоты и прочие полезности. Я ее поднял на своем тестовом сервере: все работает нормально, никаких проблем не замечал.
Но все таки хочу узнать мнения тех, кто непосредственно сталкивался с разворачиванием ZFS на боевом сервере под управлением FreeBSD и использовал такую связку под реальной нагрузкой достаточно много времени. Синтетические тесты тоже интересны, но в меньшей степени, ибо синтетические такие синтетические. Да: я использую только стабильные сборки ОС, опрос относится в большей мере к ним.
Около года FreeBSD c ZFS в продуктиве на файловом сервере. Средняя отдача — 1ТБ трафика в сутки. Сервер: CPU — 2xOpteron 2214, Mem — 32G, контроллер — AMCC 9650SE-12M, диски — Seagate серии NS, 10-12 штук + SSD Intel X25-M под кэш устройство. Ни одного зависания связанного с ZFS за всё время работы сервера. Единственная проблема — замена отказавших дисков в raidz. Делаешь replace диску, пул резилверится на новый диск, а старый не уходит из конфигурации. Находил PR по этому багу, починили ли его или нет — не знаю.
На домашнем сервере (Cel3300, 2Gb, 4xWD EARS 2Tb; FreeBSD 8.1 amd64) использую ZFS в конфигурации 4xRAID1 и RAID10:
root@server:/usr/local/etc (1768) zpool status
pool: storage
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
mirror ONLINE 0 0 0
gpt/storage0 ONLINE 0 0 0
gpt/storage3 ONLINE 0 0 0
mirror ONLINE 0 0 0
gpt/storage1 ONLINE 0 0 0
gpt/storage2 ONLINE 0 0 0
errors: No known data errors
pool: zroot
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror ONLINE 0 0 0
gpt/system0 ONLINE 0 0 0
gpt/system2 ONLINE 0 0 0
gpt/system3 ONLINE 0 0 0
gpt/system1 ONLINE 0 0 0
errors: No known data errors
Диски разбиты вот так (сделан отступ в 2 Мбайта в начале диска для исправления проблем AdvancedFormat у WD EARS винтов):
root@server:/usr/local/etc (1771) gpart show
=> 34 3907029101 ada0 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
=> 34 3907029101 ada1 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
=> 34 3907029101 ada2 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
=> 34 3907029101 ada3 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
Проблема: низкая скорость чтения и записи у ZFS RAID10:
Например, запись:
dd if=/dev/zero of=/storage/test.file bs=1000M count
1+0 records in
1+0 records out
1048576000 bytes transferred in 33.316996 secs (31472705 bytes/sec)
Или чтение:
dd if=/storage/test.file of=/dev/nulbs=1000M count=1
1+0 records in
1+0 records out
1048576000 bytes transferred in 13.424865 secs (78107005 bytes/sec)
systat при этом выглядит примерно так:
2 users Load 0,29 0,12 0,04 19 окт 14:27
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 1048432 7548 2771456 11732 87616 count
All 1232436 10608 1076589k 29964 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 4770 total
69 8556 20k 517 776 798 20k 20581 zfod 104 em0 uhci0
2 ozfod 5 uhci3 ehci
9,7%Sys 0,0%Intr 0,0%User 0,0%Nice 90,3%Idle %ozfod 1997 cpu0: time
| | | | | | | | | | | daefr hdac0 257
===== prcfr 667 ahci0 259
dtbuf 3762 totfr 1997 cpu1: time
Namei Name-cache Dir-cache 100000 desvn react
Calls hits % hits % 26371 numvn pdwak
2 2 100 24996 frevn pdpgs
intrn
Disks ada0 ada1 ada2 ada3 da0 pass0 pass1 429056 wire
KB/t 128 128 128 127 0,00 0,00 0,00 1103516 act
tps 156 173 188 145 0 0 0 368484 inact
MB/s 19,51 21,62 23,48 18,03 0,00 0,00 0,00 cache
%busy 18 35 35 16 0 0 0 87616 free
buf
А с самих дисков читает вполне приемлимо:
1073741824 bytes transferred in 9.673196 secs (111001764 bytes/sec)
root@server:/usr/home/dyr (1769) dd if=/dev/gpt/storage1 of=/dev/null bs=1024M count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 9.887180 secs (108599400 bytes/sec)
root@server:/usr/home/dyr (1770) dd if=/dev/gpt/storage2 of=/dev/null bs=1024M count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 9.736273 secs (110282635 bytes/sec)
root@server:/usr/home/dyr (1772) dd if=/dev/gpt/storage3 of=/dev/null bs=1024M count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 11.112231 secs (96627025 bytes/sec)
В чём причина, не понимаю.
vfs.zfs.l2c_only_size: 3535428608
vfs.zfs.mfu_ghost_data_lsize: 23331328
vfs.zfs.mfu_ghost_metadata_lsize: 20963840
vfs.zfs.mfu_ghost_size: 44295168
vfs.zfs.mfu_data_lsize: 0
vfs.zfs.mfu_metadata_lsize: 0
vfs.zfs.mfu_size: 11698176
vfs.zfs.mru_ghost_data_lsize: 22306304
vfs.zfs.mru_ghost_metadata_lsize: 8190464
vfs.zfs.mru_ghost_size: 30496768
vfs.zfs.mru_data_lsize: 512
vfs.zfs.mru_metadata_lsize: 0
vfs.zfs.mru_size: 20443648
vfs.zfs.anon_data_lsize: 0
vfs.zfs.anon_metadata_lsize: 0
vfs.zfs.anon_size: 1048576
vfs.zfs.l2arc_norw: 1
vfs.zfs.l2arc_feed_again: 1
vfs.zfs.l2arc_noprefetch: 0
vfs.zfs.l2arc_feed_min_ms: 200
vfs.zfs.l2arc_feed_secs: 1
vfs.zfs.l2arc_headroom: 2
vfs.zfs.l2arc_write_boost: 8388608
vfs.zfs.l2arc_write_max: 8388608
vfs.zfs.arc_meta_limit: 106137600
vfs.zfs.arc_meta_used: 104179208
vfs.zfs.mdcomp_disable: 0
vfs.zfs.arc_min: 53068800
vfs.zfs.arc_max: 424550400
vfs.zfs.zfetch.array_rd_sz: 1048576
vfs.zfs.zfetch.block_cap: 256
vfs.zfs.zfetch.min_sec_reap: 2
vfs.zfs.zfetch.max_streams: 8
vfs.zfs.prefetch_disable: 1
vfs.zfs.check_hostid: 1
vfs.zfs.recover: 0
vfs.zfs.txg.write_limit_override: 0
vfs.zfs.txg.synctime: 5
vfs.zfs.txg.timeout: 10
vfs.zfs.scrub_limit: 10
vfs.zfs.vdev.cache.bshift: 16
vfs.zfs.vdev.cache.size: 10485760
vfs.zfs.vdev.cache.max: 16384
vfs.zfs.vdev.aggregation_limit: 131072
vfs.zfs.vdev.ramp_rate: 2
vfs.zfs.vdev.time_shift: 6
vfs.zfs.vdev.min_pending: 4
vfs.zfs.vdev.max_pending: 10
vfs.zfs.cache_flush_disable: 0
vfs.zfs.zil_disable: 0
vfs.zfs.zio.use_uma: 0
vfs.zfs.version.zpl: 4
vfs.zfs.version.spa: 15
vfs.zfs.version.dmu_backup_stream: 1
vfs.zfs.version.dmu_backup_header: 2
vfs.zfs.version.acl: 1
vfs.zfs.debug: 0
vfs.zfs.super_owner: 0
Ещё немного раздражает наличие опций файловой системы sharesmb и sharenfs — понятно, что они в Solaris делают, но во FreeBSD, насколько я понимаю, они просто не работают.
Синтетический тест: www.phoronix.com/scan.php?page=article&item=zfs_ext4_btrfs&num=3
Но это фороникс. И тест, как обычно, имеет мало отношения к реальности )
Вообще у меня один сервер с бэкапами, резервный, стоит с zfs. Из любопытства т.к. оно там совершенно не нужно. Ну, вроде работает, что еще сказать, нагрузки там особой нет, выключений питания не бывает, фря не виснет.
Мне кажется, что если вам _действительно_ нужны те преимущества, которые дает zfs — тогда её стоит использовать. Если же не очень нужны — не стоит т.к. это все же experimental.
Ребята, а кто-нибудь уже пережил падение одного из хардов объединенных ZFS под фряхой?
В солярисе всё замечательно, и ZFS вполне можно довериться, а вот будет ли всё так же здорово случись что во фряхе?
Бэкап конечно наше всё, но интересует в первую очередь жизнеспособность системы в случае выхода из строя одного из дисков.
Эксплуатирую ZFS на FreeBSD 9.0-CURRENT:
- raidz2 из 6 дисков + диск для системы — в основном файлопомойка, хранилище торрентов и бэкап-сервер via ftp
- raid 1 с загрузкой на ZFS — nginx+php+mysql
- одиночный диск ZFS — nginx+php+mysql
При копировании большого количества мелких файлов ~30G в пределах одного пула система начинает тупить.
Но тут уже приходится мирится или высокая скорость IO или временные тормоза при переполнении vfs.zfs.arс…
Слегка офтопик, но не могу не сказать.
Как администратору большого проекта следовало бы взять за правило вводить в энтерпрайз только хорошо проверенные и оттестированные технологии, в которых хорошо разбираетесь, и по поводу которых можете иметь свое взвешенное мнение.
А подход — «а посоветуйте ка мне тут штучек разных, а я их заюзаю на горячую» — это тупик.
ZFS на x86 — пока что слишком зелена для ентерпрайз продакшн. Хотите ZFS — берите Солярку на T2 — для многопоточных веб-делов — самое то. Ну и ясен красен нужно знать Solaris ))).
С «кучей» вопрос отдельный :) Могу предложить hint, как разбираться со всеми этим zpool {add,replace,attach,detach,online,offline}.
Создайте несколько файлов (можно разного размера, в тех пропорциях, которые интересны).
И делайте zpool _из этих файлов_ :) zpool create testpool /path/to/file10G /path/to/file20G /path/to/file20G
Ну и пробуйте «отцепить диск» из пула, «прицепить обратно», «в оффлайн», обратно «в онлайн», сделать replace одного на другой. И смотрите на практике, что можно сделать, чего Вам не позволят. Ничего не сломаете, инфа 100% :) И никаких винтов не нужно вообще.
У меня solaris'ов гораздо больше, чем bsd, так что тут я плохой советчик :) Мне было бы проще сделать очередной solaris box. Но там для неподготовленного человека может быть то ещё дао с компиляцией типичного софта (хотя есть pkgsrc от netbsd, считай — те же порты, или вообще opencsw — ничего компилять не надо).
Ну и сама установка минимальной ОС (что-то типа Base System во FreeBSD, метров на 200 без лишнего трэша) тоже потребует определенной усидчивости и желания «поразбираться». Ну или как вариант — OpenSolaris в дефолтной установке, но это 4 гига «всего подряд» вместе с иксами и прочей требухой.
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться