26 พ.ย. 2021 เวลา 05:57 • คริปโทเคอร์เรนซี
Monitor HDD ใน farm chia ตอนที่ 1
อ้างอิงจาก
JM ได้ออก video วิธีการ monitor HDD ใน farm ของเรา ว่าประสิทธิภาพยังดีอยู่ไหม ซึ่งเนื้อหาของ video น่าสนใจมากครับ ... วันนี้ผมเลยจะมาสรุปรายละเอียดให้ฟัง
เริ่มแรก JM ได้อธิบายเรื่องของ HDD ในปัจจุบันที่มีความจุสูงสุดจะใช้ media 9 disc 18 หัวอ่าน ... คือ 1 แผ่น media จะมีหัวอ่านสำหรับแผ่น media ทั้ง 2 ฝั่ง และวหัวอ่านก็จะมี arm ที่ขยับหัวอ่านไปกลับบน media เพื่ออ่านเขียนข้อมูล ยิ่งเราใช้จำนวน media ที่มากขึ้นจำนวนการ move ของหัวอ่านก็จะมีมากขึ้นตามไปด้วย ... ยิ่ง move เยอะโอกาสที่จะ fail ก็มีมากขึ้นด้วยเช่นกันเพราะนี้เป็นการ move ขนาด nano meter การ move แต่ล่ะครั้งจึงต้องแม่นยำมากๆ นอกจากนั้นยังมีเรื่องระยะห่างระหว่างหัวอ่านกับ media ที่จะต้องคงที่อยู่เสมอ
เมื่อ HDD ที่เราใช้เป็นเวลานาน มันจะมีการทำงานที่มากขึ้นต่างแต่ workload ที่ HDD ตัวนั้นทำงานอยู่ ... workload ในที่นี้ก็หมายถึการอ่านเขียนข้อมูลหนักๆ เช่น copy file ใหญ่ๆ ตลอดเวลาหรือรวมไปถึงการ plot ของ chia ด้วย ซึ่งถ้า workload เยอะ หัวอ่านก็จะวิ่งเข้าวิ่งออกไปอ่านเขียนข้อมูลบน media การวิ่งเข้าวิ่งออกนี้จะทำให้เกิด particles เล็กๆ ภายในตัว HDD และ particles นี้สามารถที่จะวิ่งไปชนหัวอ่าน ทำให้หัวอ่านเกิดความเสียหาย และทำให้ disc error
สำหรับ การทำ farm chia เราใช้ workload ไม่หนักมากนักจึงไม่จำเป็นต้อง protect data ไม่จำเป็นต้อง backup มันบ่อยๆ จึงไม่จำเป็นต้องใช้ raid ... ถ้าเราเจอ HDD fail เราก็แค่ replot ใหม่ แต่โอกาสที่ drive จะ fail น้อยมากเพราะ workload ของการทำ farm chia จะประมาณแค่ 0.6 iops (input and output per second) นี้มัน ... ทำให้บางครั้งเราสามารถใช้ HDD เก่าๆ มาทำ farm แม้ว่า performance ในการ read จะไม่ดีก็ตาม เพราะว่าใน 1 plot K32 จะมีโอกาสทำ proof ถึง 4.3 พันล้าน proofs ใน file เดียว ถ้า plot file ตกอยู่ในพื้นที่เสียของ HDD ก็ยังมีอีกหลาย plot ที่มีโอกาสชนะเงินรางวลัเหมือนกัน
แต่ถึงอย่างไรก็ตามเราก็ควรจะรู้ data ของ HDD ที่เรา farm อยู่หรือเรากำลังจะซื้อ HDD มือสองเราจะได้รู้ว่ามันคุ้มกับเงินที่เรากำลังจ่ายไปหรือเปล่า ... วิธีที่จะทำให้รู้ว่า ณ ตอนนี้สุขภาพของ HDD ยังดีอยู่รือเปล่า ก็ต้องมี smart data ของ HDD นั้นๆ
เราสามารถดึง smart data จาก HDD ได้ด้วยโปรแกรมที่ชื่อว่า smart monitor tools ซึ่งสามารถ download ได้ที่ https://www.smartmontools.org/ ใน section ของ Download
Download smart tool สำหรับWindows
ผมใช้ Windows ก็จะอ้างอิงสำหรับ Windows ในบทความนี้น่ะครับ ต่ถ้าใครใช้ linux ก็สามารถอ้างอิงบทความนี้ได้เหมือนกันเพราะคำสั่งกับ result เหมือนกันเลยและไม่มีอะไรต่าง .... แต่สำหรับ macOS ผมไม่มีเครื่องลองเลยไม่แน่ใจว่าจะเหมือนกันหรือเปล่า ... ใครมี macOS ลองดูได้ครับ
สำหรับ Windows หลังจากที่ลงโปรแกรมไปแล้วเราจะได้ start menu ของ Smart tool ให้เราเลือกเมนู smartctl (Admin CMD)
โปรแกรม smartctl (AdminCMD)
คำสั่งแรกที่ JM แนะนำคือ "scmartctl --scan ที่จะโชว์ drive ทั้งหมดใน PC ของเรา
drive ทั้งหมดที่มีในระบบด้วยคำสั่ง "smartctl --scan"
ใน Windows จะดู งง หน่อยเพราะมันไม่ได้บอกมาเป็น Drive C Drive D เหมือนที่ Windows มอง แต่จะบอกมาเป็น /dev/sda ... /dev/sdb
จะเห็นว่าจะขึ้นเป็น /dev/sd ซึ่งตัวต่อจากนั้นจะไล่เป็น a b c ... ไปเรื่อยๆ ตามลำดับ Drive C Drive D ที่ windows มองเห็น นั้นคือ /dev/sda = Drive C .... /dev/sdb = Drive D เป็นต้น
คำสั่งถัดไปที่ JM แนะนำคือวิธีการดูรายละเอียดของ drive แต่ล่ะลูก สมมุติว่าเราอยากรู้รายละเอียดของ Drive C ซึ่งก็คือ /dev/sda สามารถดูได้ด้วยคำสั่ง "smartctl -a /dev/sda" แล้วเราจะได้รายละเอียดของ drive ตัวนั้น
result ของคำสั่ง smartctl -a /dev/sda
ในส่วนแรกของ result ก็จะบอกว่า HDD ยี่ห้ออะไร serial number อะไรขนาดความจุเท่าไร firmware version อะไร ก็จะเป็นรายละเอียดทั่วๆ ไป แต่ส่วนที่สำคัญที่จะบอกรายละเอียดคือ section "SMART Attributes"
ตาราง SMART Attributes Data
ในตารางสังเกตุตรง TYPE จะมีคำว่า pre-fail ซึ่งหมายถึถ้าค่าตัวเลขใดๆ ถึง threshold (เกณฑ์ขั้นต่ำ) ตัว OS หรือ host controller ก็จะ trigger ไปบอก software ที่มีการ monitor HDD และมีการติด flag ว่า HDD ตัวนั้นๆ เริ่มที่จะเป็น bad HDD ... ซึ่ง TYPE pre-fail นี้แหละครับที่เราจะต้องสนใจ
Raw_Read_Error_Rate => JM บอกว่าโดยปกติค่าตัวเลขนี้จะไม่ถูก increase หรือมีค่าเป็น 0 แต่ถ้าค่าตัวเลขนี้มีมากกว่า 0 ก็เป็นไปได้ว่า HDD ได้รับการสั่นสะเทือน (vibration issue) ในช่วงที่มีการอ่านเขียนข้อมูล
Spin_Up_Time => ใช้เวลาในการ spin up เท่าไร ... spin up คือการหมุน media ให้ได้รอบตาม spec เช่น HDD มี spec 7000 rpm (rpm = revolutions per minute หมายถึงจำนวนครั้งที่หมุนรอบตัวเองต่อนาที) spin up time คือเวลาที่ HDD จากที่หยุดนิ่งๆ ต้องใช้เวลาเท่าไรในการหมุนให้ได้ที่ 7000 rpm
*** ผมไม่แน่ใจว่า spin up time มีหน่วยเป็นอะไร แต่เดาว่าน่าจะเป็น ms ถ้าบางคนเห็นเป็น 0 แสดงว่ารอบ rpm ต่ำมากๆ สั่งหมุนแป๊บเดียวได้รอบเลย ... แต่ถ้าใครตัวเลขนี้สูงๆ ให้ระวังในเรื่องของการ sleep mode เพราะ ถ้า HDD อยู่ใน sleep mode นั้นคือ media ไม่ spin เพราะอยู่ใน mode ประหยัดพลังงาน แล้วต้องการส่ง plot เข้าประกวด อาจจะส่งช้าไปเพราะ มั่ว แต่ spin media
Seek_Error_Rate => JM ยกตัวอย่าง DIY rig ที่คนส่วนใหญ่ทำโดยการเอา HDD หลายๆ ลูกมารวมกัน โดยเอามาแขวนบ้าง มาตั้งเป็นชั้นบ้าง material เป็นอลูมิเนียมบ้างหรือเป็นไม้บ้าง ... ซึ่งการทำแบบนี้ก็จะใช้เงินราคถูกกว่าซื้อ rack และ server ที่ป็น commercial ... อย่างที่เราทราบ HDD มีการ moving หัวอ่านระบบ นาโนเมตรอยู่ข้างในตัว แล้วการ moving หัวอ่านก็จะทำให้เกิด vibration เล็กๆ ... ที่นี้ถ้าเราเอา HDD หลายๆ ลูกมาต่อกันบน rig .... vibration ของ HDD ตัวหนึ่งอาจจะส่งผลไปให้ HDD ตัวข้างๆ กันด้วย ... ดังนั้นเวลาเราทำ rig เราจึงต้องมั่นใจว่า HDD แต่ล่ะตัวต้องห่างกันพอสมควร และมีการยึดที่แน่นหนา
Seek_Error_Rate ถ้าค่าสูงนั้นหมายถึง HDD ที่เรากำลัง monitor อยู่ได้รับ vibration ซึ่งอาจจะเป็นที่ตัว PC เองก็เป็นได้ที่ได้รับแรงสั่นสะเทือนจากภายนอกแล้วส่งแรงสั่นสะเทือนนั้นไปที่ HDD
*** ผมก็ไม่แน่ใจน่ะว่าเราควรจะ serious กับค่านี้หรือเปล่า ... เครื่องของผมค่านี้สูงมาก ... และยังไม่เคยได้รางวัลสักครั้ง .. ใครที่เคยได้รางวัลลองดูค่า Seek_Error_Rate ให้หน่อยครับว่าสูงหรือต่ำ ... ถ้าคนที่เคยได้รางวัลแล้ว Seek_Error_Rate ต่ำ ... ผมว่านี้ก็อาจจะเป็น KPIV ตัวหนึ่งที่เราต้องสนใจในการทำ farm
Reallocated_Sector_Ct กับ Current_Pending_Sector => ตัวเลขตรงนี้เป็นตัวเลขที่สำคัญมากที่เราจะ focus ... เมื่อ HDD มีการหมุนมาเรื่อยๆ จนเกิน particle ในตัว drive แล้วทำให้เกิดความเสียหายในตัว HDD ... firmware ของ HDD จะรู้ว่า sector ไหนบ้างที่เสียหายก็จะทำการ reallocate ข้อมูลใน sector นั้นไปไว้ที่ sector อื่น ... จำนวนครั้งที่ย้ายข้อมูลจะดู increase ลงใน parameter Reallocated_Sector_Ct จึงเป็นตัวเลขที่บอกจริงๆ ว่า HDD นี้ใกล้จะพังแล้วหรือยัง
เมื่อ firmware พบ lba (Logical block addressing - block ที่ใช้เก็บข้อมูลใน HDD) ที่เสียหายและจำเป็นต้องย้ายข้อมูล sector นั้น .. firmware จะใส่ data ลงไปใน Current_Pending_Sector ก่อนจนกระทั่งหา sector ใหม่ที่ดีแลเริ่ม reallocate data จนสำเร็จ
นั้นหมายถึงถ้าเราเริ่มเห็น Reallocated_Sector_Ct กับ Current_Pending_Sector เพิ่มขึ้นเรื่อยๆ นั้นหมายถึง HDD เราเริ่มสุขภาพไม่ดีแล้วล่ะ ... แต่ก็อย่าวิตกจนเกินไป ถ้าเห็นตัวเลข 2 ตัวนี้ไม่ใช่ 0 มันอาจจะมี fail แค่นั้นก็ได้ แต่ต้องระวังมากๆ เมื่อตัวเลขมันเริ่มขยับขึ้นเรื่อยๆ
เพื่อไม่ให้ยาวจนน่าเบื่อ เดียวเรามาต่อตอน 2 กันครับ
ขอบคุณทุกท่านที่ติดตาม happy farming ครับ
โฆษณา