Please enable JavaScript.
Coggle requires JavaScript to display documents.
บทที่10 โครงสร้างของหน่วย เก็บข้อมูลสำรอง - Coggle Diagram
บทที่10
โครงสร้างของหน่วย
เก็บข้อมูลสำรอง
โครงสร้าง
ของดิสก์
ดิสก์ คือ ก้อนของหน่วยเก็บข้อมูลส่ารองส่าหรับระบบคอมพิวเตอร์ยุคใหม่ ส่วนประกอบภายใน
ฮาร์ดดิสก์จะประกอบด้วยแผ่นวงกลมที่มีขนาด 2-5.25 นิ้วเรียงซ้อนกัน
เครื่องขับดิสก์ (Disk drive) ยุคใหม่ ถูกพูดถึงเหมือนเป็นอาร์เรย์ 1 มิติขนาดใหญ่ของบล็อกทางตรรกะ (Logical block) ซึ่งบล็อกทางตรรกะคือหน่วยที่เล็กที่สุดของการโอนย้ายข้อมูล ขนาดของบล็อก
การจัดตาราง
ของดิสก์
Disk bandwidth
ในเรื่องเวลาในการเข้าถึงมี 2 องค์ประกอบหลัก
เวลาในการค้นหา (Seek time)
เวลาในการหมุนหัวอ่าน (Rotational latency)
การจัดตารางแบบมาก่อน-ได้ก่อน (FCFS Scheduling)
พิจารณาตัวอย่าง ถ้าแถวคอยของดิสก์ มีการร้องขอการรับส่งข้อมูลของบล็อกบนไซลินเดอร์ดังนี้
98 , 183 , 37 , 122 , 14 , 124 , 65 , 67 ตามล่าดับ ถ้าหัวอ่านเริ่มต้นที่ไซลินเดอร์ที่ 53 มันจะเริ่มเคลื่อนในครั้งแรกจาก 53 ไป 98 แล้วจึงไป 183 , 37 , 122 , 14 , 124 , 65 และสุดท้ายที่ 67
ส่าหรับการเคลื่อนย้ายหัวอ่านทั้งหมด 640 ไซลินเดอร์
การจัดตารางแบบเวลาในการค้นหาสั้นที่สุดได้ก่อน (SSTF Scheduling)
จะเลือกการร้องขอที่มีเวลาในการค้นหาน้อยที่สุดจากต่าแหน่งปัจจุบันของหัวอ่าน
จะเห็นได้ว่าการร้องขอที่ใกล้กับต่าแหน่งเริ่มต้นของหัวอ่านที่สุด (53) คือ ที่ไซลินเดอร์ 65 เมื่อเราเคลื่อนมาที่ไซลินเดอร์ 65 การร้องขอที่ใกล้ที่สุดถัดไปคือที่ไซลินเดอร์ 67 จากนั้น
การร้องขอที่ไซลินเดอร์ 37 จะใกล้กว่า 98 ดังนั้น 37 จะได้รับบริการถัดไป ต่อมาท่าการบริการการร้องขอที่ไซลินเดอร์ 14 แล้วเป็น 98 , 122 , 124 และสุดท้ายที่ 183
การจัดตารางแบบกวาด (SCAN Scheduling)
ในวิธีแบบกวาด (SCAN) แขนของดิสก์เริ่มต้นที่จุดสิ้นสุดจุดหนึ่งของดิสก์ (A) และเคลื่อนไปยังจุดสิ้นสุดอื่น (B) การบริการการร้องขอจะท่าได้เมื่อมันมาถึงในแต่ละไซลินเดอร์ จนกระทั่งมันไปถึงlจุดสิ้นสุดทิศทางของการเคลื่อนของหัวอ่านจะถูกย้อนกลับ
พิจารณาตัวอย่างเดิมก่อนจะใช้วิธีจัดตารางแบบกวาด กับการร้องขอบนไซลินเดอร์ 98, 183, 37,122, 14, 124, 65 และ 67 เราจ่าเป็นต้องรู้ทิศทางของการเคลื่อนหัวอ่านก่อน โดยถ้าตอนนี้ต่าแหน่ง
ปัจจุบันของหัวอ่านคือ 53 ถ้าแขนของดิสก์ก่าลังเคลื่อนไปทาง 0 หัวอ่านจะบริการ 37 และจากนั้นเป็น 14ที่ไซลินเดอร์ 0 แขนจะย้อนกลับและจะเคลื่อนผ่านจุดสิ้นสุดอื่นของดิสก์ (ที่ไม่ใช่ 0) การบริการการร้องขอจะท่าที่ 65 , 67 , 98 , 122 , 124 และ 183
การจัดตารางแบบ LOOK (LOOK Scheduling)
จะเห็นว่า ทั้งแบบกวาดและกวาดเป็นวงจะเคลื่อนแขนดิสก์ไปทั่วทั้งดิสก์ ในทางปฏิบัติไม่มีวิธีไหน
ที่เอาไปใช้จริงได้
ในความเป็นจริงแขนดิสก์จะไปไกลเพียงแค่การร้องขอสุดท้ายเท่านั้นในแต่ละทิศทางจากนั้นมันก็จะย้อนกลับไปอีกทางทันทีโดยไม่ต้องไปจุดสิ้นสุดของดิสก์ การท่าเช่นนี้เรียกว่า LOOK และC-LOOK เพราะมันมองการร้องขอก่อนจะเคลื่อนไปยังทิศทางที่ได้
การจัดตารางแบบกวาดเป็นวง (C-SCAN Scheduling)
การกวาดเป็นวง (Circular SCAN เรียกย่อว่า C-SCAN)
การเปลี่ยนแปลงของการกวาดซึ่งถูกออกแบบมาเพื่อจัดการกับเวลารอคอยที่มากกว่า 1 รูปแบบ เหมือนกับแบบกวาด แบบกวาดเป็นวงจะ
เคลื่อนหัวอ่านจากจุดสิ้นสุดจุดหนึ่ง (A) ของดิสก์ไปสู่อีกจุดหนึ่ง (B) มันจะกลับไปสู่จุดเริ่มต้นของดิสก์ในทันที โดยไม่บริการการร้องขอใด ๆ ในขากลับนี้การจัดตารางแบบกวาดเป็นวงนี้เป็น
สิ่งจ่าเป็นส่าหรับการจัดการกับไซลินเดอร์แบบวงกลม ซึ่งล้อมรอบจากไซลินเดอร์สุดท้ายไปสู่ไซลินเดอร์แรก
การเลือกวิธีการจัดตารางของดิสก์(Selection of a Disk-Scheduling Algorithm)
วิธี SSTF
ดูจะธรรมดาและความเป็นไปได้ตามธรรมชาติ วิธี SCAN และ C-SCAN ใช้ได้ดีส่าหรับ
ระบบที่มีภาระหนักบนดิสก์ เพราะมันจะเกิดปัญหาการแช่แข็งได้ยาก ส่าหรับรายการของการร้องขอ
การจัด
การดิสก์
การจัดระเบียบดิสก์(Disk Formatting)
กระบวนการนี้เรียกว่า “การจัดระเบียบระดับต่่า”
(Low-level formatting)
การจัดระเบียบระดับต่่าจะเติมโครงสร้างข้อมูลพิเศษลงไปในแต่ละเซกเตอร์ของดิสก์ โครงสร้างข้อมูลส่าหรับเซกเตอร์ประกอบด้วย หัวอ่าน (Header) พื้นที่ของข้อมูลที่มักมีขนาด 512 ไบต์และส่วนท้ายของหัวอ่าน (Trailer) มีการบรรจุสารสนเทศที่ถูกใช้โดยตัวควบคุมดิสก์
เพื่อใช้ดิสก์เก็บแฟ้มข้อมูล ระบบปฏิบัติการยังคงต้องการบันทึกโครงสร้างข้อมูลบนดิสก์ โดย
ท่างานเป็น 2 ขั้นตอน คือ
การจัดระเบียบเชิงตรรกะ
(Logical formatting) หรือ “การท่าระบบแฟ้มข้อมูล” (Makinga file system) ในขั้นตอนนี้ ระบบปฏิบัติการจะเก็บโครงสร้างข้อมูลของระบบแฟ้มข้อมูลเริ่มแรกไว้บนดิสก์ โครงสร้างข้อมูลเหล่านี้อาจรวมถึงแผนที่ของที่ว่างและการจัดสรรพื้นที่ (FAT) และ ไดเรกทอรี่ว่าง
ดิสก์
โครงสร้างข้อมูลเหล่านี้อาจรวมถึงแผนที่ของที่ว่างและการจัดสรรพื้นที่ (FAT) และ ไดเรกทอรี่ว่างสามารถจัดการแต่ละส่วนเป็นเหมือนดิสก์ที่แยกจากกัน ตัวอย่างเช่น พาร์ติชั่นหนึ่งอาจจะเก็บโปรแกรมของระบบปฏิบัติการ ในขณะที่อีกพาร์ติชั่นเก็บแฟ้มข้อมูลของผู้ใช้หลังจากท่าการแบ่งส่วน
บูตบล็อก (Boot Block)
Bootstrap จะถูกเก็บไว้ใน ROM (Read-only memory)
ROM ไม่จ่าเป็นต้องใช้ตั้งแต่แรก และมันเป็นต่าแหน่งที่แน่นอนคงที่ซึ่งหน่วยประมวลผลสามารถ
เริ่มท่างานเพื่อเปิดเครื่องหรือ Reset เครื่อง และเพราะ ROM ใช้อ่านได้อย่างเดียว
ปัญหา
การเปลี่ยนแปลงโค๊ดของ Bootstrap จ่าเป็นต้องเปลี่ยนชิป ROM ด้วย ด้วยเหตุ
นี้ ระบบส่วนใหญ่จะเก็บโปรแกรม Bootstrap loader เล็ก ๆ ไว้ใน Boot ROM เมื่อต้องการใช้งานก็ค่อยน่าโปรแกรม Bootstrap แบบเต็มเข้ามาจากดิสก์
Bootstrap
เป็นโปรแกรมการเริ่มต้นทั้งหมดของระบบ เริ่มจากซีพียูตัวควบคุมอุปกรณ์ และหน่วยความจ่าหลัก แล้วจึงเริ่มน่าระบบปฏิบัติการเข้าสู่ระบบ โดยมันจะหาแก่น(kernel) ของระบบปฏิบัติการในดิสก์ แล้วน่าแก่นนั้นเข้าสู่หน่วยความจ่าและกระโดดไปสู่ต่าแหน่งเริ่มต้นเพื่อเริ่มการท่างานของระบบปฏิบัติการ
Boot ROM
ตัวควบคุมดิสก์จะอ่านค่าสั่งใน Boot ROM จาก Boot block เข้าสู่หน่วยความจ่า (จากนั้นก็เริ่มท่างานตามค่าสั่งดังกล่าวโปรแกรมBootstrap แบบเต็มสามารถที่จะน่าระบบปฏิบัติการจากต่าแหน่งที่ไม่ตายตัวมาไว้บนดิสก์ได้ แล้วจึงเริ่ม
ให้ระบบปฏิบัติการท่างาน
บล็อกเสีย (Bad Block)
ในระบบดิสก์อย่างง่าย
ถ้าบล็อกเกิดเสียในระหว่างการท่างานปกติ
โปรแกรมพิเศษ (เช่น Chkdsk) ต้องถูกสั่งให้ท่างานเพื่อค้นหาบล็อกเสีย
และล็อคบล็อกเหล่านั้นไว้ไม่ให้ใช้ข้อมูลที่อยู่ในบล็อกเสียก็จะเสียไปโดยปริยาย
ดิสก์ที่มีตัวควบคุมแบบ IDE
เราสามารถจัดการกับบล็อกเสียได้ (โดยผู้ใช้สั่งให้ท่า) เช่น ค่าสั่ง format ของ MS-DOS เป็นการจัดระเบียบทางตรรกะและจะท่าการหาบล็อกเสียบนดิสก์
ถ้าหาเจอจะเขียนค่าพิเศษไว้ในช่องของ FAT ที่ตรงกันเพื่อบอกให้โปรแกรมย่อยต่าง ๆ ไม่ให้ใช้บล็อกนั้น
ส่าหรับดิสก์แบบ SCSI
สามารถกู้บล็อกเสียคืนได้ โดยตัวควบคุมจะเก็บรายการของบล็อกเสียบนดิสก์ รายการนี้ถูกเก็บมาตั้งแต่ตอนจัดระเบียบดิสก์ระดับต่่าจากโรงงาน และถูกท่าให้ทันสมัยตลอดเวลา
การเปลี่ยนที่ (Forwarding)
คราวหน้าเมื่อบูตระบบใหม่ ค่าสั่งพิเศษจะท่างานเพื่อบอกตัวควบคุม SCSI เพื่อแทนเซกเตอร์ที่เสียด้วยเซกเตอร์อะไหล่
ระบบปฏิบัติการพยายามอ่านบล็อกทางตรรกะที่ 87ตัวควบคุมจะท่าการค่านวณรหัสถูก-ผิด (ECC) และพบว่าเซกเตอร์นั้นเสีย มันจะรายงาน
หลังจากนั้น เมื่อระบบร้องขอบล็อกทางตรรกะที่ 87 การร้องขอนั้นจะถูกแปลไปยังต่าแหน่ง
ของเซกเตอร์ที่ถูกแทนที่โดยตัวควบคุม
การจัดการพื้นที่ที่
ใช้ในการสับเปลี่ยน
ตำแหน่งของพื้นที่ที่ใช้ในการสับเปลี่ยน (Swap-Space Location)
พื้นที่ที่ใช้ในการสับเปลี่ยนสามารถถูกตัดออกจากระบบแฟ้มข้อมูลปกติ ถ้าการสับเปลี่ยนพื้นที่ทำได้ง่ายกับแฟ้มข้อมูลขนาดใหญ่ภายในระบบแฟ้มข้อมูล โปรแกรมย่อยระบบแฟ้มข้อมูลปกติควรจะถูกใช้เพื่อสร้าง เพื่อระบุชื่อ และเพื่อจัดสรรพื้นที่ให้กับแฟ้มนั้น ๆ วิธีนี้นำไปใช้จริงได้ง่ายแต่ไม่มีประสิทธิภาพ
ใช้ส่วนของดิสก์ที่แยกออกมา เพื่อสร้างพื้นที่ ๆ ใช้ในการสับเปลี่ยน จึงไม่มีระบบแฟ้มข้อมูลหรือโครงสร้างของไดเรกทอรี่บนพื้นที่นี้
ตัวจัดการหน่วยเก็บพื้นที่ ๆ จะใช้ในการสับเปลี่ยนจะถูกใช้ในการจัดสรรหรือยึดบล็อกคืนมาสู่ระบบ ตัวจัดการนี้ใช้อัลกอริทึ่มที่ดีที่สุดส่าหรับความเร็ว เพื่อให้ได้ประสิทธิภาพการสูญเสียพื้นที่ย่อยภายในอาจจะเพิ่มขึ้น
การจัดการพื้นที่ที่ใช้ในการสับเปลี่ยน (Swap-Space Management)
พื้นที่ที่ใช้ในการสับเปลี่ยนถูกจัดสรรให้แก่โพรเซส
เมื่อโพรเซสเริ่มต้น พื้นที่จะถูกจัดสรรให้เพื่อเก็บโปรแกรมอย่างเพียงพอ โดยเก็บหน้าของข้อความ (Text page)และตอนของข้อมูลของโพรเซส
ก่อนการจัดสรรพื้นที่ต้องการทั้งหมด ด้วยวิธีนี้เป็นการป้องกันโพรเซสจากการท่างานใช้ในการสับเปลี่ยนในขณะที่กำลังทำงาน
เมื่อโพรเซสเริ่มต้นท่างาน ข้อความจะถูกแบ่งเป็นหน้าจากระบบแฟ้มข้อมูล หน้าเหล่านี้จะถูกเขียนเมื่อจำเป็นและถูกอ่านย้อนหลังจากตรงนั้น ดังนั้นแฟ้มข้อมูลจะถูกพิจารณาเพียงครั้งเดียว
การใช้พื้นที่ที่ใช้ในการสับเปลี่ยน (Swap-Space Use)
พื้นที่ที่ใช้ในการสับเปลี่ยน ถูกใช้ได้หลายวิธีโดยหลายระบบปฏิบัติการที่ต่างกัน ขึ้นอยู่กับการอาจใช้พื้นที่ที่ใช้ในการสับเปลี่ยนจ่านวนของพื้นที่ที่ใช้ในการสับเปลี่ยน ที่ต้องการของระบบขึ้นอยู่กับจำนวนของหน่วยความจำทางกายภาพ
การใช้งานหน่วย
เก็บข้อมูลชนิดคงที่
ถ้าเกิดความล้มเหลวอีกในระหว่างการกู้คืนดิสก์จะทำงานจนได้ผลลัพธ์หนึ่งในสามข้อนี้ คือ
ล้มเหลวบางส่วน (Partial failure) ความล้มเหลวเกิดขึ้นระหว่างการโอนย้ายข้อมูล ดังนั้นเซกเตอร์บางส่วนจะถูกเขียนด้วยข้อมูลใหม่ และเซกเตอร์ที่ถูกเขียนในระหว่างเกิดการล้มเหลวอาจจะผิดพลาด
ล้มเหลวทั้งหมด (Total failure) ความล้มเหลวเกิดขึ้น ก่อนที่ดิสก์จะเริ่มเขียน ดังนั้นค่าของข้อมูลบนดิสก์ก็จะเหมือนเดิมก่อนที่จะเกิดการเขียนใด ๆ
ส่าเร็จอย่างสมบูรณ์แบบ (Successful completion) ข้อมูลถูกเขียนลงดิสก์ได้อย่างถูกต้อง
โดยนิยามแล้ว ข้อมูลที่อยู่ในหน่วยเก็บข้อมูลชนิดคงที่จะไม่มีทางสูญหายไปไหน การน่าหน่วยเก็บ
ข้อมูลไปใช้ เราจ่าเป็นต้องคัดลอกข้อมูลที่ต้องการไปไว้ยังอุปกรณ์ที่ใช้เก็บข้อมูลหลาย ๆ ที่
ถ้าความล้มเหลวเกิดในระหว่างการเขียนบล็อก เมื่อระบบตรวจพบแล้วจะท่าการกู้บล็อกนั้นคืน
ระบบต้องเก็บบล็อกทางกายภาพ 2 บล็อก ไว้ให้บล็อกทางตรรกะแต่ละบล็อก ผลลัพธ์ที่ได้มีดังนี้
เมื่อเขียนบล็อกแรกเรียบร้อย ก็เขียนข้อมูลเดียวกันลงยังบล็อกทางกายภาพอีกบล็อก
ประกาศว่าการท่างานเสร็จสิ้นหลังจากการเขียนบล็อกที่สองส่าเร็จเท่านั้น
เขียนข้อมูลลงบนบล็อกทางกายภาพบล็อกแรก
ความน่าเชื่อ
ถือของดิสก์
การนำ RAID มาใช้ร่วมกัน
การน่าข้อดีของ RAID ในแต่ละระดับมารวมกันเพื่อใช้งาน ซึ่งนั่นหมายถึง ถ้าเราสามารถรวมข้อดีของ RAID ในแต่ละล่าดับขั้นไว้ด้วยกัน อาจท่าให้การท่างานมีประสิทธิภาพมากขึ้นก็เป็นได้
ระดับของ RAID
RAID 2
ข้อมูลทั้งหมดจะถูกตัดแบ่งเพื่อจัดเก็บลงฮาร์ดดิสก์แต่ละตัวใน Disk array โดยจะมีฮาร์ดดิสก์ตัวหนึ่งเก็บข้อมูลที่ใช้ตรวจสอบและแก้ไขข้อผิดพลาด (Error checking and correcting :ECC) ซึ่งเป็นการลดเปอร์เซ็นต์ที่ข้อมูลจะเสียหายหรือสูญเสียไป
RAID 0
คือการเอาฮาร์ดดิสก์มากกว่า 1 ตัวมาต่อร่วมกันในลักษณะ Non-redundant ซึ่งRAID 0 นี้มีจุดประสงค์เพื่อที่จะเพิ่มความเร็วในการอ่าน/เขียนข้อมูลฮาร์ดดิสก์โดยตรง ไม่มีการเก็บข้อมูล
RAID 3
มีลักษณะที่คล้ายกับ RAID 2 แต่แทนที่จะตัดแบ่งข้อมูลในระดับบิตเหมือน RAID 2 ก็จะตัดเก็บข้อมูลในระดับ Byte แทนและการตรวจสอบและแก้ไขข้อผิดพลาดของข้อมูล จะใช้ Parityแทนที่จะเป็น ECC ท่าให้ RAID 3 มีความสามารถในการอ่านและเขียนข้อมูลได้อย่างรวดเร็ว เพราะมีการต่อฮาร์ดดิสก์แต่ละตัวแบบ stripe
RAID 4
มีลักษณะโดยรวมเหมือนกับ RAID 3 ทุกประการ ยกเว้นเรื่องการตัดแบ่งข้อมูลที่ท่าในระดับ Block แทนที่จะเป็น Bit หรือ Byte
RAID 5
มีการตัดแบ่งข้อมูลในระดับ Block เช่นเดียวกับ RAID 4 แต่จะไม่ท่าการแยกฮาร์ดดิสก์ตัวใดตัวหนึ่งเพื่อเก็บ Parity ในการเก็บ Parity ของ RAID 5 นั้น จะท่าการกระจาย Parity ไปยังฮาร์ดดิสก์ทุกตัว
RAID 1
มีอีกชื่อหนึ่งว่า Disk mirroring จะประกอบไปด้วยฮาร์ดดิสก์2 ตัวที่เก็บข้อมูลเหมือนกันทุกประการ เสมือนการส่ารองข้อมูล หากฮาร์ดดิสก์ตัวใดตัวหนึ่งเกิดเสียหาย ระบบยังสามารถดึงข้อมูลจากฮาร์ดดิสก์อีกตัวหนึ่งมาใช้งานได้ตามปกติ
ประโยชน์ของ RAID
ยังสามารถขยายหน่วยความจ่า โดยการผนวกหลาย ๆ ไดรฟ์เข้าด้วยกันแต่ประสิทธิผลนั้น
RAID จะถูกใช้เพื่อป้องกันความผิดพลาดในการเก็บข้อมูล และเพิ่มระดับการจัดเก็บด้วย
ที่ส่าคัญป้องกันการจัดเก็บข้อมูลในกรณีที่ฮาร์ดไดรฟ์เกิดท่างานผิดพลาด
RAID ก็คือการเพิ่มประสิทธิภาพในการเก็บข้อมูลให้ดีขึ้น เพราะในแต่ละระดับของ RAID ที่เลือกใช้ ความแตกต่างของประสิทธิภาพก็จะแตกต่างกันไป โดยเฉพาะการใช้งานกับแอพพลิเคชันที่ต้องการความเร็วสูง
RAID
/
การจัดการRAID
อาร์เรย์ที่เหลือเฟือของดิสก์อิสระ
(Redundant array of independentdisk : RAID)
วิธีนี้เป็นการเพิ่มความน่าเชื่อถือของระบบหน่วยเก็บข้อมูลโดยการเก็บข้อมูลที่เหลือเฟือ การจัดการ RAID ที่ง่ายที่สุด เรียกว่า การส่ารองข้อมูล
การจัดการ RAID เรียกว่า ความตรวจสอบบล็อกขาออก
(Block interleaved parity)
โดยใช้พื้นที่ของดิสก์เพียงเล็กน้อยในการเก็บบล็อกตรวจสอบ (Parity block)