ã¯ã©ãŠã ã·ã¹ãã ã§ã®ããŒã¿ ã¹ãã¬ãŒãžã®å®å®æ§ãç 究ããŠããç§ã¯ãåºæ¬çãªããšãç解ããŠããããšã確èªããããã«ãèªåèªèº«ã§ãã¹ãããããšã«ããŸããã ç§
ãã®èšäºã§ã¯ãLinux ãã¡ã€ã« API ã«ãã£ãŠæäŸãããæ°žç¶åã¡ã«ããºã ã«ã€ããŠèª¬æããŸãã ããã§ã¯ãã¹ãŠãåçŽã§ããå¿
èŠãããããã§ããããã°ã©ã ã¯ã³ãã³ããåŒã³åºããŸãã write()
ããã®ã³ãã³ãã®æäœãå®äºãããšãããŒã¿ã¯ãã£ã¹ã¯ã«å®å
šã«ä¿åãããŸãã ããã write()
ã¢ããªã±ãŒã·ã§ã³ ããŒã¿ã RAM ã«ããã«ãŒãã« ãã£ãã·ã¥ã«ã³ããŒããã ãã§ãã ã·ã¹ãã ã«ããŒã¿ããã£ã¹ã¯ã«åŒ·å¶çã«æžã蟌ãã«ã¯ãããã€ãã®è¿œå ã¡ã«ããºã ã䜿çšããå¿
èŠããããŸãã
äžè¬ã«ããã®è³æã¯ãç§ãèå³ã®ãããããã¯ã«ã€ããŠåŠãã ããšã«é¢ããäžé£ã®ã¡ã¢ã§ãã æãéèŠãªããšã«ã€ããŠç°¡åã«èª¬æãããšãæç¶å¯èœãªããŒã¿ ã¹ãã¬ãŒãžãæŽçããã«ã¯ã次ã®ã³ãã³ãã䜿çšããå¿
èŠãããããšãããããŸãã fdatasync()
ãŸãã¯ãã©ã°ãä»ããŠãã¡ã€ã«ãéã O_DSYNC
ã ã³ãŒããããã£ã¹ã¯ã«è»¢éãããéäžã§ããŒã¿ã«äœãèµ·ãããã«ã€ããŠè©³ããç¥ãããå Žåã¯ã以äžãåç
§ããŠãã ããã
write() é¢æ°ã®äœ¿çšã®ç¹åŸŽ
ã·ã¹ãã ã³ãŒã« write()
æšæºã§å®çŸ©ãããŠãã write()
ããŒã¿èªã¿åãæäœã¯ãããŒã¿ãä»ã®ããã»ã¹ãŸãã¯ã¹ã¬ããããã¢ã¯ã»ã¹ãããŠããå Žåã§ãã以åã«æžã蟌ãŸãããã€ããæ£ç¢ºã«è¿ãå¿
èŠããããŸã (
ããã¯ãæäœãæå³ããŸãã? write()
ã¢ãããã¯ã§ããïŒ æè¡çãªèŠ³ç¹ããèšãã°ãããã§ãã ããŒã¿èªã¿åãæäœã§ã¯ãæžã蟌ãŸããå
容ããã¹ãŠè¿ããããŸã£ããè¿ããªãå¿
èŠããããŸãã write()
ã ããããæäœã¯ write()
ãæšæºã«åŸã£ãŠãæžãçããããã«æ±ãããããã¹ãŠãæžãçããŠçµäºããå¿
èŠã¯ãããŸããã ããŒã¿ã®äžéšã®ã¿ãæžã蟌ãããšãã§ããŸãã ããšãã°ãåããã¡ã€ã«èšè¿°åã§èšè¿°ããããã¡ã€ã«ã« 1024 ãã€ããããããè¿œå ãã XNUMX ã€ã®ã¹ããªãŒã ããããšããŸãã æšæºã®èŠ³ç¹ããèŠããšãåæžã蟌ã¿æäœã§ãã¡ã€ã«ã« XNUMX ãã€ãã ãè¿œå ã§ããå Žåãçµæã¯èš±å®¹ç¯å²å
ã«ãªããŸãã ãããã®æäœã¯ã¢ãããã¯ãªãŸãŸã§ãããå®äºåŸããã¡ã€ã«ã«æžã蟌ãŸããããŒã¿ã¯ä¹±éã«ãªããŸãã
fsync() ããã³ fdatasync() é¢æ°
ããŒã¿ããã£ã¹ã¯ã«ãã©ãã·ã¥ããæãç°¡åãªæ¹æ³ã¯ãé¢æ°ãåŒã³åºãããšã§ãã fdatasync()
ã 㧠fdatasync()
ãã®æ©èœã®åäœäžã«ããã®ãããªéã®ã¡ã¿ããŒã¿ããã£ã¹ã¯ã«ä¿åãããããã¯ã次ã®ããŒã¿èªã¿åãæäœãæ£ããå®è¡ããããã«å¿
èŠãã§ãããšèšèŒãããŠããŸãã ãããŠãããã¯ãŸãã«ã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ãæ°ã«ããŠããããšã§ãã
ããã§çºçããå¯èœæ§ã®ããåé¡ã® XNUMX ã€ã¯ããããã®ã¡ã«ããºã ã§ã¯ãé害ãçºçããåŸã«ãã¡ã€ã«ãèŠã€ããããšãä¿èšŒãããŠããªãããšã§ãã ç¹ã«ãæ°ãããã¡ã€ã«ãäœæããããšãã¯ã次ã®ããã«åŒã³åºãå¿
èŠããããŸãã fsync()
ãããå«ãŸãããã£ã¬ã¯ããªã®å Žåã ããããªããšãã¯ã©ãã·ã¥åŸã«ãã®ãã¡ã€ã«ãååšããªãããšãå€æããå¯èœæ§ããããŸãã ãã®çç±ã¯ãUNIX ã§ã¯ããŒã ãªã³ã¯ã䜿çšãããŠããããããã¡ã€ã«ãè€æ°ã®ãã£ã¬ã¯ããªã«ååšããå¯èœæ§ãããããã§ãã ãã®ãããé»è©±ããããéã«ã¯ã fsync()
ã©ã®ãã£ã¬ã¯ã㪠ããŒã¿ããã£ã¹ã¯ã«ãã©ãã·ã¥ããå¿
èŠããããããã¡ã€ã«ãç¥ãæ¹æ³ã¯ãããŸãã (fsync()
察å¿ãããã¡ã€ã«ãå«ããã£ã¬ã¯ããªã«ã³ããŒãããŸãããããã¯ä»ã®ãã¡ã€ã« ã·ã¹ãã ã«ã¯åœãŠã¯ãŸããªãå ŽåããããŸãã
ãã®ã¡ã«ããºã ã¯ããã¡ã€ã« ã·ã¹ãã ããšã«ç°ãªãæ¹æ³ã§å®è£
ã§ããŸãã ç§ã䜿çšãã fdatasync()
ããå°ãéã fsync()
ã ãŠãŒãã£ãªã㣠blktrace
ããšã瀺ããŸã fdatasync()
éåžžããã£ã¹ã¯ã«æžã蟌ãããŒã¿ã¯å°ãªããªããŸã (ext4 ã®å Žå) fsync()
20 KiB ãæžã蟌ã¿ã fdatasync()
- 16 KiB)ã ãŸããXFS 㯠ext4 ãããè¥å¹²éãããšãããããŸããã ãããŠããã§å©ããåã㊠blktrace
ãããç¥ãããšãã§ããŸãã fdatasync()
ãã£ã¹ã¯ã«ãã©ãã·ã¥ãããããŒã¿ãå°ãªããªããŸã (XFS 㧠4 KiB)ã
fsync() 䜿çšæã®ãããŸããªç¶æ³
ããã«é¢ããŠããããŸããªç¶æ³ã XNUMX ã€èããããŸãã fsync()
ç§ãå®éã«ééããããšã
æåã®ãã®ãããªäºä»¶ã¯ 2008 幎ã«çºçããŸããã åœæãFirefox 3 ã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ã倧éã®ãã¡ã€ã«ããã£ã¹ã¯ã«æžã蟌ãŸãããšãããªãŒãºãããŠããŸããã åé¡ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£
ããã®ç¶æ
ã«é¢ããæ
å ±ãä¿åããããã« SQLite ããŒã¿ããŒã¹ã䜿çšããŠããããšã§ããã ã€ã³ã¿ãŒãã§ã€ã¹ã§å€æŽãçºçãããã³ã«ãé¢æ°ãåŒã³åºãããŸãã fsync()
ãå®å®ããããŒã¿ã¹ãã¬ãŒãžãååã«ä¿èšŒãããŸããã åœæ䜿çšãããŠãã ext3 ãã¡ã€ã« ã·ã¹ãã ã§ã¯ãé¢æ° fsync()
察å¿ãããã¡ã€ã«ã«é¢é£ããããŒãžã ãã§ãªããã·ã¹ãã å
ã®ãã¹ãŠã®ãããŒãã£ãããŒãžããã£ã¹ã¯ã«ãã©ãã·ã¥ãããŸãã ã€ãŸããFirefox ã§ãã¿ã³ãã¯ãªãã¯ãããšãæ°ã¡ã¬ãã€ãã®ããŒã¿ãç£æ°ãã£ã¹ã¯ã«æžã蟌ãŸããå¯èœæ§ããããããã«ã¯äœç§ããããå¯èœæ§ããããŸããã ç§ãç解ããéãã®åé¡ã®è§£æ±ºç
2009 çªç®ã®åé¡ã¯ 4 幎ã«çºçããŸããã ãã®åŸãã·ã¹ãã ã¯ã©ãã·ã¥ã®åŸãæ°ãã ext3 ãã¡ã€ã« ã·ã¹ãã ã®ãŠãŒã¶ãŒã¯ãæ°ããäœæããããã¡ã€ã«ã®å€ããé·ã 3 ã§ããããšã«æ°ã¥ããŸããããå€ã extXNUMX ãã¡ã€ã« ã·ã¹ãã ã§ã¯ãã®ãããªããšã¯èµ·ãããŸããã§ããã åã®æ®µèœã§ã¯ãextXNUMX ããã£ã¹ã¯äžã«å€§éã®ããŒã¿ããã³ãããããŠãåŠçé床ã倧å¹
ã«äœäžããããšã«ã€ããŠèª¬æããŸããã fsync()
ã ãã®ç¶æ³ãæ¹åããããã«ãext4 ã¯ç¹å®ã®ãã¡ã€ã«ã«é¢é£ãããããŒãã£ãããŒãžã®ã¿ããã©ãã·ã¥ããŸãã ãŸããä»ã®ãã¡ã€ã«ã®ããŒã¿ã¯ãext3 ãããã¯ããã«é·ãæéã¡ã¢ãªå
ã«æ®ããŸãã ããã¯ããã©ãŒãã³ã¹ãåäžãããããã«è¡ãããŸãã (ããã©ã«ãã§ã¯ãããŒã¿ã¯ 30 ç§éãã®ç¶æ
ã«çãŸããŸããããã¯æ¬¡ã䜿çšããŠæ§æã§ããŸã) fsync()
å®å®ããããŒã¿ ã¹ãã¬ãŒãžãæäŸããé害ã®åœ±é¿ããå¯èœãªéãããŒã¿ãä¿è·ããå¿
èŠãããã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããŸãã é¢æ° fsync()
ext4 ããã ext3 ã®æ¹ãã¯ããã«å¹ççã«åäœããŸãã ãã®ã¢ãããŒãã®æ¬ ç¹ã¯ã以åãšåæ§ã«ãããã°ã©ã ã®ã€ã³ã¹ããŒã«ãªã©ã®äžéšã®æäœãé
ããªãããšã§ãã 詳现ã¯ãã¡ããã芧ãã ãã
ïŒã€ç®ã®åé¡ç¹ã¯ã fsync()
, 2018幎ã«èªçããŸããã ãã®åŸãPostgreSQL ãããžã§ã¯ãã®ãã¬ãŒã ã¯ãŒã¯å
ã§ãé¢æ°ã fsync()
ãšã©ãŒãçºçãããšããããŒãã£ãããŒãžããã¯ãªãŒã³ããšããŠããŒã¯ããŸãã ãã®çµæã次ã®åŒã³åºã㯠fsync()
ãã®ãããªããŒãžã§ã¯äœãããŸããã ãã®ãããå€æŽãããããŒãžã¯ã¡ã¢ãªã«ä¿åããããã£ã¹ã¯ã«æžã蟌ãŸããããšã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³ã¯äžéšã®ããŒã¿ããã£ã¹ã¯ã«æžã蟌ãŸãããšèããŸãããå®éã«ã¯ããã§ã¯ãªããããããã¯æ¬åœã«æ²æšã§ãã ãã®ãããªå€±æ fsync()
ãŸããªã±ãŒã¹ã§ããããã®ãããªç¶æ³ã§ã¯ã¢ããªã±ãŒã·ã§ã³ã¯åé¡ã«å¯ŸåŠããããã«ã»ãšãã©äœãã§ããŸããã æè¿ã§ã¯ããããçºçãããšãPostgreSQL ããã®ä»ã®ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããŸãã O_SYNC
ãŸãã¯æãæã£ãŠ O_DSYNC
ã ãã®ã¢ãããŒãã§ã¯ãã·ã¹ãã ã¯ç¹å®ã®ããŒã¿æžã蟌ã¿æäœãå®è¡ãããšãã«çºçããå¯èœæ§ã®ãããšã©ãŒãå ±åããŸããããã®ã¢ãããŒãã§ã¯ã¢ããªã±ãŒã·ã§ã³ããããã¡èªäœã管çããå¿
èŠããããŸãã 詳现ã«ã€ããŠã¯ãã¡ããã芧ãã ãã
O_SYNC ãã©ã°ãš O_DSYNC ãã©ã°ã䜿çšããŠãã¡ã€ã«ãéã
æ°žç¶çãªããŒã¿ ã¹ãã¬ãŒãžãæäŸãã Linux ã¡ã«ããºã ã®èª¬æã«æ»ããŸãããã ã€ãŸãããã©ã°ã®äœ¿çšã«ã€ããŠè©±ããŠããŸãã O_SYNC
ãŸãã¯ãã©ã° O_DSYNC
ã·ã¹ãã ã³ãŒã«ã䜿çšããŠãã¡ã€ã«ãéããšã write()
ã·ã¹ãã ã«ã¯ããããã³ãã³ããäžããããŸã fsync()
О fdatasync()
ã 㧠write()
О fdatasync()
ïŒã ãã®ã¢ãããŒãã®äž»ãªæ¬ ç¹ã¯ã察å¿ãããã¡ã€ã«èšè¿°åã䜿çšãããã¹ãŠã®æžã蟌ã¿æäœãåæããããããã¢ããªã±ãŒã·ã§ã³ ã³ãŒããæ§é åããæ©èœãå¶éãããå¯èœæ§ãããããšã§ãã
O_DIRECT ãã©ã°ã䜿çšãããã€ã¬ã¯ã I/O ã®äœ¿çš
ã·ã¹ãã ã³ãŒã« open()
æããµããŒãããŸã O_DIRECT
ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ãã£ãã·ã¥ããã€ãã¹ããI/O æäœãå®è¡ãããã£ã¹ã¯ãšçŽæ¥å¯Ÿè©±ããããã«èšèšãããŠããŸãã ããã¯ãå€ãã®å Žåãããã°ã©ã ã«ãã£ãŠçºè¡ãããæžã蟌ã¿ã³ãã³ããããã£ã¹ã¯ãæäœããããã®ã³ãã³ãã«çŽæ¥å€æãããããšãæå³ããŸãã ãã ããäžè¬ã«ããã®ã¡ã«ããºã ã¯æ¬¡ã®æ©èœã«ä»£ãããã®ã§ã¯ãããŸããã fsync()
ãŸã㯠fdatasync()
ã å®éã«ã¯ããã£ã¹ã¯èªäœã¯æ¬¡ã®ããšãã§ããŸãã O_DIRECT
, O_DSYNC
ããã¯ãåæžã蟌ã¿æäœã®åŸã«åŒã³åºããç¶ãããšãæå³ããŸãã fdatasync()
.
XFS ãã¡ã€ã«ã·ã¹ãã ãæè¿ããé«éãã¹ããè¿œå ããããšãå€æããŸããã O_DIRECT|O_DSYNC
-ããŒã¿ã¬ã³ãŒãã ãããã¯ã次ã䜿çšããŠäžæžããããå Žåã O_DIRECT|O_DSYNC
ã®å Žåãããã€ã¹ããµããŒãããŠããå ŽåãXFS ã¯ãã£ãã·ã¥ããã©ãã·ã¥ãã代ããã« FUA æžã蟌ã¿ã³ãã³ããå®è¡ããŸãã ãŠãŒãã£ãªãã£ã䜿çšããŠããã確èªããŸãã blktrace
Linux 5.4/Ubuntu 20.04 ã·ã¹ãã äžã ãã®ã¢ãããŒãã¯ããã£ã¹ã¯ã«æå°éã®ããŒã¿ãæžã蟌ã¿ãXNUMX ã€ã®æäœ (æžã蟌ã¿ãšãã£ãã·ã¥ã®ãã©ãã·ã¥) ã§ã¯ãªã XNUMX ã€ã®æäœã䜿çšãããããããå¹ççã«ãªããŸãã ãžã®ãªã³ã¯ãèŠã€ããŸãã
sync_file_range() é¢æ°
Linuxã«ã¯ã·ã¹ãã ã³ãŒã«ããã sync_file_range()
ãã®ã³ãã³ãã¯ãéåžžã«å±éºãã§ãããšèšãããŠããŸãã 䜿çšã¯ãå§ãããŸããã ç¹åŸŽãšå±éºæ§ sync_file_range()
ã§éåžžã«ãã説æãããŠããŸã fdatasync()
ã 㧠sync_file_range()
ZFS ã䜿çšããå ŽåãããŒã¿ã¯ãã£ã¹ã¯ã«ãã©ãã·ã¥ãããŸããã çµéšäžããã£ãã«äœ¿çšãããªãã³ãŒãã«ã¯ãã°ãå«ãŸããŠããå¯èœæ§ããããŸãã ãããã£ãŠãã©ãããŠãå¿
èŠãªå Žåãé€ãããã®ã·ã¹ãã ã³ãŒã«ã䜿çšããªãããšããå§ãããŸãã
ããŒã¿ã®æ°žç¶æ§ã確ä¿ããããã®ã·ã¹ãã ã³ãŒã«
ç§ã¯ãæ°žç¶ç㪠I/O æäœãå®è¡ããããã«äœ¿çšã§ããã¢ãããŒãã XNUMX ã€ãããšããçµè«ã«éããŸããã ãããã¯ãã¹ãŠé¢æ°åŒã³åºããå¿
èŠã§ã fsync()
ãã¡ã€ã«ãäœæããããã£ã¬ã¯ããªã®å Žåã ã¢ãããŒãã¯æ¬¡ã®ãšããã§ãã
- é¢æ°åŒã³åºã
fdatasync()
ãŸãã¯fsync()
é¢æ°ã®åŸwrite()
(䜿ã£ãæ¹ãè¯ãfdatasync()
). - ãã©ã°ã§éããããã¡ã€ã«èšè¿°åã®æäœ
O_DSYNC
ãŸãã¯O_SYNC
ïŒãã£ãšè¯ã - æãæã£ãŠO_DSYNC
). - ã³ãã³ãã®äœ¿çšæ³
pwritev2()
æä»ãRWF_DSYNC
ãŸãã¯RWF_SYNC
(ã§ããã°æä»ãRWF_DSYNC
).
ããã©ãŒãã³ã¹ããŒã
調æ»ããããŸããŸãªã¡ã«ããºã ã®ããã©ãŒãã³ã¹ã泚ææ·±ã枬å®ããŸããã§ããã 圌ãã®ä»äºã®ã¹ããŒãã«ç§ãæ°ã¥ããéãã¯éåžžã«å°ããã§ãã ããã¯ãç§ãééã£ãŠããå¯èœæ§ããããä»ã®æ¡ä»¶ã§ã¯åãããšãç°ãªãçµæã瀺ãå¯èœæ§ãããããšãæå³ããŸãã ãŸããäœãããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžãããã«ã€ããŠèª¬æãã次ã«äœãããã©ãŒãã³ã¹ã«åœ±é¿ãäžããªããã«ã€ããŠèª¬æããŸãã
- ãã¡ã€ã« ããŒã¿ãäžæžãããæ¹ãããã¡ã€ã«ã«ããŒã¿ãè¿œå ãããããé«éã§ã (ããã©ãŒãã³ã¹ã 2 ïœ 100% åäžããå¯èœæ§ããããŸã)ã ãã¡ã€ã«ã«ããŒã¿ãæ·»ä»ããã«ã¯ãã·ã¹ãã ã³ãŒã«ã®åŸã§ãã£ãŠãããã¡ã€ã«ã®ã¡ã¿ããŒã¿ã«è¿œå ã®å€æŽãå¿
èŠã§ã
fallocate()
ãã ãããã®å¹æã®å€§ããã¯ç°ãªãå ŽåããããŸãã æé«ã®ããã©ãŒãã³ã¹ãåŸãããã«ãé»è©±ããããšããå§ãããŸãfallocate()
å¿ èŠãªã¹ããŒã¹ãäºåã«å²ãåœãŠãŸãã 次ã«ããã®ã¹ããŒã¹ãæ瀺çã«ãŒãã§åããŠåŒã³åºãå¿ èŠããããŸããfsync()
ã ããã«ããããã¡ã€ã« ã·ã¹ãã å ã®å¯Ÿå¿ãããããã¯ããæªå²ãåœãŠãã§ã¯ãªããå²ãåœãŠæžã¿ããšããŠããŒã¯ãããŸãã ããã«ãããããã©ãŒãã³ã¹ããããã« (çŽ 2%) åäžããŸãã ãŸããäžéšã®ãã£ã¹ã¯ã§ã¯ãæåã®ããã㯠ã¢ã¯ã»ã¹æäœãä»ã®ãã£ã¹ã¯ãããé ãå ŽåããããŸãã ããã¯ãã¹ããŒã¹ããŒãã§åãããšãããã©ãŒãã³ã¹ãå€§å¹ ã« (çŽ 100%) åäžããå¯èœæ§ãããããšãæå³ããŸãã ç¹ã«ãããã¯ãã£ã¹ã¯ã§çºçããå¯èœæ§ããããŸããAWS EBS ïŒããã¯éå ¬åŒã®ããŒã¿ã§ããç§ã¯ãããã確èªã§ããŸããã§ããïŒã ã¹ãã¬ãŒãžã«ã€ããŠãåæ§ã§ããGCP æ°žç¶ãã£ã¹ã¯ (ãããŠããã¯ãã§ã«å ¬åŒæ å ±ã§ããããã¹ãã«ãã£ãŠç¢ºèªãããŠããŸã)ã ä»ã®å°é家ãåæ§ã®ããšãè¡ã£ãŠããèŠ³å¯ ç°ãªããã£ã¹ã¯ã«é¢é£ããŠããŸãã - ã·ã¹ãã ã³ãŒã«ãå°ãªãã»ã©ãããã©ãŒãã³ã¹ã¯åäžããŸã (åäžã¯çŽ 5% ã«ãªãå¯èœæ§ããããŸã)ã ææŠã®ããã§ãã
open()
æä»ãO_DSYNC
ãŸãã¯é»è©±ããpwritev2()
æä»ãRWF_SYNC
ããéãé話fdatasync()
ã ããã§ã®ãã€ã³ãã¯ããã®ã¢ãããŒãã§ã¯ãåãã¿ã¹ã¯ã解決ããããã«å®è¡ããå¿ èŠãããã·ã¹ãã ã³ãŒã«ã®æ°ãå°ãªããªã (XNUMX ã€ã®åŒã³åºãã§ã¯ãªã XNUMX ã€ã®åŒã³åºã) ãšããäºå®ã圱é¿ããŠããã®ã§ã¯ãªãããšæããŸãã ãã ããããã©ãŒãã³ã¹ã®éãã¯éåžžã«å°ãããããç°¡åã«ç¡èŠããŠãããžãã¯ãè€éã«ãªããªããã®ãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããŸãã
æç¶å¯èœãªããŒã¿ ã¹ãã¬ãŒãžã®ãããã¯ã«èå³ãããå Žåã¯ã次ã®åœ¹ç«ã€è³æãåç §ããŠãã ããã
I/Oã¢ã¯ã»ã¹æ¹åŒ â å ¥åºåã¡ã«ããºã ã®åºæ¬ã®æŠèŠãããŒã¿ããã£ã¹ã¯ã«ç¢ºå®ã«å°éããããã«ãã - ã¢ããªã±ãŒã·ã§ã³ãããã£ã¹ã¯ã«ç§»åããéäžã§ããŒã¿ã«äœãèµ·ãããã«ã€ããŠã®è©±ãå«ãŸããŠãããã£ã¬ã¯ããªãã〠fsync ããå¿ èŠãããã - ãã€ç³è«ããããšãã質åã«å¯Ÿããçãfsync()
ãã£ã¬ã¯ããªçšã ç°¡åã«èšããšãæ°ãããã¡ã€ã«ãäœæãããšãã«ãããè¡ãå¿ èŠãããããšãããããŸããããã®æšå¥šã®çç±ã¯ãLinux ã§ã¯åããã¡ã€ã«ãžã®åç §ãå€æ°ååšããå¯èœæ§ãããããã§ããLinux äžã® SQL Server: FUA ã®å éšæ§é - ããã§ã¯ãLinux ãã©ãããã©ãŒã äžã® SQL Server ã§ããŒã¿æ°žç¶æ§ãã©ã®ããã«å®è£ ããããã«ã€ããŠèª¬æããŸãã ããã«ã¯ãWindows ãš Linux ã®ã·ã¹ãã ã³ãŒã«éã®èå³æ·±ãæ¯èŒãããã€ããããŸãã ç§ã XFS ã® FUA æé©åã«ã€ããŠåŠãã ã®ã¯ããã®è³æã®ãããã ã£ããšã»ãŒç¢ºä¿¡ããŠããŸãã
ãã£ã¹ã¯ã«å®å šã«ä¿åãããŠãããšæã£ãŠããããŒã¿ãçŽå€±ããããšããããŸãã?
åºæïŒ habr.com