10. EXT3, EXT4, XFS, ...
● EXT3/4, XFS, … (a další)
– tradiční design z 90. let, případně doplněný o žurnál
– totožné cíle, podobné koncepty, různé implementace
– postupné vylepšování a modernizace
– vyzrálé, spolehlivé, prověřené časem a produčními instalacemi
● historie stručně
– 2001 - EXT3
– 2002 - XFS (1994 - SGI Irix 5.3, 2000 GPL, 2002 Linux)
– 2008 - EXT4
11. EXT3, EXT4, XFS, ...
● evoluce, nikoliv revoluce
– doplňování vlastností (e.g. TRIM, write barriers, ...)
– vylepšení škálovatelnosti (metadata, ...)
– opravy chyb
● počaty v době rotačních disků
– víceméně fungují na SSD discích
– stop-gap pro budoucí systémy (NVRAM, ...)
● žádná podpora pro
– volume management, více disků, snapshoty
– řeší se přes LVM a RAID (hw/sw)
12. BTRFS, ZFS
● základní myšlenky
– integrace vrstev (LVM + dm + ...)
– zaměřeno na consumer-level hardware (častá selhání)
– zaměřeno na velké datové objemy
● což nám (doufejme) přinese ...
– flexibilní management
– zabudovaný snapshotting
– kompresi, deduplikaci
– kontrolní součty
13. BTRFS, ZFS
● BTRFS
– zamergováno v 2009, nadále “experimental”
– on-disk formát označený jako “stable” (1.0)
– někdo tvrdí že “stable” nebo dokonce “production ready” ...
– default v některých distribucích
● ZFS
– původně Sun / Solaris, ale “got Oracled” :-(
– mírně fragmentovaný vývoj (Illumos, Oracle, ...)
– dostupný i na jiných BSD systémech (FreeBSD)
– “ZFS on Linux” projekt (ale CDDL vs. GPL apod.)
15. Obecné “mount options”
● TRIM (discard)
– zapne zasílání TRIM příkazů z kernelu na SSD
– ovlivňuje interní čistící procesy (mazání bloků) / wear leveling
– ne úplně nutné, ale může pomoci SSD s “garbage collection”
● write barriers
– brání řadiči měnit pořadí zápisů (journal x data)
– zaručuje konzistenci souborového systému, nebrání ztrátě dat
– write cache + baterka => write barriers lze vypnout
● SSD alignment
17. BTRFS
● nodatacow
– vypne “copy on write” (CoW), pro snapshoty dočasně zapne
– současně vypne kontrolní součty (vyžadují “plné” CoW)
– také zřejmě vypne “torn-page resiliency” (full_page_writes=on)
● ssd
– zapne různé SSD optimalizace (ale není jasné které)
● compress=lzo/zlib
– spekulativní komprese
18. ZFS
● recordsize=8kB
– standardní ZFS stránka má 128kB (PostgreSQL používá 8kB stránky)
– problémy s ARC cachí (menší počet “slotů”)
● logbias=throughput [latency]
– ovlivňuje práci se ZIL
– priorita latence vs. propustnost
● zfs_arc_max
– omezení velikosti ARC cache
– měla by se nastavovat automaticky, ale externí modul ...
37. 8 kB 4 kB
0
200
400
600
800
1000
1200
962
805
Host_Writes_32MB vs. 4kB/8kB stránky
množství dat zapsaných na SSD (4 hodiny)
GBs
38. 8 kB 4 kB
0
200
400
600
800
1000
1200
962
805
962
612
Host_Writes_32MB vs. 4kB/8kB stránky
množství dat zapsaných na SSD (4 hodiny)
raw compensated
GBs
39. EXT / XFS
● obdobné chování
– víceméně kompromis propustnost-latence
– EXT4 – vyšší propustnost, větší fluktuace
– XFS – nižší propustnost, menší fluktuace
● zásadní vliv “write barriers”
– vyžaduje spolehlivé disky / RAID řadič s BBU
● minimální impact TRIM
– záleží na modelu SSD (různý over-provisioning atd.)
– záleží na tom jak “plné” SSD je
– benchmark nemaže data (přepisuje stránky)
40. BTRFS, ZFS
● značná cena za vlastnosti (založené na CoW)
– zhruba 50% redukce výkonu při zápisech
● BTRFS
– všechny problémy na které jsem narazil byly na BTRFS
– dobré: žádné data corruption problémy (ale netestováno)
– špatné: nestabilní a nekonzistentní chování
● ZFS
– cizinec ve světě Linuxu
– daleko vyzrálejší než BTRFS, pěkné stabilní chování
– ZFSonLinux projekt aktivně vyvíjen (aktuální 0.6.5, testováno 0.6.3)
42. Závěr
● pokud vám stačí tradiční souborový systém
– použijte EXT4/XFS, podle preferencí vaší distribuce
– žádné zásadní rozdíly, určitě jde “vytunit” na stejný výkon
– vyplatí se věnovat čas tuningu
● pokud využijete “advanced” vlastnosti
– např. snapshotting, integraci LVM apod.
– ZFS je dobrá volba (možná např. ve FreeBSD)
– BTRFS (zatím) jednoznačně nedoporučuji
49. EXT3/4, XFS
● Linux Filesystems: Where did they come from?
(Dave Chinner @ linux.conf.au 2014)
https://www.youtube.com/watch?v=SMcVdZk7wV8
● Ted Ts'o on the ext4 Filesystem
(Ted Ts'o, NYLUG, 2013)
https://www.youtube.com/watch?v=2mYDFr5T4tY
● XFS: There and Back … and There Again?
(Dave Chinner @ Vault 2015)
https://lwn.net/Articles/638546/
● XFS: Recent and Future Adventures in Filesystem Scalability
(Dave Chinner, linux.conf.au 2012)
https://www.youtube.com/watch?v=FegjLbCnoBw
● XFS: the filesystem of the future?
(Jonathan Corbet, Dave Chinner, LWN, 2012)
http://lwn.net/Articles/476263/
Notas del editor
The are many file systems in Linux kernel, with various purposes, stage of development, etc.
There's plenty of differences between the file systems, starting with different goals, features, tuning options, etc.
This talk is about file systems that are commonly used for directly attached storage (i.e. drives in the server), and are not somehow obviously unsuitable for database storage.
This talk is not about special-purpose file systems, like network, distributed or clustered file systems.
The two “traditional file systems” in the talk are ext4 and XFS, and also BTRFS and ZFS, which are often mentioned as “next-gen” file systems, with quite different design.
So let's see a bit more about those file systems.
The are many file systems in Linux kernel, with various purposes, stage of development, etc.
There's plenty of differences between the file systems, starting with different goals, features, tuning options, etc.
This talk is about file systems that are commonly used for directly attached storage (i.e. drives in the server), and are not somehow obviously unsuitable for database storage.
This talk is not about special-purpose file systems, like network, distributed or clustered file systems.
The two “traditional file systems” in the talk are ext4 and XFS, and also BTRFS and ZFS, which are often mentioned as “next-gen” file systems, with quite different design.
So let's see a bit more about those file systems.
The are many file systems in Linux kernel, with various purposes, stage of development, etc.
There's plenty of differences between the file systems, starting with different goals, features, tuning options, etc.
This talk is about file systems that are commonly used for directly attached storage (i.e. drives in the server), and are not somehow obviously unsuitable for database storage.
This talk is not about special-purpose file systems, like network, distributed or clustered file systems.
The two “traditional file systems” in the talk are ext4 and XFS, and also BTRFS and ZFS, which are often mentioned as “next-gen” file systems, with quite different design.
So let's see a bit more about those file systems.
The are many file systems in Linux kernel, with various purposes, stage of development, etc.
There's plenty of differences between the file systems, starting with different goals, features, tuning options, etc.
This talk is about file systems that are commonly used for directly attached storage (i.e. drives in the server), and are not somehow obviously unsuitable for database storage.
This talk is not about special-purpose file systems, like network, distributed or clustered file systems.
The two “traditional file systems” in the talk are ext4 and XFS, and also BTRFS and ZFS, which are often mentioned as “next-gen” file systems, with quite different design.
So let's see a bit more about those file systems.