คัดลอกดิสก์ไปยังเซิร์ฟเวอร์

จาก NakhonNet
ข้ามไปยัง: นำทาง, ค้นหา

ขั้นตอนสุดท้ายของการติดตั้งวินโดวส์คือการคัดลอกดิสก์ไปยังเซิร์ฟเวอร์

การเก็บ Disk Image บนเซิร์ฟเวอร์ จะเก็บเป็น Image File ธรรมดา ซึ่งสามารถคัดลอกกลับมายังดิสก์จริงได้

การคัดลอกดิสก์ไปยังเซิร์ฟเวอร์สามารถทำได้หลายวิธี ในที่นี้จะแนะนำ 2 วิธี คือ

  • ใช้โปรแกรม nc เพื่อคัดลอกผ่านแลน
  • นำฮาร์ดดิสก์ของเครื่องวินโดวส์ไปเสียบที่เซิร์ฟเวอร์

คำนวณขนาดของพาร์ทิชั่น (Optional)

ในกรณีที่แบ่งพาร์ทิชั่นไม่เต็มฮาร์ดดิสก์ ก็สามารถคัดลอกเฉพาะส่วนที่ใช้งานไปยังเซิร์ฟเวอร์ได้

สำหรับผู้ที่สร้างพาร์ทิชั่นเต็มเนื้อที่ฮาร์ดดิสก์ สามารถข้ามขั้นตอนนี้ไปได้

โดยเมื่อบูตลินุกซ์แล้ว (ทั้งกรณีใช้โปรแกรม nc และนำฮาร์ดดิสก์ไปเสียบที่เซิร์ฟเวอร์) ให้เรียกคำสั่ง

root@diskserv:~# fdisk -l

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x01234567

               Device Boot      Start         End      Blocks   Id  System
/dev/sda1               *          63   390620474   195310206    7  HPFS/NTFS/exFAT

สังเกตพาร์ทิชั่น HPFS/NTFS/exFAT ซึ่งควรจะเป็นพาร์ทิชั่นแรก (/dev/sda1 ในกรณีใช้โปรแกรม nc หรือ /dev/sdX1 โดยที่ X เป็น a, b, ... ขึ้นอยู่กับลำดับการเสียบฮาร์ดดิสก) ให้นำค่าในคอลัมน์ End มาหารด้วย 2048 แล้วปัดเศษขึ้น ในที่นี้คือ

390620474 / 2048 = 190732.65 ปัดเศษขึ้นเป็น 190733 ตัวเลขนี้คือจำนวนบล็อกที่จะต้องคัดลอกไปยังเซิร์ฟเวอร์

ใช้โปรแกรม nc คัดลอกผ่านแลน

โปรแกรม nc (Net Cat) ใช้สำหรับส่งข้อมูลผ่านแลน โดยสามารถรับ/ส่งข้อมูลทาง pipe ได้

เตรียมการ

โปรแกรม nc เป็นโปรแกรมบนลินุกซ์ ดังนั้นจึงต้องบูตลินุกซ์ที่เครื่องลูก โดยจะบูตด้วยแผ่น Slackware64 13.37 มีขั้นตอนดังนี้

  • นำ DVD Drive ไปเสียบที่เครื่องลูก แล้วบูตด้วยแผ่น Slackware64 13.37
  • ที่หน้าจอ boot: ให้กดปุ่ม Enter
  • ที่หน้าจอ Enter 1 to select a keyboard map: ให้กดปุ่ม Enter
  • ที่หน้าจอ slackware login: ให้กดปุ่ม Enter
  • หากสร้างพาร์ทิชั่นไม่เต็มฮาร์ดดสิก์ ให้คำนวณขนาดของพาร์ทิชั่นตามหัวข้อข้างต้น

Server

ที่เซิร์ฟเวอร์ ให้เรียกคำสั่งต่อไปนี้

cd /image
nc -l -p 3333 | dd bs=1M of=disk1.img

Client

ที่เครื่องลูกให้เรียกคำสั่งดังต่อไปนี้

dd bs=1M if=/dev/sda count=xxx | nc -q 10 192.168.2.254 3333

โดยที่

  • xxx คือขนาดของพาร์ทิชั่นที่คำนวณได้ตามขั้นตอนข้างต้น กรณีสร้างพาร์ทิชั่นเต็มฮาร์ดดิสก์ ให้เอาพารามิเตอร์ count=xxx ออก
  • 192.168.2.254 คือ IP Address ของเครื่องเซิร์ฟเวอร์

นำฮาร์ดดิสก์ไปเสียบที่เซิร์ฟเวอร์

การนำฮาร์ดดิสก์เครื่องลูกไปเสียบที่เซิร์ฟเวอร์ จะทำให้คัดลอกได้เร็วกว่า แต่ก็ต้องปิดเซิร์ฟเวอร์เพื่อเสียบฮาร์ดดิสก์ โดยมีขั้นตอนดังนี้

  • เสียบฮาร์ดดิสก์เครื่องลูกไปที่เซิร์ฟเวอร์
  • บูตเซิร์ฟเวอร์
  • ใช้คำสั่ง fdisk -l เพื่อตรวจดูว่าฮาร์ดดิสก์ที่เสียบเข้าไปมีชื่อ device อะไร โดยสังเกตจากพาร์ทิชั่นที่เป็น HPFS/NTFS/exFAT
  • หากสร้างพาร์ทิชั่นไม่เต็มฮาร์ดดสิก์ ให้คำนวณขนาดของพาร์ทิชั่นตามหัวข้อข้างต้น

การคัดลอกดิสก์ สามารถทำได้โดยใช้คำสั่งดังนี้

dd bs=1M if=/dev/sdd of=/image/disk1.img count=xxx

โดยที่

  • /dev/sdd คือชื่อ device ของฮาร์ดดิสก์ที่เสียบเข้าไป
  • xxx คือขนาดของพาร์ทิชั่นที่คำนวณได้ตามขั้นตอนข้างต้น กรณีสร้างพาร์ทิชั่นเต็มฮาร์ดดิสก์ ให้เอาพารามิเตอร์ count=xxx ออก

การดูความคืบหน้า

การดูความคืบหน้าของการคัดลอกดิสก์ สามารถทำได้โดยดูขนาดของไฟล์ในไดเรกทอรี /image บนเครื่องเซิร์ฟเวอร์ โดยเปิดหน้าจอใหม่ (กดปุ่ม Alt-F2) ดังนี้

cd /image
ls -l

หรือใช้คำสั่ง iostat -k 5 บนเครื่องลูก (กรณีใช้โปรแกรม nc) หรือบนเครื่องเซิร์ฟเวอร์ แล้วดูบรรทัดที่เป็น device ของฮาร์ดดิสก์จากเครื่องลูก ทั้งนี้คำสั่งนี้จะแสดงผลทุกๆ 5 วินาที ถ้าต้องการหยุด ให้กดปุ่ม Ctrl-C

การนำไฟล์ Image กลับมายังฮาร์ดดิสก์

เนื่องจากไฟล์ Image จะเหมือนกับฮาร์ดดิสก์ทุกประการ ดังนั้นการนำไฟล์ Image กลับมายังฮาร์ดดิสก์ก็เพียงใช้คำสั่งกลับกับขั้นตอนข้างต้น

กรณีทำผ่านแลนโดยใช้คำสั่ง nc ก็มีขั้นตอนดังนี้

  • ทำตามขั้นตอน #เตรียมการ ในหัวข้อ ใช้โปรแกรม nc คัดลอกผ่านแลน
  • ที่เครื่องลูก พิมพ์คำสั่ง
nc -l -p 3334 | dd bs=1M of=/dev/sda
  • ที่เครื่องเซิร์ฟเวอร์ พิมพ์คำสั่ง
cd /image
dd bs=1M if=disk1.img | nc -q 10 192.168.2.1 3334

โดยที่

  • 192.168.2.1 คือ IP Address ของเครื่องลูก

กรณีนำฮาร์ดดิสก์ไปเสียบที่เครื่องเซิร์ฟเวอร์ หลังจากเสียบฮาร์ดดิสก์ และตรวจสอบชื่อ device เรียบร้อยแล้ว ให้พิมพ์คำสั่ง

dd bs=1M if=/image/disk1.img of=/dev/sdd

โดยที่

  • /dev/sdd คือชื่อ device ของฮาร์ดดิสก์ที่เสียบเข้าไป

คำเตือน ให้ตรวจสอบชื่อ device ให้ถูกต้อง เพราะถ้าระบุ device ผิด ก็อาจทำให้ข้อมูลสำคัญถูกเขียนทับได้ และอาจทำให้ระบบเสียได้


View/Edit Diskless Server
ภาพรวม หลักการทำงาน - Hardware - Software
ติดตั้ง Server ติดตั้ง Slackware64 13.37 บูต - แบ่งพาร์ทิชั่น - เตรียมฮาร์ดดิสก์ - ติดตั้งแพ็กเกจ - ติดตั้ง Lilo - กำหนดค่าเน็ตเวิร์ก - กำหนดรหัสผ่าน - Slackware64 14.0
ปรับแต่ง Slackware Linux การใช้งานเบื้องต้น - คอมไพล์ Kernel - สร้างไดเรกทอรี - ปรับแต่ง Filesystem - ปรับแต่งแพ็กเกจ - เพิ่มการเรียก dhcpd
ปรับแต่ง Network กำหนดชื่อ Device - ทำ Network Bonding - กำหนดค่า Network
RAID สร้างพาร์ทิชั่น - สร้าง RAID - ไม่ใช้ RAID
กำหนดค่า Service NTPD - NAMED - TFTPD
โปรแกรม iSCSI Enterprise Target - iPXE
โปรแกรมจัดการระบบ Apache - MySQL - PhpMyAdmin - CakePHP - Disk Serve Manager (อัปเกรด)
ติดตั้ง Client ติดตั้ง Windows XP - ติดตั้ง iSCSI - ปรับแต่ง Windows XP - คัดลอกดิสก์ไปยังเซิร์ฟเวอร์ - Windows 7 64-bit
การใช้งาน ภาพรวม นิยาม - ไฟล์ Config และ Script
การกำหนดค่า Config - Cluster - Alternative - Computer - ตัวอย่าง
การใช้งาน หน้าจอหลัก - Mode การใช้งาน - ปรับปรุง Image - สำรอง Image - ขยายขนาด Image - ใช้หลาย Server
โปรแกรมเสริม ปรับแต่งเครื่องลูกขณะบูต - ฟอร์แมตไดรฟ์เสริม
การแก้ไขปัญหา FAQ - ไฟล์กำหนดค่า - ไฟล์บันทึกการทำงาน - Secure Erase