ข้อมูลงานโตขึ้นทุกปีจนพื้นที่เดิมใกล้เต็ม
ลูกค้าของเราเป็นบริษัทวิศวกรรมไฟฟ้า ใช้ file server เก็บแบบ drawing ใบเสนอราคา และเอกสารบัญชีของทั้งบริษัท ข้อมูลสะสมมาหลายปีจนดิสก์ 294 GB เหลือที่ว่างราว 2 GB ลูกค้าจึงให้เราเพิ่มพื้นที่
เราเพิ่ม HDD 4 TB สองลูกทำ RAID 1 ใน server เครื่องเดิม แล้วย้ายข้อมูลเกือบ 190,000 ไฟล์ไปดิสก์ใหม่ สิ่งที่ลูกค้าต้องการมี 3 ข้อ
- ไฟล์ต้องครบทุกไฟล์ หายสักไฟล์เดียวไม่ได้
- พนักงานไม่ต้องเปลี่ยน drive หรือ path ที่ใช้อยู่ทุกวัน
- สิทธิ์เข้าถึงแต่ละแผนกต้องเหมือนเดิม รวมถึงเครื่องสแกนเอกสารที่ส่งไฟล์เข้า server ก็ต้องใช้ได้ต่อ
ระบบหยุดได้แค่ช่วงเย็นวันเดียว งานส่วนใหญ่จึงต้องเสร็จก่อนถึงช่วงนั้น
ทำไมเราเลือกสลับ drive letter แทนการตั้ง share ใหม่
share บน Windows ผูกอยู่กับ path เช่น E:\Sharing ไม่ได้ผูกกับดิสก์ลูกไหน ถ้าดิสก์ใหม่ได้ชื่อ E: แทนดิสก์เดิม share ก็จะชี้ไปที่ดิสก์ใหม่เองทันที โดยไม่ต้องแก้อะไรเลย
ทางที่คนส่วนใหญ่นึกถึงก่อนคือ copy ไปดิสก์ใหม่แล้วตั้ง share ใหม่ วิธีนี้ต้องตั้งสิทธิ์ share ใหม่ทุกตัว แก้ path ที่เครื่องสแกนเอกสารส่งไฟล์ไป และตามแก้ทุกจุดที่เคยอ้างถึง drive เดิม พลาดจุดเดียวก็มีคนเปิดไฟล์ไม่ได้ในเช้าวันถัดไป
การสลับ drive letter ยังมีข้อดีอีก 2 ข้อ
- สิทธิ์ NTFS ตามมาครบ เพราะเป็น server เครื่องเดิม user และ group เป็นชุดเดิมทั้งหมด
- ถ้ามีอะไรผิดปกติ ก็สลับ letter กลับได้ในไม่กี่นาที เพราะข้อมูลบนดิสก์เดิมไม่ถูกแตะเลย

ดิสก์เดิมไม่ได้ถูกลบ แค่เปลี่ยนชื่อเป็น X: เก็บไว้เผื่อต้องย้อนกลับ
ขั้นที่ 1 copy รอบแรกระหว่างที่พนักงานยังทำงาน
เราเริ่ม copy ตั้งแต่ตอนที่พนักงานยังใช้งานอยู่ รอบนี้ใช้เวลานานที่สุดคือ 1 ชั่วโมง 16 นาที สำหรับ 287 GB แต่ไม่กระทบใคร เพราะคนยังเปิดไฟล์บนดิสก์เดิมได้ตามปกติ
เครื่องมือที่ใช้คือ robocopy ที่มากับ Windows อยู่แล้ว จุดที่ต้องตั้งให้ถูกมี 4 อย่าง
- ใช้โหมด mirror (/MIR) ให้ปลายทางตรงกับต้นทางทุกอย่าง รอบถัดไปจะ copy เฉพาะส่วนที่เปลี่ยน
- พาสิทธิ์ไฟล์ เจ้าของไฟล์ และวันเวลาไปครบ (/COPYALL กับ /DCOPY:DAT) ไม่งั้นไฟล์จะมาครบแต่สิทธิ์หาย
- เว้นโฟลเดอร์ระบบอย่าง System Volume Information กับ Recycle Bin
- เก็บ log เป็น Unicode (/UNILOG) ไม่งั้นชื่อไฟล์ภาษาไทยใน log จะอ่านไม่ออก
ผลรอบแรกคือ copy ได้ 189,700 ไฟล์ใน 76,129 โฟลเดอร์ ไม่มีไฟล์ไหนที่ copy ไม่ผ่าน
ขั้นที่ 2 หยุดระบบแล้ว copy รอบสุดท้าย ใช้เวลาไม่ถึง 2 นาที
พอถึงเวลาที่ลูกค้าให้หยุดระบบ เราหยุด service ที่ให้บริการ share (Server service หรือ LanmanServer) เพื่อให้แน่ใจว่าไม่มีใครเขียนไฟล์เพิ่มระหว่าง copy
จากนั้นสั่ง robocopy คำสั่งเดิมอีกรอบ รอบนี้ใช้เวลาแค่ 1 นาที 27 วินาที เพราะไฟล์เกือบทั้งหมดอยู่บนดิสก์ใหม่แล้ว
รอบนี้ copy เพิ่ม 6 ไฟล์ที่มีคนแก้ระหว่าง copy รอบแรก และลบออกจากดิสก์ใหม่ 1 ไฟล์ที่ถูกลบไปจากดิสก์เดิมแล้ว ไม่มีไฟล์ไหน copy ไม่ผ่าน
ก่อนไปต่อ เราตรวจซ้ำอีกรอบด้วย robocopy แบบ dry-run (/L) ซึ่งเทียบทุกไฟล์โดยไม่ copy จริง ผลที่ต้องได้คือไม่มีไฟล์ที่ต้อง copy เพิ่มและไม่มีไฟล์เกินมาสักไฟล์ ซึ่งก็ได้ตามนั้น ทั้ง 189,703 ไฟล์ตรงกัน
เราไม่ใช้วิธีเทียบจำนวนไฟล์ใน log เพราะเวลา copy หลาย thread (/MT) ตัวเลขแต่ละรอบนับได้ไม่เท่ากัน
ขั้นที่ 3 สลับ drive letter แล้ว share กลับมาเอง
เราเปลี่ยนดิสก์เดิมจาก E: เป็น X: ก่อน แล้วค่อยเปลี่ยนดิสก์ใหม่จาก G: เป็น E: พอเปิด Server service กลับมา share ทั้งสองตัวก็ชี้ไปที่ดิสก์ใหม่ทันที โดยไม่ต้องตั้งค่าอะไรใหม่
ก่อนสลับ เรา export ค่า share จาก registry เก็บไว้ก่อน เผื่อ share ไม่กลับมาจะได้ import กลับได้ทันที รอบนี้ไม่ต้องใช้
จากนั้นทดสอบก่อนแจ้งลูกค้าว่าใช้งานได้ 4 อย่าง
- สิทธิ์บนโฟลเดอร์หลักต้องขึ้นเป็นชื่อ user และ group ปกติ ไม่ใช่รหัส SID ที่หาเจ้าของไม่เจอ
- เครื่องพนักงานเปิดไฟล์จริงบน drive เดิมได้
- สร้างและลบไฟล์ทดสอบได้ เพื่อยืนยันว่าสิทธิ์เขียนยังใช้ได้
- สแกนเอกสารจากเครื่องถ่ายเอกสาร 1 ใบ แล้วไฟล์ต้องเข้าโฟลเดอร์ Scanner ตามเดิม
ผ่านครบทั้ง 4 ข้อ พนักงานที่เห็น drive ขึ้นกากบาทแดง แค่ double-click ที่ drive ครั้งเดียวก็ต่อกลับเอง
3 เรื่องที่ต้องระวังระหว่างย้าย
การตัด session บน server กันคนเข้าไม่ได้ เพราะเครื่องลูกข่ายของ Windows ต่อ session ใหม่ให้เองภายในไม่กี่วินาที ถ้าต้องการให้ไม่มีใครเขียนไฟล์ระหว่าง copy ต้องหยุด Server service ไปเลย และแจ้งทุกคนให้ save และปิดไฟล์ไว้ก่อน
ปุ่ม Disable ใน Shadow Copies ไม่ได้แค่หยุด schedule แต่ลบ snapshot ทิ้งทั้งหมดด้วย ดิสก์เดิมมี Previous Versions ย้อนหลัง 3 สัปดาห์ 30 ชุด ซึ่งเป็นทางเดียวที่จะกู้ไฟล์เวอร์ชันก่อนวันย้าย เราจึงปิดแค่ schedule ของดิสก์เดิมใน Task Scheduler แล้วเปิด Shadow Copies บนดิสก์ใหม่แทน ประวัติเก่ายังอยู่ครบ
backup รอบแรกหลังย้ายดิสก์จะใหญ่กว่าปกติมาก โปรแกรม backup ที่เก็บทั้งเครื่องมองดิสก์ตาม volume ไม่ใช่ตาม drive letter พอผังดิสก์เปลี่ยน รอบแรกจึงต้องอ่านข้อมูลใหม่ทั้งเครื่อง 735 GB ส่งจริงไปที่ NAS 585 GB ใช้เวลา 1 ชั่วโมง 42 นาที ต้องเช็กที่ว่างบน NAS ปลายทางก่อน และสั่ง backup ทันทีหลังย้ายเสร็จ ไม่ต้องรอรอบเที่ยงคืน
ผลลัพธ์: ไฟล์ครบ 189,703 ไฟล์ พนักงานไม่ต้องเปลี่ยนอะไรเลย
- ย้ายข้อมูล 287 GB ไปดิสก์ใหม่ครบทุกไฟล์ dry-run ซ้ำแล้วตรงกันทุกไฟล์
- พื้นที่เก็บข้อมูลเพิ่มจาก 294 GB เป็นประมาณ 3.6 TB ตอนนี้ใช้ไปไม่ถึง 10%
- พนักงานใช้ drive และ path เดิม สิทธิ์เหมือนเดิม เครื่องสแกนเอกสารส่งไฟล์เข้าได้ตามเดิม
- หยุดใช้งาน share ประมาณ 1 ชั่วโมง ช่วงเย็นที่ลูกค้าอนุมัติ
- ประวัติไฟล์เก่า 3 สัปดาห์ยังกู้ได้ และดิสก์ใหม่เก็บ Previous Versions ต่อได้นานกว่าเดิม
- เก็บดิสก์เดิมไว้ 1 ถึง 2 สัปดาห์ เผื่อต้องย้อนกลับ แล้วค่อยคืนพื้นที่ให้ drive C:
คำสั่งที่ใช้จริง สำหรับคนที่อยากลองทำเอง
ทุกคำสั่งรันใน PowerShell แบบ Administrator บน server ในตัวอย่าง E: คือดิสก์เดิม และ G: คือดิสก์ใหม่
copy รอบแรกระหว่างที่ยังมีคนใช้งาน
robocopy E:\ G:\ /MIR /COPYALL /DCOPY:DAT /B /MT:16 /R:1 /W:1 /XD "System Volume Information" '$RECYCLE.BIN' /XF pagefile.sys /NP /UNILOG:C:\rc-pass1.log
'$RECYCLE.BIN' ต้องครอบด้วย single quote ถ้าใช้ double quote PowerShell จะอ่าน $RECYCLE เป็นตัวแปร แล้ว robocopy จะไม่เว้นโฟลเดอร์นี้
ถึงช่วง downtime ให้หยุด share ก่อน แล้วรันคำสั่ง robocopy เดิมอีกรอบ เปลี่ยนชื่อ log เป็น rc-final.log
Stop-Service LanmanServer -Force
ตรวจด้วย dry-run (/L) ช่อง Copied และ Extras ต้องเป็น 0 ทั้งคู่
robocopy E:\ G:\ /MIR /L /XD "System Volume Information" '$RECYCLE.BIN' /XF pagefile.sys /NP /UNILOG:C:\rc-verify.log
ตรงกันแล้วค่อยสลับ drive letter และเปิด share กลับ
- Get-Partition -DriveLetter E | Set-Partition -NewDriveLetter X
- Get-Partition -DriveLetter G | Set-Partition -NewDriveLetter E
- Start-Service LanmanServer
ระวังลำดับ E:\ กับ G:\ ในคำสั่งที่มี /MIR ถ้าใส่สลับกัน robocopy จะลบไฟล์บนดิสก์เดิมจนเหลือเท่ากับดิสก์ใหม่ที่ยังว่างอยู่ เช็กให้แน่ใจก่อนกด Enter ทุกครั้ง
ก่อนเพิ่มดิสก์ ให้เช็กก่อนว่ามีอะไรผูกกับดิสก์เดิม
สิ่งที่ต้องใช้เวลาวางแผนมากที่สุดไม่ใช่การ copy แต่เป็นการไล่ดูว่ามีอะไรผูกกับดิสก์เดิมบ้าง ทั้ง share เครื่องสแกน Shadow Copies และระบบ backup ถ้าตกไปสักอย่าง เช้าวันถัดไปจะมีคนหาไฟล์ไม่เจอ อีกเรื่องคือต้องตรวจว่าไฟล์ครบจริงทุกไฟล์ ไม่ใช่ดูแค่ว่าขนาดรวมใกล้เคียงกัน
ถ้า server ที่บริษัทคุณเริ่มเต็ม หรือมีแผนเพิ่มดิสก์แต่ไม่อยากเสี่ยงกับไฟล์งานของทั้งบริษัท ทีม MATLOG ช่วยดูสภาพเครื่องและวางแผนให้ได้ ตั้งแต่เลือก HDD จนถึงย้ายข้อมูลและตรวจสอบก่อนส่งมอบ ทักมาคุยกันได้ที่ LINE @thematlog หรือโทร 094-963-6535
