ในเวลาที่ไดร์ฟที่เราใช้เก็บไฟล์ของระบบปฏิบัติการ (ส่วนใหญ่ก็ไดร์ฟ C: แหละเนอะ) ใกล้เต็ม เราก็มักจะหาทางคุ้ยโฟลเดอร์ต่างๆ ลบไฟล์ทิ้งเท่าที่จะลบได้เพื่อกู้คืนพื้นที่กลับมา บ้างก็ใช้เครื่องมือลบไฟล์ เครื่องมือทำความสะอาดดิสก์ (Disk Cleanup Tool) ที่มาพร้อมกับระบบปฏิบัติการ Windows หรือ บ้างก็หาซอฟต์แวร์ 3rd-party มาช่วยค้น หรือไม่ก็สไตล์ลูกทุ่งสำหรับคนนิสัยซุกซนหน่อยก็นั่งค้นเองไปทีละโฟลเดอร์เรื่อยๆ ก็มี
แต่ถ้าเราลองหาดีๆ แล้วจะสังเกตว่า มีอยู่โฟลเดอร์นึงที่ชื่อว่า "WinSxS" มันเป็นโฟลเดอร์ที่อยู่ในโฟลเดอร์ Windows เจ้า WinSxS นี้ใช้พื้นที่ค่อนข้างเยอะมาก อย่างเครื่องของผู้เขียนเอง ลองตรวจสอบดูก็มีขนาดใหญ่ถึง 8.49 GB. แน่ะ มันคือโฟลเดอร์อะไร ลบทิ้งได้หรือไม่ มาหาอ่านคำตอบกันได้ในบทความนี้เลย
ก่อนจะไปถึงคำตอบว่าลบได้หรือไม่ เรามาทำความเข้าใจกับความสำคัญของโฟลเดอร์ WinSxS กันก่อนดีกว่า
ในการทำงานของระบบปฏิบัติการ Windows ซอฟต์แวร์ต่างๆ จะมีการเรียกใช้ DLLs (Dynamic-link Library) ที่อยู่ในฐานข้อมูลของระบบปฏิบัติการ Windows ด้วย มันเป็นเหมือนคุณสมบัติในการทำงานที่ Windows เตรียมเอาไว้ เพื่อให้ นักพัฒนาซอฟต์แวร์ (Software Developer) ได้สามารถใช้ไฟล์ DLLs นี้ร่วมกันได้ โดยไม่ต้องเขียนขึ้นมาเองใหม่ด้วยตนเองนั่นเอง
ทีนี้ปัญหาก็คือ DLL มันมีอยู่คู่กับระบบปฏิบัติการ Windows มานานมากแล้ว มันก็ต้องมีการพัฒนาเวอร์ชันใหม่เพื่อปรับปรุงการทำงานให้สอดคล้องกับสถานการณ์ปัจจุบัน
ปัญหาก็คือ โปรแกรมที่เราใช้งานอยู่เนี่ย บางที โดยเฉพาะกับซอฟต์แวร์ที่เก่าหน่อย ตัวอย่าง สมมติว่ามีซอฟต์แวร์อยู่ตัวหนึ่งที่เรียกใช้งาน DLLs เวอร์ชัน 1.02 ต่อมาเรามีการลงซอฟต์แวร์เพิ่มที่ต้องการ DLLs เวอร์ชันใหม่กว่า มันก็เลยทำการแทนที่ใหม่ด้วย DLLs เวอร์ชัน 1.03 ผลก็คือ ซอฟต์แวร์ที่ใช้ DLLs เวอร์ชัน 1.02 ไม่สามารถทำงานได้อีกต่อไป โดยบางฟังก์ชันอาจจะใช้งานไม่ได้, ไม่สามารถเปิดใช้งานได้อีกต่อไป หรืออย่างเลวร้ายก็คือเปิดปุ๊ปเจอ จอฟ้าแห่งความตาย (Blue Screen of Death) ปั๊ป
เพื่อป้องกันไม่ให้เกิดปัญหาดังกล่าว Microsoft ก็เลยสร้างโฟลเดอร์ WinSxS ขึ้นมา โดยใส่มาให้ตั้งแต่ยุคของระบบปฏิบัติการ Windows XP เมื่อปี ค.ศ. 2001 (พ.ศ. 2544) โน่นเลย
โฟลเดอร์ WinSxS จะถูกใช้ในการเก็บส่วนประกอบ (Component) ที่สำคัญอย่าง DLL, OCX, EXE อะไรพวกนี้เอาไว้ ซึ่งมันจะเก็บไฟล์ DLL เอาไว้หลายเวอร์ชันเลยล่ะ เพื่อให้ โปรแกรม (ซอฟต์แวร์) ที่ต้องการเรียกใช้ สามารถเรียกใช้งานเวอร์ชันที่ต้องการได้ตลอดเวลา โดยอาศัยไฟล์ Manifest ในการทำหน้าที่เป็นตัวชี้เป้าให้ระบบปฏิบัติการรับทราบว่าซอฟต์แวร์นี้จะเริ่มทำงานตอนไหน ต้องการ DLL เวอร์ชันอะไรนั่นเอง
ส่วนประกอบทั้งหมดนี้จะมีการกำหนดชื่อแบบเฉพาะตัว อาจจะมีสถาปัตยกรรมของ หน่วยประมวลผลกลาง (CPU), ภาษา (Language), เวอร์ชัน (Version) และหมายเลข ID ของซอฟต์แวร์ ทั้งหมดนี้จะถูกมัดรวมกันเป็น Packages ซึ่งจะถูกใช้งานเมื่อ Windows Update และ DISM (Deployment Image Servicing Management) มีการทำงาน
ลำดับการความเปลี่ยนแปลงของโฟลเดอร์ WinSxS ทุกครั้งที่ระบบปฏิบัติการ Windows มีการอัปเดตครั้งใหญ่ จะเป็นดังภาพด้านล่างนี้ครับ
ภาพจาก https://www.makeuseof.com/tag/manage-winsxs-folder-windows/
ถ้าพูดถึง WinSxS แล้วไม่พูดถึง Hard Links มันก็เหมือนกินไข่ดาวแล้วไม่เหยาะซอส Maggi ยังไงยังงั้น
Hard Links เป็นเหมือนสายเชื่อมต่อที่ทำหน้าที่เชื่อมต่อระหว่างไฟล์ที่อยู่นอกโฟลเดอร์ WinSxS มายังไฟล์ที่อยู่ในโฟลเดอร์ WinSxS อ้างอิงจากเอกสารของไมโครซอฟต์ ระบบ Hard Links จะทำให้ไฟล์สองไฟล์สามารถอ้างอิงตำแหน่งในไดร์ฟเป็นที่อยู่เดียวกันได้ หมายความว่าระบบปฏิบัติการ Windows จะสามารถมีไฟล์ Copy ซ้ำกันเท่าไหร่ก็ได้โดยไม่ต้องใช้พื้นที่ในไดร์ฟเพิ่ม
เมื่อ Windows มีการอัปเดต ส่วนประกอบเวอร์ชันใหม่จะถูกเพิ่มเข้ามาใน WinSxS ผ่าน Hard Links โดยส่วนประกอบเวอร์ชันเก่าจะถูกเก็บเอาไว้เผื่อใช้งาน แต่ไม่ถูกเชื่อมต่อกับ Hard Links อีกต่อไป
เราสามารถตรวจสอบการเชื่อมต่อไฟล์ของ Hard links ได้ด้วยคำสั่ง
fsutil hardlink list [system file path]
ผ่านซอฟต์แวร์ Windows Command Processor (คลิก Start แล้วพิมพ์ค้นหาว่า cmd ก็จะเจอ แล้วคลิกขวาเลือก Run as administrator)
เช่น เราต้องการรู้ว่า audiosrv.dll เชื่อมต่อกับ Hard Links อะไรบ้างก็พิมพ์คำสั่งว่า
fsutil hardlink list "C:\Windows\System32\audiosrv.dll"
โฟลเดอร์ WinSxS เก็บไฟล์ที่จำเป็นในการทำงาน, ปรับแต่ง และอัปเดต ตัวระบบปฏิบัติการเอาไว้หลายอย่าง ดังนี้
โฟลเดอร์ WinSxS จะเก็บไฟล์ทั้งหมดที่จำเป็นต่อการที่คอมพิวเตอร์จะสามารถรองรับการทำงานร่วมกับฮาร์ดแวร์ และซอฟต์แวร์เอาไว้ จุดแข็งของระบบปฏิบัติการ Windows คือ ความสามารถในการใช้งานร่วมกับฮาร์ดแวร์ และซอฟต์แวร์เวอร์ชันเก่าๆ ได้ แต่แน่นอนว่าการที่ Windows ถูกทำให้รองรับการทำงานร่วมกับ "ของเก่า" ได้ ต้องแลกมาด้วย "บัค" และ "พื้นที่ในไดร์ฟ"
การตรวจสอบขนาดของโฟลเดอร์ WinSxS ด้วยการคลิกขวาที่โฟลเดอร์ แล้วใช้คำสั่ง Properties จะไม่ได้ค่าที่ถูกต้อง เพราะ Hard Links จะทำให้ระบบเข้าใจว่ามีไฟล์หลายไฟล์ (ถ้างงย้อนกลับไปอ่านเรื่องหน้าที่ Hard Links อีกทีนะครับ)
หากอยากรู้ขนาดที่แท้จริงของ WinSxS เราสามารถตรวจสอบขนาดได้ด้วยคำสั่ง
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
อย่างในภาพด้านล่าง Windows Explorer เห็นขนาดเป็น 8.98 GB แต่ในความเป็นจริงมันถูกใช้ไป 8.67 GB เท่านั้นครับ
เราลองค้นหาคำถามนี้ที่ลุงกู๋พบว่ามีคนมากมายถามคำถามประมาณว่า "WinSxS กินที่เยอะมาก ลบทิ้งได้ไหม?" คำตอบก็ คือ "ไม่" นะครับ
การลบโฟลเดอร์ WinSxS จะส่งผลต่อการทำงานของ Windows และ Windows Update อย่างร้ายแรง แม้เราจะสามารถลบไฟล์ในโฟลเดอร์นั้นทิ้งได้ แต่เราจะไม่รู้เลยว่ามันจะส่งผลให้ซอฟต์แวร์ตัวไหนไม่สามารถทำงานได้บ้าง
แต่เราพอจะมีทางเลือกในการ "ลดขนาด" ของโฟลเดอร์ WinSxS ได้บ้างเล็กน้อย ด้วยเครื่องมืออย่าง Disk Cleanup
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |