เมอื่ เขา ถงึ คอนโซลของเคร่ืองคอมพิวเตอรเ สมือน ผอู า นสามารถตรวจสอบไดว าดสิ กเ สมือนท่ีแนบเขาไป กับเคร่อื งคอมพิวเตอรเ สมอื นนั้น ระบบปฏบิ ตั ิการรบั รหู รอื ไมดว ยคำสง่ั # fdisk -l /dev/vdb โดยท่ี /dev ที่ไดเรกทอรีของอุปกรณที่เชื่อมตอกับระบบปฏิบัติการ และ vdb เปนชื่อดิสกที่กำหนดไว ตอนเพิ่มเขา ไปในเคร่ืองคอมพิวเตอรเสมอื น จะไดผ ลลพั ธด งั ภาพท่ี 7.4 ภาพท่ี 7.4 หนา จอผลลัพธคำสงั่ ตรวจสอบขนาดของดสิ กใ นเครอ่ื งคอมพิวเตอรเสมือน ในขัน้ ตอนทีส่ อง ผอู านจะตอ งการฟอรแมต และเพ่มิ พื้นทดี่ สิ กเ ขาไปในเครื่องคอมพิวเตอรเ สมือนเพื่อให ระบบปฏิบัติการสามารถนำไปใชงานได โดยการเพิ่มดิสกเขาไปในระบบปฏิบัติการลีนุกซ มีวิธีการเพิ่มได 2 รูปแบบที่เปน ท่นี ยิ ม คอื แบบท่ี 1 เพิ่มดิสกเขาไปโดยตรงและเชื่อมดิสกนั้นกับไดเรกทอรีในระบบปฏิบัติการ การเพิ่มดิสกดวย วิธีการนี้ ดิสกเสมือนที่เพิ่มเขาไปจะอยูเปนเอกเทศไปเกี่ยวของกับกลุมของดิสกเสมือนเดิมที่เชื่อมตออยูแลว ขอดี คือ ผูอานสามารถลบออกหรือถอดดิสกเสมือนนี้ออกจากเครื่องคอมพิวเตอรเสมือนในภายหลังได แต ขอเสีย คือ การเพิ่มพื้นที่เปนจะเปนเพิ่มพื้นที่ใหกับไดเรกทอรีที่เชื่อมตอเพียงไดเรกทอรีเดียว จะไมสามารถ พ้นื ท่ใี หก ับ ไดเรกทอรรี ทู (/) เพื่อใหท กุ ไดเรกทอรีสามารถรว มใชงานพน้ื ทจ่ี ากดสิ กเสมือนนไี้ ด แบบท่ี 2 เพิม่ ดิสกเขาไปในกลมุ ของดสิ กเ ชิงตรรกะ (Logical disk) โดยคา เร่ิมตนของการตดิ ตัง้ CentOS 8 จะเปนช่อื ของกลมุ ดสิ กเ ชิงตรรกะวา cl ผอู านสามารถนำพ้ืนที่ของดสิ กเ สมือนใหมเขาไปรวมกับกลุมของดิสก เชิงตรรกะที่มีอยูและขยายพารทติชันเดิมใหมีขนาดใหญขึ้นก็ได ขอดี คือ ผูอานมีความยืดหยุนสามารถเลือก ขยายพารทติชันที่มีอยูเดิมไดตามตองการ ขอเสีย คือ เมื่อใชพื้นที่ดิสกเสมือนเพิ่มเขาไปในกลุมของดิสกเชิง ตรรกะจะไมสามารถลบหรือถอดดิสกเสมือนออกจากเครื่องคอมพิวเตอรเสมือนนี้ได หากถอดออกอาจทำให ระบบปฏิบัติการไมส ามารถทำงานได หรอื ขอมลู ในกลมุ ของดิสกเชงิ ตรรกะเสยี หาย การเพิ่มดิสกเสมือนใหระบบปฏิบัติการรูจักในแบบท่ี 1 ผูอานสามารถใชโปรแกรม fdisk เพื่อแบง พารท ติชนั กอน โดยสามารถใชค ำส่ัง ดังน้ี # fdisk /dev/vdb 131
ภาพท่ี 7.5 หนาจอผลลัพธก ารสรา งพารทติชนั จากนนั้ กดปุม n เพ่ือสรา งพารทตชิ นั ใหม จากนนั้ กดปุม Enter เพอ่ื เลือกขอมลู ตอ ไปน้ีตามลำดับ 1) ประเภทของพารท ตชิ ัน โดยทั่วไปดิสกหนึ่งสามารถมีพารทติชันแบบ Primary ไดทั้งหมด 4 พารทติชัน แตหากตองการแบงพารทติชันมากกวา 4 พารทติชัน ดิสกนั้นจะมีพารทติชันแบบ Primary ไดเพียง 3 พารทติชันและพารทติชันที่เหลือเปน Extended ในกรณีนี้ หากผูอานสราง พารท ตชิ ันแรกจะตองเปน Primary อยแู ลว โดยคา เริม่ ตนจะเปน p หมายถงึ เลอื ก Primary อยแู ลว ผูอ านสามารถกด Enter ไดท ันที 2) เลือกเซกเตอรแรกของพารทติชัน โดยคาเริ่มตนจะเลือกเซกเตอรที่ติดกับพารทติชันกอนหนา หาก ไมม ีจะมีคา เรม่ิ ตนเปน 1 ตวั เลือกนี้ผอู านสามารถใชคา เริม่ ตน และกด Enter ไดท นั ที 3) เลือกเซกเตอรสุดทายของพารทติชัน ใชเปนตัวระบุขนาดของพารทติชัน สามารถใชเครื่องหมาย บวกและตามดวยตัวเลขพรอมหนวยนับได เชน 1G หมายถึง หนึ่งกิ๊กกะไบต 500M หมายถึง หา รอยเมกะไบต เปนตน โดยคาเริ่มตนจะเปนเซกเตอรสุดทายที่วางอยู ซึ่งหมายถึงใชพื้นที่ที่เหลือ ท้งั หมดของดสิ กสรา งพารทตชิ นั ในกรณนี ้ี หากตองการเพยี ง 1 พารท ตชิ ัน ผอู า นสามารถกด Enter ไดท นั ที หรือระบุขนาดตามตองการ ในกรณีที่ตองการสรางพารทติชันแลวมีพื้นที่เหลือ ผูอานสามารถดำเนินการขั้นตอนสรางพารทติชันได จนจำนวนและขนาดของพารทติชันตามตองการ จากนั้นเลือก w เพื่อบันทึกและออกจากโปรแกรม ดังภาพท่ี 7.5 ผูเขยี นเลือกพารท ตชิ นั ที่มีขนาดเต็มดสิ กเ พยี งพารทตชิ ันเดยี ว จะไดพ ารท ติชนั ที่มีขนาดตามขนาดของดิสก จำนวน 1 พารทติชันชื่อ vdb1 จากนั้นจึงฟอรแมตดิสกใหมีระบบแฟมขอมูลเปน xfs ซึ่งเปนระบบแฟมขอมูล แนะนำของระบบปฏิบตั ิการ CentOS 8 ดว ยคำส่ัง # mkfs.xfs /dev/vdb1 132
จากนั้นสามารถทดสอบการเชื่อมตอกับระบบแฟมขอมูลปจจุบันไดดวยคำสั่ง mount โดยจะเชื่อม พารทติชนั นัน้ ไปยังไดเรกทอรีท่ีตองการ เชน หากตอ งการเชื่อมตอ ไดเรกทอรี /mnt/disk2 สามารถใชค ำสั่ง # mkdir /mnt/disk2 # mount /dev/vdb1 /mnt/disk2 เมื่อพิมพคำสั่งเสรจ็ ผูอานจะสามารถเขาถึงดิสกที่เพิม่ ขึ้นจากไดเรกทอรี /mnt/disk2 ไดเรียบรอย โดย สามารถใชค ำสั่งdf -h ตรวจสอบได ดงั ภาพท่ี 7.6 ภาพท่ี 7.6 หนาจอการฟอรแมตและเชื่อมตอ พารท ติชัน อยา งไรก็ตามเพิ่มดสิ กดวยวิธีดงั กลาว ไมมีผลลัพธคงทนเม่ือรบี ูตเครื่อง หากผูอ า นตองการใหมีผลคงทน เม่อื รีบูตเคร่ืองจะตอ งแกไ ขแฟมขอมลู /etc/fstab ดว ยคำส่งั # vi /etc/fstab จากน้นั ใหเพมิ่ การเช่อื มตอพารท ตชิ นั กบั ไดเรกทอรีตามบรรทดั สดุ ทา ยของภาพท่ี 7.7 133
ภาพท่ี 7.7 หนจ อเน้อื หาของแฟมขอมูล fstab สำหรับการเพิ่มดิสกเสมือนใหระบบปฏิบัติการรูจักในแบบท่ี 2 ผูอานไมจำเปนตองใชโปรแกรม fdisk เพ่อื แบงพารท ตชิ ัน โดยสามารถเปลย่ี นฮารดดสิ ก vdb ใหมรี ะบบแฟมขอ มลู ทีเ่ หมาะสมกอน ดว ยคำสง่ั # pvcreate /dev/vdb จากนั้นผูอานจะตองตรวจสอบวาเดิมระบบปฏิบัติการสรางกลุมของพารทติชันเสมือนไวชื่ออะไรดวย คำสั่ง # vgscan จากภาพที่ 7.8 ระบบปฏิบัติการสรางกลุมพารทติชันเสมือน ชื่อ cl ผูอานสามารถนำดิสก /dev/vdb เขา ไปเพิ่มพนื้ ท่รี วมกบั กลุม พารทติชันเสมือน cl ไดดว ยคำสงั่ # vgextend cl /dev/vdb จะไดผ ลลพั ธดังภาพที่ 7.8 วา กลุมพารท ตชิ ันเสมือน cl ไดถกู ขยายขนาดแลว ภาพที่ 7.8 หนาจอผลลัพธก ารขยายขนาดของพารท ติชัน จากน้นั ผอู านสามารถตรวจสอบขนาดท่เี หลอื ใชจ ากกลุมพารทตชิ นั เสมือน cl ไดจากคำส่ัง # vgdisplay cl จะไดผลลัพธดังภาพที่ 7.9 กลุมพารทติชันเสมือน cl มีพื้นที่คงเหลือจากการจัดสรร (Free PE/Size) เปน 5.00 GiB หรอื 5 กกิ๊ กะไบต ซึง่ ตรงกบั ขนาดของดสิ กทเี่ พมิ่ เขาไป 134
ภาพที่ 7.9 หนา จอผลลัพธค ำส่งั แสดงกลุมพารทติชนั และพ้ืนท่ีเหลือจากการจดั สรร เนอ่ื งจากในขัน้ ตอนการติดต้ังระบบปฏิบตั กิ ารบนคลาวดสวนใหญ ดสิ กทน่ี ำมาใชเ ปนดิสกเสมอื นทั้งหมด ดงั นนั้ การติดต้ังระบบปฏบิ ัติของผใู หบริการคลาวดสว นใหญจึงเปนแบบอัตโนมตั ิ ทำใหพารทติชันที่เก็บขอมูล สวนใหญจะเปน / (อานวา รูทพารทติชัน) เทานั้น ดังนั้น การจัดสรรดิสกใหมที่ดี เพื่อใหเกิดความยืดหยุนจึง ควรจัดสรรพื้นทีเ่ พิ่มไปทีร่ ูทพารทติชันดว ย เพราะจะทำใหแอปพลิเคชันหรือโปรแกรมทีต่ ิดตั้งสามารถใชพื้นท่ี รว มดวยกนั ผูอา นสามารถตรวจสอบพารทตชิ ันเสมอื น root ทีอ่ ยใู นกลุมพารท ตชิ ันเสมือน cl ดว ยคำสงั่ # lvdisplay cl จะปรากฎรายการของพารทตชิ นั เสมือนท่ีใชพืน้ ท่ีในกลุมพารท ตชิ นั เสมือน cl ดงั ภาพท่ี 7.10 ซึ่งปจ จุบัน รูทพารท ติชันมพี ้นื ท่ีประมาณ 12.50 กก๊ิ กะไบต และมพี ารทวา /dev/cl/root ภาพท่ี 7.10 หนา จอผลลัพธคำส่ังแสดงพารท ตชิ นั เสมือนที่ใชพ นื้ ที่ในกลุมพารท ตชิ นั เดียวกนั 135
ขั้นตอนถัดไป จะเปนการเพิ่มพื้นที่ที่เพิ่มมาทั้งหมดจำนวน 5 กิ๊กกะไบตที่อยูในกลุม cl และยังไมไดถูก จดั สรร เพิม่ ไปท่ี /dev/cl/root ดวยคำสัง่ ดงั นี้ # lvextend -l +5G /dev/cl/root ในบางกรณี หากตอ งการเพิ่มพ้ืนทท่ี ี่เหลือทง้ั หมดใหกับพารทติชัน /dev/cl/root สามารถใชคำสั่ง ดังนี้ # lvextend -l 100%FREE /dev/cl/root เมื่อพิมพคำสั่งจะไดผลลัพธดังภาพที่ 7.11 แสดงวาเพิ่มพื้นที่เขาไปที่ /dev/cl/root แลว ซึ่งสามารถ ตรวจสอบดว ยคำส่งั # lvdisplay cl ภาพที่ 7.11 หนาจอผลลัพธคำสงั่ ขยายขนาดของพารท ติชัน อยางไรก็ตามการเพิ่มขนาดของดิสกจะยังไมเปล่ียนแปลงขนาดของระบบแฟมขอมูลที่ระบบปฏิบัติการ ใชงานได โดยเริ่มตน ระบบปฏิบัติการ CentOS 8 ใชระบบแฟมขอมูลเปน xfs ดังนั้น ผูอานจะตองแจง ระบบปฏบิ ตั กิ ารใหทราบถงึ ขนาดใหมข องรูทพารทตชิ นั (/) ดวยคำส่ัง # xfs_growfs / ภาพท่ี 7.12 หนาจอผลลพั ธคำส่งั ขยายขนาดระบบแฟมขอมูล เมื่อพิมพคำส่ังจะปรากฏผลลัพธดังภาพที่ 7.12 จากวาจำนวนบล็อกขอมูลไดเปลี่ยนจาก 3275776 ไป เปน 4586496 ซึ่งเปนตัวเลขท่ีผูอานเขาใจยาก แตก็สามารถเขาใจไดวาขนาดของระบบแฟมขอมูลได เปลีย่ นแปลงไปแลว โดยผอู า นสามารถตรวจสอบขนาดของรูทพารทตชิ นั ดว ยคำสั่ง # df -h 136
ภาพท่ี 7.13 หนาจอผลลพั ธคำส่ังแสดงขอ มลู พื้นท่ขี องพารท ตชิ นั จะปรากฎผลลัพธดังภาพที่ 7.13 ใหสังเกตที่ /dev/mapper/cl-root มีขนาดเพิ่มขึ้นจาก 12G เปน 17G การเพิ่มพื้นที่ของดิสกดวยวิธีการนี้จะมีผลลัพธที่คงทนเมื่อรีบูตเครื่อง เนื่องจากไมไดเปนการเพ่ิม พารทติชันใหมแตเปนการขยายขนาดของพารทติชันเดิมเทานั้น ดังนั้น ผูอานไมจำเปนตองแกไขแฟมขอมูล /etc/fstab แตหากผใู หส รางพารท ติชนั ใหม เชน สรางพารท ติชัน /dev/cl/data ในกลุม cl และเชือ่ มตอไปยัง ไดเรกทอรี /data ผูอานจะตองเพิ่มขอมูลการเชื่อมตอดังกลาวไวในแฟมขอมูล /etc/fstab ดวยวิธีการดังที่ได กลา วมาแลว 7.5 การปรบั แตงอนิ เตอรเ ฟสเครอื ขา ยของเครอ่ื งคอมพวิ เตอรเ สมือน โดยเริ่มตนโปรแกรม KVM จะสรางอินเตอรเฟสเครือขายเสมือนมาใหชื่อ default ซึ่งเปนเครือขาย ประเภท Network Address Translation (NAT) หมายความวา เครือขา ยเสมอื นน้จี ะถกู เขาถึงไดจ ากแคโฮสต ที่ติดตั้งโปรแกรม KVM เทานั้น แตเครื่องคอมพิวเตอรเสมือนสามารถเขาถึงเครือขายที่โฮสตสามารถเขาถึงได รวมทั้งเครือขายอินเทอรเน็ตดวย คุณสมบัติของเครือขาย NAT คือโปรแกรม KVM จะเปนผูแจกจายที่อยูไอพี โดยอัตโนมัติใหกับเครื่องคอมพิวเตอรเสมือนเอง หากผูอานไมไดตั้งคาที่อยูไอพีคงที่ไวที่อินเตอรเฟสเครือขาย ของเคร่ืองคอมพิวเตอรเสมือน เนอื่ งจากเมตาดาทาของโปรแกรม KVM จะเกบ็ เปน รปู แบบ XML ดงั นนั้ วิธกี าร สรางอินเตอรเฟสเครือขายเสมือนก็คือสรางเมตาดาทาในรูปแบบ XML และเพิ่มเขาไปผานโปรแกรม virsh ดงั น้ี สรางเมตาดาทาของเครือขายใหม ในกรณีนีต้ ัง้ ชอื่ วา newnet # vi newnet.xml จากน้ันพมิ พเนอื้ หาตอไปนีล้ งไป <network> <name>newnet</name> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr1' stp='on' delay='0'/> <ip address='192.168.133.1' netmask='255.255.255.0'> 137
<dhcp> <range start='192.168.133.2' end='192.168.133.254'/> </dhcp> </ip> </network> การขอ มลู ดังกลา ว มขี อ มลู ท่ีสามารถแกไขไดจ ากแมแบบเครือขาย NAT อยูดวยกัน 3 ตำแหนง คือ 1) bridge name='virbr1' นิยมตั้งชื่อขึ้นตนวา virbr แลวตามดวยตัวเลข ในกรณีนี้ตั้งชื่อเปน virbr1 ผูอา นสามารถตรวจสอบวามีช่อื virbr ใดทถี่ กู ใชไปแลวดวยคำส่ัง # ip link 2) Ip address='192.168.133.1' netmask='255.255.255.0' เปนที่อยูไอพีของบริดจหรือของโฮสต ซึ่งจะเปนที่อยูที่ใชตั้งคาเกตเวยเริ่มตนในเครื่องคอมพิวเตอรเสมือน สวน netmask สามารถตั้งคา ไดต ามขนาดของเครือขายทต่ี องการ 3) range start='192.168.133.2' end='192.168.133.254' เปนชวงของที่อยูไอพีที่โปรแกรม KVM จะแจกใหก บั เคร่ืองคอมพิวเตอรเ สมอื นโดยอัตโนมัติ อยางไรก็ตาม การพิมพเนื้อหาที่บรรยายเครือขายเสมือนนั้นมีความยาวและสามารถจดจำและนำไป ปฏิบัติไดยาก ผูเขียนแนะนำวา ผูอานสามารถอางอิงเนื้อหาที่บรรยายจากเครือขายเสมือน default ซึ่งเปน เครือขายเสมอื นเริม่ ตนทถ่ี กู สรา งหลงั การตดิ ตั้งโปรแกรม KVM ไดดว ยคำส่ัง # virsh net-dumpxml default เมื่อพิมพคำสั่ง จะไดผลลัพธดังภาพที่ 7.14 ในกรณีที่ผูอานเปดโปรแกรม Putty อยู ผูอานสามารถ คัดลอกขอความไปใสในโปรแกรมแกไขขอความอยาง Notepad และแกไขเนื้อหาเครือขายเสมือน หรือสราง แฟม ขอมลู ใหมช อื่ newnet.xml จากเครือขายเสมือน default ดวยคำสัง่ # virsh net-dumpxml default > newnet.xml โดยลบแท็ก <uuid> และ <mac> ออก จากนั้นแกไขชอ่ื bridge ip address และ range ตามตองการ 138
ภาพที่ 7.14 เนอ้ื หาเมตาดาทาของเครอื ขายเรมิ่ ตน หลังจากทสี่ รางแฟมขอมูลเสร็จ สามารถเพ่ิมเครอื ขายใหโปรแกรม KVM โดยใชคำสัง่ # virsh net-define newnet.xml จากนั้นส่งั ใหเ ครอื ขา ยเสมอื น newnet ทำงานทันที และทำงานทกุ คร้งั ทีร่ ีบูตไฮสต # virsh net-start newnet # virsh net-autostart newnet เมื่อพิมพคำส่ังเสร็จ ผอู านสามารถตรวจสอบเครือขา ยเสมือนท้งั หมดท่มี ีไดด ว ยคำสั่ง # virsh net-list --all จากนั้นผูอานสามารถใชเครือขายเสมือน newnet ในคำสั่ง virt-install เมื่อตองการสรางเครื่อง คอมพิวเตอรเสมือนใหมไ ด หรือแกไ ขเครื่องคอมพวิ เตอรเสมือนเดมิ ได 2 วิธี คือ วธิ ีแรกการแกไ ขแฟม ต้ังคาของ เครอื่ งคอมพวิ เตอรเ สมอื น โดยใชค ำสงั่ # virsh edit demo-centos จากนน้ั คนหาสว นท่ีบรรยายของเครอื ขา ยไว <interface type='bridge'> <mac address='52:54:00:26:da:10'/> <source bridge='virbr0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> ตรงขอความทร่ี ะบวุ า <source bridge='virbr0'/> ใหเ ปลี่ยนเปน <source bridge='virbr1'/> 139
เมื่อแกไขเรียบรอยก็สามารถบันทึก และรีบูตเครื่องคอมพิวเตอรเสมือน เครื่องคอมพิวเตอรเสมือนจะ เปลยี่ นมาอยใู นเครอื ขาย newnet ในขณะทีแ่ กไ ขผูอา นอาจพบวา คา mac address ไมต รงกบั ในเอกสารซึ่งจะ เปนคาที่เครื่องสุมสรางขึ้นมาใหโดยอัตโนมัติ และสามารถแกไขไดตามตองการหากตองการบังคับคา mac address เปนคาใดคาหนึง่ โดยเฉพาะ อีกวิธีหนึ่ง คือการใชคำสั่ง virsh โดยคำสั่ง virsh มีตัวดำเนินการที่สนับสนุนการแกไขเครือขายเสมือน อยู 2 คำสง่ั คือ คำส่ังเพ่มิ อนิ เตอรเ ฟส และคำส่ังลบอินเตอรเฟส ในกรณีที่ตองการแกไ ขอินเตอรเ ฟสเดมิ ผูอาน สามารถใชท งั้ สองคำสั่งโดย ลบอนิ เตอรเฟสเกา ที่มบี ริดจเดมิ กอนและ เพิม่ อนิ เตอรเ ฟสใหมท่ีมีบริดจชื่อ virbr1 ในขั้นตอนการลบอินเตอรเฟสเสมือนเดมิ ผูอานจะตองทราบอยูทางกายภาพของอินเตอรเฟสเครอื ขาย (MAC address) ของการด ที่เชื่อมตอ กับเครอื่ งคอมพิวเตอรเสมือนอยกู อนแลว ดว ยคำสงั่ # virsh domiflist demo-centos จากนั้น ผูอานสามารถลบอนิ เตอรเฟสทีม่ อี ยเู ดิมดวยคำสั่ง # virsh detach-interface --domain demo-centos --type bridge --mac 52:54:00:26:da:10 –config --live - พารามเิ ตอร domain ระบุชอ่ื ของเครือ่ งคอมพิวเตอรเ สมือน - พารามเิ ตอร type ระบุประเภทของการเช่ือมตอ ในกรณนี ้ีเปน bridge - พารามเิ ตอร mac ระบุทีอ่ ยทู างกายภาพของอินเตอรเ ฟสท่ตี องการลบออก - พารามิเตอร config ระบใุ หแ กไขการเพ่มิ อินเตอรเฟสในแฟมตัง้ คาของเคร่ืองคอมพิวเตอรเ สมือน - พารามิเตอร live ระบใุ หม ผี ลบงั คบั ใชง านทันที โดยทีไ่ มจำเปนตองรบี ูตเครอ่ื งคอมพิวเตอรเสมอื น ในบางกรณี แอปพลิเคชันที่เฉพาะบางแอปพลิเคชันอานขอมูลจากที่อยูทางกายภาพของอินเตอรเฟส เครอื ขา ยเพือ่ ใชใ นการทำงานของโปรแกรม เชน การคำนวณคียสำหรับเปน ลิขสทิ ธิ์ของซอฟตแ วร ผอู า นอาจจะ ตองการเปลี่ยนเครือขายเสมือนโดยที่การดยังคงมีที่อยูทางกายภาพเดิม ในกรณีนี้ ผูอานสามารถจดบันทึกไว กอน ถดั ไป ในขน้ั ตอนการเพ่ิมอินเตอรเ ฟสใหมใ หกบั เคร่ืองคอมพิวเตอรเสมือน ผอู า นสามารถใชคำสง่ั # virsh attach-interface --domain demo-centos --type bridge --source virbr1 --config --live - พารามิเตอร domain ระบชุ ือ่ ของเครื่องคอมพิวเตอรเ สมือน - พารามิเตอร type ระบุประเภทของการเชือ่ มตอ ในกรณีนี้เปน bridge - พารามเิ ตอร source ระบชุ อ่ื ของบริดจ ซึ่งชื่อของบรดิ จสามารถตรวจสอบไดจ ากเคร่อื งคอมพิวเตอร แมข า ย - พารามเิ ตอร config ระบุใหแ กไขการเพมิ่ อนิ เตอรเฟสในแฟม ต้ังคา ของเคร่ืองคอมพิวเตอรเ สมอื น - พารามเิ ตอร live ระบุใหม ผี ลบงั คับใชง านทันที โดยทไี่ มจ ำเปนตองรีบูตเครือ่ งคอมพิวเตอรเ สมือน 140
การเพิ่มอินเตอรเฟสใหมดวยคำสั่งดังกลาว โปรแกรม KVM จะสุมสรางที่อยูทางกายภาพของ อินเตอรเฟสเครือขายเองอัตโนมัติ ในกรณีที่ตองการใชที่อยูทางกายภาพของอินเตอรเฟสจากเครือขายเดิม ผูอานสามารถเพม่ิ พารามเิ ตอร mac และระบทุ อ่ี ยทู างกายภาพของอนิ เตอรเ ฟสเดิมได ดว ยคำส่ังนี้ # virsh attach-interface --domain demo-centos --type bridge --source virbr1 --mac 52:54:00:26:da:10 --config –live คำส่งั การลบอินเตอรเฟสและคำส่งั เพิ่มอินเตอรเฟสมีลักษณะการทำงานทเี่ ปนอิสระตอกัน ดงั น้นั เครื่อง คอมพิวเตอรเสมือนเครื่องหนึ่งสามารถมีอินเตอรเฟสไดหลายอินเตอรเฟส โดยผูอานสามารถสรางเครื่องขาย เสมือนสำหรับกลุมของเครื่องคอมพิวเตอรเสมือนที่ทำงานรวมกันโดยสรางเครือขายเสมือนเฉพาะแตละกลุม เพื่อการบริหารจดั การทีง่ า ย ในกรณีที่เคร่ืองคอมพวิ เตอรเ สมือนบางเคร่ืองจำเปนตองเขาถึงเครื่องคอมพิวเตอร เสมือนในอีกเครือขายเสมือนหนึ่ง ผูอานสามารถเพิ่มอินเตอรเฟสเครือขายเสมือนใหกับเครื่องคอมพิวเตอร เสมอื นเครอ่ื งนนั้ ได เพอ่ื เปนการจำกัดการเขา ถงึ ทีจ่ ำเปน โดยใหม ีเฉพาะเครอื่ งนัน้ เทา น้ัน 141
บทสรปุ คำสงั่ สำหรบั ตรวจสอบคุณสมบตั ิของเครื่องคอมพวิ เตอรเสมือน และคำส่งั สำหรบั การปรบั แตงการตั้งคา ตาง ๆ สามารถกระทำไดแมวาเครื่องคอมพิวเตอรเสมือนยังทำงานอยู แตจะมีผลก็ตอเมื่อปดและเปดเครื่อง คอมพวิ เตอรเ สมือนน้ันใหมอกี ครั้ง แมโปรแกรม KVM จะสนับสนุนดิสกเสมือนหลายรูปแบบ แตรูปแบบที่เหมาะสมที่สุด คือ Qcow2 เพราะรองรับการสำรองและการกูค ืนสถานะของดิสก แตรูปแบบ Vmdk รองรับเพื่อความเขากันไดจากเครือ่ ง คอมพวิ เตอรเสมือนทีย่ ายมาจากระบบของ VMWare การจองพื้นที่ดิสกเสมือนขณะสรางเครื่องคอมพิวเตอรเสมือนมีอยู 4 รูปแบบ คือ 1) off หมายถึงไมมี การจองขอมูล 2) metadata หมายถึงจองพื้นที่เฉพาะสวนของเมตาดาทา 3) falloc หมายถึงจองพื้นที่ทั้ง ขอมูลและเมตาดาทาแตไ มมีการเขยี นทับดสิ ก 4) full จองพน้ื ทท่ี ั้งขอมลู และเมตาดาทาและเขยี นทับขอมูลเกา บนดสิ ก ในกรณีท่ีเครือ่ งของผูอานใชด ิสกแบบเอสเอสดี การจองแบบ metadata เหมาะสมทส่ี ุด หากดิสกเปน จานแมเ หล็ก การจองแบบ falloc เหมาะสมที่สดุ หากผูอานเพิ่มดิสกเสมือนใหมเขาไปในเครื่องคอมพิวเตอรเสมือนเดิม ผูอานจำเปนจะตองตั้งคาการ ฟอรแมตดิสก การแบงพารท ติชัน และการแจงระบบปฏบิ ตั ิการเกยี่ วกบั ขนาดของดสิ กที่เปลีย่ นแปลงไป เคร่ืองคอมพวิ เตอรเสมือนสามารถมเี ครือขายเสมือนกเี่ ครือขา ยก็ได การสรางเครอื ขายเสมือนท่ีงายท่ีสุด คือ การนำเนื้อหาบรรยายเครือขายเริ่มตน default มาใชเปนแมแบบสำหรับสรางเครือขายเสมือนใหม การ เพ่ิมหรือถอดออกเครือขายเสมือนสามารถกระทำไดทัง้ การแกไข XML และบรรทดั คำส่ัง 142
สรปุ คำสงั่ ทนี่ าสนใจ คำสง่ั หรือชื่อคำส่งั ที่เกี่ยวขอ ง เน้ือหา # virsh vcpuinfo demo-centos # virsh dominfo demo-centos ตรวจสอบขอมูลหนวยประมวลผลกลาง ตรวจสอบจำนวนหนว ยประมวลผลกลางเสมอื น # virsh domblklist demo-centos ปรมิ าณหนว ยความจำหลัก สถานการณทำงาน # virsh domblkinfo demo-centos vda ปจ จุบัน # virsh domblkstat demo-centos vda ตรวจสอบชื่อ และจำนวนดิสกทใี่ ชง านอยูป จจุบนั ตรวจสอบพ้นื ทด่ี สิ กส ูงสดุ พื้นทีด่ สิ กท่จี องไวจรงิ บน โฮสต ตรวจสอบการเขียนอา นของดิสก ตรวจสอบจำนวน และชื่อของอนิ เตอรเฟสเครือขา ย # virsh domiflist demo-centos เสมือน ท ตรวจสอบการรับสง ขอมูลของอนิ เตอรเฟสเครือขา ย # virsh domifstat demo-centos vnet0 เสมือน เปล่ยี นจำนวนหนวยประมวลผลกลาง # virsh edit demo-centos เปลี่ยนจำนวนหนวยความจำหลัก จากนนั้ คน หาสว นของขอมูลท่ีระบุ สรา งแฟมขอ มูลดสิ กเสมือน <vcpu placement='static'>1</vcpu> ตรวจสอบแฟม ขอ มลู ดสิ กเสมือน เปล่ยี นตัวเลขใน <vcpu /> เพิ่มแฟม ขอ มูลดิสกเสมือนเขา ไปในเคร่ือง # virsh shutdown demo-centos คอมพวิ เตอรเ สมอื น # virsh setmaxmem demo-centos 768MiB # virsh start demo-centos เพม่ิ ดสิ กในระบบปฏิบัติการลีนุกซ โดยการเพ่ิมดสิ ก # qemu-img create -f qcow2 เขาไปโดยตรงและเช่ือมดสิ กกับไดเรกทอรใี น -o preallocation=metadata ระบบปฏบิ ตั กิ าร /var/lib/libvirt/images/demo-centos- data.qcow2 5G # qemu-img info /var/lib/libvirt/images/demo-centos- data.qcow2 # virsh attach-disk demo-centos --source /var/lib/libvirt/images/demo- centos-data.qcow2 --target vdb --driver qemu --subdriver qcow2 --targetbus virtio --persistent # fdisk /dev/vdb จากน้นั กด n เพ่ือสรางพารท ติชันและทำตาม ขน้ั ตอนจนจบ และกด w เพื่อบนั ทึกและออก 143
เน้ือหา คำสง่ั หรือชื่อคำสง่ั ท่เี กี่ยวของ # mkfs.xfs /dev/vdb1 เพมิ่ ดิสกในระบบปฏบิ ตั ิการลีนกุ ซ โดยการเพ่ิมเขา # mkdir /mnt/disk2 ไปในกลุมของดิสกเ ชงิ ตรรกะ # mount /dev/vdb1 /mnt/disk2 สรา งอนิ เตอรเ ฟสเสมือนใหม แกไ ข /etc/fstab เพือ่ ผลลพั ธท่คี งทนหลงั การรีบูต # pvcreate /dev/vdb # vgextend cl /dev/vdb # lvextend -l 100%FREE /dev/cl/root # xfs_growfs / # vi newnet.xml จากน้ันระบุขอ มูลของอนิ เตอรเฟสเสมือน หรอื # virsh net-dump default > newnet.xml จากนน้ั แกไขขอมูลอนิ เตอรเ ฟสเสมือน แสดงรายการอินเตอรเ ฟสเสมือน และดำเนนิ การ เปลีย่ นอินเตอรเฟสเสมือนใหกบั เคร่ืองคอมพวิ เตอร # virsh net-define newnet.xml เสมอื น โดยการแกไ ข XML # virsh net-start newnet เปล่ยี นอินเตอรเ ฟสเสมือนใหกบั เครื่องคอมพวิ เตอร # virsh net-autostart newnet เสมอื น โดยบรรทัดคำส่ัง # virsh net-list # virsh edit demo-centos คน หาสวนท่ีบรรยายเครอื ขาย และเปลีย่ นชือ่ อินเตอรเฟสเสมือน <interface type='bridge'> <mac address='52:54:00:26:da:10'/> <source bridge='virbr0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> # virsh attach-interface --domain demo- centos --type bridge --source virbr1 --config –live # virsh attach-interface --domain demo- centos --type bridge --source virbr1 –mac 52:54:00:26:da:10 --config –live 144
แบบฝกหดั บทที่ 7 1. บอกคำสง่ั ท่ีใชต รวจสอบหนว ยประมวลผลกลาง หนวยความจำหลกั และความจพุ นื้ ท่ีเก็บขอมูลจากเครื่อง คอมพวิ เตอรเ สมอื น 2. หากตองการเปลี่ยนจำนวนหนว ยประมวลผลกลางเสมือนจาก 1 เปน 3 ตอ งทำอยา งไร 3. หากตองการลดปรมิ าณหนวยความจำหลักใหเหลอื 0.5 กก๊ิ กะไบต ตองทำอยางไร 4. อธบิ ายประเภทแฟม ขอ มลู ของดสิ กเ สมือนทโี่ ปรแกรม KVM รองรับ 5. อธบิ ายรปู แบบการจองพืน้ ที่ของดิสกเสมือนในโปรแกรม KVM 145
6. บอกคำสัง่ ทใ่ี ชเ พิ่มดสิ กเสมอื นใหก บั เคร่ืองคอมพวิ เตอรเ สมือน 7. เมื่อเพ่มิ ขนาดของดสิ กในพารทติชันแลว แตร ะบบปฏบิ ตั ิการลนี ุกซยังคงมองเหน็ ขนาดของพารท ติชนั เทา เดิมเปนเพราะอะไร มีวิธีแกไ ขอยา งไร 8. บอกคำสัง่ ท่ีใชสรางเครือขายเสมือนใหม 9. หากตอ งการยา ยใหเ ครอื ขา ยของเครอ่ื งคอมพวิ เตอรเ สมือนจาก default มาเปน newnet จะตอ งแกไ ข XML ของเคร่ืองคอมพวิ เตอรเสมือนอยางไร 10. บอกคำสง่ั ทใ่ี ชเ ปล่ียนอินเตอรเฟสของเคร่ืองคอมพวิ เตอรเ สมือนชอื่ demo-centos จาก virbr0 เปน virbr1 146
การบันทึกและการกูคนื สถานะของเครอ่ื งคอมพิวเตอรเสมือน บทนำ หากผูอานมีฮารดแวรของอุปกรณคอมพิวเตอรที่ติดต้ังซอฟตแวรโดยไมมีไฮเปอรไวเซอรนัน้ การบันทึก สถานะของเครื่องอาจจะตองใชแอปพลิเคชันเสริม และการกูคืนอาจตองรีบูตเครื่องหรือเช่ือมตอฮารดดิสกกับ เครื่องคอมพิวเตอรอื่นสงผลใหความพรอมใชลดลง แตการบันทึกและกูคืนสถานะของเครื่องคอมพิวเตอร เสมือนเปนหนึ่งในคุณสมบัติที่เทคโนโลยีเสมือนโดยโปรแกรม KVM มีเครื่องมือใหจัดการสถานะในรูปแบบ ตนไมท่ีทำใหผูอานสามารถเดินหนาและยอ นกลับสถานะทีต่ องการไดอยางสะดวก พรอมทั้งคุณสมบตั ิการยาย เครื่องคอมพิวเตอรเสมือนจากเครื่องแมขายหนึ่งไปยังอีกเครื่องแมขายหนึ่งในขณะที่กำลังเปดเครื่อง คอมพวิ เตอรเ สมอื นไดอ กี ดวย ทง้ั นเี้ พอ่ื เพิ่มระดบั ความพรอมใชของระบบ 8.1 การบันทึกสถานะของเคร่อื งคอมพวิ เตอรเสมอื นเพอื่ หยุดการทำงาน การบันทึกสถานะของเครอ่ื งคอมพวิ เตอรเสมือนนัน้ มเี งื่อนไขขั้นต่ำ คอื เครอื่ งคอมพิวเตอรเ สมือนจะตอง ปดการทำงานอยูและดิสกทุกดิสกในเครื่องคอมพิวเตอรเสมือนจะตองอยูในรปู แบบ Qcow2 เทานั้น ในกรณีที่ เครื่องคอมพิวเตอรเปดแอปพลิเคชันหรือใหบริการกับเครื่องลูกขาย การปดเปดการทำงานใหมอีกครั้งอาจใช เวลานาน โปรแกรม KVM มเี ครือ่ งมือทีส่ ามารถบันทึกสถานะของเคร่ืองคอมพิวเตอรและปด เครื่องคอมพิวเตอร ไป เมื่อใดก็ตามที่เปดการทำงานอีกครั้งโปรแกรม KVM จะโหลดสถานะในหนวยความจำหลักที่บันทึกไวใน ฮารดดิสกใหกลับมาเหมือนเดิม ทำใหลดเวลาการบูตเครื่อง เชน หากตองการบันทึกสถานะของเครื่อง คอมพิวเตอรเสมอื นตวั อยางที่สรา งไวก อนหนา น้ี สามารถใชค ำสั่ง # virsh managedsave demo-centos ระยะเวลาในการบนั ทกึ สถานะข้ึนอยูกับปรมิ าณหนวยความจำหลกั ทีใ่ ชจริงในเคร่ืองคอมพวิ เตอรเสมือน และความเร็วในการเขียนดิสกข องโฮสต เมือ่ บนั ทึกสถานะเสรจ็ จะปรากฏผลลพั ธด งั ภาพที่ 8.1 ภาพท่ี 8.1 หนาจอผลลัพธคำสงั่ บนั ทกึ สถานะเครอ่ื งคอมพวิ เตอรเสมือน 147
บันทึกสถานะของเครื่องคอมพิวเตอรเสมือน เรียกวา snapshot การสรางบันทึกสถานะนั้นสามารถใช คำส่ัง virsh และมีตวั ดำเนินการเปน snapshot-create-as ได ดังน้ี # virsh snapshot-create-as --domain demo-centos --name snapshot_1 – description \"the first snapshot\" - พารามิเตอร domain ระบุชอื่ เคร่อื งคอมพวิ เตอรเ สมือน - พารามเิ ตอร name ระบุช่ือของสถานะของเครือ่ งคอมพวิ เตอรเ สมือน ไมควรมีเวนวรรค - พารามิเตอร description ระบุรายละเอียดของสถานะของเครื่องคอมพิวเตอรเสมือน หากตองการ ปอนขอความที่มีเวนวรรคตองใสเครื่องหมายฟนหนู (\") ครอบขอความไว พารามิเตอรนี้ไม จำเปน ตองระบกุ ไ็ ด คำสั่งดานบนจะสราง Snapshot ชื่อ snapshot_1 ที่มีรายละเอียดคำอธิบายวา the first snapshot ใหก บั เครื่องคอมพิวเตอรเ สมอื นช่ือ demo-centos เมอ่ื สรา งเสรจ็ จะปรากฏผลลัพธด งั ภาพที่ 8.2 ภาพท่ี 8.2 หนา จอผลลัพธค ำสั่งสราง Snapshot ผอู านสามารถตรวจสอบอกี ครัง้ วา ผูอา นไดสรา ง Snapshot ไวถ ูกตองหรือยงั ดวยคำสงั่ # virsh snapshot-list demo-centos จะปรากฎผลลพั ธด ังภาพท่ี 8.3 วา ผูอ า นไดส ราง Snapshot ช่ือ snapshot_1 ไวเ รยี บรอย ภาพที่ 8.3 หนาจอผลลัพธค ำสง่ั แสดงรายการ Snapshot และหากตองการดูรายละเอียดเพิ่มเติมของ Snapshot ที่ชื่อ snapshot_1 วามีความสัมพันธกับ Snapshot อื่นในรูปแบบตน ไมหรือไม สามารถใชค ำส่ัง # virsh snapshot-info --domain demo-centos --snapshotname snapshot_1 - พารามิเตอร domain ระบชุ อื่ เครอ่ื งคอมพิวเตอรเ สมือน - พารามิเตอร snapshotname ระบุชื่อของสถานะของเครื่องคอมพิวเตอรเสมือนที่ตองการ ตรวจสอบรายละเอยี ด 148
เมื่อพิมพคำสั่ง จะปรากฎผลลัพธด ังภาพที่ 8.4 วา snapshot_1 ถูกสรางลา สุดยังไมมี Snapshot ที่ถูก สรา งตอ (Children) และ Snapshot ท่ีถูกสรา งตอจาก Children ไปอกี (Descendants) ภาพที่ 8.4 หนา จอผลลัพธคำส่งั แสดงรายละเอยี ดของ Snapshot 8.2 การกคู นื สถานะของเคร่ืองคอมพวิ เตอรเสมอื นเพือ่ เร่ิมการทำงาน เมื่อไดบันทึกสถานะ ผูอานสามารถสั่งเครื่องคอมพิวเตอรเสมือนเริ่มการทำงานไดตามปกติ เมื่อใดก็ ตามที่ตองการยอนกลับไปสถานะที่เคยบันทึกไว สามารถใชคำสั่ง virsh snapshot-revert เชน การตองการกู คนื สถานะของเครอ่ื งคอมพวิ เตอรเ สมือนทส่ี รา งไวกอ นหนาไปยัง snapshot_1 สามารถใชคำส่งั # virsh snapshot-revert --domain demo-centos --snapshotname snapshot_1 - พารามเิ ตอร domain ระบุชอ่ื เคร่อื งคอมพิวเตอรเ สมือน - พารามิเตอร snapshotname ระบุชือ่ ของสถานะของเคร่ืองคอมพิวเตอรเสมือนท่ีตองการยอนกลับ ไป เมื่อพิมพคำสั่งไปจะไมขึ้นขอความใด ๆ ดังภาพที่ 8.5 แสดงวาการกูคืนสำเร็จ จากนั้นผูอานสามารถ เปด การทำงานของเครอ่ื งคอมพิวเตอรเสมือนไดตามปกติ ภาพที่ 8.5 หนา จอผลลัพธคำสง่ั กคู ืน Snapshot ในกรณีทต่ี อ งการลบการบันทกึ สถานะออกจากเครื่องคอมพิวเตอรเ สมือน สามารถลบไดด วยคำสัง่ # virsh snapshot-delete --domain demo-centos --snapshotname snapshot_1 149
ภาพท่ี 8.6 หนา จอผลลัพธคำสงั่ ลบ Snapshot - พารามเิ ตอร domain ระบุชื่อเครื่องคอมพิวเตอรเ สมอื น - พารามิเตอร snapshotname ระบุชื่อของสถานะของเคร่อื งคอมพวิ เตอรเสมอื นที่ตอ งการลบ เมื่อพิมพคำสั่งจะปรากฎผลลัพธดังภาพที่ 7.6 บอกวา snapshot_1 ไดถูกลบออกไป และหากใชคำสั่ง แสดงรายการบนั ทึกสถานะของเคร่ืองคอมพวิ เตอรเ สมือนจะพบวา snapshot_1 หายไป อยางไรก็ตาม การลบ เครื่องคอมพิวเตอรเสมือนออกไปนั้นดวยคำสั่ง virsh undefine จะไมลบทั้งดิสกเสมอื นและบันทึกสถานะการ ทำงาน แตหากใชคำสั่ง virsh undefine ที่มีพารามิเตอร --remove-all-storage โปรแกรม KVM จะลบท้ัง เครื่องคอมพิวเตอรเสมือน ดิสกเสมือน และบันทึกสถานะการทำงานทั้งหมดของเครื่องคอมพิวเตอรเสมือน ทนั ที อยางไรก็ตามการสราง Snapshot หรือการบันทึกสถานะของเครื่องคอมพิวเตอรเสมือนนั้น แมจะ สะดวกสบาย แตก็ตองแลกกับพื้นที่จัดเก็บขอมูลที่ตองใช และการ Snapshot จะบันทึกเฉพาะความแตกตาง ของดิสกในระหวางคูการบันทึกสถานะนั้นเทานั้น เชน หากผูอานบันทึกสถานะของเครื่องคอมพิวเตอรเสมอื น โดยเริ่มตนสรางสถานะชื่อ snapshot_1 จากนั้นเมื่อใชงานไปสักพักทำการบันทึกตอดวยสถานะชื่อ snapshot_2 แลวสรางสถานะถัดไปชื่อ snapshot_3 สิ่งที่โปรแกรม KVM ดำเนินการคือ snapshot_1 จะ เปนสถานะของดิสกทั้งหมด ณ เวลาที่สราง เมื่อมีการเปลี่ยนแปลงหลังจากนั้น โปรแกรม KVM จะไม เปลี่ยนแปลงโครงสรางในดิสกเริ่มตน แตจะสรางเมตาดาทาใหมที่บันทึกสวนตา งจากเดิมทำใหสวนท่ีขอ มูลบน ดิสกตางไมใชการเขียนขอมูลทับ แตเปน การสรางดสิ กสวนตางไวเทียบขอ มลู วาขอมลู ดสิ กปจจุบันมีสถานะเปน อะไร เมื่อสราง snapshot_2 โปรแกรม KVM จะล็อกแฟมสวนตางที่เกิดขึ้นหลังจาก snapshot_1 และสราง เปน snapshot_2 เมือ่ มกี ารเปล่ยี นแปลงหลงั จากนั้นโปรแกรม KVM จะสรางสว นแฟม ขอ มลู สว นตางข้ึนมาอีก แฟม ซ่งึ เมือ่ ผูอา นบนั ทึกสถานะของเคร่ืองคอมพิวเตอรเสมอื นใหม โปรแกรม KVM จะทำซำ้ แบบน้ไี ปเรอื่ ย ๆ ขอดีของการทำงานเบ้ืองหลงั แบบนี้คือ 1) สามารถบันทึกการสรา งเคร่ืองคอมพิวเตอรเ สมือนไดไมจำกัด และสามารถดำเนินการในรูปแบบตนไมไดซึ่งจะสามารถเก็บสถานะของเครื่องที่ซับซอน 2) เนื่องจากหลังการ ทำ Snapshot โปรแกรม KVM จะสรางแฟมสวนตางไวรออยูแลว การสรางบันทึกสถานะของเครื่องครั้งใหม สามารถดำเนินการไดอยางรวดเร็ว แตทั้งนี้ก็ตองแลกกับขอเสียคือ 1) โปรแกรม KVM จะสรางดิสกสวนตาง ซอ นขน้ึ มาเร่อื ย ๆ แสดงวา หากผอู านบนั ทึกสถานะจำนวน 10 ครง้ั ตอ เนื่องกนั แสดงวา เม่อื เครอ่ื งตองการอาน ขอมลู จะดิสกบล็อกนน้ั จะตองเทยี บขอ มลู กบั สถานะท้ัง 10 ครั้ง ทำใหแทนทจี่ ะตองอานขอมูลจากดสิ กเพียง 1 I/O แตก ลับตอ งอานขอ มลู สงู ถึง 10 I/O 2) เนอื่ งจากสถานะของดสิ กในปจ จบุ นั สรางจากการเทียบสวนตางของ 150
ทุกสถานะ หากสถานะที่อยูระหวางดสิ กเริ่มตน และสถานะปจจุบันเสยี หายจะทำใหไมสามารถอานขอมูลจาก ดสิ กข องเคร่ืองคอมพิวเตอรเสมือนได ดว ยเหตนุ ี้ การบันทึกสถานะและกูคืนของเครื่องคอมพิวเตอรเสมือน ควรใชเฉพาะกับเครื่องที่ไมมีโหลด การทำงานสูง หรือนิยมใชกับเครื่องคอมพิวเตอรเสมือนของนักพัฒนาซอฟตแวรที่ตองมีการเปลี่ยนแปลงและ ทดสอบในสภาพแวดลอมหลายสภาพแวดลอมในชวงเวลาใกลกัน เพราะแมประสิทธิภาพการทำงานจะลดลง แตการรอการประมวลผลไมไดว กิ ฤตเหมือนการทำงานในสภาพการใชงานจริง 8.3 การทำแมแบบของเครื่องคอมพวิ เตอรเสมือน ในขณะท่ีการบันทกึ สถานการณท ำงานของเครื่องคอมพิวเตอรเปนวิธีการท่ไี มแนะนำหากใชง านในสภาพ การใชงานจริง เพราะสงผลตอประสิทธิภาพการทำงานอยางชัดเจน ในกรณีที่ตองการสำรองขอมูลในระดับ เครอื่ งคอมพิวเตอรเ สมือน หรือการเตรียมเครื่องคอมพวิ เตอรเสมือนไวสำหรบั การใชงานท่ีหลากหลายโดยที่ไม ตองไปติดตั้งระบบปฏิบัติการทีละเครื่องนั้น ยังมีอีกวิธีหนึ่งที่สามารถทำไดคือ การสรางเครื่องคอมพิวเตอร เสมอื นใหมจ ากเครื่องคอมพิวเตอรเ ดิม หรือการทำสำเนาเครื่องคอมพิวเตอรเสมือน วิธกี ารนี้เปรียบเสมือนการ บันทึกสถานะของเครื่องคอมพิวเตอรเสมือน แตจะเปนการบันทึกแบบเต็ม คือขอมูลทั้งเครื่องคอมพิวเตอร เสมือนจะถูกทำสำเนาใหมอีกครั้ง ซง่ึ จะไมท ำใหประสิทธิภาพเครื่องลดลง แตจะใชพ ้ืนที่เก็บขอมูลปริมาณมาก แทน วิธกี ารนี้จึงเหมาะสมสำหรบั การปรบั ใชในสภาพการใชง านจรงิ ขั้นตอนการทำเตรียมเครื่องคอมพิวเตอรเสมือนและการทำสำเนาเครื่องคอมพวิ เตอรเสมือนเร่ิมจากการ ติดตั้งแพ็คเกจเครื่องมือสำหรับบริหารจัดการเครื่องคอมพิวเตอรเสมือน ชื่อ libguestfs-tools โดยสามารถใช คำส่งั # yum install libguestfs-tools ในกรณีที่ตองการเตรียมเครื่องคอมพิวเตอรเสมือนไวสำหรับการใชงานที่หลากหลายโดยที่ไมตองไป ติดตั้งระบบปฏิบัติการใหมทุกเครื่อง ผูอานสามารถใชเ ครือ่ งที่ติดตั้งระบบปฏิบตั ิการเสรจ็ เรียบรอย และตั้งคา ตามที่กำหนดทำเปนเครื่องแมแบบสำหรับการทำสำเนาได สำหรับกรณีการสำรองขอมูลเครื่องคอมพิวเตอร เสมอื นนน้ั สามารถดำเนนิ การทำสำเนาเคร่ืองคอมพวิ เตอรเสมือนซ่ึงจะบรรยายไวในหัวขอถดั ไปไดทันที การเตรียมเครื่องคอมพิวเตอรทำแมแบบสำหรับการทำสำเนานั้น เครื่องคอมพิวเตอรจะตองมีสถานะ หยุดการทำงาน (Stopped) โดยเครื่องที่ตองการเตรียมแมแบบจะตองอยูในสถานะหยุดการทำงานดวยคำสั่ง virsh shutdown หรือคำสั่ง virsh managedsave อยางใดอยางหนึ่ง จากนั้นติดตั้งแพ็คเกจที่ติดตั้งให เครื่องมือชื่อ virt-sysprep สำหรับลบขอมูลขยะ บันทึกการใชงาน เปลี่ยนรหัสผาน หรือตั้งคาอื่น ๆ ไดตาม ตองการ ดว ยคำสัง # yum install virt-sysprep 151
ตารางท่ี 8.1 พารามิเตอรของโปรแกรม virt-sysprep ที่ใชแกไ ขขอมูล พารามเิ ตอร ประเภทของขอมลู -a image เตรียมดิกสจากแฟมขอมูลดสิ กเ สมือนช่ือ image -d domain เตรยี มดสิ กจ ากเครอ่ื งคอมพิวเตอรเสมือนชื่อ domain --root-password ตั้งคา รหสั ผา น โดยแทนคา รหัสผานที่ตัวแปร $PASSWORD password:$PASSWORD --password user:pass ตัง้ คาบญั ชผี ใู ช user ใหมรี หสั ผา นเปน pass --hostname newhostname ตั้งคา ชอื่ เคร่ืองใหมเ ปน newhostname --install pkg ติดตงั้ แพ็คเกจ pkg ใหม --keep-user-account เกบ็ รักษาบญั ชผี ใู ชชื่อ username ไว username --remove-user-accounts ลบบัญชีผูใชช ่ือ username username --copy src:dst คดั ลอกแฟมขอมูล src ไปไวที่ dst โดยขอมูล src เปน ขอมูลใน อมิ เมจ --copy-in src:dst คดั ลอกแฟมขอมูล src ไปไวท่ี dst โดยขอมูล src เปน ขอมูลใน เครอื่ ง --delete target ลบแฟมขอมลู หรือไดเรกทอรีชอ่ื target ทิ้ง --firstboot-command เม่ือรีบูตเคร่อื งข้ึนมาครงั้ แรกในส่ังคำสั่ง command มีพารามเิ ตอร 'command arg' เปน arg --mkdir dir สรางไดเรกทอรี dir --move src:dst ยา ยแฟม ขอ มูล src ไปไวท ่ี dst โดยขอมลู src เปนขอ มลู ในอิมเมจ โดยโปรแกรม virt-sysprep มีคุณสมบัติสามารถแกไขขอมูลไดหลายรูปแบบ โดยผูอานสามารถระบุ พารามิเตอรสำหรับขอ มูลทต่ี อ งการเปลย่ี นไดต าม 152
ตารางที่ 8.1 โดยเครื่องมือรองรบั การสรา งแมแ บบดว ยกัน 2 รูปแบบ คือ 1) สรา งแมแบบจากเคร่ืองคอมพิวเตอรเ สมือนทห่ี ยุดการทำงานไปแลว วธิ ีการนี้โปรแกรม virt-sysprep จะคน หาดสิ กที่เกยี่ วของ และดำเนินการลบขอมูลตามท่ีกำหนด เชน หากตอ งการสรางแมแ บบจากเครื่องคอมพวิ เตอรเ สมอื นตวั อยา งท่สี รา งไวแ ลว สามารถใชคำสั่ง # virt-sysprep -d demo-centos --root-password password:123456 เมื่อพิมพคำสั่งนี้ จะปรากฏผลลัพธดังภาพที่ 8.7 โดยโปรแกรม virt-sysprep จะลบขอมูลขยะ บันทกึ การใชงาน และเปล่ยี นรหัสผา นของบญั ชีผูใช root เปน 123456 ภาพที่ 8.7 หนา จอผลลัพธค ำส่ังเตรยี มเครอ่ื งคอมพวิ เตอรเ สมอื น 2) สรา งแมแบบจากดิสกของเครือ่ งคอมพวิ เตอรเ สมือนไมไดถ ูกใชง านอยู ในบางกรณี ผูอานไดทำสำเนาเครื่องคอมพิวเตอรเสมือนโดยมีแฟมขอมูลดิสกเสมือนเก็บไว จำนวนมาก และตองการใชแ ฟมขอมูลดสิ กเสมือนสำหรบั เตรียมการสรา งเคร่ืองคอมพิวเตอรเสมือน ใหม ดังนั้น เคร่อื งมอื virsh-sysprep จงึ ออกแบบมาใหร องรับการสรา งแมแบบจากแฟมขอมูลดิสก เสมอื นโดยตรงโดยที่ไมจำเปน ตองมีเครอื่ งคอมพวิ เตอรเ สมอื นสรางไวใ นระบบ ในกรณนี ี้ ผอู า นจะใช ดิสกที่มีอยูแลวในเครื่องคอมพิวเตอรเสมือนที่สรางไว โดยสามารถตรวจสอบที่อยูของแฟมขอมูล ดสิ กเสมอื น ดว ยคำสงั่ 153
# virsh domblklist demo-centos ซึง่ ชือ่ แฟม ขอมูลทปี่ รากฏของแตล ะคนอาจไมเหมือนกันก็ได เนอื่ งจากอาจมีการสรางและลบเครื่อง คอมพิวเตอรเสมือนหลายคร้งั โดยโปรแกรม KVM จะเติมตวั เลขทายช่ือแฟมขอมูลไลลำดับไปเร่ือย ๆ เชน -1 -2 เปนตน เมื่อไดขอมูลที่อยูของแฟมขอมูลดิสกเสมือนแลว เชน เปนแฟมขอมูลตั้งอยูท่ี /var/lib/libvirt/images/demo-centos-1.qcow2 สามารถใชค ำสัง่ # virt-sysprep -a /var/lib/libvirt/images/demo-centos-1.qcow2 --root-password password:123456 เมื่อพิมพคำสั่งนี้ จะปรากฏผลลัพธคลายการสรางแมแบบจากเครือ่ งคอมพิวเตอรเสมือนทีห่ ยุดการ ทำงานแลว โดยโปรแกรม virt-sysprep จะลบขอมูลขยะ บันทึกการใชงาน และเปลี่ยนรหัสผาน ของบัญชีผูใช root เปน 123456 เพียงเทานี้แฟมขอมูลดิสกเสมือนที่เตรียมไวก็เหมาะสำหรับการ ทำสำเนาแลว 8.4 การทำสำเนาของเครือ่ งคอมพวิ เตอรเสมือน การทำสำเนาเครื่องคอมพิวเตอรเสมือน หมายถึง กระบวนการการคัดลอกการตั้งคาของเครื่อง คอมพิวเตอรเสมือนเดิม รวมทั้งขอมูลทุกอยางในทุกดิสกเสมือนจากเครื่องคอมพิวเตอรตั้งตน ไปยังเครื่อง คอมพวิ เตอรเสมอื นอีกครงั้ หนึง่ หากตอ งการทำสำเนาเครอื่ งคอมพิวเตอรท สี่ รางไวกอ นหนาช่อื demo-centos เปน อกี เคร่อื งคอมพิวเตอรเ สมือนชอ่ื demo-centos-2 สามารถใชค ำสง่ั # virt-clone --original demo-centos --name demo-centos-2 --auto-clone เมอ่ื พมิ พค ำส่ัง จะปรากฏผลลพั ธด ังภาพที่ 8.8 วาการทำสำเนาเครื่อง demo-centos-2 เสร็จเรียบรอย แลว โดยใชระยะเวลาในการทำสำเนาขึ้นอยูกับหลายปจจัย เชน จำนวนแฟมขอมูลดิสกเสมือนที่มี ปริมาณ ขอ มลู ที่เกบ็ อยูใ นดสิ กเสมือน และความเรว็ ในการเขยี นอานฮารด ดสิ ก เปนตน ภาพท่ี 8.8 หนา จอผลลัพธค ำส่ังโคลนเคร่อื งคอมพิวเตอรเสมือน 8.5 การตรวจสอบการทำสำเนาของเครื่องคอมพิวเตอรเสมือน เม่ือทำสำเนาเครื่องคอมพิวเตอรเ สมือนแลว เคร่ืองคอมพวิ เตอรเสมือนจะถูกลงทะเบียน แตอาจไมไดอยู สถานะเปด การทำงาน ผอู า นสามารถตรวจสอบรายการเคร่ืองคอมพวิ เตอรเ สมือน โดยใชคำส่งั # virsh list --all 154
เนื่องจากเครื่องคอมพิวเตอรเสมือนนั้น โดยหลักขอมูลทั้งหมดจะถูกเก็บไวที่แฟมขอมูลดิสกเสมือน เนื่องจากการตั้งคาเครื่องคอมพิวเตอรเสมือนใหใชทรัพยากรอะไร ปริมาณเทาไรเปนเพียงเมตาดาทาเทาน้ัน ผอู านสามารถตรวจสอบชื่อและจำนวนดิสกเสมือนของเคร่ืองคอมพิวเตอรเ สมือนท้ัง 2 เคร่ืองวาตรงกันหรือไม ดวยคำส่งั # virsh domblklist demo-centos # virsh domblklist demo-centos-2 เมื่อพิมพคำส่ังจะปรากฎผลลพั ธดงั ภาพท่ี 8.9 โดยทั้งสองเครื่องมกี ารตั้งคาดิสกที่เหมือนกนั และเครื่อง คอมพวิ เตอรเสมือนที่เปน เครื่องสำเนาจะมีแฟมขอมูลดสิ กเสมือนคลายกบั เครื่องตนฉบบั แตจะถูกเติมดานหลัง ชื่อวา -clone ถาหากผูอานทำสำเนาอีกชื่อหลังที่ถูกเติมจะมีตัวเลขตอทายเรียงไปเรื่อย ๆ เชน -clone-1 - clone-2 เปน ตน ภาพที่ 8.9 หนาจอผลลัพธค ำสั่งแสดงรายการดสิ กเ สมอื นเคร่ืองคอมพิวเตอรเสมือน ถัดไปคอื การตรวจสอบขนาดของดสิ กเ สมอื นทัง้ สองเครื่องวาตรงกนั หรือไม โดยใชค ำสงั่ # virsh domblkinfo demo-centos vda --human # virsh domblkinfo demo-centos-2 vda --human เมื่อพิมพคำสั่งจะปรากฎผลลัพธดังภาพที่ 8.10 สังเกตไดวาขนาดความจุของดิสกเสมือนในเครื่อง คอมพวิ เตอรเ สมอื นตั้งตนและในเครื่องคอมพวิ เตอรเสมอื นสำเนามีความจุ (Capacity) เทา นั้น มกี ารใชงานจริง (Allocation) ใกลเคียงกัน แตมีขนาดที่ใชพื้นที่บนดิสกจริง (Physical) ไมเทากัน ทั้งนี้เพราะการทำสำเนา เครอื่ งคอมพิวเตอรเ สมือนโดยปกติจะทำสำเนาขอมลู ในดสิ กเ สมอื นและจองพื้นท่ีเก็บขอ มูลเพยี งเทา ทใี่ ชเ ทาน้ัน 155
ภาพท่ี 8.10 หนาจอผลลัพธคำส่ังตรวจสอบขนาดของดิสกเสมือน สำหรับการตรวจสอบโดยละเอียด คือ การตรวจสอบถึงแฟมขอมูลและขอมูลของแฟมขอมูลทั้งหมดใน แฟมขอมูลดิสกเสมือนของทั้งสองเครื่องนั้น สามารถใชเครื่องมือ virt-diff โดยระบุชื่อเครื่องคอมพิวเตอร เสมอื นเครอื่ งแยกในพารามิเตอร -d และชอื่ เครอื่ งคอมพวิ เตอรเ สมือนท่ีตองการเปรียบเทียบในพารามิเตอร -D เชน # virt-diff -d demo-centos -D demo-centos-2 ในบางกรณีเครื่องคอมพิวเตอรเสมือนอาจประกอบดวยดิสกเสมือนหลายดิสก ผูอานสามารถ เปรียบเทียบเฉพาะบางดิสกเสมือนที่ตองการไดไดโดยระบุตำแหนงที่อยูของแฟมขอมูลดิสกเสมือนของเครื่อง แรกในพารามิเตอร -a และตำแหนงที่อยูของแฟมขอมูลดิสกเสมือนของเครื่องที่ตองการเปรียบเทียบใน พารามิเตอร -A เชน # virt-diff -a /var/lib/libvirt/images/demo-centos-1.qcow2 -A /var/lib/libvirt/images/demo-centos-1-clone.qcow2 เมื่อพิมพคำสั่งจะปรากฎผลลัพธเปนการเทียบความแตกตางของทั้งสองเครื่องคอมพิวเตอรเสมือนหรือ ดิสกเสมือนซึ่งอาจมีความยาวเกินจำนวนบรรทัดที่แสดงไดใน 1 หนาจอ ในกรณีนี้ ผูอานสามารถกำหนดให โปรแกรม virt-diff แสดงผลลัพธในรูปแบบ Comma Separated Value (CSV) และบันทึกเก็บไวไดดวยการ เพม่ิ พารามิเตอร --csv และสงออกเอาตพ ตุ จากทแ่ี สดงบนหนาจอไปทท่ี ้งั หนาจอและแฟมขอมูล compare.csv ดวยคำส่งั # virt-diff -d demo-centos -D demo-centos-2 --csv | tee compare.csv หรอื # virt-diff -a /var/lib/libvirt/images/demo-centos-1.qcow2 -A /var/lib/libvirt/images/demo-centos-1-clone.qcow2 --csv | tee compare.csv เมื่อพิมพคำสั่งจะปรากฎผลลัพธเปนการเทียบความแตกตางของทั้งสองเครื่องคอมพิวเตอรเสมือนหรือ ดิสกเสมือนโดยแสดงผลลัพธบนหนาจอและบันทึกลงแฟม ขอมูลชื่อ compare.csv ผูอานสามารถใชโปรแกรม แกไขขอความทั่วไปเขาไปตรวจสอบความแตกตางโดยละเอียดไดในภายหลัง นอกจากนี้ ผูอานยังสามารถ 156
ประยุกตใชโปรแกรม virt-diff บันทึกแฟมขอมูลความแตกตางเปน ระยะ ๆ เพื่อบันทึกความเปลี่ยนแปลงของ เครอ่ื งที่ใชง านกับเคร่อื งตนแบบกไ็ ด 8.5 การยายเครื่องคอมพวิ เตอรเสมอื นไปเครอ่ื งอืน่ หนึ่งในคุณสมบัติของโปรแกรม KVM ที่เปนคุณสมบัติที่สำคัญ คือ ความสามารถในการยายเครื่อง คอมพิวเตอรเสมือนไปเครือ่ งอื่นไดในขณะที่เครือ่ งกำลงั ทำงานอยู ซึ่งเปนคุณสมบัติที่สำคัญของโปรแกรมกลุม ไฮเปอรไวเซอรที่สามารถรองรับการทำงานขนาดใหญ โดยโปรแกรม KVM รองรับการยายเครื่องคอมพิวเตอร เสมือนขณะที่เครื่องกำลังทำงานอยู 2 รูปแบบ คือ รูปแบบที่แบงปนพื้นที่เก็บขอมูล (Shared storage) และ รูปแบบที่ไมไดแบงปนพื้นที่เก็บขอมูล (Non-shared storage) ซึ่งกอนการยายเครื่องคอมพิวเตอรเสมือน เคร่อื งคอมพิวเตอรแ มขายทัง้ สองเคร่ืองจำเปน จะตอ งติดตงั้ โปรแกรม KVM และเปด ใชง านใหเรยี บรอ ยกอ น สำหรับขั้นตอนการยายเครื่องคอมพิวเตอรเสมือนในรูปแบบที่แบงปนพื้นที่เก็บขอมูลนั้น ผูอาน จำเปนตองตั้งคาเครื่องแมขายทั้งสองเครื่องใหสามารถเขาถึงพื้นที่เก็บขอมูลรวมกันใหไดกอน ซึ่งพื้นที่เก็บ ขอมูลรวมกันสามารถเปน รูปแบบตาง ๆ ในปจ จุบนั เชน การแบง ปนที่เก็บขอมูลในเครื่องผานโพรโตคอล NFS การแบงปนผานอปุ กรณท ี่เก็บขอ มลู เครือขา ยอยา ง NAS หรอื SAN เปนตน การตั้งคาแบงปนแฟมขอมูลผานโพรโตคอล NFS มีการตั้งคาใน 2 สวน คือ การตั้งคาเครื่องที่ตองการ แบง ปน แฟม ขอมูล และการต้ังคาเคร่อื งทีต่ อ งการเขาถึงแฟม ขอ มลู สำหรับการตัง้ คาเคร่ืองทต่ี องการแบงปน แฟมขอมลู สามารถกำหนดที่อยูไดเรกทอรที ่ีตองการแบงปนไว ในแฟม ขอมูล /etc/exports ไดดวยคำส่งั # vi /etc/exports จากนั้น เพิ่มไดเรกทอรีเริ่มตนที่เก็บดิสกเสมือนของโปรแกรม KVM ที่อยูไอพีหรือเครือขายเครื่องที่ ตองการแบงปนขอมูล และการตั้งคาการแบงปน จำนวน 1 บรรทัดเวนระหวางขอมูลดวยเวนวรรคหรือแท็บ เชน ตองการแบง ปน ใหก บั เครอื่ งที่มีทอ่ี ยูไอพีเปน 172.16.208.154 ดงั ภาพที่ 8.11 ดังน้ี /var/lib/libvirt/images 172.16.208.154 (rw,no_root_squash,async) ภาพท่ี 8.11 เนื้อหาการแบงปนไดเรกทอรขี องแฟมขอมลู /etc/exports ตวั เลอื ก rw หมายถงึ แบง ปนขอมลู ใหเขียนอานได ตวั เลอื ก no_root_squash หมายถงึ บัญชีผูใ ช root ในเครอ่ื ง 172.16.208.154 ยังคงมสี ิทธิเ์ ปนเหมือน บัญชีผูใช root ในเคร่ืองท่แี บงปน (ในกรณนี ี้ เครอ่ื งทแ่ี บงปนมที ีอ่ ยไู อพเี ปน 172.16.208.141) ตัวเลอื ก async หมายถงึ คำสัง่ ทด่ี ำเนนิ การกบั ขอมลู ไมต อ งรอชดุ คำสั่งกอนหนา ทำงานเสร็จกอ น 157
ขน้ั ตอนถัดไป คือ เปด การทำงานของบริการ nfs-server ทนั ที และเม่อื รีบูตเครอื่ ง # systemctl start nfs-server # systemctl enable nfs-server ในกรณีที่ผูอานแกไขแฟมขอมูล /etc/exports ผูอานสามารถโหลดการตั้งคาใหมโดยที่ไมจำเปนตอง รีสตารท บรกิ าร nfs-server ไดดว ยคำส่ัง # exportfs -arv ในกรณีที่ผูอานตองการตรวจสอบวามีไดเรกทอรีไหนบางที่ไดแบงปนไปแลว และแบงปนดวยการตั้งคา แบบใด สามารถตรวจสอบไดด ว ยคำส่ัง ดงั น้ี # exportfs -s จากนั้นเปดการทำงานของไฟรวอลล ในกรณีที่เครื่องแมขายมีเครื่องที่ตองแบงปนขอมูลจำนวนมาก สามารถเปด พอรตไฟรวอลล ดวยคำส่ัง # firewall-cmd --permanent --add-service=nfs # firewall-cmd --permanent --add-service=mountd # firewall-cmd --permanent --add-service=rpc-bind # firewall-cmd --reload แตถาตองการเพิ่มความมั่นคงปลอดภัยใหกับการแบงปนขอมูลผานโพรโตคอล NFS เดิมผูอานสามารถ ใชงานฟงกชัน TCP Wrappers แตตั้งแต CentOS 7 หรือใหมกวา ฟงกชันของ TCP Wrappers ไดถูกเลิกใช ไปแลว ดังนั้น ผูอานสามารถประยุกตใชการทำงานของ firewalld โดยการสรางโซนพิเศษที่ใชแบงปน แฟม ขอ มูลผานโพรโตคอล NFS ได ดังน้ี 1) สรางโซนใหมชอ่ื kvmshare # firewall-cmd –new-zone=kvmshare –permanent # firewall-cmd –reload 2) จากนั้นเพิ่มที่อยูเครื่องที่ตองการแบงปนขอมูล เชน แบงปนไปเครื่องที่มีที่อยูไอพีเปน 172.16.208.154 ดังนี้ # firewall-cmd --add-source=172.16.208.154 --zone=kvmshare – permanent 3) เพิม่ บริการของโพรโตคอล NFS ทีอ่ นุญาตใหเฉพาะโซน kvmshare # firewall-cmd --zone=kvmshare --add-service=nfs --permanent 158
# firewall-cmd --zone=kvmshare --add-service=mountd --permanent # firewall-cmd --zone=kvmshare --add-service=rpc-bind –permanent 4) โหลดการตง้ั คาใหม และตรวจสอบรายละเอยี ดของโซน kvmshare # firewall-cmd –reload # firewall-cmd --zone=kvmshare --list-all สำหรับการตั้งคาเครื่องที่ตองการเขาถึงแฟมขอมูล สามารถใชตรวจสอบไดเรกทอรีที่ถูกแบงปนผาน โพรโตคอล NFS จากเคร่ืองที่แบงปน ไดด ว ยคำส่งั # showmount -e 172.16.208.141 การเช่อื มตอ ไดเรกทอรีสามารถทำไดด วยคำสั่ง mount ดังน้ี # mount 172.16.208.141:/var/lib/libvirt/images /var/lib/libvirt/images แตการเชื่อมตอดวยคำสั่ง mount จะไมคงทนหลังการรีบูต ผูอานจำเปนตองแกไขแฟมขอมูล /etc/fstab ดวยการเพมิ่ ขอมูลการเชือ่ มตอ ดังภาพที่ 8.12 ภาพท่ี 8.12 เนื้อหาการเพม่ิ การเชอื่ มตอพารทติชนั ของแฟม ขอมูล /etc/fstab เนื่องจากการใชงานไดเรกทอรีเก็บดิสกเสมือนของโปรแกรม KVM ของเครื่อง 172.16.208.154 จะ เขาถึงดิสกของเครื่อง 172.16.208.141 ผานโพรโตคอล NFS ดังนั้น ผูอานจำเปนตองอนุญาตการเขาถึงใน SELinux ดว ยคำสัง่ # setsebool -P virt_use_nfs on ในขั้นตอนสุดทาย หากตองการยายเครื่องคอมพิวเตอรเสมือนชื่อ demo-centos จากเครื่องที่มีที่อยู ไอพเี ปน 172.16.208.141 สามารถใชคำส่ังได # virsh migrate --unsafe --persistent --live demo-centos qemu+ssh://172.16.208.154/system 159
- พารามิเตอร unsafe หมายถงึ บังคบั การเคล่ือนยา ยเคร่อื งขณะท่เี ครอื่ งกำลังทำงานอยู - พารามิเตอร persistent หมายถึง ใหเคร่อื งคอมพวิ เตอรเสมือนไปอยถู าวรทีเ่ ครอ่ื งปลายทาง - พารามเิ ตอร live หมายถงึ การเคลือ่ นยายเครือ่ งคอมพวิ เตอรขณะกำลังทำงานอยู โดยที่รูปแบบของเครื่องปลายทางจะเปน qemu+ssh://<ที่อยูไอพี>/system หมายถึง การเขาถึงสทิ ธิ์ ผดู ูแลระบบของโปรแกรม KVM ในเครอ่ื งท่มี ีท่ีอยไู อพีตามทร่ี ะบุ เม่อื พิมพคำสง่ั เสร็จ โปรแกรม KVM จะพยายามคัดลอกขอมลู ท่ีอยูในแรมของเคร่ืองคอมพวิ เตอรเสมือน demo-centos ไปยังเครื่องปลายทาง คือ เครื่องที่มีที่อยูไอพีเปน 172.16.208.154 โดยไมคัดลอกขอมูลดิสก เสมือน เม่อื เสร็จสมบรู ณ เครอ่ื งคอมพิวเตอร demo-centos ทีเ่ คร่อื งปลายทางจะเปด การทำงานโดยอัตโนมตั ิ สำหรับขั้นตอนการยายเครื่องคอมพิวเตอรเสมือนในรูปแบบที่ไมแบงปนพื้นที่เก็บขอมูลนั้น เครื่องตน ทางและเครื่องปลายทางไมจำเปนตองการตั้งคาการแบงปนแฟมขอมูลผานโพรโตคอล NFS เพราะขอมูลของ ดิสกเสมือนและเครื่องคอมพิวเตอรเสมือนจะถูกคัดลอกผา นโพรโตคอล SSH ซึ่งเปนโพรโตคอลมาตรฐานแทน แตการจะคัดลอกเคร่ืองคอมพิวเตอรเสมือนใหไปทำงานกับเครื่องแมขายอีกเคร่ืองหนึ่งไดนั้น ทั้งเครื่องตนทาง (ที่อยูไอพี 172.16.208.154) และเครื่องปลายทาง (ที่อยูไอพี 172.16.208.141) จำเปนตองรูจักกันในรูปแบบ ชอ่ื โฮสตก อน โดยสามารถตงั้ คาแตล ะเคร่อื งไดดังน้ี 1) ตั้งชื่อโฮสตท่ีเครื่องตนทางดวยคำสั่ง hostnamectl และระบุชื่อโฮสตของเครื่องปลายทางไวท่ี /etc/hosts ของเครอ่ื งตน ทาง ดงั น้ี 172.16.208.154 # hostnamectl set-hostname source.example.com 172.16.208.154 # echo \"172.16.208.141 destination.example.com\" >> /etc/hosts 2) ตั้งชื่อโฮสตท่ีเครื่องปลายทางดวยคำสั่ง hostnamectl และระบุชื่อโฮสตของเครื่องตนทางไวที่ /etc/hosts ของเคร่อื งปลายทาง ดังนี้ 172.16.208.141 # hostnamectl set-hostname destination.example.com 172.16.208.141 # echo \"172.16.208.154 source. example.com\" >> /etc/hosts 3) จากน้ันเปด พอรตไฟรว อลลที่เคร่ืองปลายทางเพื่อรับการเช่ือมตอของโปรแกรม KVM โดยโปรแกรม KVM จะใชพ อรตตั้งแต 49152 ถึง 49215 ข้นึ อยกู บั ความเร็วเครือขายและจำนวนเครื่องที่ตองการ ยา ยพรอ มกัน ดงั คำสง่ั # firewall-cmd --add-port=49152-49215/tcp --permanent # firewall-cmd –reload เฉพาะในกรณีที่เครื่องแมขายปลายทางถูกตั้งขึ้นมาใหม และยังไมเคยสรางเครื่องคอมพิวเตอร เสมือนมากอน เครื่องแมขายปลายทางจำเปนตองการอางขอมูล (data pool) สำหรับเก็บขอมูลเครื่อง 160
คอมพิวเตอรเสมือนกอน ในกรณีที่ผูอานไมแนใจวาเครื่องแมขายนั้นมีอางขอมูลหรือยัง สามารถ ตรวจสอบไดดวยคำสง่ั น้ี # virsh pool-list 4) หากไมมีอางขอมูล ใหสรางอางขอมูลใหมโดยมีที่อยูเปนไดเรกทอรีเดยี วกันกับเครื่องตนทาง ผูอาน สามารถสรา งอา งขอ มลู ใหมด วยการสรา งแฟมขอมูล default-pool.xml ดว ยคำสงั่ ดังน้ี # vi default-pool.xml จากน้นั เพ่ิมเนอ้ื หาของแฟมขอมูล ลงไปดงั ตอไปน้ี <pool type='dir'> <name>images</name> <target> <path>/var/lib/libvirt/images</path> </target> </pool> จากนัน้ สงั่ ใหโ ปรแกรม KVM รูจ กั อา งขอ มูลและเปด การใชงาน ดว ยคำสงั่ # virsh pool-define pool-images.xml # virsh pool-start images หลังจากท่ีสั่งใหอางขอมูลทำงานแลว ผูอานสามารถตรวจสอบการทำงานของอางขอมูลไดดวย คำสัง่ นี้ # virsh pool-list 5) ใชคำสั่งยายเครื่องคอมพิวเตอรเสมือนชื่อ demo-centos จากเครื่องที่มีที่อยูไอพีเปน 172.16.208.141 สามารถใชคำส่งั ได # virsh migrate --copy-storage-all --persistent --live demo-centos qemu+ssh://172.16.208.154/system - พารามิเตอร copy-storage-all หมายถึง คัดลอกทั้งขอมูลเครื่องคอมพิวเตอรเสมือนและทุกดิสก เสมอื น - พารามิเตอร persistent หมายถึง ใหเครื่องคอมพิวเตอรเสมือนไปอยถู าวรท่เี ครอื่ งปลายทาง - พารามเิ ตอร live หมายถึง การเคลอื่ นยา ยเครือ่ งคอมพวิ เตอรขณะกำลังทำงานอยู โดยที่รูปแบบของเครื่องปลายทางจะเปน qemu+ssh://<ที่อยูไอพี>/system หมายถึง การ เขาถงึ สิทธ์ผิ ดู ูแลระบบของโปรแกรม KVM ในเคร่อื งที่มีท่อี ยไู อพตี ามท่ีระบุ การยายเครื่องคอมพิวเตอรเสมือนทั้งสองรูปแบบเหมาะสมในสถานการณที่ตางกัน ในกรณีที่ หนวยงานสามารถจัดหาที่เก็บขอมูลกลางผานโพรโตคอลตาง ๆ เชน NFS NAS SAN iSCSI หรือ Fiber 161
channel เปนตน การบันทึกเครื่องคอมพิวเตอรเสมือนไวพื้นที่เก็บขอมูลสวนกลางจะชวยใหการยาย เครื่องคอมพิวเตอรเสมือนสามารถทำไดอยางรวดเร็ว และแทบไมมีเวลาหยุดใหบริการเลย อยางไรก็ดี หากจำเปนตองยายเครื่องคอมพิวเตอรเสมือนไปยังที่ตั้งอื่น การยายเครื่องคอมพิวเตอรเสมือนโดย คัดลอกขอมูลทั้งหมดไป จะชวยลดเวลาการหยุดใหบริการเมื่อเทียบกับการคัดลอกแฟมขอมูลดิสก เสมอื นและการดมั (dump) ขอมูลเครือ่ งคอมพวิ เตอรเ สมอื นเอง 162
บทสรุป การบนั ทึกสถานะของเครื่องคอมพวิ เตอรเสมือนนนั้ มเี ง่ือนไขข้นั ต่ำ คือ เครอ่ื งคอมพิวเตอรเ สมือนจะตอง ปดการทำงานอยูและดิสกทุกดิสกในเครื่องคอมพิวเตอรเสมือนจะตองอยูในรูปแบบ Qcow2 เทานั้น และ บันทึกสถานะของเครื่องคอมพิวเตอรเสมือน เรียกวา snapshot การสรางสถานะของเครื่องคอมพิวเตอร เสมือนจะชวยใหผูอานสามารถยอนหลังหรือเดินหนาไปยังสถานะที่บันทึกไวอยูไดตามตองการ ขอดีของการ ทำงานเบื้องหลังแบบนี้คือ 1) สามารถบันทึกการสรางเครื่องคอมพิวเตอรเสมือนไดไมจำกัด และสามารถ ดำเนนิ การในรูปแบบตนไมไดซึ่งจะสามารถเก็บสถานะของเคร่ืองท่ซี ับซอ น 2) เนอ่ื งจากหลงั การทำ Snapshot โปรแกรม KVM จะสรางแฟมสวนตางไวรออยูแลว การสรางบันทึกสถานะของเครื่องครั้งใหมสามารถ ดำเนินการไดอ ยางรวดเรว็ แตทง้ั น้ีก็ตอ งแลกกบั ขอเสีย คือ 1) โปรแกรม KVM จะสรางดิสกสว นตางซอนขึ้นมา เรอ่ื ย ๆ ทำใหประสทิ ธิภาพของดสิ กลดลง 2) หากสถานะท่ีอยูร ะหวา งดสิ กเริม่ ตน และสถานะปจจุบันเสียหาย จะทำใหไมส ามารถอานขอมูลจากดิสกข องเครื่องคอมพิวเตอรเสมือนได การทำสำเนาเครอ่ื งคอมพวิ เตอรเ สมือน คอื การทำสำเนาขอมลู ทง้ั เคร่ืองคอมพวิ เตอรเสมือนใหมอีกครั้ง ซึ่งจะไมทำใหประสิทธิภาพเครือ่ งลดลง แตจะใชพื้นที่เก็บขอมูลปริมาณมากแทน วิธีการนี้จึงเหมาะสมสำหรับ การปรับใชในสภาพการใชงานจริง สามารถใชคำสั่ง virt-clone ในกรณีที่ตองการทำสำเนาเครื่องในปริมาณ มาก ผูอานสามารถใชเคร่ืองทีท่ ำสำเนามาปรับแตงเพื่อสรางเปนแมแ บบดวยเครื่องมือ virt-sysprep กอนแลว จึงนำเครอ่ื งแมแ บบดงั กลา วไปทำสำเนาเปนเครื่องอน่ื อีกที การยายเครื่องคอมพิวเตอรเสมือนไปเครื่องอื่นสามารถทำไดขณะที่เครื่องกำลังทำงานอยู สามารถแบง รูปแบบการยายออกเปน 2 รูปแบบ คือ 1) รูปแบบที่แบงปนพื้นทีเ่ ก็บขอมูล (Shared storage) เปนรูปแบบที่ เครื่องแมขายทั้งสองเครื่องสามารถเขาถึงที่เก็บขอมูลเดียวกัน การยายรูปแบบนี้จะทำการยายขอมูลใน หนวยความจำหลัก และคาเมตาดาทาของเครื่องคอมพิวเตอรเสมือนเทานั้น ซึ่งสะดวกและใชเวลาไมนาน 2) รูปแบบที่ไมไดแบงปนพื้นที่เก็บขอมูล (Non-shared storage) เปนรูปแบบที่เครื่องแมขายทั้งสองเครื่องไมได เขา ถงึ ท่ีเก็บขอมูลเดยี วกัน การยา ยรปู แบบน้ีจะทำการยายขอมลู ดิสกเสมือน ขอ มลู ในหนว ยความจำหลัก และ คาเมตาดาทาของเครื่องคอมพวิ เตอรเสมอื น ทำใหใชเวลานานกวา รูปแบบที่ 1 มาก 163
สรุปคำสงั่ ท่นี า สนใจ เนอื้ หา คำสง่ั หรอื ช่ือคำส่ังทเี่ ก่ียวของ บนั ทกึ สถานะของเครอื่ งคอมพิวเตอรเ สมือนเพื่อหยดุ # virsh managedsave demo-centos การทำงาน การสรางบันทึกสถานะ # virsh snapshot-create-as --domain demo- centos --name snapshot_1 –description \"the first snapshot\" แสดงรายการสถานะที่สรางไว # virsh snapshot-list demo-centos แสดงรายละเอียดของสถานะทส่ี รางไว # virsh snapshot-info --domain demo-centos --snapshotname snapshot_1 กคู นื สถานะของเคร่ืองคอมพิวเตอรเ สมือน # virsh snapshot-revert demo-centos snapshot_1 ลบการบันทึกสถานะออกจากเคร่ืองคอมพวิ เตอร # virsh snapshot-delete --domain demo- เสมอื น centos -snapshotname snapshot_1 แพ็คเกจเคร่ืองมือสำหรับบริหารจดั การเคร่ือง libguestfs-tools คอมพวิ เตอรเสมอื น สรางแมแ บบจากเครื่องคอมพิวเตอรเ สมือนตัวอยา ง # virt-sysprep -d demo-centos --root- ท่ีสรา งไวแลว พรอ มกำหนดรหัสผานของ root password password:123456 สรา งแมแ บบจากดสิ กเ สมือนทีส่ รางไวแ ลว พรอ ม # virt-sysprep -a กำหนดรหสั ผานของ root /var/lib/libvirt/images/demo-centos-1.qcow2 --root-password password:123456 สรางแมแ บบจากดสิ กเ สมือน พรอ มกำหนดรหัสผาน # virt-sysprep -a ของ root /var/lib/libvirt/images/demo-centos-1.qcow2 --root-password password:123456 ทำสำเนาเคร่ืองคอมพวิ เตอรเ สมือน # virt-clone --original demo-centos --name demo-centos-2 --auto-clone ตรวจสอบความแตกตา งของขอมลู ในดสิ กร ะหวาง # virt-diff -d demo-centos -D demo-centos-2 เครอ่ื งคอมพวิ เตอรเ สมือน ตรวจสอบความแตกตา งของขอมูลในดสิ กร ะหวา ง # virt-diff -a /var/lib/libvirt/images/demo- ดสิ กเสมอื นท้งั สองแฟมขอมลู centos-1.qcow2 -A /var/lib/libvirt/images/demo-centos-1- clone.qcow2 การตง้ั คา แบงปนขอมลู ผานโพรโตคอล NFS ฝง # vi /etc/exports แบง ปน เพม่ิ ขอมลู /var/lib/libvirt/images 172.16.208.154 (rw,no_root_squash,async) เปด การทำงานของ NFS # systemctl start nfs-server 164
เนื้อหา คำสัง่ หรือชื่อคำสัง่ ท่ีเก่ียวของ # systemctl enable nfs-server การต้งั คา แบง ปน ขอมลู ผานโพรโตคอล NFS ฝง เปดไฟรว อลล เขาถึงขอ มูลแบง ปน # firewall-cmd --permanent --add- คำสง่ั ยายเครื่องคอมพิวเตอรเ สมือน demo-centos service=nfs ไปไวทเี่ ครือ่ งอน่ื ดวยวธิ แี บง ปนทเ่ี ก็บขอมลู # firewall-cmd --permanent --add- การต้งั คาการยายเครื่องคอมพิวเตอรเ สมือน (เฉพา service=mountd นะกรณีไมแบง ปน ทีเ่ กบ็ ขอมูล) # firewall-cmd --permanent --add- service=rpc-bind คำสง่ั ยายเคร่ืองคอมพวิ เตอรเ สมือน demo-centos # firewall-cmd –reload ไปไวทเ่ี ครื่องอืน่ ดว ยวิธไี มแบงปนทเ่ี กบ็ ขอมลู เชื่อมตอ ไดเรกทอรโี ดยตรง # mount 172.16.208.141:/var/lib/libvirt/images /var/lib/libvirt/images ตัง้ คา SELinux # setsebool -P virt_use_nfs on # virsh migrate --unsafe --persistent --live demo-centos qemu+ssh://<ip_address>/system ต้งั ช่อื โฮสตใ น /etc/hosts ใหทง้ั สองเครื่องรูจักกัน เปด ไฟรวอลลเ คร่อื งปลายทาง # firewall-cmd --add-port=49152-49215/tcp --permanent # firewall-cmd –reload สรา ง Pool ในกรณีท่ีเครื่องปลายทางยังไมเคยสราง เครื่องคอมพิวเตอรเสมือน # vi default-pool.xml จากน้ันเพ่ิมเนอ้ื หาของแฟมขอมูล default- pool.xml # virsh pool-define pool-images.xml # virsh pool-start images # virsh migrate --copy-storage-all --persistent --live demo-centos qemu+ssh://172.16.208.154/system 165
แบบฝก หดั บทท่ี 8 1. บอกความแตกตางระหวา งคำสง่ั virsh managedsave และ virsh suspend 2. อธิบายคำสง่ั ที่ใชส รา ง Snapshot ใหกับเครื่องคอมพวิ เตอรเสมือน 3. บอกปญหาของการสราง Snapshot ใหกับเครอ่ื งคอมพวิ เตอรเ สมือน 4. คำส่ัง virt-sysprep มไี วเ พื่อะไร 5. อธิบายวิธีการใชงานคำสั่ง virt-clone 166
6. คำสง่ั virt-diff มไี วต รวจสอบอะไร 7. บอกคำสง่ั เปดการอนญุ าตของไฟรว อลลเ พอ่ื แบงปนแฟม ขอมูลผานโพรโตคอล NFS 8. บอกคำสง่ั เปดการอนุญาตของไฟรว อลลเพอ่ื อนญุ าตใหเ ขา ถงึ โปรแกรม KVM เพอ่ื ยา ยเครื่องคอมพิวเตอร เสมือนได 9. อธิบายข้นั ตอนวธิ ีการสรา งอางขอ มูล 10. หากตองการยา ยเครื่องคอมพิวเตอรเสมือนจากเครื่องแมข า ยหน่ึงไปอีกเครื่องแมขา ยหนึ่งโดยไมมีการ แบงปน พน้ื ทีเ่ กบ็ ขอ มูลสามารถทำไดหรอื ไม อยางไร 167
168
พ้ืนฐานเทคโนโลยีบรรจคุ อนเทนเนอร บทนำ เทคโนโลยีบรรจุคอนเทนเนอรเปนหนึ่งในเทคโนโลยีที่ใชกันมากที่สุดเมื่อตองมีการปรับใชระบบ สารสนเทศบนสถาปตยกรรมคลาวด และเปนเทคโนโลยีที่สำคัญที่ชวยขับเคลื่อนผูใหบริการคลาวดโดยเขามา ขัดจังหวะเทคโนโลยีเสมือนที่เกิดขึ้นกอน เนื่องจากทำใหการสงมอบซอฟตแวร โดยเฉพาะการติดตั้ง และการ ปรับใชงานในสภาพแวดลอมที่แตกตางกันสามารถดำเนินการไดดวยกระบวนการแบบเดียวกัน อีกทั้งการสง มอบซอฟตแวรจะไมสงผลกระทบกับซอฟตแวรอ ื่นที่ทำงานอยูบ นเครือ่ งอยูแลว ดวยเหตุนี้ จึงทำใหในปจจุบนั จึงนิยมนำเทคโนโลยบี รรจคุ อนเทนเนอรม าทำงานอยูบนเทคโนโลยเี สมือน 9.1 ความหมายของเทคโนโลยีบรรจุคอนเทนเนอร เทคโนโลยีบรรจุคอนเทนเนอรเปนเทคโนโลยีถูกคิดคนโดย Solomon Hykes ผูบริหารระดับสูงของ บริษัท dotCloud และเปดตัวในงานสัมมนานักพัฒนาภาษาไพทรอนเมื่อวันที่ 15 มีนาคม พ.ศ. 2556 โดย โปรเจคนี้มีชื่อวาด็อกเกอร (Docker) (Solomon Hykes 2013) โปรเจคด็อกเกอรเปนโปรเจคที่เปดเผยรหัส ตนฉบับและเผยแพรผานเว็บไซต Github (GitHub Inc. 2020) แมจะมีโครงการที่เปดเผยรหัสตนฉบับเกิดข้ึน ในภายหลังอยาง rkt ซึ่งหยุดพัฒนาแลว (Red Hat Inc. 2020b) หรือ podman ก็ตาม แตทุกโครงการที่ พฒั นามาพยายามจะทำพารามิเตอรในบรรทดั คำส่ังใหเ หมือนกบั docker ดว ยเหตนุ ีท้ ำใหในปจจบุ ันเวลาพดู ถึง เทคโนโลยีบรรจคุ อนเทนเนอร ผูเขยี นจะพูดถงึ ด็อกเกอรเปนหลัก เพราะเนื่องจากด็อกเกอรกลายเปนมาตรฐาน ทีเ่ กิดขน้ึ เนื่องจากมีการนิยมใชก นั มาก (De facto standard) ไปเรียบรอ ยแลว ดังนั้นเทคโนโลยีบรรจุคอนเทนเนอรจึงใหความหมายเดียวกับด็อกเกอรซึ่งก็คือเครื่องมือที่ซอนความ ซับซอนของกระบวนการของการสรางสิ่งประดิษฐ (Artifact) ของแอปพลิเคชันที่สามารถแจกจายไดงาย (Matthias and Kane 2015) โดยสามารถนำไปปรับใชไดในทุกระดับการขยายตัว ในทุกสภาพแวดลอม และ ปรบั ปรงุ ตัวเองไปพรอ มกบั ข้นั ตอนการทำงานและการตอบสนองของวิธีการพฒั นาซอฟตแ วรแ บบอไจล (Agile) 9.2 หลักการทำงานของเทคโนโลยีบรรจุคอนเทนเนอร เทคโนโลยีบรรจุคอนเทนเนอรมีหลักการ คือ การรวมนำไลบรารีและสภาพแวดลอมที่เกี่ยวของกับ ซอฟตแวรที่ตองการสงมอบมารวมอยูไวในบรรจุภัณฑหนึ่ง โดยเมื่อเวลาซอฟตแวรทำงาน ซอฟตแวรจะ มองเห็นสภาพแวดลอมในมุมที่จำกัด เรียกวา คอนเทนเนอร (Container) เสมือนหนึ่งทำงานอยูบนเครื่อง คอมพวิ เตอรอีกเครื่องหนงึ่ โดยอสิ ระ เทคโนโลยบี รรจคุ อนเทนเนอรม คี วามคลายกับเทคโนโลยีเสมือนตรงท่ีทำใหซอฟตแวรท่ีทำงานอยูทำงาน และรูจักเฉพาะในสภาพแวดลอมท่ีจำกัด แตเทคโนโลยีคอนเทนเนอรไ มไดจำลองฮารดแวรหรือการทำงานของ อุปกรณใด ๆ บนเครื่องคอมพิวเตอร เพียงแตจำกัดสภาพแวดลอมเฉพาะของซอฟตแวรเทานั้น ในขณะท่ี เทคโนโลยีเสมือนจำลองฮารดแวรทำใหตองติดตั้งระบบปฏิบัติการลงไปดวย เมื่อซอฟตแวรที่บรรจุอยูในคอน เทนเนอรไมจ ำเปน ตองบรรจรุ ะบบปฏบิ ัติการดวย จงึ สงผลใหขนาดของคอนเทนเนอรมีขนาดเล็กกวา ขนาดของ 169
เคร่ืองคอมพิวเตอรเ สมือน ใชหนวยความจำหลกั นอยกวาเทคโนโลยีเสมือน (Bashari Rad, John Bhatti, and Ahmadi 2017; Chung et al. 2016) และไมจำเปนตองพึ่งพาฮารดแวรโดยเฉพาะชุดคำสั่งพิเศษของหนวย ประมวลผลกลาง สงผลใหประสิทธิภาพการทำงานของแอปพลิเคชันที่อยูในคอนเทนเนอรยังมีประสิทธิ ใกลเคียงความเร็วเมื่อสั่งเปด การทำงานโดยตรง (Bashari Rad et al. 2017; Chung et al. 2016; Emilsson 2020; Kumar and Kurhekar 2017; Paraiso et al. 2017; Xie, Wang, and Wang 2018) ภาพที่ 9.1 เปรียบเทียบการติดตั้งแอปพลิเคชันบนเทคโนโลยีเสมือนที่ตองผานไฮเปอรไวเซอรและระบบปฏิบัติการเกสต กบั การตดิ ตัง้ แอปพลิเคชันบนแพลตฟอรมของด็อกเกอร แอป A เครอ่ื งเสมือน แอป C คอนเทนเนอร ไลบรารี ไลบรารี แอป B แอป A แอป B แอป C ไลบรารี ไลบรารี ไลบรารี ไลบรารี ระบบปฏบิ ตั กิ ารเกสต ระบบปฏิบตั กิ ารเกสต ระบบปฏบิ ตั กิ ารเกสต ด็อกเกอร ระบบปฏิบัติการโฮสต ไฮเปอรไวเซอร สถาปต ยกรรม สถาปตยกรรม ภาพที่ 9.1 การทำงานของแอปพลเิ คชนั บนเทคโนโลยเี สมอื นและเทคโนโลยีบรรจุคอนเทนเนอร ดดั แปลงมาจาก: (Docker Inc. 2020b) 9.3 ประโยชนของการใชเ ทคโนโลยีบรรจุคอนเทนเนอร เทคโนโลยีบรรจุคอนเทนเนอรไ มเพยี งแตเ ปน ประโยชนเ ฉพาะกับผูดูแลระบบ หรือผใู หบริการคลาวด แต ยังเปนประโยชนกับนักพัฒนาซอฟตแวร ทีม และองคกรในหลายดาน เพราะดวยสถาปตยกรรมการทำงานที่ เรียบงายทำใหทุกแอปพลิเคชันเมื่อมองจากนอกคอนเทนเนอรมีคุณลักษณะเหมือนกันหมด คือ เปนกลุมของ แอพลิเคชันและไลบรารที ี่จำเปนทีพ่ รอมเปดการทำงานโดยทีไ่ มจำเปนตองตดิ ต้ังโปรแกรมอะไรเพิม่ เติม ทำให เกดิ ประโยชนด ังตอไปน้ี 1) การบรรจุภัณฑซอฟตแ วรในทางทใี่ ชป ระโยชนจากทกั ษะของนักพัฒนามีอยูแลว หลายหนวยงานตองเปดรับตำแหนงสำหรับการสรางและจัดทำบรรจุภัณฑใหกับซอฟตแวร โดยเฉพาะ เพื่อจะบริหารจัดการองคความรูและเครื่องมือที่จำเปนในการสรางแพ็คเกจซอฟตแวร ซึ่งเครื่องมือเหลานั้นมีความแตกตางและซับซอนกันไปเมื่อภาษาที่ใชเขียนโปรแกรมแตกตางกัน แตด อ็ กเกอรชว ยใหนกั พฒั นาเขยี นคำสั่งของซอฟตแวรท ่ีตนเองรบั ผดิ ชอบเกบ็ ไวในแฟมขอมลู เดยี ว 2) การรวมซอฟตแวรแอพพลิเคชั่นและแฟมขอมูลของระบบปฏิบัติการที่จำเปนเขาดวยกันในรูปแบบ มาตรฐานเดยี ว ในอดีต การรวมซอฟตแวรไมใชแคการรวมแฟมขอมูลของซอฟตแวรเพียงอยางเดียว แตจะตอง รวมไลบรารีที่ตองใชดวย ไลบรารีบางตัวมาพรอมกับระบบปฏิบัติการ ทำใหเวลารวมแพ็คเกจอาจ 170
ประสบความสำเร็จและทำงานไดในเครือ่ งของผูอาน แตไมใชกับเครือ่ งของลกู คา เพราะในบางครั้ง ทง้ั ไลบรารแี ละเวอรชนั ของไลบรารีจะตองตรงกันกับที่แอปพลิเคชันเรียกใช แมซอฟตแ วรจะทำงาน บนระบบปฏิบตั กิ ารลีนุกซเ หมือนกัน แตเพียงเวอรชันของระบบปฏิบตั ิการตา งกันก็ทำใหเกิดปญหา ทางทดสอบการปรับใชซอฟตแวร แตดวยด็อกเกอร เมื่อตองการรวมซอฟตแวรเขาดวยกันกับ ไลบรารี ด็อกเกอรจะรวมไลบรารีของระบบปฏิบัติการเวอรชันที่ใชพัฒนาและตั้งใจจะนำไปปรับใช อยูดวยในคอนเทนเนอรทำใหกระบวนการการติดตั้งซอฟตแวรมีประสิทธิภาพและตรวสอบไดวา ทำงานไดเมอ่ื สงมอบลูกคา อยางแนนอน 3) การใชสิ่งประดิษฐที่แพ็กเกจสรางเพื่อทดสอบและสงมอบสิ่งประดิษฐเดียวกันใหกับทุก ระบบปฏบิ ตั กิ ารและในทกุ สภาพแวดลอม เม่ือนักพัฒนาอัพเดทการเปลยี่ นแปลงลงไปในฐานขอมูลรหสั ตน ฉบับแลว ซอฟตแวรเวอรชันใหม ในรูปแบบอิมเมจของด็อกเกอรสามารถถูกสรางขึ้นได ซึ่งจะผานกระบวนการทดสอบและสามารถ นำไปปรบั ใชไ ดใ นสภาพการใชง านจริงโดยที่ไมต องคอมไพลหรือสรางแพ็คเกจแยกสำหรบั สภาพการ ใชง านจริง 4) ซอ นลักษณะของฮารดแวรจ ากมุมมองของซอฟตแวรโดยที่ไมต องเสยี ทรัพยากร ในอดีตการซอนลักษณะของฮารดแวรจากมุมมองของซอฟตแวรสามารถทำไดโดยมีไฮเปอรไว เซอรเปนตัวจัดการทำใหเครื่องคอมพิวเตอรเสมือนทุกเครื่องใชไดรเวอรเหมือนกันทั้งหมด แตตอง เสียทรัพยากรทั้งเวลาของหนวยประมวลผลกลางและหนวยความจำหลัก เพราะจะตองติดตั้ง ระบบปฏิบัตกิ ารอีกชน้ั ซึ่งมาพรอมกับโพรเซสบางตวั ที่ทำงานอยูเบ้ืองหลังเต็มไปหมด ในขณะที่ด็อก เกอรไมตองใชทรัพยากรเหลานั้นเลย เพราะไมตองมีระบบปฏิบัติการอีกชั้นหนึ่ง ทั้งนี้เพราะแกน ของระบบปฏิบัติการลีนุกซที่ทันสมัยในทุกดิสตริบิวนั้นมีคุณสมบัติการทำงานพื้นฐานที่เหมือนกัน หมด การใชเ ทคโนโลยบี รรจุคอนเทนเนอรม ีขอดีกวา เทคโนโลยีเสมือนหลายประการ แตเทคโนโลยีบรรจุคอน เทนเนอรไ มสามารถแทนท่ีเทคโนโลยเี สมือนได เน่ืองจากมขี อ จำกัดบางประการ โดยเฉพาะประเดน็ ความมั่นคง ปลอดภัย (Combe, Martin, and di Pietro 2016) เชน เพราะไมมีไฮเปอรไวเซอรแยกออกจากกัน แอปพลิเคชันที่ทำงานในคอนเทนเนอรจะตองเปนของระบบปฏิบัติการแพลตฟอรมเดียวกันเทานั้น เชน หาก ระบบปฏิบัติการเปนลีนุกซ ตัวซอฟตแวรภายในคอนเทนเนอรจะตองเปนซอฟตแวรที่ทำงานบนลีนุกซ เหมือนกัน เนื่องจากไมไดมีแกนของระบบปฏิบัติการวินโดวสถูกติดตั้งในคอนเทนเนอรด วย อีกประการหนึ่งที่ สำคัญ คือ เนอ่ื งจากการแยกสภาพแวดลอมของเทคโนโลยีคอนเทนเนอรไมมรี ะบบปฏิบัติการค่ันกลางระหวาง ซอฟตแวรทำใหทุกซอฟตแวรแบงปนฮารดแวรเ ดียว ซึ่งรวมถึงที่อยูไอพีและอินเตอรเฟสเครอื ขายเดียวกันดวย ซึ่งตางจากเทคโนโลยีเสมือนที่จะจำลองอินเตอรเฟสเครือขายและที่อยูทางกายภาพ (MAC Address) ให ตางกันเสมือนเปนคอมพวิ เตอรทางกายภาพอีกเครื่อง 171
9.4 องคประกอบและการปฏสิ ัมพันธร ะหวางองคประกอบ ด็อกเกอรใชสถาปตยกรรมแบบแมขายลูกขาย ระบบนิเวศของด็อกเกอรมีองคประกอบที่สำคัญอยู 3 องคประกอบ คือ ด็อกเกอรลูกขาย (Docker Client) ด็อกเกอรโฮสต (Docker Host) และรีจีสตรี (Registry) โดยผูใชสั่งงานระบบด็อกเกอรผา นดอ็ กเกอรลูกขาย โดยเริ่มตนด็อกเกอรลูกขา ยจะชี้ไปยังดอ็ กเกอรโฮสตท่ีอยู ในเครื่องเดียวกัน (localhost) เมื่อด็อกเกอรโฮสตที่ทำงานอยูเบื้องหลังตลอดเวลา (Daemon) รับคำสั่ง ด็อก เกอรโฮสตอาจตองการดาวนโหลดอิมเมจจากรีจีสตรี รีจีสตรีเปนศูนยกลางที่รวบรวมอิมเมจไวใหด็อกเกอร โฮสตส ามารถดาวนโ หลดมาใชงานได รจี สี ตรหี ลกั ของระบบด็อกเกอร คอื ด็อกเกอรฮับ (Docker Hub) ซึ่งเปน รีจีสตรีสาธารณะที่ผูผลิตซอฟตแวรที่ตองการเผยแพรซอฟตแวรใหทุกคนดาวนโหลดไปใชงานสามารถสราง อิมเมจของซอฟตแ วรแ ละนำมาฝากใหด็อกเกอรฮับแจกจา ยได ดังภาพที่ 9.2 ขอดีของสถาปตยกรรมนี้ คือ ด็อกเกอรลูกขาย และด็อกเกอรโฮสตไ มจำเปน ตองอยูเครื่องเดียวกัน โดย ทางเทคนิค ด็อกเกอรรองรับการเชื่อมตอหลายรูปแบบ เชน REST API หรือผานโพรโตคอล SSH เปนตน ดังนั้น ในกรณีของการติดตั้งบนเครือ่ งเดีย่ ว (Standalone) เครื่องคอมพิวเตอรเครื่องหนึ่งจำเปนจะตองมีด็อก เกอรลกู ขา ย และดอ็ กเกอรโ ฮสตติดตั้งไวในเคร่อื งจงึ จะสามารถทำงานได ภาพท่ี 9.2 การทำงานของระบบด็อกเกอร ดดั แปลงมาจาก: (Docker Inc. 2020b) วัตถุพื้นฐานท่ีสำคัญในระบบด็อกเกอรประกอบดวยวัตถุ 4 ประเภท ดังError! Reference source not found.นี้ 1) อิมเมจ (Image) คือ ซอฟตแวรที่ถูกสรางดวยด็อกเกอรโฮสตและบรรจุไวอยูในรูปแบบแพ็คเกจ ของดอ็ กเกอร คุณลักษณะท่สี ำคัญของอิมเมจ คือ ไมสามารถแกไขได (Immutable) ดงั น้ัน อิมเมจ ถูกใชใหเ ปน แมแบบในการทำงานของซอฟตแวร ทัง้ นี้เพ่อื รองรับการทำงานของซอฟตแวรหลายตัว 172
พรอมกัน (Multiple Instance) และใชเปนแหลงอางอิงในการสรางอิมเมจอื่น เชน หากตองการ บรรจุเว็บแอปพลิเคชันที่พัฒนาลงคอนเทนเนอร นักพัฒนาอาจตองอางอิงอิมเมจที่บรรจุเว็บ เซิรฟเวอร และเฟรมเวิรกที่ใชพัฒนาเว็บแอปพลิเคชันดวย อิมเมจที่ถูกสรางจะมีลักษณะเปนช้ัน ขอมูล (Layer) เมื่อถูกอางอิงและสรางอิมเมจใหม ด็อกเกอรจะสรางชั้นขอมูลที่บรรจุแฟมขอมูลท่ี แตกตางไปจากชั้นขอมูลที่อางอิงไปเรื่อย ๆ ทำใหหากด็อกเกอรโฮสตตองบรรจุอิมเมจของเว็บ แอปพลิเคชันหลายตัวที่ใชเว็บเซิรฟเวอรแ ละเฟรมเวริ ก เดียวกนั ด็อกเกอรจะไมเก็บขอมูลของช้ันท่ี เปนเว็บเซริ ฟ เวอรแ ละเฟรมเวริ ก น้นั ซำ้ ซอ นกนั 2) คอนเทนเนอร (Container) คือ ตัวอยางของอิมเมจท่ีทำงาน ผูอานสามารถสราง เรมิ่ ตน หยุด ยาย และลบคอนเทนเนอรได เมื่อเริ่มตน การคอนเทนเนอรจ ะอาศัยขอมูลจากอิมเมจมาเรียกการทำงาน หากมีการบันทึกขอมูลเพิ่มหรือการแกไขในคอนเทนเนอร การเปลี่ยนแปลงนั้นจะไมถูกบันทึกกลับ เขาไปในอิมเมจ แตจะถูกเก็บไวในที่เก็บขอมูลของด็อกเกอร (Data Volume) แทน ดังนั้น เมื่อปด การทำงานหรอื ลบคอนเทนเนอรทงิ้ ไป หากทเ่ี ก็บขอ มูลของด็อกเกอรไมถกู ลบไปดวย ผูอา นสามารถ สรางคอนเทนเนอรไดใหมโดยอางอิงจากอิมเมจ และที่เก็บขอมูลเดิม โดยที่คอนเทนเนอรใหมจะมี ลักษณะเหมอื นคอนเทนเนอรเดิมทุกประการ เพราะขอมูลท่คี อนเทนเนอรอางอิงและอาศัยอยูยังคง เหมือนเดมิ 3) ที่เก็บขอมูล (Data volume) ในด็อกเกอรสามารถเปนไดเรกทอรีหนึ่งในระบบแฟมขอมูล ไดเรกทอรีที่แบงปนผานเครือขา ย หรือท่ีเก็บขอมูลที่ด็อกเกอรสรางขึน้ มาโดยเฉพาะก็ได โดยที่เก็บ ขอมูลจะถูกอางอิงจากคอนเทนเนอรที่สรางขึ้น เพื่อใชเก็บขอมูลที่คงทน (Persistent data) เนอื่ งจากหากไมมีท่ีเก็บขอมลู เชื่อมตอกบั คอนเทนเนอรแลว ขอ มูลทเี่ ก็บในคอนเทนเนอรจะถูกเก็บ เสมอื นหนง่ึ เปนช้ันขอ มูลตอ จากอมิ เมจ แตจ ะไมมีการบนั ทึกชั้นขอมูลทส่ี รางขนึ้ กลับเขาไปในอิมเมจ ทำใหเ มื่อลบคอนเทนเนอรทงิ้ ไป ขอ มลู ทัง้ หมดทอ่ี ยูในคอนเทนเนอรจะหายไปดวย 4) เครือขาย (Network) หมายถึงเครือขายเสมือนที่ด็อกเกอรสรางขึ้น มีไวเพื่อจำลองสภาพแวดลอม ของคอนเทนเนอร และอนุญาตใหคอนเทนเนอรสามารถเชื่อมตอระหวางคอนเทนเนอรดวยกันหรือ คอนเทนเนอรเชื่อมตอกับโฮสตดวยกัน เครือขายในเทคโนโลยีบรรจุคอนเทนเนอรมีความแตกตาง จากเครือขายในเทคโนโลยีเสมือนตรงที่ เครือขายในเทคโนโลยีบรรจุคอนเทคเนอรเปนเครือขาย เสมือนทางซอฟตแวรเทานั้น ดังนั้น เครือขายในด็อกเกอรไมสามารถเชื่อมตอกับฮารดแวรหรือ อินเตอรเฟสเครือขายทางกายภาพไดโดยตรง สงผลให ทุกคอนเทนเนอรที่ทำงานอยูบนด็อกเกอร โฮสตจะไดเปนท่อี ยูไอพีจำลองทสี่ ามารถเขาถึงผานด็อกเกอรโ ฮสตเทา นัน้ และจะไมส ามารถไดที่อยู ไอพีที่เหมือนกับที่อยูไอพีของด็อกเกอรโฮสตได ในขณะที่เครือขายเสมือนในเทคโนโลยีเสมือน สามารถเขาถึงอินเตอรเฟสทางกายภาพและจับจองท่ีอยูไอพีในเครือขายเดียวกันกับไฮเปอรไวเซอร ทำใหเคร่ืองอ่นื ไมทราบไดว า ทอี่ ยูไอพีน้ันมาจากเครือขายเสมือนหรืออนิ เตอรเฟสทางกายภาพ 173
ภาพท่ี 9.3 วตั ถุพื้นฐานท่ีสำคญั ในระบบด็อกเกอร ดดั แปลงรปู : (Docker Inc. 2020b) ดวยหลักการทำงานโดยการทำงานแยกสวน โดยมีอิมเมจ คอนเทนเนอร ที่เก็บขอมูล และเครือขายที่ แยกสวนออกมาดังภาพที่ 9.3 ทำใหผูอานสามารถเปลี่ยนองคประกอบทีละสวนได ซึ่งการออกแบบแบบแยก สวนนี้มีประโยชนมากในการสงมอบซอฟตแวร เพราะซอฟตแวรที่สงมอบจากนักพัฒนาซอฟตแวรจะเปน อิมเมจเสมอ หากมีเวอรชันใหมที่ยังคงมีรูปแบบการเก็บขอมูลแบบเดิม หรือเวอรชันใหมที่สนับสนุนการ อัพเกรดโครงสรางขอมูลของซอฟตแวรเวอรชันเกา ผูอานสามารถหยุดและลบการทำงานของคอนเทนเนอรท่ี สรางจากอิมเมจตัวเกา และสรางคอนเทนเนอรจากอมิ เมจตัวใหมโดยทีย่ ังมที ่เี ก็บขอมูลและเครือขายเดมิ จะทำ ใหผูอานสามารถอัพเกรดเวอรชันของซอฟตแวรไดโดยที่เกือบไมมีระยะเวลาหยุดใหบริการ (Down time) เพราะอมิ เมจเวอรช นั ใหมสามารถตรวจสอบและดาวนโหลดมาไวกอนลวงหนา ได 9.5 เครื่องมอื และอนิ เตอรเ ฟสสำหรบั การบริหารจดั การเทคโนโลยีบรรจุคอนเทนเนอร วธิ ีการบริหารจดั การกับเทคโนโลยบี รรจุคอนเทนเนอรหรอื ระบบของด็อกเกอรน ี้ โดยท่ัวไปมีอยู 2 รูปแบบ คือ 1) การสรางและสง ออกอิมเมจ (Build image, Push image) เมื่อนักพัฒนาซอฟตแวรตองการเผยแพรซอฟตแวรที่พัฒนาขึ้น นักพัฒนาซอฟตแวรจะตองสราง อิมเมจของซอฟตแวรที่พัฒนาขึ้นมา ขั้นตอนเริ่มตนจาก นักพัฒนาใชด็อกเกอรลูกขายสั่งงานไปที่ ด็อกเกอรโฮสตวาตองการสรางอิมเมจขึ้นดวยคำสั่งที่กำหนด ด็อกเกอรโฮสตจะดาวนโหลดคำส่ัง และแฟมขอมูลที่กำหนดจากไดเรกทอรีที่ตัง้ อยูบนเครื่องด็อกเกอรลูกขายเพื่อประมวลผลบนเครือ่ ง ของด็อกเกอรโฮสต ดังนั้น การประมวลผลสรางอิมเมจจะใชทรัพยากรฝงด็อกเกอรโฮสตทั้งหมด ทั้งน้รี วมถงึ การเขาถึงอนิ เทอรเน็ต ความเรว็ เครือขา ย แตรหัสผใู ชและรหัสผา นสำหรับเขาถึงรีจีสตรี ในกรณีที่เปนรีจีสตรีสวนตัวจะถูกเก็บไวที่เครื่องฝงด็อกเกอรลูกขาย หลังจากที่ด็อกเกอรโฮสตรับ คำสั่งมาจากด็อกเกอรลูกขายแลว บอยครั้งที่คำสั่งที่ใชสรางอิมเมจของซอฟตแวรใหมจะอางอิง 174
อิมเมจมาตรฐาน ซ่งึ เปนอมิ เมจท่ีผูผ ลิตซอฟตแวรเ ผยแพรใ หใชงาน เชน อมิ เมจของระบบปฏิบตั ิการ CentOS หรืออิมเมจของเว็บเซิรฟเวอรอยาง Apache และ PHP เปนตน ในกรณีที่คำสั่งไดอางอิง อิมเมจมาตรฐาน ด็อกเกอรโฮสตจะดาวนโหลดอิมเมจมาตรฐานจากรีจีสตรีมาเก็บไวที่เครื่องของ ด็อกเกอรโฮสต และใชอิมเมจนั้นประมวลผลสรางอิมเมจใหมที่บรรจุซอฟตแวรที่พัฒนาลงไปดวย เมื่อสรางอิมเมจเสร็จ ด็อกเอรโฮสตจะสงออกอิมเมจโดยการอัพโหลดอิมเมจที่สรางใหมและถูกเก็บ ไวในเคร่อื งขนึ้ ไปรจี ีสตรี 2) การดึงอิมเมจและสรา งคอนเทนเอร (Pull image, Build Container) เม่อื ลูกคารับมอบซอฟตแวรจากนักพัฒนาผานแพลตฟอรมการบรรจุคอนเทนเนอร ลูกคาจะไดรับท่ี อยูของรีจีสตรี และรหัสผูใชกับรหสั ผานในกรณีที่เขาถึงรีจสี ตรีสว นตัว ขั้นตอนเริ่มตนจาก ลูกคาใช ด็อกเกอรลูกขายสั่งงานไปที่ด็อกเกอรโฮสตวาตองการดึงอิมเมจจากรีจีสตรีที่ปอน และสรางเปน คอนเทนเนอรตามการตั้งคาที่กำหนดผานคำสัง่ ด็อกเกอรโฮสตจะตรวจสอบหากมีชั้นขอมูลไหนใน อิมเมจที่ไมซ้ำกันกับที่อยูในเครื่องด็อกเกอรโฮสต ด็อกเกอรโฮสตจะเริ่มดาวนโหลดชั้นขอมูล ดังกลาว เมื่อครบแลวจะเชื่อมโยงชั้นขอมูลใหกลางเปนอิมเมจ จากนั้น ด็อกเกอรโฮสตจะสราง คอนเทนเนอรโดยมชี ั้นขอมูลกอนหนาอางอิงไปทชี่ ั้นขอมูลของอิมเมจ และสรางท่ีช้ันขอมูลใหมเพื่อ เช่อื มโยงกบั ทเ่ี ก็บขอมูล และเครือขายเสมอื นตามการต้ังคา เม่อื สรางเสรจ็ ด็อกเกอรโ ฮสตจะเริ่มตน การทำงานซอฟตแวรต ามคำสง่ั ท่ีระบุไวในอมิ เมจ ดวยเครื่องมือฝงด็อกเกอรฝงลูกขายที่ออกแบบมาใหใชงานงาย แมทำงานในรูปแบบบรรทัดคำสั่ง แต เคร่อื งมือ docker เพียงโปรแกรมเดยี วสามารถดำเนินการไดทั้งการสรางและสงออกอิมเมจ และการดึงอิมเมจ และการสรางคอนเทนเนอรไดทั้งหมดจึงทำใหด็อกเกอรเปนที่เครื่องที่นิยมที่สุดสำหรับบริหารจัดการกับ เทคโนโลยบี รรจุคอนเทนเนอร 175
บทสรปุ เทคโนโลยีบรรจุคอนเทนเนอรมีหลักการ คือ การรวมนำไลบรารีและสภาพแวดลอมที่เกี่ยวของกับ ซอฟตแวรที่ตองการสงมอบมารวมอยูไวในบรรจุภัณฑหนึ่ง โดยเมื่อเวลาซอฟตแวรทำงาน ซอฟตแวรจะ มองเห็นสภาพแวดลอมในมุมที่จำกัด เรียกวา คอนเทนเนอร (Container) เสมือนหนึ่งทำงานอยูบนเครื่อง คอมพวิ เตอรอีกเคร่ืองหนงึ่ โดยอิสระ ด็อกเกอรเปน โปรแกรมท่ีนิยมใชก ันมากท่สี ุด ดอ็ กเกอรใชสถาปตยกรรมแบบแมข ายลูกขาย ระบบนิเวศ ของด็อกเกอรมีองคประกอบที่สำคัญอยู 3 องคประกอบ คือ ด็อกเกอรลูกขาย (Docker Client) ด็อกเกอรโฮสต (Docker Host) และรีจสี ตรี (Registry) โดยผูใชสง่ั งานระบบด็อกเกอรผานด็อกเกอรล กู ขายไป ยังด็อกเกอรโฮสตที่ทำงานอยูเบื้องหลังตลอดเวลา (Daemon) รับคำสั่งเพื่อรับสงขอมูลอิมเมจจากรีจีสตรีซึ่ง เปนศูนยกลางที่รวบรวมอิมเมจไวใหด็อกเกอรโฮสตสามารถดาวนโหลดมาใชงานได รีจีสตรีหลักของระบบ ดอ็ กเกอร คือ ด็อกเกอรฮับ (Docker Hub) วตั ถุพนื้ ฐานทีส่ ำคญั ในระบบด็อกเกอรประกอบดว ยวัตถุ 4 ประเภท 1) อมิ เมจ คอื ซอฟตแ วรท่ถี กู สรางดว ยด็อกเกอรโ ฮสตแ ละบรรจุไวอยูใ นรปู แบบแพ็คเกจของด็อกเกอร 2) คอนเทนเนอร คือ ตัวอยางของอิมเมจที่ทำงาน ผูอานสามารถสรา ง เริ่มตน หยุด ยาย และลบคอน เทนเนอรไ ด 3) ที่เก็บขอมูลในด็อกเกอรสามารถเปนไดเรกทอรีหนึ่งในระบบแฟมขอมูล ไดเรกทอรีที่แบงปนผาน เครือขาย หรือที่เก็บขอมูลที่ด็อกเกอรสรางขึ้นมาโดยเฉพาะ โดยที่เก็บขอมูลจะถูกอางอิงจากคอน เทนเนอรทีส่ รา งขนึ้ เพอื่ ใชเ กบ็ ขอมูลท่ที นทาน 4) เครอื ขาย หมายถึง เครอื ขายเสมือนท่ีด็อกเกอรสรา งขึ้น มไี วเพื่อจำลองสภาพแวดลอมของคอนเทน เนอร การบริการจัดการอิมเมจมีการใชงาน 2 ทิศทาง คือ นักพัฒนาซอฟตแวรสรางอิมเมจไปฝากไวที่รีจสี ตรี และผใู ชงานดาวนโ หลดอมิ เมจจากรีจีสตรีมาไวท่เี ครื่อง 176
บบฝก หดั บทที่ 9 1. บอกความหมายของเทคโนโลยบี รรจคุ อนเทนเนอร 2. หลักการทำงานของเทคโนโลยบี รรจคุ อนเทนเนอรต างจากหลกั การทำงานของเทคโนโลยเี สมอื นอยางไร 3. บอกประโยชนข องเทคโนโลยคี อนเทนเนอรม าอยา งนอย 3 ขอ 4. อธบิ ายปฏิสมั พันธระหวางองคป ระกอบของระบบด็อกเกอร 5. อธิบายรูปแบบวธิ ีการบรหิ ารจัดการกับเทคโนโลยบี รรจุคอนเทนเนอร 177
178
เทคนคิ การเตรียมเครอ่ื งสำหรับฝกปฏบิ ตั ิการเทคโนโลยบี รรจุคอนเทนเนอร บทนำ ในชวงเริ่มตน โปรแกรมด็อกเกอรพัฒนาถูกออกแบบใหทำงานเฉพาะบนระบบปฏิบัติการตระกูลยูนิกซ หรือลีนุกซเทานั้น แตหลังจากที่ไดรับความนิยม บริษัทไมโครซอฟทจึงเขามาทำความรวมมือดวยจึงทำใหใน ปจจุบันโปรแกรมด็อกเกอรสนับสนุนการทำงานของระบบปฏิบัติการวินโดวสและระบบปฏิบัติการลีนุกซดวย อยางไรก็ตาม แมด็อกเกอรจะสามารถทำงานบนระบบปฏิบัติการวินโดวสได แตก็มีขอจำกัดบางประการ เชน วินโดวสรุนโฮมอิดิชันที่ไมสามารถติดตั้ง Hyper-V ไดโดยตรง ในบทเรียนนี้ ผูอานจะไดเรียนรูแนวทาง หรือ วิธีการที่สามารถเรียกใชงานโปรแกรมด็อกเกอรเมื่อใชงานบนระบบปฏิบัติการวินโดวส และสามารถเลือก วิธกี ารติดตง้ั ท่เี หมาะกบั ตนเองได 10.1 แนวทางการติดตัง้ โปรแกรมดอ็ กเกอร ในกรณีที่ผูอ า นกำลังใชงานระบบปฏบิ ัติการลีนุกซ หรอื ใชเ ครอื่ งคอมพวิ เตอรเสมือนท่ีสรางจากบทเรียน กอนหนาเพื่อฝกปฏิบัติเทคโนโลยีเสมือน ผูอานสามารถขามไปหัวขอขั้นตอนการติดตั้งโปรแกรมด็อกเกอรใน ระบบปฏิบัติการลีนุกซไดท นั ที สำหรับระบบปฏิบัติการวินโดวสนั้น เนื่องจากโปรแกรมด็อกเกอรถูกสรางเพื่อไวเรียกใชงานโปรแกรม ลนี กุ ซเ ปนหลงั ดังน้นั โปรแกรมดอ็ กเกอรสำหรับวนิ โดวสสามารถทำงานไดผ า นชองทาง 3 ชองทาง คือ วิธีที่หนึ่ง ติดตั้งด็อกเกอรสำหรับระบบปฏิบัติการวินโดวส และใชเทคโนโลยีเสมือน Hyper-V เปน แบ็กเอนดสำหรับเรียกใชงานโปรแกรมด็อกเกอรแมขาย ขอดีของวิธีการนี้ คือ 1) ผูอานสามารถดาวนโหลด ด็อกเกอรสำหรับระบบปฏิบัติการวินโดวสมาติดตั้งไดโดยงาย 2) ระบบปฏิบัติการวินโดวส 10 ไมจำเปนตอง เปนเวอรชันลาสุดคือ เวอรชัน 2004 สวนขอเสียของวิธีการนี้คือ ระบบปฏิบัติการวินโดวส 10 จะตองเปน อิดิชันที่สูงกวาโฮมอิดิชัน (Home edition) เชน Pro Enterprise หรือ Education เทานั้น เพราะวินโดวส โฮมอดิ ิชนั ไมสามารถติดต้งั โปรแกรม Hyper-V ได วิธีที่สอง คือ ติดตั้งด็อกเกอรสำหรับระบบปฏิบัติการวินโดวส และใชระบบยอยลีนุกซสำหรับวินโดวส (Linux subsystem for Windows) เปนแบ็กเอนดสำหรับเรียกใชงานโปรแกรมด็อกเกอรแมขาย ขอดีของ วิธีการนี้ คือ 1) ผูอานสามารถดาวนโหลดด็อกเกอรสำหรับระบบปฏิบัติการวินโดวสมาติดตั้งไดโดยงาย 2) ระบบปฏิบัติการวินโดวส รุนโฮมอิดิชันสามารถใชงานได แตขอเสียของวิธีการนี้ คือ 1) ระบบปฏิบัติการ วินโดวส 10 จะตองเปน เวอรชนั 2004 เทานั้น 2) มขี ้ันตอนการตดิ ตั้งท่ยี ุงยากและซบั ซอนกวา วธิ ที ่ีหนึ่ง วิธีที่สาม คือ สรางเครื่องคอมพิวเตอรเสมือนดวยโปรแกรม Hyper-V หรือ VMWare Workstation Player และติดตั้งโปรแกรมด็อกเกอรสำหรับลนี ุกซและเรยี กใชง านผา นโปรแกรม Putty ขอดีของวิธีการน้ี คือ ไดระบบปฏบิ ตั กิ ารวนิ โดวส ท่ีสะอาดเพราะไมต องติดต้งั โปรแกรมหรือไลบลารที ่จี ำเปนอ่ืน ๆ เหมือนในวิธที ่ีหนึ่ง และวิธีที่สอง แตขอเสียของวิธีการน้ี คือ 1) ผูอานจะตองติดตั้งระบบปฏิบตั ิการลีนุกซ เชน CentOS ในเครื่อง คอมพิวเตอรเ สมอื น 2) ผูอา นจำเปนตองคัดลอกแฟมขอมูลที่อยูในเครื่องวนิ โดวส ไปเครื่องคอมพิวเตอรเสมือน ดว ยตนเอง เนือ่ งจากทง้ั ดอ็ กเกอรฝง แมขายและด็อกเกอรฝง ลกู ขายถูกติดตงั้ อยูในเคร่ืองคอมพวิ เตอรเ สมอื น 179
ในกรณีที่ผูอานไดสรางเครื่องคอมพิวเตอรเสมือนจากการฝกปฏิบัติเทคโนโลยีเสมือน ผูอานสามารถ เลือกวิธีที่สามไดทันที เพราะขั้นตอนการติดตั้งไมซับซอนและใชเวลาไมนาน แตถาผูอานยังไมมีเครื่อง คอมพิวเตอรเสมือนที่ติดตั้งระบบปฏิบัติการลีนุกซ หรือเครื่องคอมพิวเตอรที่ใชงานฝกปฏิบัติอยูมีหนวย ประมวลผลกลางเปน AMD หรือใชวินโดวสรุนโฮมอิดิชัน ผูเขียนแนะนำใหใชวิธีการที่สอง เพราะเครื่องของ ผอู า นจะยังคงสามารถฝกปฏิบัตเิ ทคโนโลยีเสมอื นไปพรอ มกนั ไดด ว ยโปรแกรม VMWare Workstation Player และสุดทาย หากเครื่องของผูอานไมไดอัพเดทใหทันสมัยหรือไมสามารถอัพเดทเครื่องที่ฝกปฏิบัติใหเปน วินโดวส 10 เวอรชัน 2004 ได ผูเขียนแนะนำใหผูอานใชวิธีที่หนึ่ง โดยศึกษาวิธีการติดตั้ง Hyper-V ไดจาก บทเรียนเรือ่ งเทคนิคการเตรียมเครือ่ งสำหรับฝกปฏิบัติการเทคโนโลยีเสมือน 10.2 การตดิ ตง้ั ระบบยอยลนี กุ ซสำหรับวินโดวส ในปจจุบันระบบยอยลีนุกซสำหรับวินโดวสมีเวอรชัน 1 และเวอรชัน 2 แตหากตองการใหโปรแกรม ดอ็ กเกอรสำหรับระบบปฏบิ ตั ิการวินโดวส ใชระบบยอยลีนุกซ ผอู านจำเปน จะตอ งใชระบบยอ ยลนี ุกซเวอรช นั 2 เทานั้น โดยเงื่อนไขสำหรับการใชงานระบบยอยลีนุกซสำหรับวินโดวสเวอรชัน 2 นั้น ผูอานตองอัพเดท ระบบปฏบิ ัติการวินโดวส 10 ใหท ันสมัยโดยเปนรุน 2004 หรอื ใหมกวา จากนั้น ผูอานจำเปนตองติดตั้งคุณสมบัติของระบบปฏิบัติการวินโดวส 10 ทั้งหมด 2 คุณสมบัติ คือ Microsoft-Windows-Subsystem-Linux และ VirtualMachinePlatform โดยผูอานสามารถเปดหนาตาง Powershell ที่มีสิทธิ์ผูดูแลระบบจากปุมสตารท โดยคลิกขวาที่ปุมสตารท และเลือก Powershell (Administrator) เพอื่ เปดหนาตาง Powershell แลว พมิ พค ำสัง่ # Enable-WindowsOptionalFeature -Online -FeatureName Microsoft- Windows-Subsystem-Linux -All -NoRestart # Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart หรือหากผอู า นสะดวกใชงาน Command Prompt ผูอ านสามารถเปดหนาตา ง Command Prompt ที่ มีสิทธิ์ผูดูแลระบบไดโดยคลิกที่ปุมสตารท และพิมพวา Command Prompt จากนั้นคลิกขวาแลวเลือก Run as Administrator เพื่อเปดหนาตา ง Command Prompt แลวพมิ พค ำส่งั # dism.exe /online /enable-feature /featurename:Microsoft-Windows- Subsystem-Linux /all /norestart # dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ผูอานเพียงเลือกหนาตางบรรทัดคำส่ังของวินโดวสท่ีตองการ เมอื่ พมิ พคำส่ังจะไดผ ลลัพธดังภาพท่ี 10.1 จากนั้นใหรีบูตเครื่องกอนแลวติดตั้งแกนของลีนุกซเพิ่มโดยดาวนโหลดแกนของลีนุกซเวอรชันใหมไดจาก https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel ผูอานจะสามารถดาวนโหลดแฟมขอมูล wsl_update_x64.msi เพื่อมาตดิ ตัง้ กอนดำเนนิ การในข้ันตอนถดั ไป 180
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336