เจŸเจฟเจ•เจพเจŠ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจซเจพเจˆเจฒ APIs

เจฎเฉˆเจ‚, เจ•เจฒเจพเจ‰เจก เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจธเจฅเจฟเจฐเจคเจพ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจฟ เจฎเฉˆเจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเจเจฆเจพ เจนเจพเจ‚, เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเจฐเจ–เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจ†เจˆ NVMe เจธเจชเฉˆเจ• เจจเฉ‚เฉฐ เจชเฉœเฉเจน เจ•เฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจ•เจฟ เจกเฉ‡เจŸเจพ เจธเจฅเจฟเจฐเจคเจพ เจฌเจพเจฐเฉ‡ เจ•เฉ€ เจ—เจฐเฉฐเจŸเฉ€ เจนเฉˆ (เจ…เจฐเจฅเจพเจค, เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจฟเจธเจŸเจฎ เจ…เจธเจซเจฒเจคเจพ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจกเฉ‡เจŸเจพ เจ‰เจชเจฒเจฌเจง เจนเฉ‹เจตเฉ‡เจ—เจพ) เจธเจพเจจเฉ‚เฉฐ NMVe เจกเจฟเจธเจ•เจพเจ‚ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค เจฎเฉˆเจ‚ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจฎเฉเฉฑเจ– เจธเจฟเฉฑเจŸเฉ‡ เจ•เฉฑเจขเฉ‡ เจนเจจ: เจคเฉเจนเจพเจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ•เจฎเจพเจ‚เจก เจฆเจฟเฉฑเจคเฉ‡ เจœเจพเจฃ เจคเฉ‹เจ‚ เจฒเฉˆ เจ•เฉ‡ เจ–เจฐเจพเจฌ เจนเฉ‹เจ เจกเฉ‡เจŸเจพ เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ‰เจน เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฎเจพเจงเจฟเจ…เจฎ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ. เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจตเจฟเฉฑเจš, เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŸเจพ เจฒเจฟเจ–เจฃ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจฒเฉ€เจจเจ•เจธ เจซเจพเจˆเจฒ APIs เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ‡ เจจเจฟเจฐเฉฐเจคเจฐเจคเจพ เจตเจฟเจงเฉ€ เจฆเฉ€ เจชเฉœเจšเฉ‹เจฒ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจธเจญ เจ•เฉเจ เจธเจงเจพเจฐเจจ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ: เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ write(), เจ…เจคเฉ‡ เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉ‡ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจกเจพเจŸเจพ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจกเจฟเจธเจ• 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจชเจฐ write() เจธเจฟเจฐเจซเจผ RAM เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจ•เจฐเจจเจฒ เจ•เฉˆเจธเจผ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• เจคเฉ‡ เจกเจพเจŸเจพ เจฒเจฟเจ–เจฃ เจฒเจˆ เจฎเจœเจฌเฉ‚เจฐ เจ•เจฐเจจ เจฒเจˆ, เจ•เฉเจ เจตเจพเจงเฉ‚ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆเฅค

เจŸเจฟเจ•เจพเจŠ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจซเจพเจˆเจฒ APIs

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจธเจฎเฉฑเจ—เจฐเฉ€ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจตเจพเจฒเฉ‡ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจœเฉ‹ เจ•เฉเจ เจฎเฉˆเจ‚ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆ, เจ‰เจธ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจจเฉ‹เจŸเจธ เจฆเจพ เจธเฉˆเฉฑเจŸ เจนเฉˆเฅค เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจ—เฉฑเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ‡เจน เจชเจคเจพ เจšเจฒเจฆเจพ เจนเฉˆ เจ•เจฟ เจŸเจฟเจ•เจพเจŠ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ fdatasync() เจœเจพเจ‚ เจซเจฒเฉˆเจ— เจจเจพเจฒ เจซเจพเจˆเจฒเจพเจ‚ เจ–เฉ‹เจฒเฉเจนเฉ‹ O_DSYNC. เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจจ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เฉ‹เจก เจคเฉ‹เจ‚ เจกเจฟเจธเจ• เจคเฉฑเจ• เจฆเฉ‡ เจฐเจธเจคเฉ‡ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจฆเจพ เจ•เฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจœเจผเจฐ เจฎเจพเจฐเฉ‹ เจ‡เจน เจฒเฉ‡เจ–เฅค

เจฐเจพเจˆเจŸ() เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚

เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ write() เจฎเจฟเจ†เจฐ เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ†เจˆเจˆเจˆเจˆ เจชเฉ‹เจธเจฟเจ•เจธ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจกเจฟเจธเจ•เฉเจฐเจฟเจชเจŸเจฐ เจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจตเจœเฉ‹เจ‚. เจ•เฉฐเจฎ เจฆเฉ‡ เจธเจซเจฒเจคเจพเจชเฉ‚เจฐเจตเจ• เจฎเฉเจ•เฉฐเจฎเจฒ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ write() เจกเจพเจŸเจพ เจฐเฉ€เจก เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจฌเจพเจˆเจŸเจพเจ‚ เจตเจพเจชเจธ เจ•เจฐเจจเฉ€เจ†เจ‚ เจšเจพเจนเฉ€เจฆเฉ€เจ†เจ‚ เจนเจจ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจ, เจ…เจœเจฟเจนเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจญเจพเจตเฉ‡เจ‚ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจœเจพเจ‚ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจคเฉ‹เจ‚ เจเจ•เจธเฉˆเจธ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉ‹เจตเฉ‡ (เจฆเฉ‡เจ–! POSIX เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐเฉ€ เจญเจพเจ—)เฅค เจ‡เจน เจ‡เจธ เจฒเจˆ เจนเฉˆ, เจธเจงเจพเจฐเจฃ เจซเจพเจˆเจฒ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจฅเฉเจฐเฉˆเจกเจพเจ‚ เจฆเฉ‡ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจฆเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจจเฉ‹เจŸ เจนเฉˆ เจœเฉ‹ เจ•เจนเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจฆเฉ‹ เจฅเฉเจฐเฉˆเจก เจนเจฐ เจ‡เฉฑเจ• เจ‡เจนเจจเจพเจ‚ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจนเจฐเฉ‡เจ• เจ•เจพเจฒ เจจเฉ‚เฉฐ เจœเจพเจ‚ เจคเจพเจ‚ เจ‰เจน เจธเจพเจฐเฉ‡ เจธเฉฐเจ•เฉ‡เจค เจจเจคเฉ€เจœเฉ‡ เจฆเฉ‡เจ–เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ เจœเฉ‹ เจฆเฉ‚เจœเฉ€ เจ•เจพเจฒ เจฆเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจตเฉฑเจฒ เจฒเฉˆ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจœเจพเจ‚ เจ•เฉ‹เจˆ เจตเฉ€ เจจเจคเฉ€เจœเจพ เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเจพเฅค เจ‡เจน เจ‡เจธ เจธเจฟเฉฑเจŸเฉ‡ 'เจคเฉ‡ เจชเจนเฉเฉฐเจšเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจพเจฐเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ I/O เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เฉ€เจคเฉ‡ เจœเจพ เจฐเจนเฉ‡ เจธเจฐเฉ‹เจค 'เจคเฉ‡ เจฒเจพเจ• เจฐเฉฑเจ–เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ•เฉ€ เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ“เจชเจฐเฉ‡เจธเจผเจจ write() เจชเจฐเจฎเจพเจฃเฉ‚ เจนเฉˆ? เจคเจ•เจจเฉ€เจ•เฉ€ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจนเจพเจ‚. เจกเจพเจŸเจพ เจฐเฉ€เจก เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจœเจพเจ‚ เจคเจพเจ‚ เจธเจพเจฐเฉ‡ เจœเจพเจ‚ เจ•เฉเจ เจตเฉ€ เจตเจพเจชเจธ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจจเจพเจฒ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€ write(). เจชเจฐ เจ“เจชเจฐเฉ‡เจธเจผเจจ write(), เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจ‰เจธเจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‰เจน เจธเจญ เจ•เฉเจ เจฒเจฟเจ– เจ•เฉ‡ เจœเฉ‹ เจ‰เจธเจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฒเจˆ เจ•เจฟเจนเจพ เจ—เจฟเจ† เจธเฉ€. เจ‡เจธ เจจเฉ‚เฉฐ เจกเฉ‡เจŸเจพ เจฆเจพ เจธเจฟเจฐเจซ เจนเจฟเฉฑเจธเจพ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจนเฉˆ. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ•เฉ‹ เจซเจพเจˆเจฒ เจกเจฟเจธเจ•เฉเจฐเจฟเจชเจŸเจฐ เจฆเฉเจ†เจฐเจพ เจตเจฐเจฃเจฟเจค เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš 1024 เจฌเจพเจˆเจŸ เจœเฉ‹เฉœเจจ เจตเจพเจฒเฉ€เจ†เจ‚ เจฆเฉ‹ เจธเจŸเฉเจฐเฉ€เจฎเจพเจ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจจเจคเฉ€เจœเจพ เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเจฆเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจฒเจฟเจ–เจฃ เจ•เจพเจฐเจœ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจฌเจพเจˆเจŸ เจœเฉ‹เฉœ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ“เจชเจฐเฉ‡เจธเจผเจจ เจชเจฐเจฎเจพเจฃเฉ‚ เจฌเจฃเฉ‡ เจฐเจนเจฟเจฃเจ—เฉ‡, เจชเจฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‰เจนเจจเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจซเจพเจˆเจฒ 'เจคเฉ‡ เจฒเจฟเจ–เจฃ เจตเจพเจฒเจพ เจกเฉ‡เจŸเจพ เจ‰เจฒเจ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เฉฑเจฅเฉ‡ เจธเจŸเฉˆเจ• เจ“เจตเจฐเจซเจฒเฉ‹ 'เจคเฉ‡ เจ‡เจธ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจฌเจนเฉเจค เจฆเจฟเจฒเจšเจธเจช เจšเจฐเจšเจพ.

fsync() เจ…เจคเฉ‡ fdatasync() เจซเฉฐเจ•เจธเจผเจจ

เจกเจพเจŸเจพ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจซเจฒเฉฑเจธเจผ เจ•เจฐเจจ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจ†เจธเจพเจจ เจคเจฐเฉ€เจ•เจพ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจเจพ เจนเฉˆ fsync(). เจ‡เจน เจซเฉฐเจ•เจธเจผเจจ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจธเฉ‹เจงเฉ‡ เจนเฉ‹เจ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉˆเจธเจผ เจคเฉ‹เจ‚ เจกเจฟเจธเจ• 'เจคเฉ‡ เจญเฉ‡เจœเจฃ เจฒเจˆ เจ•เจนเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒ เจฆเจพ เจธเจพเจฐเจพ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ (เจชเจนเฉเฉฐเจš เจธเจฎเจพเจ‚, เจซเจพเจˆเจฒ เจธเฉ‹เจง เจธเจฎเจพเจ‚, เจ…เจคเฉ‡ เจนเฉ‹เจฐ)เฅค เจฎเฉ‡เจฐเจพ เจฎเฉฐเจจเจฃเจพ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจฆเฉ€ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ‡เจน เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ fdatasync(). The เจฎเจฆเจฆ เจ•เจฐเฉ‹ 'เจคเฉ‡ fdatasync() เจ‡เจน เจ•เจนเจฟเฉฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉŒเจฐเจพเจจ, เจ‡เฉฐเจจเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจกเจฟเจธเจ• เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ "เจนเฉ‡เจ  เจฆเจฟเฉฑเจคเฉ‡ เจกเฉ‡เจŸเจพ เจฐเฉ€เจกเจฟเฉฐเจ— เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจธเจนเฉ€ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค" เจ…เจคเฉ‡ เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจ‰เจนเฉ€ เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจชเจฐเจตเจพเจน เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจœเฉ‹ เจ‡เฉฑเจฅเฉ‡ เจชเฉˆเจฆเจพ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจ‰เจน เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เจน เจตเจฟเจงเฉ€เจ†เจ‚ เจ‡เจธ เจ—เฉฑเจฒ เจฆเฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจธเฉฐเจญเจพเจตเฉ€ เจ…เจธเจซเจฒเจคเจพ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจซเจพเจˆเจฒ เจฒเฉฑเจญเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจซเจพเจˆเจฒ เจฌเจฃเจพเจˆ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ‡เฉฑเจ• เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ fsync() เจ‰เจธ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฒเจˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เจน เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค เจจเจนเฉ€เจ‚ เจคเจพเจ‚, เจ•เจฐเฉˆเจธเจผ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจน เจชเจคเจพ เจฒเฉฑเจ— เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจซเจพเจˆเจฒ เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจ•เจพเจฐเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ UNIX เจฆเฉ‡ เจ…เจงเฉ€เจจ, เจนเจพเจฐเจก เจฒเจฟเฉฐเจ•เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡, เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฎเจฒเจŸเฉ€เจชเจฒ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจ•เจพเจฒ เจ•เจฐเฉ‹ fsync() เจซเจพเจˆเจฒ เจฒเจˆ เจ‡เจน เจœเจพเจฃเจจ เจฆเจพ เจ•เฉ‹เจˆ เจคเจฐเฉ€เจ•เจพ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจ•เจฟเจนเฉœเจพ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจกเฉ‡เจŸเจพ เจกเจฟเจธเจ• 'เจคเฉ‡ เจซเจฒเฉฑเจธเจผ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ (เจ‡เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹). เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ ext4 เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจธเจฎเจฐเฉฑเจฅ เจนเฉˆ เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฐเจคเจฃ fsync() เจธเฉฐเจฌเฉฐเจงเจฟเจค เจซเจพเจˆเจฒเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจฒเจˆ, เจชเจฐ เจ‡เจน เจนเฉ‹เจฐ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจจเจพเจฒ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฑเจ–เจฐเฉ‡ เจขเฉฐเจ— เจจเจพเจฒ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจตเจฐเจคเจฟเจ† blktrace ext4 เจ…เจคเฉ‡ XFS เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจกเจฟเจธเจ• เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจจ เจฒเจˆเฅค เจฆเฉ‹เจตเฉ‡เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเจฎเฉฑเจ—เจฐเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจœเจฐเจจเจฒ เจฆเฉ‹เจตเจพเจ‚ เจฒเจˆ เจกเจฟเจธเจ• 'เจคเฉ‡ เจ†เจฎ เจฒเจฟเจ–เจฃ เจฆเฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจœเจพเจฐเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ•เฉˆเจธเจผ เจจเฉ‚เฉฐ เจซเจฒเฉฑเจธเจผ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ FUA (เจซเฉ‹เจฐเจธ เจฏเฉ‚เจจเจฟเจŸ เจเจ•เจธเฉˆเจธ, เจกเจฟเจธเจ• 'เจคเฉ‡ เจธเจฟเฉฑเจงเจพ เจกเจพเจŸเจพ เจฒเจฟเจ–เจฃเจพ, เจ•เฉˆเจธเจผ เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ เจ•เจฐเจ•เฉ‡) เจœเจฐเจจเจฒ เจจเฉ‚เฉฐ เจฒเจฟเจ– เจ•เฉ‡ เจฌเจพเจนเจฐ เจจเจฟเจ•เจฒเจฆเฉ‡ เจนเจจเฅค เจ‰เจน เจธเจผเจพเจ‡เจฆ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉ‡ เจคเฉฑเจฅ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจ เจฒเจˆ เจ…เจœเจฟเจนเจพ เจนเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค FUA เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจพ เจ•เจฐเจจ เจตเจพเจฒเฉ€เจ†เจ‚ เจกเจฐเจพเจˆเจตเจพเจ‚ 'เจคเฉ‡, เจ‡เจธ เจจเจพเจฒ เจฆเฉ‹ เจ•เฉˆเจธเจผ เจซเจฒเฉฑเจธเจผ เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจฎเฉ‡เจฐเฉ‡ เจชเฉเจฐเจฏเฉ‹เจ—เจพเจ‚ เจจเฉ‡ เจฆเจฟเจ–เจพเจ‡เจ† เจนเฉˆ เจ•เจฟ fdatasync() เจฅเฉ‹เฉœเจพ เจคเฉ‡เจœเจผ fsync(). เจ‰เจชเจฏเฉ‹เจ—เจคเจพ blktrace เจ‡เจน เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ fdatasync() เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจกเจฟเจธเจ• 'เจคเฉ‡ เจ˜เฉฑเจŸ เจกเจพเจŸเจพ เจฒเจฟเจ–เจฆเจพ เจนเฉˆ (ext4 เจตเจฟเฉฑเจš fsync() 20 KiB เจฒเจฟเจ–เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ fdatasync() - 16 KiB)เฅค เจจเจพเจฒ เจนเฉ€, เจฎเฉˆเจจเฉ‚เฉฐ เจชเจคเจพ เจฒเฉฑเจ—เจพ เจ•เจฟ XFS ext4 เจจเจพเจฒเฉ‹เจ‚ เจฅเฉ‹เฉœเฉเจนเจพ เจคเฉ‡เจœเจผ เจนเฉˆเฅค เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‡ เจฎเจฆเจฆ เจจเจพเจฒ blktrace เจ‡เจน เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจธเฉ€ fdatasync() เจกเจฟเจธเจ• 'เจคเฉ‡ เจ˜เฉฑเจŸ เจกเจพเจŸเจพ เจซเจฒเฉฑเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ (XFS เจตเจฟเฉฑเจš 4 KiB)เฅค

fsync() เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ…เจธเจชเจธเจผเจŸ เจธเจฅเจฟเจคเฉ€เจ†เจ‚

เจฎเฉˆเจ‚ เจคเจฟเฉฐเจจ เจ…เจธเจชเจธเจผเจŸ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจš เจธเจ•เจฆเจพ เจนเจพเจ‚ fsync()เจœเฉ‹ เจฎเฉˆเจ‚ เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค

เจ…เจœเจฟเจนเฉ€ เจชเจนเจฟเจฒเฉ€ เจ˜เจŸเจจเจพ 2008 เจตเจฟเฉฑเจš เจตเจพเจชเจฐเฉ€ เจธเฉ€เฅค เจ‰เจธ เจธเจฎเฉ‡เจ‚, เจซเจพเจ‡เจฐเจซเจพเจ•เจธ 3 เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ "เจซเฉเจฐเฉ€เจœเจผ" เจœเฉ‡ เจกเจฟเจธเจ• 'เจคเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฒเจฟเจ–เฉ€เจ†เจ‚ เจœเจพ เจฐเจนเฉ€เจ†เจ‚ เจธเจจเฅค เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจธเฉ€ เจ•เจฟ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจจเฉ‡ เจ‡เจธเจฆเฉ‡ เจฐเจพเจœ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• SQLite เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจธเฉ€เฅค เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจฟเฉฑเจš เจ†เจˆ เจนเจฐเฉ‡เจ• เจคเจฌเจฆเฉ€เจฒเฉ€ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจฌเฉเจฒเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ fsync(), เจœเจฟเจธ เจจเฉ‡ เจธเจฅเจฟเจฐ เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ€ เจšเฉฐเจ—เฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฑเจคเฉ€ เจนเฉˆเฅค เจ‰เจธ เจธเจฎเฉ‡เจ‚ เจตเจฐเจคเฉ‡ เจ—เจ ext3 เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš, เจซเฉฐเจ•เจธเจผเจจ fsync() เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจธเจพเจฐเฉ‡ "เจ—เฉฐเจฆเฉ‡" เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจซเจฒเฉฑเจธเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ†, เจจเจพ เจ•เจฟ เจธเจฟเจฐเจซเจผ เจ‰เจนเฉ€ เจœเฉ‹ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจซเจพเจˆเจฒ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจธเจจเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจ‡เจน เจธเฉ€ เจ•เจฟ เจซเจพเจ‡เจฐเจซเจพเจ•เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเจŸเจจ เจจเฉ‚เฉฐ เจฆเจฌเจพเจ‰เจฃ เจจเจพเจฒ เจฎเฉˆเจ—เจพเจฌเจพเจˆเจŸ เจกเฉ‡เจŸเจพ เจ‡เฉฑเจ• เจšเฉเฉฐเจฌเจ•เฉ€ เจกเจฟเจธเจ• เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ•เจˆ เจธเจ•เจฟเฉฐเจŸ เจฒเฉฑเจ— เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจนเฉฑเจฒ, เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจฎเฉˆเจ‚ เจธเจฎเจเจฟเจ† เจ‡เจธ เจจเฉ‚เฉฐ เจธเจฎเฉฑเจ—เจฐเฉ€, เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจฌเฉˆเจ•เจ—เฉเจฐเจพเจ‰เจ‚เจก เจ•เจพเจฐเจœเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจฟเจœเจพเจฃเจพ เจธเฉ€เฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจซเจพเจ‡เจฐเจซเจพเจ•เจธ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจฒเฉ‹เฉœ เจจเจพเจฒเฉ‹เจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจธเจ–เจผเจค เจธเจŸเฉ‹เจฐเฉ‡เจœเจผ เจธเจฅเจฟเจฐเจคเจพ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ ext3 เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‡ เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเจงเจพ เจฆเจฟเฉฑเจคเจพ เจนเฉˆเฅค

เจฆเฉ‚เจœเฉ€ เจธเจฎเฉฑเจธเจฟเจ† 2009 เจตเจฟเฉฑเจš เจนเฉ‹เจˆ เจธเฉ€เฅค เจซเจฟเจฐ, เจธเจฟเจธเจŸเจฎ เจ•เจฐเฉˆเจธเจผ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจจเจตเฉ‡เจ‚ ext4 เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‡ เจชเจพเจ‡เจ† เจ•เจฟ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจตเฉ€เจ†เจ‚ เจฌเจฃเจพเจˆเจ†เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจœเจผเฉ€เจฐเฉ‹-เจฒเฉฐเจฌเจพเจˆ เจฆเฉ€เจ†เจ‚ เจธเจจ, เจชเจฐ เจชเฉเจฐเจพเจฃเฉ‡ ext3 เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจจเจพเจฒ เจ…เจœเจฟเจนเจพ เจจเจนเฉ€เจ‚ เจนเฉ‹เจ‡เจ†เฅค เจชเจฟเจ›เจฒเฉ‡ เจชเฉˆเจฐเฉ‡ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€ เจธเฉ€ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ ext3 เจจเฉ‡ เจกเจฟเจธเจ• 'เจคเฉ‡ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจกเฉ‡เจŸเจพ เจกเฉฐเจช เจ•เฉ€เจคเจพ, เจœเจฟเจธ เจจเจพเจฒ เจšเฉ€เจœเจผเจพเจ‚ เจฌเจนเฉเจค เจนเฉŒเจฒเฉ€ เจนเฉ‹ เจ—เจˆเจ†เจ‚เฅค fsync(). เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจธเฉเจงเจพเจฐเจจ เจฒเจˆ, ext4 เจธเจฟเจฐเจซ เจ‰เจนเจจเจพเจ‚ "เจ—เฉฐเจฆเฉ‡" เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจซเจฒเฉฑเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจ–เจพเจธ เจซเจพเจˆเจฒ เจจเจพเจฒ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจนเจจเฅค เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจกเฉ‡เจŸเจพ ext3 เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆ. เจ‡เจน เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ (เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจกเฉ‡เจŸเจพ เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš 30 เจธเจ•เจฟเฉฐเจŸเจพเจ‚ เจฒเจˆ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจค เจ•เฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ dirty_expire_centisecs; เจ‡เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹)เฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจ• เจ•เจฐเฉˆเจธเจผ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจชเฉเจฐเจพเจชเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจนเฉฑเจฒ เจตเจฐเจคเจฃเจพ เจนเฉˆ fsync() เจ‰เจนเจจเจพเจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจœเจฟเจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจกเจพเจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจธเจซเจฒเจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจซเฉฐเจ•เจธเจผเจจ fsync() ext4 เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ ext3 เจจเจพเจฒ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจ•เฉเจธเจผเจฒเจคเจพ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเจพ เจจเฉเจ•เจธเจพเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚, เจชเจนเจฟเจฒเจพเจ‚ เจตเจพเจ‚เจ—, เจ•เฉเจ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจนเฉŒเจฒเฉ€ เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เจฐเจจเจพเฅค เจ‡เจธ เจฌเจพเจฐเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจตเฉ‡เจ–เฉ‹ เจ‡เฉฑเจฅเฉ‡ ะธ เจ‡เฉฑเจฅเฉ‡.

เจฌเจพเจฐเฉ‡ เจคเฉ€เจœเฉ€ เจธเจฎเฉฑเจธเจฟเจ† fsync(), 2018 เจตเจฟเฉฑเจš เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจ‡เจ†เฅค เจซเจฟเจฐ, PostgreSQL เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจ‡เจน เจชเจคเจพ เจฒเฉฑเจ—เจพ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจซเฉฐเจ•เจธเจผเจจ fsync() เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจ†เจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจ‡เจน "เจ—เฉฐเจฆเฉ‡" เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ "เจธเจพเจซเจผ" เจตเจœเฉ‹เจ‚ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ•เจพเจฒเจพเจ‚ fsync() เจ…เจœเจฟเจนเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเจพเจฒ เจ•เฉเจ เจจเจพ เจ•เจฐเฉ‹เฅค เจ‡เจธเจฆเฉ‡ เจ•เจพเจฐเจจ, เจธเฉ‹เจงเฉ‡ เจนเฉ‹เจ เจชเฉฐเจจเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ•เจฆเฉ‡ เจตเฉ€ เจกเจฟเจธเจ• เจคเฉ‡ เจจเจนเฉ€เจ‚ เจฒเจฟเจ–เฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ‡เจน เจ‡เฉฑเจ• เจ…เจธเจฒ เจ†เจซเจผเจค เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเฉ‹เจšเฉ‡เจ—เฉ€ เจ•เจฟ เจ•เฉเจ เจกเฉ‡เจŸเจพ เจกเจฟเจธเจ• เจคเฉ‡ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเจพ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ. เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจ…เจธเจซเจฒเจคเจพเจตเจพเจ‚ fsync() เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจฎเฉเจ•เจพเจฌเจฒเจพ เจ•เจฐเจจ เจฒเจˆ เจฒเจ—เจญเจ— เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ€เฅค เจ…เฉฑเจœเจ•เฉฑเจฒเฉเจน, เจœเจฆเฉ‹เจ‚ เจ…เจœเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, PostgreSQL เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจ•เจฐเฉˆเจธเจผ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจ‡เจน เจ‡เจธ เจฒเจˆ เจนเฉˆ, เจฒเฉ‡เจ– "เจ•เฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ fsync เจ…เจธเจซเจฒเจคเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจฎเฉเฉœ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ?" เจตเจฟเฉฑเจš, เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ€ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจ–เฉ‹เจœ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆเฅค เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจนเฉฑเจฒ เจซเจฒเฉˆเจ— เจฆเฉ‡ เจจเจพเจฒ เจกเจพเจ‡เจฐเฉˆเจ•เจŸ I/O เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ O_SYNC เจœเจพเจ‚ เจเฉฐเจกเฉ‡ เจจเจพเจฒ O_DSYNC. เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ, เจธเจฟเจธเจŸเจฎ เจ‰เจนเจจเจพเจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฆเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจ•เจฐเฉ‡เจ—เจพ เจœเฉ‹ เจ–เจพเจธ เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจ, เจชเจฐ เจ‡เจธ เจชเจนเฉเฉฐเจš เจฒเจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจฌเจซเจฐเจพเจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจชเฉœเฉเจนเฉ‹ เจ‡เฉฑเจฅเฉ‡ ะธ เจ‡เฉฑเจฅเฉ‡.

O_SYNC เจ…เจคเฉ‡ O_DSYNC เจซเจฒเฉˆเจ—เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃเจพ

เจšเจฒเฉ‹ เจฒเฉ€เจจเจ•เจธ เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจšเจฐเจšเจพ 'เจคเฉ‡ เจตเจพเจชเจธ เจ†เจ“ เจœเฉ‹ เจจเจฟเจฐเฉฐเจคเจฐ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ…เจฐเจฅเจพเจค, เจ…เจธเฉ€เจ‚ เจเฉฐเจกเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ O_SYNC เจœเจพเจ‚ เจเฉฐเจกเจพ O_DSYNC เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจ–เฉ‹เจฒเฉเจนเจฃ เจตเฉ‡เจฒเฉ‡ เจ–เฉ‹เจฒเฉเจนเฉ‹(). เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ, เจนเจฐเฉ‡เจ• เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ•เจพเจฐเจตเจพเจˆ เจจเฉ‚เฉฐ เจนเจฐ เจ•เจฎเจพเจ‚เจก เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ write() เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎเจตเจพเจฐ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ fsync() ะธ fdatasync(). The POSIX เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ "เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจพเจˆเจœเจผเจก I/O เจซเจพเจˆเจฒ เจ‡เฉฐเจŸเฉˆเจ—เจฐเจฟเจŸเฉ€ เจ•เฉฐเจชเจฒเฉ€เจธเจผเจจ" เจ…เจคเฉ‡ "เจกเฉ‡เจŸเจพ เจ‡เฉฐเจŸเฉ€เจ—เฉเจฐเฉ‡เจŸเฉ€ เจ•เฉฐเจชเจฒเฉ€เจธเจผเจจ" เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเจพ เจฎเฉเฉฑเจ– เจซเจพเจ‡เจฆเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ เจกเฉ‡เจŸเจพ เจฆเฉ€ เจ‡เจ•เจธเจพเจฐเจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจจเจพ เจ•เจฟ เจฆเฉ‹ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ - write() ะธ fdatasync()). เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเจพ เจฎเฉเฉฑเจ– เจจเฉเจ•เจธเจพเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ…เจจเฉเจธเจพเจฐเฉ€ เจซเจพเจˆเจฒ เจกเจฟเจธเจ•เฉเจฐเจฟเจชเจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเจพเจฐเฉ‡ เจฒเจฟเจ–เจฃ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเจ•เจพเจฒเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ, เจœเฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจขเจพเจ‚เจšเจพ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจจเฉ‚เฉฐ เจธเฉ€เจฎเจค เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

O_DIRECT เจซเจฒเฉˆเจ— เจจเจพเจฒ เจกเจพเจ‡เจฐเฉˆเจ•เจŸ I/O เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ

เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ open() เจเฉฐเจกเฉ‡ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ O_DIRECT, เจœเฉ‹ เจ•เจฟ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ•เฉˆเจธเจผ เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจกเจฟเจธเจ• เจจเจพเจฒ เจธเจฟเฉฑเจงเจพ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, I/O เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจธ เจฆเจพ, เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉเจ†เจฐเจพ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจฒเจฟเจ–เจคเจพเจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผ เจจเจพเจฒ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจจเฉเจตเจพเจฆ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจชเจฐ, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจตเจฟเจงเฉ€ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเจพ เจฌเจฆเจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ fsync() เจœ fdatasync(). เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ เจกเจฟเจธเจ• เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ€ เจนเฉˆ เจฆเฉ‡เจฐเฉ€ เจœเจพเจ‚ เจ•เฉˆเจธเจผ เจกเจพเจŸเจพ เจฒเจฟเจ–เจฃ เจฒเจˆ เจ‰เจšเจฟเจค เจนเฉเจ•เจฎ. เจ…เจคเฉ‡, เจ‡เจธ เจคเฉ‹เจ‚ เจตเฉ€ เจฌเจฆเจคเจฐ, เจ•เฉเจ เจ–เจพเจธ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจซเจฒเฉˆเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ•เฉ€เจคเฉ‡ เจ—เจ I / O เจ“เจชเจฐเฉ‡เจธเจผเจจ O_DIRECT, เจชเฉเจฐเจธเจพเจฐเจฃ เจฐเจตเจพเจ‡เจคเฉ€ เจฌเจซเจฐ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš. เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจ†เจธเจพเจจ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฃ เจฒเจˆ เจซเจฒเฉˆเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ O_DSYNC, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ•เจฟ เจนเจฐเฉ‡เจ• เจฒเจฟเจ–เจฃ เจฆเฉ€ เจ•เจพเจฐเจตเจพเจˆ เจ‡เฉฑเจ• เจ•เจพเจฒ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเฉ€ เจœเจพเจตเฉ‡เจ—เฉ€ fdatasync().

เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ XFS เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจจเฉ‡ เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจ‡เจธ เจฒเจˆ เจ‡เฉฑเจ• "เจคเฉ‡เจœเจผ โ€‹โ€‹เจฎเจพเจฐเจ—" เจœเฉ‹เฉœเจฟเจ† เจนเฉˆ O_DIRECT|O_DSYNC- เจกเจพเจŸเจพ เจฐเจฟเจ•เจพเจฐเจก. เจœเฉ‡เจ•เจฐ เจฌเจฒเจพเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ“เจตเจฐเจฐเจพเจˆเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ O_DIRECT|O_DSYNC, เจซเจฟเจฐ XFS, เจ•เฉˆเจธเจผ เจจเฉ‚เฉฐ เจซเจฒเฉฑเจธเจผ เจ•เจฐเจจ เจฆเฉ€ เจฌเจœเจพเจ, FUA เจฐเจพเจˆเจŸ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจเจ—เจพ เจœเฉ‡เจ•เจฐ เจกเจฟเจตเจพเจˆเจธ เจ‡เจธเจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธเจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เฉ€เจคเฉ€ เจนเฉˆ blktrace เจ‡เฉฑเจ• Linux 5.4/Ubuntu 20.04 เจธเจฟเจธเจŸเจฎ เจ‰เฉฑเจคเฉ‡เฅค เจ‡เจน เจชเจนเฉเฉฐเจš เจตเจงเฉ‡เจฐเฉ‡ เจ•เฉเจธเจผเจฒ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจกเจฟเจธเจ• 'เจคเฉ‡ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจฆเฉ‹ เจจเจนเฉ€เจ‚ (เจ•เฉˆเจธเจผ เจจเฉ‚เฉฐ เจฒเจฟเจ–เฉ‹ เจ…เจคเฉ‡ เจซเจฒเฉฑเจธเจผ เจ•เจฐเฉ‹)เฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจฎเจฟเจฒเจฟเจ† เจชเฉˆเจš 2018 เจ•เจฐเจจเจฒ เจœเฉ‹ เจ‡เจธ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจšเจฐเจšเจพ เจนเฉˆ, เจชเจฐ เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจฎเฉˆเจ‚ เจœเจพเจฃเจฆเจพ เจนเจพเจ‚, XFS เจ‡เฉฑเจ•เจฎเจพเจคเจฐ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจนเฉˆ เจœเฉ‹ เจนเฉเจฃ เจคเฉฑเจ• เจ‡เจธเจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

sync_file_range() เจซเฉฐเจ•เจธเจผเจจ

Linux เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจนเฉˆ sync_file_range(), เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจซเจพเจ‡เจฒ เจฆเฉ‡ เจธเจฟเจฐเจซ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจซเจฒเฉฑเจธเจผ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจจเจพ เจ•เจฟ เจชเฉ‚เจฐเฉ€ เจซเจพเจˆเจฒ เจจเฉ‚เฉฐเฅค เจ‡เจน เจ•เจพเจฒ เจ‡เฉฑเจ• เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจซเจฒเฉฑเจธเจผ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจชเจฐ เจฆเฉ‡ เจนเจตเจพเจฒเฉ‡ เจตเจฟเฉฑเจš sync_file_range() เจ‡เจธ เจนเฉเจ•เจฎ เจจเฉ‚เฉฐ "เจฌเจนเฉเจค เจ–เจคเจฐเจจเจพเจ•" เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€. เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจ–เจผเจคเจฐเฉ‡ sync_file_range() เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจขเฉฐเจ— เจจเจพเจฒ เจตเจฐเจฃเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ‡เจน เจธเจฎเฉฑเจ—เจฐเฉ€. เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจ•เจพเจฒ เจฐเฉŒเจ•เจธเจกเฉ€เจฌเฉ€ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฆเฉ€ เจœเจพเจชเจฆเฉ€ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ•เจฐเจจเจฒ เจกเจฟเจธเจ• 'เจคเฉ‡ "เจ—เฉฐเจฆเฉ‡" เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจซเจฒเฉฑเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจชเจฐ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‰เฉฑเจฅเฉ‡, เจธเจฅเจฟเจฐ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ fdatasync(). The เจ•เฉ‹เจก เจ‡เจธ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ เจฐเฉŒเจ•เจธเจกเฉ€เจฌเฉ€ เจฆเฉ€เจ†เจ‚ เจ•เฉเจ เจฆเจฟเจฒเจšเจธเจช เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจนเจจเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เจน เจ•เจพเจฒ เจตเจฐเจ—เจพ เจฆเจฟเจธเจฆเจพ เจนเฉˆ sync_file_range() ZFS เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจกเจพเจŸเจพ เจกเจฟเจธเจ• 'เจคเฉ‡ เจซเจฒเฉฑเจธเจผ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ…เจจเฉเจญเจต เจฎเฉˆเจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ เจ˜เฉฑเจŸ เจนเฉ€ เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเฉฑเจ— เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ‡เจธ เจฒเจˆ, เจฎเฉˆเจ‚ เจ‡เจธ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจตเจฟเจฐเฉเฉฑเจง เจธเจฒเจพเจน เจฆเฉ‡เจตเจพเจ‚เจ—เจพ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจฌเจฟเจฒเจ•เฉเจฒ เจœเจผเจฐเฉ‚เจฐเฉ€ เจจเจพ เจนเฉ‹เจตเฉ‡เฅค

เจกเจพเจŸเจพ เจธเจฅเจฟเจฐเจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚

เจฎเฉˆเจ‚ เจ‡เจธ เจธเจฟเฉฑเจŸเฉ‡ 'เจคเฉ‡ เจชเจนเฉเฉฐเจšเจฟเจ† เจนเจพเจ‚ เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจคเจฟเฉฐเจจ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ เจœเฉ‹ เจฒเจ—เจพเจคเจพเจฐ I/O เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจ•เจพเจฒ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ fsync() เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฒเจˆ เจœเจฟเฉฑเจฅเฉ‡ เจซเจพเจˆเจฒ เจฌเจฃเจพเจˆ เจ—เจˆ เจธเฉ€เฅค เจ‡เจน เจชเจนเฉเฉฐเจš เจนเจจ:

  1. เจซเฉฐเจ•เจธเจผเจจ เจ•เจพเจฒ fdatasync() เจœ fsync() เจซเฉฐเจ•เจธเจผเจจ เจฆเฉ‡ เจฌเจพเจ…เจฆ write() (เจตเจฐเจคเจฃ เจฒเจˆ เจฌเจฟเจนเจคเจฐ fdatasync()).
  2. เจ‡เฉฑเจ• เจซเจฒเฉˆเจ— เจจเจพเจฒ เจ–เฉ‹เจฒเฉเจนเจฟเจ† เจ‡เฉฑเจ• เจซเจพเจ‡เจฒ เจกเจฟเจธเจ•เฉเจฐเจฟเจชเจŸเจฐ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ O_DSYNC เจœ O_SYNC (เจฌเจฟเจนเจคเจฐ - เจ‡เฉฑเจ• เจเฉฐเจกเฉ‡ เจจเจพเจฒ O_DSYNC).
  3. เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ pwritev2() เจเฉฐเจกเฉ‡ เจฆเฉ‡ เจจเจพเจฒ RWF_DSYNC เจœ RWF_SYNC (เจคเจฐเจœเฉ€เจนเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจเฉฐเจกเฉ‡ เจจเจพเจฒ RWF_DSYNC).

เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‹เจŸเจธ

เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจจเจพเจฒ เจจเจนเฉ€เจ‚ เจฎเจพเจชเจฟเจ† เจœเจฟเจจเฉเจนเจพเจ‚ เจฆเฉ€ เจฎเฉˆเจ‚ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ€ เจธเฉ€เฅค เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเฉ€ เจ—เจคเฉ€ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจœเฉ‹ เจ…เฉฐเจคเจฐ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆ เจ‰เจน เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเจจเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจ—เจฒเจค เจนเฉ‹ เจธเจ•เจฆเจพ เจนเจพเจ‚, เจ…เจคเฉ‡ เจ‡เจน เจ•เจฟ เจนเฉ‹เจฐ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ‰เจนเฉ€ เจšเฉ€เจœเจผ เจตเฉฑเจ–เจฐเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจฆเจฟเจ–เจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‚เฉฐ เจ•เฉ€ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจฟเจฐ, เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจ•เฉ€ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค

  1. เจซเจพเจˆเจฒ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ“เจตเจฐเจฐเจพเจˆเจŸ เจ•เจฐเจจเจพ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจœเฉ‹เฉœเจจ เจจเจพเจฒเฉ‹เจ‚ เจคเฉ‡เจœเจผ เจนเฉˆ (เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฒเจพเจญ 2-100% เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ)เฅค เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจจเจพเจฒ เจกเฉ‡เจŸเจพ เจจเฉฑเจฅเฉ€ เจ•เจฐเจจ เจฒเจˆ เจซเจพเจˆเจฒ เจฆเฉ‡ เจฎเฉˆเจŸเจพเจกเฉ‡เจŸเจพ เจตเจฟเฉฑเจš เจตเจพเจงเฉ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจตเฉ€ fallocate(), เจชเจฐ เจ‡เจธ เจชเฉเจฐเจญเจพเจต เจฆเฉ€ เจคเฉ€เจฌเจฐเจคเจพ เจตเฉฑเจ–-เจตเฉฑเจ– เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚, เจตเจงเฉ€เจ† เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฒเจˆ, เจ•เจพเจฒ เจ•เจฐเจจ เจฒเจˆ fallocate() เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจœเจ—เฉเจนเจพ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฒเจˆเฅค เจซเจฟเจฐ เจ‡เจธ เจธเจชเฉ‡เจธ เจจเฉ‚เฉฐ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจผเฉ€เจฐเฉ‹ เจจเจพเจฒ เจญเจฐเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจฌเฉเจฒเจพเจ‡เจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ fsync(). เจ‡เจน เจซเจพเจ‡เจฒ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ "เจ…เจฒเฉ‹เจ•เฉ‡เจŸเจฟเจก" เจฆเฉ€ เจฌเจœเจพเจ "เจ…เจฒเฉ‹เจ•เฉ‡เจŸเจก" เจตเจœเฉ‹เจ‚ เจฎเจพเจฐเจ• เจ•เจฐเจจ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจน เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ (เจฒเจ—เจญเจ— 2%) เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจธเฉเจงเจพเจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจจเจพเจฒ เจนเฉ€, เจ•เฉเจ เจกเจฟเจธเจ•เจพเจ‚ เจฆเจพ เจชเจนเจฟเจฒเจพ เจฌเจฒเจพเจ• เจเจ•เจธเฉˆเจธ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉ‚เจœเจฟเจ†เจ‚ เจจเจพเจฒเฉ‹เจ‚ เจนเฉŒเจฒเฉ€ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจœเจผเฉ€เจฐเฉ‹ เจจเจพเจฒ เจธเจชเฉ‡เจธ เจญเจฐเจจ เจจเจพเจฒ เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ (เจฒเจ—เจญเจ— 100%) เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจธเฉเจงเจพเจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจกเจฟเจธเจ•เจพเจ‚ เจจเจพเจฒ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค AWS EBS (เจ‡เจน เจ…เจฃเจ…เจงเจฟเจ•เจพเจฐเจค เจกเฉ‡เจŸเจพ เจนเฉˆ, เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฟเจ†)เฅค เจ‡เจนเฉ€ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฒเจˆ เจœเจพเจ‚เจฆเจพ เจนเฉˆ. GCP เจชเจฐเจธเจฟเจธเจŸเฉˆเจ‚เจŸ เจกเจฟเจธเจ• (เจ…เจคเฉ‡ เจ‡เจน เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ…เจงเจฟเจ•เจพเจฐเจค เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉˆ, เจŸเฉˆเจธเจŸเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉเจธเจผเจŸเฉ€ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ)เฅค เจนเฉ‹เจฐ เจฎเจพเจนเจฟเจฐเจพเจ‚ เจจเฉ‡ เจตเฉ€ เจ…เจœเจฟเจนเจพ เจนเฉ€ เจ•เฉ€เจคเจพ เจนเฉˆ เจจเจฟเจฐเฉ€เจ–เจฃเจตเฉฑเจ–-เจตเฉฑเจ– เจกเจฟเจธเจ• เจจเจพเจฒ เจธเจฌเฉฐเจงเจค.
  2. เจœเจฟเฉฐเจจเฉ€เจ†เจ‚ เจ˜เฉฑเจŸ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚, เจ“เจจเจพ เจนเฉ€ เจ‰เฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจจ (เจฒเจพเจญ เจฒเจ—เจญเจ— 5% เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ)เฅค เจ‡เจน เจ‡เฉฑเจ• เจ•เจพเจฒ เจตเจฐเจ—เจพ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ open() เจเฉฐเจกเฉ‡ เจฆเฉ‡ เจจเจพเจฒ O_DSYNC เจœเจพเจ‚ เจ•เจพเจฒ เจ•เจฐเฉ‹ pwritev2() เจเฉฐเจกเฉ‡ เจฆเฉ‡ เจจเจพเจฒ RWF_SYNC เจคเฉ‡เจœเจผ เจ•เจพเจฒ fdatasync(). เจฎเฉˆเจจเฉ‚เฉฐ เจธเจผเฉฑเจ• เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจฌเจฟเฉฐเจฆเฉ‚ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‡เจธ เจชเจนเฉเฉฐเจš เจจเจพเจฒ, เจ‡เจน เจคเฉฑเจฅ เจ•เจฟ เจ‡เฉฑเจ•เฉ‹ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฒเจˆ เจ˜เฉฑเจŸ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจ•เจฐเจจเฉ€เจ†เจ‚ เจชเฉˆเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ (เจฆเฉ‹ เจฆเฉ€ เจฌเจœเจพเจ เจ‡เฉฑเจ• เจ•เจพเจฒ) เจ‡เฉฑเจ• เจญเฉ‚เจฎเจฟเจ•เจพ เจจเจฟเจญเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ. เจชเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจตเจฟเฉฑเจš เจ…เฉฐเจคเจฐ เจฌเจนเฉเจค เจ›เฉ‹เจŸเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจจเจœเจผเจฐเจ…เฉฐเจฆเจพเจœเจผ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจ•เฉเจ เจ…เจœเจฟเจนเจพ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจœเจฟเจธ เจจเจพเจฒ เจ‡เจธเจฆเฉ‡ เจคเจฐเจ• เจฆเฉ€ เจชเฉ‡เจšเฉ€เจฆเจ—เฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€เฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจŸเจฟเจ•เจพเจŠ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ‡ เจตเจฟเจธเจผเฉ‡ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เฉฑเจฅเฉ‡ เจ•เฉเจ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€เจ†เจ‚ เจนเจจ:

  • I/O เจชเจนเฉเฉฐเจš เจตเจฟเจงเฉ€เจ†เจ‚ - เจ‡เฉฐเจชเฉเฉฑเจŸ/เจ†เจŠเจŸเจชเฉเฉฑเจŸ เจฎเจ•เฉˆเจจเจฟเจœเจผเจฎ เจฆเฉ€เจ†เจ‚ เจฎเฉ‚เจฒ เจ—เฉฑเจฒเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉฐเจ–เฉ‡เจช เจœเจพเจฃเจ•เจพเจฐเฉ€เฅค
  • เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจ•เจฟ เจกเจพเจŸเจพ เจกเจฟเจธเจ• เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฆเจพ เจนเฉˆ - เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเฉ‹เจ‚ เจกเจฟเจธเจ• เจฆเฉ‡ เจฐเจธเจคเฉ‡ 'เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเจพ เจ•เฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจ•เจนเจพเจฃเฉ€เฅค
  • เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฐเฉฑเจ–เจฃ เจตเจพเจฒเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจจเฉ‚เฉฐ เจ•เจฆเฉ‹เจ‚ fsync เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ - เจ•เจฆเฉ‹เจ‚ เจ…เจฐเจœเจผเฉ€ เจฆเฉ‡เจฃเฉ€ เจนเฉˆ เจ‡เจธ เจธเจตเจพเจฒ เจฆเจพ เจœเจตเจพเจฌ fsync() เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจฒเจˆ. เจธเฉฐเจ–เฉ‡เจช เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ‡เจน เจชเจคเจพ เจšเจฒเจฆเจพ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจซเจพเจˆเจฒ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจธเจฟเจซเจพเจฐเจธเจผ เจฆเจพ เจ•เจพเจฐเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ•เฉ‹ เจซเจพเจˆเจฒ เจฆเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจนเจตเจพเจฒเฉ‡ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ.
  • เจฒเฉ€เจจเจ•เจธ เจ‰เฉฑเจคเฉ‡ SQL เจธเจฐเจตเจฐ: FUA เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ - เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจตเจฐเจฃเจจ เจนเฉˆ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจฒเฉ€เจจเจ•เจธ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ 'เจคเฉ‡ SQL เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจจเจฟเจฐเฉฐเจคเจฐ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจ•เฉเจ เจฆเจฟเจฒเจšเจธเจช เจคเฉเจฒเจจเจพเจตเจพเจ‚ เจนเจจเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจ—เจญเจ— เจฏเจ•เฉ€เจจ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ‡เจธ เจธเจฎเฉฑเจ—เจฐเฉ€ เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ เจธเฉ€ เจœเฉ‹ เจฎเฉˆเจ‚ XFS เจฆเฉ‡ FUA เจ“เจชเจŸเฉ€เจฎเจพเจˆเจœเฉ‡เจธเจผเจจ เจฌเจพเจฐเฉ‡ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆเฅค

เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ•เจฆเฉ‡ เจ‰เจน เจกเฉ‡เจŸเจพ เจ—เฉเจ† เจฆเจฟเฉฑเจคเจพ เจนเฉˆ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจธเฉ‹เจšเจฟเจ† เจธเฉ€ เจ•เจฟ เจกเจฟเจธเจ• 'เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€?

เจŸเจฟเจ•เจพเจŠ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจซเจพเจˆเจฒ APIs

เจŸเจฟเจ•เจพเจŠ เจกเฉ‡เจŸเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ…เจคเฉ‡ เจฒเฉ€เจจเจ•เจธ เจซเจพเจˆเจฒ APIs

เจธเจฐเฉ‹เจค: www.habr.com