GNU/Linux >> Znalost Linux >  >> Linux

Jaká je velikost atomového zápisu na disk v mém systému?

lepší pozdě než nikdy :)

rychlá odpověď je:"2 147 479 552 bajtů, pokud je verze jádra 3.14 nebo novější"

podrobná odpověď:

Pokud jsem pochopil, jde o zápis syscall:

http://man7.org/linux/man-pages/man2/write.2.html

1) všechny systémy POSIX ( linux, bsd, všechny unix ) jsou zaručeně schopny zapisovat až MAX_SSIZE bajtů

Podle POSIX.1, pokud je počet větší než SSIZE_MAX, je výsledek definován implementací; viz POZNÁMKY pro horní limit v Linuxu.

# getconf SSIZE_MAX
32767

2) linux zaručeně dokáže zapisovat až 1,99 GiB (a je to atomická operace pro linuxové jádro verze 3.14 a novější)

V Linuxu write() (a podobná systémová volání) přenese maximálně 0x7ffff000 (2 147 479 552) bajtů, čímž vrátí počet skutečně přenesených bajtů. (To platí pro 32bitové i 64bitové systémy.)

Ale je to férový atomový provoz pouze z linuxového jádra 3.14

Podle POSIX.1-2008/SUSv4 sekce XSI 2.9.7 ("ThreadInteractions with Regular File Operations"):

Všechny následující funkce musí být atomické vůči sobě navzájem v efektech specifikovaných v POSIX.1-2008, když fungují s běžnými soubory nebo symbolickými odkazy:...

Mezi následně uvedená API jsou write() a writev(2). Mezi efekty, které by měly být atomické napříč vlákny (a procesy), patří aktualizace offsetu souboru. Nicméně na Linuxu před verzí 3.14 tomu tak nebylo:pokud dva procesy, které sdílejí otevřený popis souboru (viz open(2)) provádějí write() (nebo writev(2)) současně, pak I/O operace nebyly atomické s ohledem na aktualizaci offsetu souboru, v důsledku čehož se bloky datových výstupů těchto dvou procesů mohly (nesprávně) překrývat. Tento problém byl opraven v Linuxu 3.14.


Linux
  1. Alternativa k `memory.size()` v linuxu?

  2. Jaké je konvenční umístění instalace aplikací v Linuxu?

  3. Jak velká velikost je potřeba při kompilaci linuxového jádra?

  1. jaká je maximální délka hesla v systému unix/linux?

  2. Jaký je rozdíl mezi voláním knihovny a voláním systému v Linuxu?

  3. Jaká je doporučená velikost pro Linux /boot oddíl?

  1. Čím je linuxová komunita výjimečná?

  2. Linux – Jak zjistit, jaké pevné disky jsou v systému?

  3. Zvětšete velikost systémového disku cloudového serveru se spouštěním ze svazku