วันพฤหัสบดีที่ 24 กันยายน พ.ศ. 2552

ลบ Domain Controller ที่มีปัญหาออกจากระบบ

จัดการกับ Domain Controller ที่มีปัญหาอย่างถูกวิธี ก่อนที่ปัญหาจะลุกลามจนเกินรับมือ จากระบบโดเมนของคุณเกิดปัญหาขึ้น ไม่ว่าจะด้วยสาเหตุใดก็ตาม วิธีหนึ่งที่ง่ายและดีที่สุดในการแก้ปัญหาที่เกิดขึ้นกับ Active Directory ของระบบโดเมนที่มีเครื่อง Domain Controller เพียงเครื่องเดียวก็คือ การเรียกใช้คำสั่ง DCPROMO อีกครั้งเพื่อลดระดับ (Demote) การทำหน้าที่เป็น Domain Controller ของโดเมนนั้นลง และทำให้เครื่องเซิร์ฟเวอร์ดังกล่าวกลายมาเป็นเครื่องเซิร์ฟเวอร์ลูกข่ายใน ระบบเน็ตเวิร์กหรือ Member Server แทน จากนั้นจึงค่อยใช้คำสั่ง DCPROMO อีกครั้งเพื่อเลื่อนขั้น (Promote) เครื่องเซิร์ฟเวอร์ให้กลับไปมีสถานะเป็น Domain Controller ใหม่อีกครั้ง ซึ่งวิธีการนี้ช่วยให้คุณสามารถแก้ไขปัญหาที่เกิดขึ้นกับ Active Directory ชนิดที่เรียกว่าขาวสะอาดได้เลย เนื่องจากเป็นการสร้างฐานข้อมูลของ Active Directory ขึ้นมาใหม่นั่นเอง

แต่ใช่ว่าวิธีที่กล่าวมาจะสามารถกระทำได้ทุกกรณี เพราะในบางครั้งปัญหาที่ดูเหมือนจะแก้ไขได้ง่ายๆ ก็กลับกลายเป็นเรื่องที่ทำให้คุณปวดเศียรเวียนเกล้าขึ้นมาทันที เพราะแม้เครื่องเซิร์ฟเวอร์ที่ถูกลดระดับลงจะคิดว่าตัวเองไม่ใช่ Domain Controller อีกต่อไปแล้ว แต่ Domain Controller เครื่องอื่นๆ ในโครงสร้างต้นไม้ (Tree) ของ Active Directory จะมองว่าเครื่องเซิร์ฟเวอร์เครื่องนั้นยังคงเป็น Domain Controller อยู่ในระบบนั่นเอง บทความนี้จึงเขียนขึ้นมาเพื่อให้ผู้อ่านได้เข้าใจถึงวิธีการใช้งานโปรแกรม NTDSUTIL ซึ่งเป็นโปรแกรมที่มาพร้อมกับวินโดวส์ 2000 เซิร์ฟเวอร์ เพื่อให้สามารถเข้าถึงโครงสร้างของ Active Directory และยังสามารถลบข้อมูลที่ไม่ต้องการออกจาก Active Directory ได้อย่างหมดจด

ปัญหาเกี่ยวกับเน็ตเวิร์ก หรือความผิดพลาดของการเชื่อมต่อระหว่างเซิร์ฟเวอร์ที่ทำหน้าที่เป็น DNS (Domain Name Server) หรือ Domain Controller เครื่องอื่นๆ อาจเป็นสาเหตุที่ทำให้การลดระดับเครื่อง Domain Controller ที่มีปัญหาไม่ประสพความสำเร็จ หรืออาจเกิดความเสียหายขึ้น ทำให้คุณไม่สามารถลดระดับเครื่อง Domain Controller ลงได้ เป็นผลให้ออบเจ็กต์ (Object) หรือรายชื่อของเครื่องเซิร์ฟเวอร์นั้นยังคงค้างอยู่ในฐานข้อมูลของ Active Directory และแม้ว่าเครื่องนั้นจะไม่ได้เป็น Domain Controller ใน Active Directory อีกต่อไปแล้วก็ตาม แต่ Active Directory ก็ยังสามารถทำงานให้บริการในลักษณะของโดเมนต่อไปได้ อย่างไรก็ตามคุณอาจต้องคอยแก้ปัญหาที่ตามมาอีกมากมาย โดยเฉพาะอย่างยิ่งหากเครื่อง Domain Controller ที่ถูกลดระดับหรือเกิดข้อผิดพลาดขึ้นนั้นเป็นเครื่องที่ทำหน้าที่เป็น Operation Master ด้วยแล้ว เนื่องจากเครื่องที่ทำหน้าที่เป็น Operation Master นั้นจะเป็นตัวเก็บฐานข้อมูลหลักของ Active Directory ซึ่งเป็นเสมือนหัวใจของ Active Directory ของวินโดวส์ 2000 นั่นเอง

ขั้นแรกในการแก้ปัญหาที่เกิดขึ้นกับ Active Directory ก็คือลดระดับ หรือนำ Domain Controller ออกจากระบบโดยไม่ใช้ NTDSUTIL ซึ่งอาจเป็นวิธีที่เสี่ยงไปสักหน่อย แต่ก็เป็นวิธีการที่ง่าย และย่นระยะเวลาในการแก้ปัญหามากที่สุดเช่นกัน ให้คุณเปิดโปรแกรม Active Directory Users and Computers และไปที่คอนเทนเนอร์ (Container) ของ Domain Controller จากนั้นคลิ้กขวาที่เครื่อง Domain Controller ที่มีปัญหา และเลือกคำสั่ง Delete เพื่อลบเครื่องดังกล่าวออกจากระบบ หากไม่สามารถลบได้ จึงค่อยใช้โปรแกรม NTDSUTIL ในการลบเครื่อง Domain Controllers ที่ต้องการออกจากระบบแทน แต่สิ่งหนึ่งที่คุณต้องพึงระวังก็คือ ถ้าหาก Domain Controller นั้นยังคงอยู่ในคอนเทนเนอร์ Domain Controllers หลังจากลดระดับลงด้วยคำสั่ง DCPROMO ได้สำเร็จ ให้คุณตรวจสอบว่าการ Replication หรือการซิงโครไนซ์ข้อมูลระหว่างเครื่องเซิร์ฟเวอร์ที่ทำหน้าที่เป็น Domain Controller ด้วยกันยังทำงานถูกต้องอยู่หรือไม่ และจะต้องรอให้รอบของการ Replication นั้นเสร็จสิ้น ก่อนที่จะเรียกใช้คำสั่ง NTDSUTIL มิเช่นนั้นปัญหาเล็กๆ ของคุณอาจนำความยุ่งยากตามมาอีกก็เป็นได้

วิธีการเรียกโปรแกรม NTDSUTIL ขึ้นมา ทำได้โดยเปิดหน้าต่าง Command Prompt ของวินโดวส์ขึ้นมา พิมพ์คำสั่งว่า NTDSUTIL และกดปุ่ม Enter หน้าจอจะเข้าสู่ Prompt ของคำสั่ง NTDSUTIL จากนั้นให้พิมพ์คำสั่ง METADATA CLEANUP เพื่อเข้าสู่ขั้นตอนการติดต่อกับเครื่องเซิร์ฟเวอร์ที่ต้องการลบค่าออกจาก Active Directory ในทางปฏิบัติแล้วคุ ณสามารถเรียกใช้คำสั่งนี้ติดต่อกับเครื่อง Domain Controller เครื่องใดก็ได้ แต่เพื่อความแน่นอนแล้ว คุณควรจะติดต่อกับเครื่อง Domain Controller ที่ทำหน้าที่เป็น Domain Naming Master หรือ PDC Emulator สำหรับโดเมนจะเป็นการดีที่สุด แต่หากไม่มีเครื่องเซิร์ฟเวอร์ที่ทำหน้าที่ดังกล่าวอยู่แล้ว ซึ่งอาจเนื่องมาจากหน้าที่การทำงาน (Role) เหล่านั้นอยู่บนเครื่อง Domain Controller ที่มีปัญหาก็เป็นได้ (โดยทั่วไปแล้วหากไม่มีการเปลี่ยนแปลงแก้ไขใดๆ กับระบบ หน้าที่การทำงานเหล่านี้จะอยู่บนเครื่องที่ทำหน้าที่เป็น Domain Controller ตัวแรกหรือ Root นั่นเอง) คุณก็สามารถเลือกเครื่อง Domain Controller อื่นแทนก็ได้

ขั้นตอนต่อไปให้พิมพ์คำสั่ง CONNECTIONS และกดปุ่ม Enter เพื่อไปยัง Prompt ของบรรทัดที่ขึ้นว่า Server Connections หากคุณไม่ได้ล็อกอินเป็นยูสเซอร์ (User) ที่มีสิทธิในการลบค่าออกจาก Active Directory (นั่นก็คือต้องมีสิทธิเทียบเท่า Administrator) คุณก็สามารถพิมพ์คำสั่ง SET CREDS &ltdomain> &ltusername> &ltpassword> โดยที่ &ltdomain> หมายถึงโดเมนที่คุณกำลังติดต่ออยู่ ส่วน &ltusername> คือชื่อของยูสเซอร์ที่มีสิทธิเทียบเท่า Administrator และ &ltpassword> คือรหัสผ่านของยูสเซอร์นั้น หากยูสเซอร์ดังกล่าวไม่มีรหัสผ่านให้ใส่ข้อความว่า null ลงไปแทน (ตัวอักษรพิมพ์ตัวเล็กทั้งหมด) จากนั้นก็มาถึงคำสั่งเพื่อเข้าถึงยังเครื่องเซิร์ฟเวอร์โดยพิมพ์คำสั่ง CONNECT TO SERVER &ltservername> เมื่อ &ltservername> คือชื่อเครื่องเซิร์ฟเวอร์ที่คุณต้องการเข้าถึง เมื่อเรียกใช้คำสั่งนี้แล้วหน้าจอจะปรากฏข้อความขึ้นมา 2 ข้อความ โดยข้อความแรกบอกถึงว่า NTDSUTIL เป็นโปรแกรมที่เข้าถึงเครื่องเซิร์ฟเวอร์อย่าง ถูกต้องตามสิทธิที่กำหนด และอีกข้อความหนึ่งเป็นการยืนยันการเข้าถึง หากไม่ได้รับข้อความเหล่านี้ให้ลองตรวจสอบสิทธิในการเข้าถึงและทดลองอีก ครั้ง

หลังจากที่คุณเข้าถึงเครื่องเซิร์ฟเวอร์ได้แล้วก็ให้พิมพ์คำสั่ง QUIT และกดปุ่ม Enter เพื่อกลับไปยัง Prompt ของคำสั่ง METADATA CLEANUP อีกครั้ง จากนั้นจึงพิมพ์คำสั่ง SELECT OPERATION TARGET และกดปุ่ม Enter เพื่อไปยัง Promptของคำสั่ง SELECT OPERATION TARGET แล้วจึงพิมพ์คำสั่ง LIST DOMAINS เพื่อให้โปรแกรม NTDSUTIL แสดงให้เห็นว่ามีทั้งหมดกี่โดเมนภายใน Forest และมีรายชื่อโดเมนอะไรบ้างพร้อมกับหมายเลขกำกับ ให้จำหมายเลขหน้าชื่อโดเมนที่มีเครื่อง Domain Controller ที่มีปัญหาไว้ จากนั้นจึงพิมพ์คำสั่ง SELECT DOMAIN &ltnumber> โดย &ltnumber> ก็คือหมายเลขกำกับโดเมนที่ต้องการ แล้วตามด้วยการกดปุ่ม Enter คุณอาจพบ ข้อความว่า No Current Site, No Current Server และ No Current Naming Context ได้เนื่องจากโดเมนที่เลือกนั้นมีปัญหานั่นเอง ขั้นตอนต่อไปก็คือเข้าไปยังไซต์ (Site) ที่มีเครื่อง Domain Controller ที่ต้องการอยู่โดยใช้คำสั่ง LIST SITES และกดปุ่ม Enter เพื่อแสดงรายชื่อไซต์ทั้งหมดที่มี และแน่นอนว่าคุณจะต้องเลือกไซต์ที่ต้องการด้วยคำสั่ง SELECT SITE &ltnumber> โดยที่ &ltnumber> ก็หมายถึงหมายเลขกำกับไซต์ที่คุณต้องการเลือกนั่นเอง จากนั้นก็กดปุ่ม Enter ข้อความยืนยันการเลือกไซต์จะปรากฏขึ้น

ต่อไปก็ถึงขั้นตอนในการเลือกเครื่องเซิร์ฟเวอร์ที่มีปัญหา โดยอันดับแรกก็ให้แสดงรายชื่อเครื่องเซิร์ฟเวอร์ที่อยู่ภายในไซต์ โดยพิมพ์คำสั่ง LIST SERVERS IN SITE และกดปุ่ม Enter แล้วจึงพิมพ์คำสั่ง SELECT SERVER &ltnumber> แทนค่า &ltnumber> ด้วยหมายเลขกำกับเครื่องเซิร์ฟเวอร์ตามที่ต้องการและกดปุ่ม Enter อ่านข้อความยืนยันอีกครั้งซึ่งต่อจากนี้เป็นเรื่องที่สำคัญมากทีเดียว คุณจะต้องอ่านข้อความต่างๆ ให้รอบคอบและแน่ใจเสียก่อนที่จะลงมือกระทำการใดๆ มิเช่นนั้นคุณอาจลบเครื่องเซิร์ฟเวอร์ผิดตัวได้ แต่หากเกิดการเลือกค่าผิดก็ให้ใช้คำสั่ง LIST SERVERS IN SITE และ SELECT SERVER &ltnumber> อีกครั้งเพื่อเลือกเครื่องเซิร์ฟเวอร์ให้ถูกต้อง เมื่อเรียบร้อยแล้วจึงใช้คำสั่ง QUIT และกดปุ่ม Enter เพื่อกลับไปยัง Prompt ของคำสั่ง METADATA CLEANUP และเมื่อคุณแน่ใจในการกระทำนี้แล้วก็ถึงเวลาที่ต้องลบเครื่องเซิร์ฟเวอร์ที่ เลือกไว้ออกจากระบบกันจริงๆ แล้ว ให้คุณพิมพ์คำสั่ง REMOVE SELECTED SERVER จะปรากฏกล่องข้อความขึ้นมาคล้ายกับรูปข้างล่างนี้

กล่องข้อความปรากฏขึ้นเมื่อคุณกดปุ่ม Enter หลังจากพิมพ์คำสั่ง REMOVE SELECTED SERVER ในโปรแกรม NTDSUTIL

กล่อง ข้อความนี้แสดงขึ้นมาเพื่อถามว่าคุณต้องการลบเครื่องเซิร์ฟเวอร์เครื่องนี้ ออกจาก Active Directory จริงหรือไม่ และเครื่องเซิร์ฟเวอร์นี้เป็นเครื่องสุดท้ายของโดเมนหรือไม่ ให้กดปุ่ม Yes และรออีกไม่กี่วินาทีคุณก็จะได้รับข้อความยืนยันให้ทราบว่าเครื่อง เซิร์ฟเวอร์ที่คุณเลือกนั้นได้ถูกลบออกไปจากระบบเรียบ-ร้อยแล้ว แต่ก็ต้องรอให้รอบของการ Replication ระหว่างเครื่องเซิร์ฟเวอร์อื่นๆ ภายในโดเมนเสร็จสมบูรณ์เสียก่อน เครื่องเซิร์ฟเวอร์ที่ถูกลบออกไปแล้วจึงจะหายไปจากระบบจริงๆ ตอนนี้คุณสามารถใส่คำสั่ง QUIT 2 ครั้ง แล้วตามด้วยคำสั่ง EXIT เพื่อปิดการทำงานของโปรแกรม NTDSUTIL และปิดหน้าต่าง Command Prompt ด้วย

แม้ว่าคุณจะดำเนินการตามขั้นตอนต่างๆ อย่างถูกต้องครบถ้วนแล้วก็ตาม แต่ก็อาจเกิดข้อความแสดงความผิดพลาดขึ้นมาได้ดังนี้

Error 8419 (0x20E3)
The DSA Object Could Not Be Found


ซึ่ง หากคุณได้รับข้อความแสดงความผิดพลาดที่เกิดขึ้นก็ไม่ต้องตกใจ เพราะนั่นหมายความว่าออบเจ็กต์ที่ต้องการได้ถูกลบออกจาก Active Directory เรียบร้อยแล้ว อาจเป็นได้ว่ามีการเรียกใช้งานคำสั่ง DCPROMO ตั้งแต่แรกแล้วก็ได้ หรืออาจมีผู้ดูแลระบบคนอื่นได้ทำเช่นเดียวกับคุณไปแล้วก่อนหน้านี้แล้วนั่น เอง

จะเห็นได้ว่าการจัดการกับเครื่องเซิร์ฟเวอร์ที่ทำหน้าที่เป็น Domain Controller ซึ่งมีปัญหาหรือเสียหายนั้น ไม่ใช่เรื่องยาก หรือวุ่นวายอะไรมากนัก เพียงคุณปฏิบัติตามขั้นตอนแต่ละขั้นอย่างเคร่งครัดและรอบคอบ ก็จะทำให้คุณ สามารถแก้ปัญหาที่เกิดขึ้นได้อย่างถูกต้องด้วยฝีมือของคุณเอง พร้อมกับผู้ช่วยอันทรงประสิทธิภาพอย่างโปรแกรม NTDSUTIL นั่นเอง

แต่ก็ใช้ไม่ได้กับกรณีของเรา T_T
จาก http://www.arip.co.th/articles.php?id=405776

ไม่มีความคิดเห็น:

แสดงความคิดเห็น