ãµã¤ãã¦ãºã»ã©ãã®å æã§ãã
ä»åã¯åå 究æã«å年以ä¸ããã£ããã°èª¿æ»ã®ç´¹ä»ããããã¾ãã
å¼ç¤¾ã¯ã¯ã©ã¦ããµã¼ãã¹cybozu.comãæä¾ãã¦ãã¾ãã ã¯ã©ã¦ããµã¼ãã¹ã§ã¯é害対çã®ããã®ãã¼ã¿ããã¯ã¢ãããã¬ããªã±ã¼ã·ã§ã³ãå¿ é ã§ãã ç¾å¨ã©ãã®æéãã¡ã¤ã³ãç§ã¯ãµãã¨ãã¦å¼ç¤¾ãµã¼ãã¹ã§ã®å©ç¨ãç®æãã次æããã¯ã¢ããã·ã¹ãã WalBï¼GitHubï¼ãéçºãã¦ãã¾ãã
WalBã¯ããã¡ã¤ã«ã·ã¹ãã ã¨diskã®éã«å
¥ã£ã¦IOãå
¨ã¦è¨é²ãããããã¯ããã¤ã¹ã¨IOã®ãã°ã管çãããã¼ã«ãããªãã·ã¹ãã ã§ãã
詳細ã¯ãªã³ã¯å
ãããããã ããã
çºç«¯
å»å¹´ã¯ã©ãå ã®éçºç°å¢ã§ãã¹ããé²ããæ¬ç¤¾ã§ãã¹ãéç¨ãéå§ããã®ãç®æ¨ã§ããã ã¨ãããã©ãã§ãã¹ããéå§ãã¦4ã«æå¾ã®2015å¹´4æãä¸æ£ãªlogpackãæ¤åºããã¾ããã logpackã¨ã¯WalBã§ç¨ãããããã¼ã¿ãã©ã¼ãããã®ä¸ã¤ã§ãã ãã°ãã¿ãã¨logpackãå£ãã¦ããã®ã§ãã°ããreadããªãã©ã¤ããæ£å¸¸ã«èªããããã·ã¹ãã ã¯ç¶ç¶ãã¦ãã¾ããã
ãã®ã¨ã©ã¼ã¯ä¸åº¦çºçããã ãã§ããã¤è´å½çãªãã®ã§ã¯ãªãã£ãã®ã§ãã°ããæ§åãè¦ããã¨ã«ãã¾ããã ããã¨20æ¥å¾ãããã«å度ã¨ã©ã¼ãå ±åããã¾ãã
ããã¯ãã¡ãã¨åå 追æ±ããªãã¨ãããªãã¨ãããã¨ã§ãWalB kernel driverã®ã¬ãã¥ã¼ãããç´ãããããã§ãã¯ã³ã¼ããå ¥ããããã¾ããã ãããã¨ã©ã¼ã20æ¥ã«ä¸åº¦ãããããèµ·ããªãã®ã§ãªããªãé²å±ãã¾ããã
ã¨ã©ã¼ã®åç¾é »åº¦ãä¸ãã
ï¼è©¦è¡é¯èª¤ããã£ãã®ã§ããçç¥ï¼ãã®å¾8æã®ä¸é ã«ããã¼ã¿ã®èªã¿æ¸ãé »åº¦ã調æ´ãããã¨ã§ã¨ã©ã¼ã®åç¾é »åº¦ãããããã§ãã«ã¼ãã¼ã«wldev-checkerãä½ãã¾ãã
wldev-checkerãç¨ããã¨æçã§10åã«ä¸åº¦ã§ã¨ã©ã¼ãçºçããããã«ãªããç¾è±¡ã追跡ãããããªãã¾ããã ãã æ°æéèµ°ããã¦ãã¨ã©ã¼ãã§ãªããã¨ãããã¾ãã ç¾è±¡ã®éãã調ã¹ããã¨ã§ãã¼ã¿flushå¨ãã«ä½ãåé¡ãããå¯è½æ§ãé«ããªãã¾ããã
å度WalB driverã調ã¹ãã¨ãããã£ãã·ã¥å¶å¾¡ã«é¢ãããã©ã°REQ_FLUSHã¨REQ_FUAï¼Explicit volatile write back cache controlï¼ã®æ±ãã«ãã¹ããã£ããã¨ã«æ°ã¥ãã¾ãã ãã®ããããä¿®æ£ãããã¨ã§wldev-checkerã§ãã¨ã©ã¼ãã§ãªããªãã¾ããã
åé¡è§£æ±ºâ¦ã¨æã£ãã
ããã§è§£æ±ºãããã¨æãããã®ã§ãããæ°æ¥å¾ã¾ãããã¨ã©ã¼ãå ±åããã¾ãã ãã ä»åº¦ã¯ãã§ãã«ã¼ãã¼ã«ãç¨ãã¦ãç´3æ¥ã«ä¸åº¦ããåç¾ãã¾ããã diskã¸ã®æ¸ãè¾¼ã¿ã¨åæã«ã¡ã¢ãªã«ãåºåããä»®æ³ãããã¯ããã¤ã¹ãä½æããããdriverã®ãã§ãã¯ã³ã¼ããå¼·åããããã¾ãããªããªãç¹å®ã«ãããã¾ããã
åå 追æ±ãé£ããçç±ã®ä¸ã¤ã«diskèªã¿æ¸ãã®éåææ§ã«ããã¾ãã ã¦ã¼ã¶ã©ã³ãã§ã®writeã·ã¹ãã ã³ã¼ã«çºè¡ããå®éã«diskã«ãã¼ã¿ãæ¸ãè¾¼ã¾ãã¦flushããããã®ãã¼ã¿ãèªã¿è¾¼ãã§ãã§ãã¯ããã¾ã§ããããã®workerãã¥ã¼ãéãã¾ãã ãããã£ã¦ã¨ã©ã¼æ¤åºããæç¹ã®ããã¯ãã¬ã¼ã¹ã¯ã»ã¨ãã©å½¹ã«ç«ããªãã®ã§ãã ã¾ãdriverå ã§ãã°ãè¨é²ãããã¨ããã¨ãã®IOãæ¬æ¥ã®write IOãéªéãã¦ãã¾ãã¾ãã
ããããdriverå é¨ã§ä¸ã¤ã®ãã¼ã¿ãè¤æ°ã«åå²ããããããã®éã«è¤æ°ã®ãã¼ã¿ãä¸ã¤ã«ã¾ã¨ããããããããã¨ãããã¾ãã ãããªãã¨ãã¼ã¿ã®è¿½è·¡ãé£ãããªãã¾ãã å®éãwriteããããã¼ã¿ã®ä¸é¨ã ããå£ããã¨ããç¾è±¡ãçºçãã¦ãã¾ããã
ãããªä¸ã10æé kernelããã³ã°ã¢ããããã¦rebootããä½æ¥ããã¦ããã¨ãã«ã·ã¹ãã ãcold bootããã¨åç¾æ§ãé«ããªããã¨ã«æ°ã¥ãã¾ãï¼ã½ããã¦ã§ã¢rebootã§ã¯çºçããªãï¼ã ãã®ãããã§ã½ããã®ãã°ã§ã¯ãªãããã¼ãã®ãã°ã®å¯è½æ§ãèæ ®ãå§ãã¾ããã
ãã¡ããå½åããè¤æ°ã®ç°å¢ã§ãã¹ããããã¨ã§ãã°ãåç¾ãããã·ã³ã¨ããªããã·ã³ããããã¨ã«ã¯æ°ãã¤ãã¦ããã®ã§ãããããããã¼ãã®å·®ã«ããã¿ã¤ãã³ã°ã®åé¡ãªã®ãããã¼ããã®ãã®ã®åé¡ãªã®ãã®åãåããé£ããã£ãã®ã§ãã ã¾ãç§ãã¡ã®ãã¼ã«ã®ç´°ãããã°ãããããä¿®æ£ãã¦ããã®ã§å®æã«ä»äººã®ããã«ããããã«ã¯ããã¾ããã§ããã
åå ã®ç¹å®
ï¼è©¦è¡é¯èª¤ããã£ãã®ã§ããçç¥ï¼ãã®å¾ä»åº¦ã¯WalB driverãç¨ããã«ãWalB driverã¨ä¼¼ããããªdisk IOãçºçãããã¦ã¼ã¶ã©ã³ãã®ãã¼ã«ãä½æãã¾ãã ããã¦ãã®ãã¼ã«ãç¨ãã¦ãlogpackã¨ã©ã¼ãçºçããã®ã§ãã ããã«ããWalBã®ããã§ã¯ãªããã¨ã確å®ãã¾ãããå¿ãæ´ããç¬éã§ã!!!
ç§ãã¡ã®ç¹æ®ãªdriverã使ããªãã§ããã°ãåç¾ã§ãããã¨ã§ã¦ã¼ã¶ã©ã³ãã®ã¿ã§å®çµãããã£ã¨èª¿æ»ãããããªãã¾ããã disk IOã®è©³ç´°ã表示ã§ããblktraceãç¨ãã¦èª¿æ»ãé²ããã¨ãIOãçºè¡ããã¦ããã®ã«diskã«æ¸ãè¾¼ã¾ããªã証æ ãè¦ã¤ããã¾ããã
ä¸è¨ã¯blktraceã®ä¸é¨ãæç²ãã¦æå½¢ãããã®ã§ãã
252,7 1 12079 228.808092957 4494 Q W 3296001 + 1 [kworker/u66:21] â logpack header submitted 8,2 1 162836 228.808094689 4494 A W 622367489 + 1 <- (252,7) 3296001 8,0 1 162837 228.808095153 4494 A W 622867201 + 1 <- (8,2) 622367489 8,0 1 162838 228.808095648 4494 Q W 622867201 + 1 [kworker/u66:21] 8,0 1 162839 228.808099628 4494 G W 622867201 + 1 [kworker/u66:21] 252,7 1 12080 228.808101183 4494 Q W 3296002 + 256 [kworker/u66:21] â logpack IO submitted 8,2 1 162840 228.808101724 4494 A W 622367490 + 256 <- (252,7) 3296002 ... (snip) ... 8,0 1 162854 228.808198793 4494 Q W 622867459 + 256 [kworker/u66:21] 8,0 1 162855 228.808199268 4494 G W 622867459 + 256 [kworker/u66:21] 8,0 7 187897 228.808255052 4367 C W 622867202 + 256 [0] 252,7 7 19389 228.808256993 4367 C W 3296002 + 256 [0] â logpack IO completed 8,0 7 187898 228.808260877 4367 C W 622867201 + 1 [0] 252,7 7 19390 228.808261198 4367 C W 3296001 + 1 [0] â logpack header completed
ãã¼ã¿ãã©ã¼ãããã®è©³ç´°ã¯çç¥ãã¾ããããã§ã¯252,7ã¯ããã¤ã¹çªå·, 8, 2ã¯sda2ã表ãã¾ãã 3296001ã»ã¯ã¿ç®ã«å¯¾ãã¦æ¸ãè¾¼ã¿ãrequestãã¥ã¼ã«submitããï¼Qï¼ãæå¾ã«completedï¼Cï¼ã表示ããã¦ãã¾ãã ã¤ã¾ãããã§diskã¸ã®æ¸ãè¾¼ã¿ã¯å®äºãã¦ããã¯ããªã®ã§ãã ããããã®ã»ã¯ã¿ãèªãã¨zeroã®ã¾ã¾ã§ãã¼ã¿ãæ¸ãè¾¼ã¾ãã¦ãã¾ããã§ããã
ããã«ããdisk*1ã®ä¸å ·åã§ãããã¨ãã»ã¼ç¢ºå®ã§ãã
詳ãã調æ»ã®çµæãè¤æ°åæã«ãã¼ã¿æ¸ãè¾¼ã¿ãè¡ãã¨ããã®æ¸ãè¾¼ã¿ãå®äºããã®ã«ããã®ãã¼ã¿ãå®ã¯æ¸ãè¾¼ã¾ããã«ãã¹ããããã¨ãããã¨ããRAIDã³ã³ããã¼ã©ã®ä¸å ·åã ã¨ãããã¾ããã ä¿¡é ¼æ§ã売ãã®RAIDã³ã³ããã¼ã©ã§ããããªåºæ¬çãªãã°ãããã®ã§ããã
ãªããæ°ããRAIDã³ã³ããã¼ã©ãæã¤ãµã¼ãã§ãã§ãã¯ãã¼ã«ãåä½ãããã¨ããããã®æ§ãªä¸å ·åã¯åç¾ãã¾ããã§ããã
ææ³
ã½ããã®ãã°ã¨ãã¼ãã®ãã°ãå¾®å¦ã«çµ¡ãã§ããããç¹å®ã«æéãããã£ã¦ãã¾ãã¾ããã ä»åã®ãã°èª¿æ»ã¯é常ã«é·æã«ããã£ãããï¼ãã¡ããããã ãããã¦ããããã§ã¯ããã¾ãããï¼ãæéã¯ç²¾ç¥çã«ããªãè¾ãã£ãããã§ãã è² ããªãå¿ã大äºã§ããï¼cf. ããã°ãçªãæ¢ããæè¡ãï¼ã
ä»å¾
ãã®èª¿æ»ã«ãã£ã¦æ§ã ãªè² è·ãã¹ãã追å ããã¦ãã·ã¹ãã ã®ä¿¡é ¼æ§ãé«ããªã£ãã¨æããã¾ãã ç¾å¨ã¯ç¤¾å ç°å¢ã¸ã®å°å ¥ã«åãã¦é²ãã¦ããã¨ããã§ãã
*1 ããã§diskã¨æ¸ãã¦ãã¾ãããå®éã«ã¯10å°ã®HDDã§ãã¼ãã¦ã§ã¢RAID6ãçµã¿ï¼+2å°ã®ãããã¹ã¯ããï¼ããã®ä¸ã«LVMã§ä½æããè«çããªã¥ã¼ã ãæãã¾ãã
ãã¼ãã¦ã§ã¢RAID6ã使ããã«LVMã ãã§ç®¡çããããªã¥ã¼ã ã«å¯¾ãã¦ã¯ä¸å
·åãçºçããªããã¨ã¯ç¢ºèªæ¸ã¿ã§ãï¼2016/1/13追è¨ï¼ã
åè : cybozu.com : ã客æ§ã®å¤§åãªãã¼ã¿ãå®ã4éã®ããã¯ã¢ãã