๋‚ด NVMe๊ฐ€ SSD๋ณด๋‹ค ๋Š๋ฆฐ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด NVMe๊ฐ€ SSD๋ณด๋‹ค ๋Š๋ฆฐ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์ด ๊ธฐ์‚ฌ์—์„œ๋Š” I/O ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ๋ช‡ ๊ฐ€์ง€ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด์™€ ์ด๊ฒƒ์ด ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช‡ ์ฃผ ์ „์— ํ•œ ์„œ๋ฒ„์˜ NVMe๊ฐ€ ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ SATA๋ณด๋‹ค ๋Š๋ฆฐ ์ด์œ ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ํŠน์„ฑ์„ ์‚ดํŽด๋ณด๋‹ˆ NVMe๋Š” ์‚ฌ์šฉ์ž ๋ถ€๋ฌธ์—์„œ, SSD๋Š” ์„œ๋ฒ„ ๋ถ€๋ฌธ์—์„œ ํšก์„ค์ˆ˜์„คํ•œ ์งˆ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ, ์„œ๋กœ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋ถ€๋ฌธ์˜ ์ œํ’ˆ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์˜ณ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์™„์ „ํ•œ ๊ธฐ์ˆ ์  ๋‹ต๋ณ€์€ ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ธฐ์ดˆ๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ , ์‹คํ—˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ œ๊ธฐ๋œ ์งˆ๋ฌธ์— ๋‹ตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

fsync ๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋””์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?

๋“œ๋ผ์ด๋ธŒ ์ž‘์—… ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋Š” ๋ฒ„ํผ๋ง๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฒ„ํผ ๋‚ด์šฉ์„ ๋“œ๋ผ์ด๋ธŒ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ๊ธฐํšŒ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ๊นŒ์ง€ ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ธฐํšŒ ๊ธฐ์ค€์€ ์šด์˜ ์ฒด์ œ ๋ฐ ๋“œ๋ผ์ด๋ธŒ ํŠน์„ฑ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ •์ „์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฒ„ํผ์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋“œ๋ผ์ด๋ธŒ์— ๊ธฐ๋ก๋˜๊ณ  ์ค‘๊ฐ„ ๋ฒ„ํผ์— ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณด์ฆ์€ POSIX ํ˜ธํ™˜ fsync ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 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์˜ ๋นˆ๋ฒˆํ•œ ์‚ฌ์šฉ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ

์ผ๋ฐ˜ I/O์—์„œ๋Š” ์™ธ๋ถ€ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ๊ฐ€์žฅ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜ ์ฒด์ œ๋Š” ๋””์Šคํฌ ํ†ต์‹ ์„ ์ตœ์ ํ™”ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜ ์ฒด์ œ๋Š” ๋“œ๋ผ์ด๋ธŒ์— ๋Œ€ํ•œ ํ•œ ๋ฒˆ์˜ ์•ก์„ธ์Šค๋กœ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ๋“ค์–ด fsync ์‚ฌ์šฉ์ด ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ SSD๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Intelยฎ DC SSD S4500 480GB, SATA 3.2๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ, 6Gb/s;
  • Samsung 970 EVO Plus 500GB, PCIe 3.0 x4, ~31Gbps๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋จ.

ํ…Œ์ŠคํŠธ๋Š” Ubuntu 2255๋ฅผ ์‹คํ–‰ํ•˜๋Š” Intelยฎ Xeonยฎ W-20.04์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด sysbench 1.0.18์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ์—๋Š” ext4๋กœ ํฌ๋งท๋œ ๋‹จ์ผ ํŒŒํ‹ฐ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ค€๋น„๋Š” 100GB ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋Š” ํ‘œ์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ
์ธํ…”ยฎ S4500
์‚ผ์„ฑ 970 EVO+

fsync ์—†์ด ์ฝ๊ธฐ, MiB/s
5734.89
9028.86

fsync ์—†์ด ์“ฐ๊ธฐ, MiB/s
3823.26
6019.24

fsync๋กœ ์ฝ๊ธฐ, MiB/s
37.76
3.27

fsync, MiB/s๋กœ ๋…น์Œ
25.17
2.18

์šด์˜ ์ฒด์ œ ์ž์ฒด๊ฐ€ ๋””์Šคํฌ ์ž‘์—… ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ ์„ธ๊ทธ๋จผํŠธ์˜ NVMe๊ฐ€ ์ž์‹ ์žˆ๊ฒŒ ์•ž์„œ๊ณ  fsync๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํŒจ๋ฐฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

  1. fsync๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ…Œ์ŠคํŠธ์—์„œ ์ฝ๊ธฐ ์†๋„๊ฐ€ ๋งํฌ์˜ ๋ฌผ๋ฆฌ์  ๋Œ€์—ญํญ์„ ์ดˆ๊ณผํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  2. ์„œ๋ฒ„ ์„ธ๊ทธ๋จผํŠธ SSD๊ฐ€ ๋‹ค์ˆ˜์˜ fsync ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋” ๋‚˜์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋Œ€๋‹ต์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. sysbench๋Š” 100์œผ๋กœ ์ฑ„์›Œ์ง„ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ๋Š” XNUMXGB ์ด์ƒ์˜ ์ œ๋กœ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋งค์šฐ ๊ท ์ผํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ OS ์ตœ์ ํ™”๊ฐ€ ์ ์šฉ๋˜์–ด ์‹คํ–‰ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

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

ํ…Œ์ŠคํŠธ
์ธํ…”ยฎ S4500
์‚ผ์„ฑ 970 EVO+

fsync ์—†์ด ์ฝ๊ธฐ, MiB/s
45.5
178

fsync ์—†์ด ์“ฐ๊ธฐ, MiB/s
30.4
119

fsync๋กœ ์ฝ๊ธฐ, MiB/s
32.6
20.9

fsync, MiB/s๋กœ ๋…น์Œ
21.7
13.9

fsync๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ NVMe์˜ ์„ฑ๋Šฅ ์ €ํ•˜ ์ถ”์„ธ๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์œผ๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ ํ™” ๋˜๋Š” ํ—ˆ์„ธ

์•ž์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ„ํผ์— ์ €์žฅ๋œ๋‹ค๊ณ  ๋งํ–ˆ์ง€๋งŒ ์ค‘์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋Š ๋ฒ„ํผ์— ์ €์žฅ๋˜๋Š”์ง€ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋„ ์šฐ๋ฆฌ๋Š” ์šด์˜ ์ฒด์ œ์˜ ๋ณต์žก์„ฑ์„ ํƒ๊ตฌํ•˜์ง€ ์•Š๊ณ  ๋‘ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ ์œ ํ˜•์˜ ๋ฒ„ํผ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ;
  • ํ•˜๋“œ์›จ์–ด.

์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„ํผ๋Š” ์šด์˜์ฒด์ œ์— ์กด์žฌํ•˜๋Š” ๋ฒ„ํผ๋ฅผ ๋งํ•˜๊ณ , ํ•˜๋“œ์›จ์–ด ๋ฒ„ํผ๋Š” ๋””์Šคํฌ ์ปจํŠธ๋กค๋Ÿฌ์˜ ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค. fsync ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ๋ฒ„ํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€์— ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ๋“œ๋ผ์ด๋ธŒ์— ๋ช…๋ น์„ ๋ณด๋‚ด์ง€๋งŒ ๋ช…๋ น์˜ ์˜ฌ๋ฐ”๋ฅธ ์‹คํ–‰์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.

SSD์˜ ์„ฑ๋Šฅ์ด ๋” ์ข‹๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ฐ€์ง€ ๊ฐ€์ •์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋””์Šคํฌ๋Š” ์œ ์‚ฌํ•œ ๊ณ„ํš์˜ ๋กœ๋“œ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋””์Šคํฌ๋Š” "ํ—ˆ์„ธ๋ฅผ ๋ถ€๋ฆฌ๊ณ " ๋ช…๋ น์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

์ •์ „๋œ ์ƒํƒœ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋“œ๋ผ์ด๋ธŒ์˜ ๋ถ€์ •์งํ•œ ๋™์ž‘์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. diskchecker.pl, ๊ทธ๊ฑด ๋งŒ๋“  ์‚ฌ๋žŒ : 2005 ๋…„ ์ธ์น˜

์ด ์Šคํฌ๋ฆฝํŠธ์—๋Š” "์„œ๋ฒ„"์™€ "ํด๋ผ์ด์–ธํŠธ"๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋ฌผ๋ฆฌ์  ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ํ…Œ์ŠคํŠธ ์ค‘์ธ ๋“œ๋ผ์ด๋ธŒ์— ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ , fsync๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ๊ธฐ๋ก๋œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

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

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

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„์—๋Š” "ํด๋ผ์ด์–ธํŠธ"์˜ ์ „์›์„ ์ฐจ๋‹จํ•˜๊ณ  ๋ช‡ ๋ถ„ ๋™์•ˆ ์ „์›์„ ๋‹ค์‹œ ๊ณต๊ธ‰ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์ œ ์ข…๋ฃŒ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์„ ์ „๊ธฐ์—์„œ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž ์‹œ ํ›„ ์„œ๋ฒ„๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด OS์— ๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OS๋ฅผ ๋ถ€ํŒ…ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. diskchecker.pl, ๊ทธ๋Ÿฌ๋‚˜ ์ธ์ˆ˜๊ฐ€ ์žˆ์Œ ํ™•์ธ.

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

๊ฒ€์‚ฌ๊ฐ€ ๋๋‚˜๋ฉด ์˜ค๋ฅ˜ ์ˆ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. 0์ด๋ฉด ๋””์Šคํฌ๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋””์Šคํฌ์— ์„ฑ๊ณตํ•œ ์ƒํ™ฉ์˜ ์กฐํ•ฉ์„ ์ œ์™ธํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ—˜์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

S4500์—๋Š” ์ „๋ ฅ ์†์‹ค ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Š” fsync ํ˜ธ์ถœ์ด ๋งŽ์€ ๋กœ๋“œ์— ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๋””์Šคํฌ ๋˜๋Š” ๊ธฐ์„ฑ ๊ตฌ์„ฑ ์ „์ฒด๋ฅผ ์„ ํƒํ•  ๋•Œ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ž‘์—…์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์—ผ๋‘์— ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ผํ• ๋ณด๋ฉด NVMe, ์ฆ‰ PCIe ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํƒ‘์žฌํ•œ SSD๊ฐ€ 'ํด๋ž˜์‹' SATA SSD๋ณด๋‹ค ๋น ๋ฅธ ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ์ดํ•ดํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŠน์ • ์กฐ๊ฑด๊ณผ ํŠน์ • ์ž‘์—…์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

IaaS ๊ณต๊ธ‰์ž๋กœ๋ถ€ํ„ฐ ์ž„๋Œ€ํ•  ๋•Œ ์„œ๋ฒ„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๊นŒ?
๋Œ“๊ธ€์—์„œ ์—ฌ๋Ÿฌ๋ถ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด NVMe๊ฐ€ SSD๋ณด๋‹ค ๋Š๋ฆฐ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€