Your SlideShare is downloading. ×
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2

1,059

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,059
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Распределенное файловое хранилище (Nginx, Perl, ZFS) Mons Anderson Олег Мамонтов
  • 2. NAS, SAN or custom? SAN: FC/iSCSI NAS: NFS/CIFS/... Custom: *
  • 3. Что нам нужно? – отдавать данные – по протоколу HTTP
  • 4. HTTP это nginx ;)
  • 5. Что нам нужно? User -> nginx -> SAN ? User -> nginx -> NAS ? User -> nginx -> nginx ?
  • 6. Стоимость решений Nginx: $ NAS: $$ SAN: $$$$$$$
  • 7. Наше хранилище 8 U, 24Tb 4 x ( 2U, 6Tb ( 2+10 Tb raw ) 4 x redundancy for each file
  • 8. Что нам нужно от хранилища? CRUD! ( C reate, R ead, U pdate, D elete )
  • 9. Что нам нужно от хранилища? Read -> HTTP C, U, D -> ?
  • 10. Что нам нужно от хранилища? Read -> HTTP C, U, D -> HTTP!
  • 11. WebDAV – Простой – Прозрачный – Поддерживаемый в nginx* – Легко реализуемый
  • 12. * WebDAV + ACL Patch: – X-ACL: 0644 – X-Time: 1234567890
  • 13. Step by step: Front
  • 14. Front
  • 15. Front
  • 16. Front
  • 17. Storage N Tb = storage N/2 storage N/2
  • 18. Storage N Tb hash storage storage
  • 19. Storage N Tb hash storage storage
  • 20. Storage hash storage storage storage storage
  • 21. Storage hash storage storage storage storage
  • 22. Resizer hash storage storage storage image_filter() storage image_filter()
  • 23. Resizer hash Low CPU storage storage storage image_filter() storage image_filter()
  • 24. Resizer storage storage storage storage Resize Resize Resize
  • 25. Hashing ? Hash storage storage storage storage Resize Resize Resize
  • 26. Hashing ScaleHash(time,id) storage storage storage storage Resize Resize Resize
  • 27. Hashing URL: http://…/ObjectID ObjectID = (xxx)-(xxx)-… ID Time
  • 28. Hashing Timeline past upgrade over future start a b d c 0x0010 0x00FF 0x02FF 0x0FFF e 0x0000
  • 29. Hashing TimeHash(Time) { 0x0000 - 0x00FF -> [ a, b ] 0x00FF - 0x02FF -> [ a, c, d ] 0x02FF - 0x0FFF -> [ c, d ] 0x0FFF - 0xFFFF -> [ f ] } -> groups
  • 30. Hashing IDHash(ID, groups) -> group
  • 31. Hashing TimeHash(const Time) = const IDHash(const ID, groups) = const
  • 32. Access Control DB Perl: - AnyEvent::HTTPD - AnyEvent::HTTP - AnyEvent::DBI storage storage group
  • 33. Access Control: Public object -> GET /XXX Perl handler (check perms) ← 200 OK
  • 34. Access Control: Protected object -> GET /XXX -> Perl handler ← X-Accel-Redirect: /access/... -> GET /access/... -> proxy_pass http://ACLD ← X-Accel-Redirect: /int/.. -> GET /int/.. ← ← 200 OK
  • 35. Result?
  • 36. 2+2=4, 2+2=4, 2+2=4, … ! CPU Cache?
  • 37. Cache…
  • 38. Cache is a problem :(
  • 39. /cache proxy: //resize /source/ ?q=/i/AxB /i proxy://store resize() /internal 200 OK /i proxy: //storage /i/AxB /i proxy: //cache /i/AxB /source handler() XAccel: /cache/i/AxB+ (mtime:ctime:status) /i/AxB+ /source/ ?q=/i/AxB cache store 200 OK HIT /source handler() /source/ ?q=/i/AxB+ /source/ ?q=/i/AxB+ XAccel: /int 200 OK 200 OK 200 OK
  • 40. Combine? MEM CPU HDD
  • 41. Combined! Money are saved :) Deployed on same hosts Full resource consumption
  • 42. Combined, but scalable! Cache cluster Resize cluster Storage cluster + MEM + CPU + HDD
  • 43. Create, Update, Delete? PUT DELETE OPTIONS GET GET storage storage
  • 44. Temporary loss PUT DELETE OPTIONS GET GET storage storage
  • 45. Flashing error GET GET storage storage
  • 46. No file? Ask a friend! GET GET 404 fallback proxy_pass storage storage
  • 47. 404 Fallback: avoiding recursion GET ask next… unless asked storage storage
  • 48. 404 Fallback Just... proxy_next_upstream http_404 storage storage
  • 49. Again about PUT PUT storage storage
  • 50. How about single PUT? PUT DELETE OPTIONS ZFS «replication» storage storage
  • 51. Приоритеты выбора решения
    • Надежность / избыточность хранения
    • 52. Производительность чтения и записи
    • 53. Возможность распределения нагрузки
    • 54. Потенциальная масштабируемость
    • 55. Стандартные аппаратные компоненты
    • 56. Простота в настройке и обслуживании
  • 57. Традиционная работа с диском Имя <=> объект (inode) объект <=> LBA тома LBA тома <=> LBA RAID LBA RAID <=> LBA диска Файловая система Файловая система Менеджер томов RAID контроллер Дисковые устройства
  • 58. Rampant layering violation ;) Файловая система (zfs) Модель агрегации (zpool) Дисковые устройства
  • 59. stripe / mirror / raidz / ? stripe – быстро , дешево , ненадежно mirror – быстро , надежно , дорого raidz – относительно надежно , недорого , медленно :(
  • 60. Универсального решения нет :( Конфигурация Объем, GB IOPS stripe 1 x 100 10000 20000 mirror 2 x 50 5000 20000 raidz 1 x ( 99 + 1 ) 9900 200 raidz 5 x ( 19 + 1 ) 9500 1000 raidz 33 x ( 2 + 1 ) 6600 6600 Дано: 100 дисков по 100GB, 200 IOPS
  • 61. Наше хранилище — 6TB / 2U mirror raidz1 raidz1 raidz1 stripe spare 2U: 2 x 500MB + 10 x 1TB, SATA-2
  • 62. Будущее уже наступило! snapshot – мгновенный снимок ( cow - быстро, дешево ) rollback – откат файловой системы на заданный снимок clone – “альтернативная реальность” ( ветка из снимка ) send – дамп снимка ( полный или разностный) receive – воссоздание снимка из дампа
  • 63. “ Почти” репликация
    • Создание мгновенного снимка ( snapshot )
    • 64. Получение инкрементального дампа ( send )
    • 65. Пересылка дампа на целевую машину ( socketpipe )
    • 66. Восстановление дампа на целевой машине ( receive )
    • 67. Создание клона файловой системы ( clone )
    • 68. Переустановка символической ссылки ( link -fhs )
    • 69. sleep && goto п.1;
  • 70. Неочевидные нюансы
    • Зачем нужны клоны и символические ссылки?
    • 71. Удаление старых снимков и клонов
    • 72. Минимизация лага репликации
    • 73. Мониторинг актуальности
    • 74. Уникальные имена файлов при обновлениях
    • 75. Двухуровневое кеширование
  • 76. © 2011 Mons Anderson <mons@cpan.org> Олег Мамонтов <lonerr@cpan.org> Рамблер Интернет Холдинг
  • 77. ?

×