ืคืืจื•ื•ืืก ืื™ื– ืžื™ื™ืŸ NVMe ืกืœืึธื•ืขืจ ื•ื•ื™ ืึท SSD?

ืคืืจื•ื•ืืก ืื™ื– ืžื™ื™ืŸ NVMe ืกืœืึธื•ืขืจ ื•ื•ื™ ืึท SSD?
ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ืื™ืŸ ืขื˜ืœืขื›ืข ื ื•ืึทื ืกื™ื– ืคื•ืŸ ื“ื™ I / O ืกืึทื‘ืกื™ืกื˜ืึทื ืื•ืŸ ื–ื™ื™ืขืจ ืคึผืจืึทืœ ืื•ื™ืฃ ืคืึธืจืฉื˜ืขืœื•ื ื’.

ื ืคึผืึธืจ ืคื•ืŸ ื•ื•ืึธื›ืŸ ืฆื•ืจื™ืง ืื™ืš ื’ืขืœืืคืŸ ืื™ืŸ ืึท ืงืฉื™ื ื•ื•ืึธืก NVMe ืื•ื™ืฃ ืื™ื™ืŸ ืกืขืจื•ื•ืขืจ ืื™ื– ืกืœืึธื•ืขืจ ื•ื•ื™ SATA ืื•ื™ืฃ ืื ื“ืขืจืŸ. ืื™ืš ื’ืขืงื•ืงื˜ ืื•ื™ืฃ ื“ื™ ืงืขืจืึทืงื˜ืขืจื™ืกื˜ื™ืงืก ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจืก ืื•ืŸ ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืงื•ื ืฅ ืงืฉื™ื: NVMe ืื™ื– ืคึฟื•ืŸ ื“ื™ ื‘ืึทื ื™ืฆืขืจ ืึธืคึผืฉื ื™ื˜, ืื•ืŸ SSD ืื™ื– ืคึฟื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ืึธืคึผืฉื ื™ื˜.

ื“ืึธืš, ืขืก ืื™ื– ื ื™ืฉื˜ ืจื™ื›ื˜ื™ืง ืฆื• ืคืึทืจื’ืœื™ื™ึทื›ืŸ ืคึผืจืึธื“ื•ืงื˜ืŸ ืคื•ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืกืขื’ืžืึทื ืฅ ืื™ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื™ื ื•ื•ื™ื™ืจืึทื ืžืึทื ืฅ, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืึท ื™ื’ื–ืึธืกื˜ื™ื•ื• ื˜ืขื›ื ื™ืฉ ืขื ื˜ืคึฟืขืจืŸ. ืžื™ืจ ื•ื•ืขืœืŸ ืœืขืจื ืขืŸ ื“ื™ ื‘ืึทืกื™ืงืก, ืึธื ืคื™ืจืŸ ื™ืงืกืคึผืขืจืึทืžืึทื ืฅ ืื•ืŸ ื’ืขื‘ืŸ ืึทืŸ ืขื ื˜ืคืขืจ ืฆื• ื“ื™ ื’ืขืฉื˜ืขืœื˜ืข ืงืฉื™ื.

ื•ื•ืึธืก ืื™ื– fsync ืื•ืŸ ื•ื•ื• ืื™ื– ืขืก ื’ืขื ื™ืฆื˜

ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ื“ื™ ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ืจื™ื™ื•ื•ื–, ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื‘ืึทืคืขืจื“, ื“ืึธืก ืื™ื–, ืกื˜ืึธืจื“ ืื™ืŸ ื•ื•ืึทืœืึทื˜ืึทืœ ื–ื›ึผืจื•ืŸ ื‘ื™ื– ืึท ื‘ืึทืงื•ื•ืขื ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ื‘ืึทืคืขืจ ืฆื• ื“ื™ ืคืึธืจ. ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืงืจื™ื™ื˜ื™ืจื™ืึท ื–ืขื ืขืŸ ื‘ืืฉืœืืกืŸ ื“ื•ืจืš ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืื•ืŸ ืคืึธืจ ืงืขืจืึทืงื˜ืขืจื™ืกื˜ื™ืงืก. ืื™ืŸ ื“ื™ ื’ืขืฉืขืขื ื™ืฉ ืคื•ืŸ ืึท ืžืึทื›ื˜ ื“ื•ืจื›ืคืึทืœ, ืึทืœืข ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื‘ืึทืคืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคืึทืจืคืึทืœืŸ.

ืขืก ื–ืขื ืขืŸ ืึท ื ื•ืžืขืจ ืคื•ืŸ ื˜ืึทืกืงืก ืื™ืŸ ื•ื•ืึธืก ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืฆื• ื“ื™ ืคืึธืจ ืื•ืŸ ื˜ืึธืŸ ื ื™ื˜ ืœื™ื’ืŸ ืื™ืŸ ืึท ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื‘ืึทืคืขืจ. ื“ื™ ืคืืจื–ื™ื›ืขืจื•ื ื’ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืงื•ืžืขืŸ ื“ื•ืจืš ื ื™ืฆืŸ ื“ื™ POSIX-ื’ืขื”ืึธืจื›ื™ืง ืคืกื™ื ืง ืกื™ืกื˜ืขื ืจื•ืคืŸ. ื“ื™ fsync ืจื•ืคืŸ ืคืึธืจืกืขืก ืึท ืฉืจื™ื™ึทื‘ืŸ ืคื•ืŸ ื“ื™ ื‘ืึทืคืขืจ ืฆื• ื“ื™ ืคืึธืจ.

ืœืึธืžื™ืจ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ื“ื™ ื•ื•ื™ืจืงื•ื ื’ ืคื•ืŸ ื‘ืึทืคืขืจื– ืžื™ื˜ ืึท ืงื™ื ืกื˜ืœืขืš ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืึท ืงื•ืจืฅ C ืคึผืจืึธื’ืจืึทื.

#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(void) {
    /* ะžั‚ะบั€ั‹ะฒะฐะตะผ ั„ะฐะนะป answer.txt ะฝะฐ ะทะฐะฟะธััŒ, ะตัะปะธ ะตะณะพ ะฝะตั‚ -- ัะพะทะดะฐั‘ะผ */
    int fd = open("answer.txt", O_WRONLY | O_CREAT);
    /* ะ—ะฐะฟะธัั‹ะฒะฐะตะผ ะฟะตั€ะฒั‹ะน ะฝะฐะฑะพั€ ะดะฐะฝะฝั‹ั… */
    write(fd, "Answer to the Ultimate Question of Life, The Universe, and Everything: ", 71);
    /* ะ”ะตะปะฐะตะผ ะฒะธะด, ั‡ั‚ะพ ะฟั€ะพะฒะพะดะธะผ ะฒั‹ั‡ะธัะปะตะฝะธั ะฒ ั‚ะตั‡ะตะฝะธะต 10 ัะตะบัƒะฝะด */
    sleep(10);
    /* ะ—ะฐะฟะธัั‹ะฒะฐะตะผ ั€ะตะทัƒะปัŒั‚ะฐั‚ ะฒั‹ั‡ะธัะปะตะฝะธะน */
    write(fd, "42n", 3); 

    return 0;
}

ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ื“ืขืจืงืœืขืจืŸ ื“ื™ ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ืึทืงืฉืึทื ื– ืื™ืŸ ื“ืขื ืคึผืจืึธื’ืจืึทื ื’ืขื–ื•ื ื˜. ื“ืขืจ ื˜ืขืงืกื˜ "ื“ืขืจ ืขื ื˜ืคืขืจ ืฆื• ื“ื™ ื”ื•ื™ืคึผื˜ ืงืฉื™ื ืคื•ืŸ ืœืขื‘ืŸ, ื“ื™ ืึทืœื•ื•ืขืœื˜ ืื•ืŸ ืึทืœืข ื•ื•ืึธืก" ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืึทืคืขืจื“ ื“ื•ืจืš ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื, ืื•ืŸ ืื•ื™ื‘ ืื™ืจ ืจื™ืกื˜ืึทืจื˜ ื“ื™ ืกืขืจื•ื•ืขืจ ื“ื•ืจืš ื“ืจื™ื ื’ืœืขืš ื“ื™ ื‘ืึทืฉื˜ืขื˜ื™ืง ืงื ืขืคึผืœ ื‘ืขืฉืึทืก "ื—ืฉื‘ื•ื ื•ืช", ื“ื™ ื˜ืขืงืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœื™ื™ื“ื™ืง. ืื™ืŸ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื˜ืขืงืกื˜ ืึธื ื•ื•ืขืจ ืื™ื– ื ื™ืฉื˜ ืึท ืคึผืจืึธื‘ืœืขื, ืึทื–ื•ื™ fsync ืื™ื– ื ื™ื˜ ื“ืืจืฃ. ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ื˜ืึธืŸ ื ื™ื˜ ื˜ื™ื™ืœืŸ ื“ืขื ืึธืคึผื˜ื™ืžื™ื–ื.

ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ื–ืขื ืขืŸ ืงืึธืžืคึผืœืขืงืก ืžื’ื™ืœื” ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืžื™ื˜ ืคื™ืœืข ื˜ืขืงืขืก ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืึทื–ื•ื™ ื–ื™ื™ ื•ื•ื™ืœืŸ ืฆื• ื–ื™ื™ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ื“ืึทื˜ืŸ ื–ื™ื™ ืฉืจื™ื™ึทื‘ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืกื˜ืึธืจื“ ืื•ื™ืฃ ื“ื™ ืคืึธืจ, ื•ื•ื™ื™ึทืœ ื“ื™ ืงืึธื ืกื™ืกื˜ืขื ืกื™ ืคื•ืŸ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ื“ืขื. ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืกื™ื– ื–ืขื ืขืŸ ื“ื™ื–ื™ื™ื ื“ ืฆื• ืจืขืงืึธืจื“ื™ืจืŸ ืึทืœืข ื’ืขืขื ื“ื™ืงื˜ ื˜ืจืึทื ื–ืึทืงืฉืึทื ื– ืื•ืŸ ื–ื™ื™ืŸ ื’ืจื™ื™ื˜ ืคึฟืึทืจ ืึท ืžืึทื›ื˜ ืึทื•ื˜ื™ื“ื–ืฉ ืื™ืŸ ืงื™ื™ืŸ ืžืึธืžืขื ื˜. ื“ืขื ืึธืคึผืคื™ืจื•ื ื’ ืึทื‘ืœื™ื™ื“ื–ืฉื“ ืื™ืจ ืฆื• ื ื•ืฆืŸ fsync ืงืขืกื™ื™ื“ืขืจ ืื™ืŸ ื’ืจื•ื™ืก ืงื•ื•ืึทื ื˜ืึทื˜ื™ื–.

ื•ื•ืึธืก ืึทืคืขืงืฅ ื“ื™ ืึธืคื˜ ื ื•ืฆืŸ ืคื•ืŸ fsync

ืžื™ื˜ ื ืึธืจืžืึทืœ ื™ / ืึธ, ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืคืจื•ื•ื•ื˜ ืฆื• ืึทืคึผื˜ืึทืžื™ื™ื– ื“ื™ืกืง ืงืึธืžื•ื ื™ืงืึทืฆื™ืข, ื•ื•ื™ื™ึทืœ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื“ืจื™ื™ื•ื•ื– ื–ืขื ืขืŸ ื“ื™ ืกืœืึธื•ืึทืกื˜ ืื™ืŸ ื“ืขืจ ื–ื™ืงืึธืจืŸ ื›ื™ื™ืขืจืึทืจืงื™. ื“ืขืจื™ื‘ืขืจ, ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืคืจื•ื•ื•ื˜ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื•ื•ื™ ืคื™ืœ ื“ืึทื˜ืŸ ื•ื•ื™ ืžืขื’ืœืขืš ืื™ืŸ ืื™ื™ืŸ ืึทืงืกืขืก ืฆื• ื“ื™ ืคืึธืจ.

ืœืึธืžื™ืจ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ื“ื™ ืคึผืจืึทืœ ืคื•ืŸ ื ื™ืฆืŸ fsync ืžื™ื˜ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื‘ื™ื™ึทืฉืคึผื™ืœ. ืžื™ืจ ื”ืึธื‘ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข SSDs ื•ื•ื™ ืคึผืจื•ื‘ื™ืจืŸ ืกืึทื‘ื“ื–ืฉืขืงืฅ:

  • Intelยฎ DC SSD S4500 480 GB, ืงืึธื ื ืขืงื˜ืขื“ ื“ื•ืจืš SATA 3.2, 6 Gb/s;
  • Samsung 970 EVO Plus 500GB, ืงืึธื ื ืขืงื˜ืขื“ ื“ื•ืจืš PCIe 3.0 x4, ~31 Gbps.

ื˜ืขืกืฅ ื–ืขื ืขืŸ ื’ืขืคื™ืจื˜ ืื•ื™ืฃ ืึทืŸ Intelยฎ Xeonยฎ W-2255 ืžื™ื˜ Ubuntu 20.04. ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ืกืงืก, ืกื™ืกื˜ื‘ืขื ื˜ืฉ 1.0.18 ืื™ื– ื’ืขื ื™ืฆื˜. ื“ื™ ื“ื™ืกืงืก ื”ืึธื‘ืŸ ืึท ืื™ื™ืŸ ืฆืขื˜ื™ื™ืœื•ื ื’ ืคืึธืจืžืึทื˜ื˜ืขื“ ื•ื•ื™ ืขืงืกื˜4. ืคึผืจื™ืคึผืขืจื™ื ื’ ืคึฟืึทืจ ื“ื™ ืคึผืจืึธื‘ืข ืื™ื– ืฆื• ืฉืึทืคึฟืŸ 100 ื’ื™ื’ืื‘ื™ื™ื˜ ื˜ืขืงืขืก:

sysbench --test=fileio --file-total-size=100G prepare

ืคืœื™ืกื ื“ื™ืง ื˜ืขืกืฅ:

# ะ‘ะตะท fsync
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=0 run

# ะก fsync ะฟะพัะปะต ะบะฐะถะดะพะน ะทะฐะฟะธัะธ
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=1 run

ื“ื™ ืคึผืจืึธื‘ืข ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื–ืขื ืขืŸ ื“ืขืจืœืื ื’ื˜ ืื™ืŸ ื“ื™ ื˜ื™ืฉ.

ื˜ืขืกื˜
Intelยฎ S4500
Samsung 970 EVO+

ืœื™ื™ืขื ืขืŸ ืึธืŸ ืคืกื™ื ืง, MiB/s
5734.89
9028.86

ืฉืจื™ื™ื‘ ืึธืŸ ืคืกื™ื ืง, MiB/s
3823.26
6019.24

ืœื™ื™ืขื ืขืŸ ืžื™ื˜ fsync, MiB/s
37.76
3.27

ืจืขืงืึธืจื“ื™ื ื’ ืžื™ื˜ fsync, MiB/s
25.17
2.18

ืขืก ืื™ื– ื’ืจื™ื ื’ ืฆื• ื–ืขืŸ ืึทื– NVMe ืคึฟื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ ืึธืคึผืฉื ื™ื˜ ืงืึทื ืคืึทื“ืึทื ื˜ืœื™ ืคื™ืจื˜ ื•ื•ืขืŸ ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ื–ื™ืš ื“ื™ืกื™ื™ื“ื– ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ื™ืกืงืก ืื•ืŸ ืคืืจืœื™ืจื˜ ื•ื•ืขืŸ ืคืกื™ื ืง ืื™ื– ื’ืขื ื™ืฆื˜. ื“ืึธืก ืฉื˜ืขืœื˜ ืฆื• ืฆื•ื•ื™ื™ ืฉืืœื•ืช:

  1. ืคืืจื•ื•ืืก ื˜ื•ื˜ ื“ื™ ืœื™ื™ืขื ืขืŸ ื’ื™ื›ืงื™ื™ึทื˜ ื™ืงืกื™ื“ ื“ื™ ื’ืฉืžื™ื•ืช ื‘ืึทื ื“ื•ื•ื™ื“ื˜ ืคื•ืŸ ื“ื™ ืœื™ื ืง ืื™ืŸ ื“ื™ ืคึผืจืึธื‘ืข ืึธืŸ ืคืกื™ื ืง?
  2. ืคืืจื•ื•ืืก ืื™ื– ืึท ืกืขืจื•ื•ืขืจ ืึธืคึผืฉื ื™ื˜ SSD ื‘ืขืกืขืจ ืื™ืŸ ื”ืึทื ื“ืœื™ื ื’ ืึท ื’ืจื•ื™ืก ื ื•ืžืขืจ ืคื•ืŸ ืคืกื™ื ืง ืจื™ืงื•ื•ืขืก?

ื“ืขืจ ืขื ื˜ืคืขืจ ืฆื• ื“ืขืจ ืขืจืฉื˜ืขืจ ืงืฉื™ื ืื™ื– ืคึผืฉื•ื˜: ืกื™ืกื‘ืขื ื˜ืฉ ื“ื–ืฉืขื ืขืจื™ื™ืฅ ื ื•ืœ-ืึธื ื’ืขืคื™ืœื˜ ื˜ืขืงืขืก. ืื–ื•ื™, ื“ื™ ืคึผืจืึธื‘ืข ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื™ื‘ืขืจ 100 ื’ื™ื’ืื‘ื™ื™ื˜ ืคื•ืŸ ื–ืขืจืึธืก. ื–ื™ื ื˜ ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ืžื•ื ื“ื™ืจ ืื•ืŸ ืคึผืจื™ื“ื™ืงื˜ืึทื‘ืึทืœ, ืคืึทืจืฉื™ื“ืŸ ืึทืก ืึธืคึผื˜ื™ืžื™ื–ืึทื˜ื™ืึธื ืก ืงื•ืžืขืŸ ืื™ืŸ ืฉืคึผื™ืœ, ืื•ืŸ ื–ื™ื™ ื‘ืื˜ื™ื™ื˜ื™ืง ืคืึทืจื’ื™ื›ืขืจืŸ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’.

ืื•ื™ื‘ ืื™ืจ ืคืจืขื’ืŸ ืึทืœืข ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ sysbench, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ fio.

# ะ‘ะตะท fsync
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=0 --filename=/dev/sdb

# ะก fsync ะฟะพัะปะต ะบะฐะถะดะพะน ะทะฐะฟะธัะธ
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=1 --filename=/dev/sdb

ื˜ืขืกื˜
Intelยฎ S4500
Samsung 970 EVO+

ืœื™ื™ืขื ืขืŸ ืึธืŸ ืคืกื™ื ืง, MiB/s
45.5
178

ืฉืจื™ื™ื‘ ืึธืŸ ืคืกื™ื ืง, MiB/s
30.4
119

ืœื™ื™ืขื ืขืŸ ืžื™ื˜ fsync, MiB/s
32.6
20.9

ืจืขืงืึธืจื“ื™ื ื’ ืžื™ื˜ fsync, MiB/s
21.7
13.9

ื“ืขืจ ื’ืึทื ื’ ืฆื• ืคืึธืจืฉื˜ืขืœื•ื ื’ ืงืึทืคึผ ืื™ืŸ NVMe ื•ื•ืขืŸ ื ื™ืฆืŸ fsync ืื™ื– ืงืœืืจ ืงืขื ื˜ื™ืง. ืื™ืจ ืงืขื ื˜ ื’ื™ื™ืŸ ื•ื•ื™ื™ื˜ืขืจ ืฆื• ื“ืขืจ ืฆื•ื•ื™ื™ื˜ืขืจ ืงืฉื™ื.

ืึธืคึผื˜ื™ืžื™ื–ืึทื˜ื™ืึธืŸ ืึธื“ืขืจ ื‘ืœืึทืฃ

ืคืจื™ืขืจ ืžื™ืจ ื’ืขื–ืื’ื˜ ืึทื– ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ืื™ืŸ ืึท ื‘ืึทืคืขืจ, ืึธื‘ืขืจ ื”ืื˜ ื ื™ืฉื˜ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืื™ืŸ ื•ื•ืึธืก ืื™ื™ื ืขืจ, ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื ื™ืฉื˜ ื•ื•ื™ื›ื˜ื™ืง. ืืคื™ืœื• ืื™ืฆื˜ ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื“ืขืœื•ื• ืื™ืŸ ื“ื™ ื™ื ื˜ืจืึทืงืึทืกื™ื– ืคื•ืŸ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขืžืขืŸ ืื•ืŸ ื•ื™ืกื˜ื™ื™ืœืŸ ืฆื•ื•ื™ื™ ืึทืœื’ืขืžื™ื™ืŸ ื˜ื™ื™ืคึผืก ืคื•ืŸ ื‘ืึทืคืขืจื–:

  • ืคึผืจืึธื’ืจืึทื;
  • ื™ื™ึทื–ื ื•ื•ืึทืจื’.

ื“ื™ ื•ื•ื™ื™ื›ื•ื•ืืจื’ ื‘ืึทืคืขืจ ืจืขืคืขืจืก ืฆื• ื“ื™ ื‘ืึทืคืขืจื– ื•ื•ืึธืก ื–ืขื ืขืŸ ืื™ืŸ ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื, ืื•ืŸ ื“ื™ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื‘ืึทืคืขืจ ืจืขืคืขืจืก ืฆื• ื“ื™ ื•ื•ืึทืœืึทื˜ืึทืœ ื–ื›ึผืจื•ืŸ ืคื•ืŸ ื“ื™ ื“ื™ืกืง ืงืึธื ื˜ืจืึธืœืœืขืจ. ื“ื™ fsync ืกื™ืกื˜ืขื ืจื•ืคืŸ ืกืขื ื“ื– ืึท ื‘ืึทืคึฟืขืœ ืฆื• ื“ื™ ืคืึธืจ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื“ืึทื˜ืŸ ืคึฟื•ืŸ ื–ื™ื™ืŸ ื‘ืึทืคืขืจ ืฆื• ื“ื™ ื”ื•ื™ืคึผื˜ ืกื˜ืึธืจื™ื“ื–ืฉ, ืึธื‘ืขืจ ืขืก ื”ืื˜ ืงื™ื™ืŸ ื•ื•ืขื’ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ืจื™ื›ื˜ื™ืง ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœ.

ื–ื™ื ื˜ ื“ื™ SSD ืคึผืขืจืคืึธืจืžื– ื‘ืขืกืขืจ, ืฆื•ื•ื™ื™ ืึทืกืึทืžืคึผืฉืึทื ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืžืื›ื˜:

  • ื“ืขืจ ื“ื™ืกืง ืื™ื– ื“ื™ื–ื™ื™ื ื“ ืคึฟืึทืจ ืึท ืžืึทืกืข ืคื•ืŸ โ€‹โ€‹ืึท ืขื ืœืขืš ืคึผืœืึทืŸ;
  • ื“ืขืจ ื“ื™ืกืง "ื‘ืœืึทืคืก" ืื•ืŸ ื™ื’ื ืึธืจื– ื“ื™ ื‘ืึทืคึฟืขืœ.

ื•ืžืขืจืœืขืš ื ืึทื˜ื•ืจ ืคื•ืŸ ื“ื™ ืคืึธืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืžืขืจืงื˜ ืื•ื™ื‘ ืื™ืจ ื“ื•ืจื›ืคื™ืจืŸ ืึท ืคึผืจืึธื‘ืข ืžื™ื˜ ืึท ืžืึทื›ื˜ ื“ื•ืจื›ืคืึทืœ. ืื™ืจ ืงืขื ืขืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ืขื ืžื™ื˜ ืึท ืฉืจื™ืคื˜. diskchecker.pl, ื“ืืก ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ ืื™ืŸ ืงืกื ื•ืžืงืก ื™ืึธืจ.

ื“ืขื ืฉืจื™ืคื˜ ืจื™ืงื•ื•ื™ื™ืขืจื– ืฆื•ื•ื™ื™ ื’ืฉืžื™ื•ืช ืžืืฉื™ื ืขืŸ - "ืกืขืจื•ื•ืขืจ" ืื•ืŸ "ืงืœื™ืขื ื˜". ื“ืขืจ ืงืœื™ืขื ื˜ ืฉืจื™ื™ื‘ื˜ ืึท ืงืœื™ื™ืŸ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ื“ืึทื˜ืŸ ืฆื• ื“ื™ ืคืึธืจ ืื•ื ื˜ืขืจ ืคึผืจื•ื‘ื™ืจืŸ, ืจื•ืคื˜ fsync ืื•ืŸ ืกืขื ื“ื– ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืจื™ื‘ืŸ.

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะฝะฐ ัะตั€ะฒะตั€ะต
./diskchecker.pl -l [port]

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะฝะฐ ะบะปะธะตะฝั‚ะต
./diskchecker.pl -s <server[:port]> create <file> <size_in_MB>

ื ืึธืš ืคืœื™ืกื ื“ื™ืง ื“ื™ ืฉืจื™ืคื˜, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ื“ื™-ืขื ืขืจื“ื–ืฉื™ื™ื– ื“ื™ "ืงืœื™ืขื ื˜" ืื•ืŸ ื˜ืึธืŸ ื ื™ื˜ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืžืึทื›ื˜ ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืžื™ื ื•ื˜. ืขืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ืฆื• ื“ื™ืกืงืึทื ืขืงื˜ ื“ื™ ืคึผืจืึธื‘ืข ื•ื ื˜ืขืจื˜ืขื ื™ืง ืคื•ืŸ ืขืœืขืงื˜ืจืข, ืื•ืŸ ื ื™ืฉื˜ ื ืึธืจ ื“ื•ืจื›ืคื™ืจืŸ ืึท ืฉื•ื•ืขืจ ืฉืึทื˜ื“ืึทื•ืŸ. ื ืึธืš ืขื˜ืœืขื›ืข ืžืึธืœ, ื“ื™ ืกืขืจื•ื•ืขืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึธื ื ืขืงื˜ืขื“ ืื•ืŸ ืœืึธื•ื“ื™ื“ ืื™ืŸ ื“ื™ ืึทืก. ื ืึธืš ื‘ื•ื˜ื™ื ื’ ื“ื™ ืึทืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ื•ื•ื™ื“ืขืจ diskchecker.pl, ืื‘ืขืจ ืžื™ื˜ ื ื˜ืขื ื” ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ.

./diskchecker.pl -s <server[:port]> verify <file>

ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ื™ ื˜ืฉืขืง, ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืขืจืจืึธืจืก. ืื•ื™ื‘ ื–ื™ื™ ื–ืขื ืขืŸ 0, ื“ืขืจ ื“ื™ืกืง ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ื“ื™ ืคึผืจืึธื‘ืข. ืฆื• ื•ื™ืกืฉืœื™ืกืŸ ืึท ืงืึธืžื‘ื™ื ืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืฆื•ืฉื˜ืื ื“ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขืจืึธื˜ืŸ ืคึฟืึทืจ ื“ื™ ื“ื™ืกืง, ื“ืขืจ ืขืงืกืคึผืขืจื™ืžืขื ื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืจื™ืคึผื™ื˜ื™ื“ ืขื˜ืœืขื›ืข ืžืืœ.

ืื•ื ื“ื–ืขืจ S4500 ื”ืื˜ ืงื™ื™ืŸ ืžืึทื›ื˜ ืึธื ื•ื•ืขืจ ืขืจืจืึธืจืก, ื•ื•ืึธืก ืžื™ื˜ืœ ืึทื– ืขืก ืื™ื– ื’ืจื™ื™ื˜ ืคึฟืึทืจ ืœืึธื•ื“ื– ืžื™ื˜ ืคื™ืœืข ืคืกื™ื ืง ืจื•ืคื˜.

ืกืึธืฃ

ื•ื•ืขืŸ ื˜ืฉื•ื–ื™ื ื’ ื“ื™ืกืงืก ืึธื“ืขืจ ื’ืึทื ืฅ ืคืึทืจื˜ื™ืง ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–, ืื™ืจ ื–ืึธืœ ื”ืึทืœื˜ืŸ ืื™ืŸ ื–ื™ื ืขืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืงืก ืคื•ืŸ ื“ื™ ื˜ืึทืกืงืก ื•ื•ืึธืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“. ืื™ืŸ ืขืจืฉื˜ืขืจ ื‘ืœื™ืง, ืขืก ืžื™ื™ื ื˜ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’ ืึทื– NVMe, ื“ืึธืก ืื™ื–, ืึท SSD ืžื™ื˜ ืึท PCIe ืฆื•ื‘ื™ื ื“, ืื™ื– ืคืึทืกื˜ืขืจ ื•ื•ื™ ืึท "ืงืœืึทืกื™ืฉ" SATA SSD. ืึธื‘ืขืจ, ื•ื•ื™ ืžื™ืจ ื”ืึธื‘ืŸ ืคืึทืจืฉื˜ืึทื ืขืŸ ื”ื™ื™ึทื ื˜, ืื™ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ื˜ื ืึธื™ื ืื•ืŸ ืžื™ื˜ ื–ื™ื›ืขืจ ื˜ืึทืกืงืก ืงืขืŸ ื“ืึธืก ื ื™ืฉื˜ ื–ื™ื™ืŸ ื“ืขืจ ืคืึทืœ.

ื•ื•ื™ ื˜ืึธืŸ ืื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืกืขืจื•ื•ืขืจ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ื•ื•ืขืŸ ืจืขื ื˜ื™ื ื’ ืคื•ืŸ ืึท IaaS ืฉืคึผื™ื™ึทื–ืขืจ?
ืžื™ืจ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืื™ืจ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ.

ืคืืจื•ื•ืืก ืื™ื– ืžื™ื™ืŸ NVMe ืกืœืึธื•ืขืจ ื•ื•ื™ ืึท SSD?

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’