การขยายขนาด Image

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

การขยายขนาด Image เป็นการเพิ่มเนื้อที่ในไดรฟ์ในกรณีที่ Image ที่สร้างไว้มีขนาดไม่เพียงพอต่อการใช้งาน

การขยายขนาดสามารถทำได้ 2 วิธี คือ

  • เพิ่มไดรฟ์ D:
  • ขยายขนาดของไดรฟ์ C:

โดยทั้งสองวิธีจะยังคงใช้ไฟล์ Image ไฟล์เดิม และไฟล์ Image นี้จะยังคงสามารถนำกลับไปใช้บนฮาร์ดดิสก์ปกติได้เช่นเดิม

ขั้นตอนในการขยายขนาด Image มี 2 ขั้นตอน คือ

  1. ขยายขนาดของไฟล์ Image
  2. เพิ่มไดรฟ์ D: หรือขยายขนาดของไดร์ฟ C:

การขยายขนาดของไฟล์ Image และการขยายขนาดของไดรฟ์ C: จะต้องทำในลินุกซ์ ส่วนการเพิ่มไดรฟ์ D: สามารถทำได้ทั้งในลินุกซ์ และในวินโดวส์

เปรียบเทียบการขยายขนาด Image

การขยายขนาด Image ทั้งสองวิธีมีข้อดีข้อเสียดังนี้

  • เพิ่มไดรฟ์ D:
    • ข้อดี
      • ทำได้ง่าย
      • ปลอดภัยเพราะไม่ยุ่งกับไดรฟ์ C:
    • ข้อเสีย
      • เนื้อที่แบ่งเป็น 2 ไดรฟ์ ทำให้ยุ่งยากต่อการจัดการ
  • ขยายขนาดของไดรฟ์ C:
    • ข้อดี
      • ได้เนื้อที่เป็นไดรฟ์เดียว ง่ายต่อการจัดการ
    • ข้อเสีย
      • ขั้นตอนยุ่งยากกว่า
      • อาจทำให้ไดรฟ์ C: เสียได้

อย่างไรก็ดี ในการทำจะไม่ไปยุ่งกับไฟล์ Image เดิม ซึ่งหากทำแล้วผิดพลาด ก็สามารถกลับไปใช้ไฟล์ Image เดิมได้

ในที่นี้จะขยายไฟล์ Image ชื่อ p8.img โดยเดิมมีขนาด 10.74 GB ไปเป็น 21.47 GB

ขยายขนาดของไฟล์ Image

การขยายขนาดของไฟล์ Image สามารถทำได้โดยการเพิ่มไฟล์ว่างๆ ต่อท้ายไปตามขนาดที่ต้องการ โดยใช้คำสั่งตามตัวอย่าง

เช่น ไฟล์ Image เดิมมีขนาด 10 GiB (10.74 GB) ดังนี้

root@diskserv:/image# ls -la p8.img
-rw-r--r-- 1 root root 10738466816 Nov 22 15:20 p8.img
root@diskserv:/image# fdisk -l p8.img

Disk p8.img: 10.7 GB, 10738466816 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20973568 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: 0xb82fb82f

 Device Boot      Start         End      Blocks   Id  System
p8.img1   *        2048    20973567    10485760    7  HPFS/NTFS/exFAT
root@diskserv:/image# 

ต้องการเพิ่มขนาดเป็น 20 GiB (21.47 GB) ทำได้โดยสร้างไฟล์เปล่าๆ ขนาด 10 GiB ขึ้นมา ดังนี้

root@diskserv:/image# dd bs=1M if=/dev/zero of=zero.bin count=0 seek=10240
0+0 records in
0+0 records out
0 bytes (0 B) copied, 6.887e-06 s, 0.0 kB/s
root@diskserv:/image# ls -la zero.bin
 -rw-r--r-- 1 root root 10737418240 Dec 28 15:45 zero.bin
root@diskserv:/image# 

จากนั้นใช้คำสั่ง cat เพื่อต่อไฟล์ทั้งสองเข้าด้วยกัน โดยให้สร้างไฟล์ผลลัพธ์ขึ้นมาต่างหาก

root@diskserv:/image# cat p8.img zero.bin > p8_resize.img
root@diskserv:/image# ls -la p8_resize.img
-rw-r--r-- 1 root root 21475885056 Dec 28 15:47 p8_resize.img
root@diskserv:/image# fdisk -l p8_resize.img

Disk p8_resize.img: 21.5 GB, 21475885056 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41945088 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: 0xb82fb82f

        Device Boot      Start         End      Blocks   Id  System
p8_resize.img1   *        2048    20973567    10485760    7  HPFS/NTFS/exFAT
root@disksrv1:/image# 

จะเห็นว่าขนาดของไฟล์ Image เปลี่ยนเป็น 21.5 GB แล้ว โดยที่พาร์ทิชั่นยังคงมีขนาดเท่าเดิม จากนั้นก็สามารถทำขั้นตอนต่อไปได้ โดยสามารถทำได้ทั้งการเพิ่มไดรฟ์ D: หรือการขยายขนาดไดรฟ์ C:

เพิ่มไดรฟ์ D:

การเพิ่มไดรฟ์ D: สามารถทำได้โดยการแก้ไขตารางพาร์ทิชั่นของไฟล์ Image ซึ่งสามารถทำได้หลายวิธี แต่ในที่นี้จะใช้โปรแกรม fdisk ซึ่งเป็นโปรแกรมเดียวกันกับที่ใช้ตอนสร้างพาร์ทิชั่นในฮาร์ดดิสก์

การเพิ่มไดรฟ์ D: จากวินโดวส์

สำหรับการเพิ่มไดรฟ์ D: จากในวินโดวส์สามารถทำได้จาก Disk Manager ซึ่งขั้นตอนคร่าวๆ ดังนี้

  1. นำไฟล์ Image มาใช้งาน ตามขั้นตอนใน #การนำไฟล์ Image มาใช้งาน
  2. จากนั้นให้เปิดเครื่องลูก และเรียก Disk Manager ขึ้นมาก็จะพบว่ามีเนื้อที่ว่างท้ายพาร์ทิชั่นแรก ก็ให้สร้างพาร์ทิชั่นตรงนั้นเลย
  3. จากนั้นเมื่อตรวจสอบความถูกต้องเรียบร้อย ก็ค่อย Update Master Image จากเครื่องลูก

สร้างไดรฟ์ D:

การเพิ่มไดรฟ์ D: จากลินุกซ์ เริ่มจากการสร้างไดรฟ์ D: โดยเรียกคำสั่ง fdisk และพิมพ์รายละเอียดของพาร์ทิชันออกมา

root@diskserv:/image# fdisk p8_resize.img

Command (m for help): p

Disk p8_resize.img: 21.5 GB, 21475885056 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41945088 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: 0xb82fb82f

        Device Boot      Start         End      Blocks   Id  System
p8_resize.img1   *        2048    20973567    10485760    7  HPFS/NTFS/exFAT

Command (m for help): 

จากนั้นก็สร้างพาร์ทิชั่นแบบ Extended

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4, default 2): 
Using default value 2
First sector (20973568-41945087, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41945087, default 41945087): 
Using default value 41945087

Command (m for help): p

Disk p8_resize.img: 21.5 GB, 21475885056 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41945088 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: 0xb82fb82f

        Device Boot      Start         End      Blocks   Id  System
p8_resize.img1   *        2048    20973567    10485760    7  HPFS/NTFS/exFAT
p8_resize.img2        20973568    41945087    10485760    5  Extended

Command (m for help): 

จากนั้นสร้าง Logical Drive ในพาร์ทิชั่น Extended และเปลี่ยนชนิดของพาร์ทิชั่นเป็น NTFS

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First sector (20975616-41945087, default 20975616): 
Using default value 20975616
Last sector, +sectors or +size{K,M,G} (20975616-41945087, default 41945087): 
Using default value 41945087

Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 7
Changed system type of partition 5 to 7 (HPFS/NTFS/exFAT)

Command (m for help): p

Disk p8_resize.img: 21.5 GB, 21475885056 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41945088 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: 0xb82fb82f

        Device Boot      Start         End      Blocks   Id  System
p8_resize.img1   *        2048    20973567    10485760    7  HPFS/NTFS/exFAT
p8_resize.img2        20973568    41945087    10485760    5  Extended
p8_resize.img5        20975616    41945087    10484736    7  HPFS/NTFS/exFAT

Command (m for help): 

จากนั้นก็บันทึกตารางพาร์ทิชั่น และออกจากโปรแกรม fdisk

Command (m for help): w
The partition table has been altered!

Syncing disks.
root@disksrv1:/image#   

ฟอร์แมตไดรฟ์ D:

การฟอร์แมตไดรฟ์ D: สามารถทำได้โดยใช้โปรแกรม mkfs.ntfs โดยมีขั้นตอนดังนี้ หา loopback device ที่ว่างโดยใช้คำสั่ง

root@diskserv:/image# losetup -f
/dev/loop19
root@diskserv:/image# 

โปรแกรมจะแสดง loopback device แรกที่ว่างออกมา ซึ่งในแต่ละเครื่องจะไม่เหมือนกัน ในตัวอย่างข้างต้นคือ /dev/loop19

จากนั้นหา offset โดยคำนวณจาก Start Sector จากคำสั่งพาร์ทิชั่นที่สร้าง ซึ่งในที่นี้คือ 20975616 ดังนั้น offset คือ 20975616 x 512 = 10739515392

จากนั้นใช้คำสั่งต่อไปนี้เพื่อฟอร์แมต

root@diskserv:/image# losetup -o 10739515392 /dev/loop19 /image/p8_resize.img
root@diskserv:/image# /sbin/mkfs.ntfs -f -I -L DRIVE_D /dev/loop19
The partition start sector was not specified for /dev/loop19 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/loop19 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/loop19 and it could not be obtained automatically.  It has been set to 0.
Cluster size has been automatically set to 4096 bytes.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
root@diskserv:/image# 

คำเตือน ให้ใช้ค่า offset และชื่อ loopback device ของแต่ละเครื่อง อย่าใช้ตามตัวอย่าง

สุดท้ายก็ให้ลบ loopback device โดยใช้คำสั่ง

root@diskserv:/image# losetup -d /dev/loop19
root@diskserv:/image#

เมื่อสร้างไดรฟ์ D: เรียบร้อยแล้ว ก็สามารถนำไฟล์ Image ใหม่นี้มาใช้งานได้ โดยทำตามขั้นตอนในหัวข้อ #การนำไฟล์ Image มาใช้งาน

ขยายขนาดไดรฟ์ C:

การขยายขนาดไดรฟ์ C: ในลินุกซ์จะใช้โปรแกรม fdisk เพื่อขยายขนาดพาร์ทิชั่น และโปรแกรม ntfsresize เพื่อขยายระบบไฟล์ NTFS โดยมีขั้นตอนดังนี้

การขยายพาร์ทิชั่นเริ่มโดยเรียกคำสั่ง fdisk และพิมพ์รายละเอียดของพาร์ทิชันออกมา

root@diskserv:/image# fdisk p8_resize.img

Command (m for help): p

Disk p8_resize.img: 21.5 GB, 21475885056 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41945088 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: 0xb82fb82f

        Device Boot      Start         End      Blocks   Id  System
p8_resize.img1   *        2048    20973567    10485760    7  HPFS/NTFS/exFAT

Command (m for help): 

จากนั้นสั่งลบ และสร้างพาร์ทิชั่นใหม่ให้เต็มขนาดของดิสก์ ดังนี้

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 
Using default value 1
First sector (2048-41945087, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41945087, default 41945087): 
Using default value 41945087

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 7
Changed system type of partition 1 to 7 (HPFS/NTFS/exFAT)

Command (m for help): a
Partition number (1-4): 1

Command (m for help): p

Disk p8_resize.img: 21.5 GB, 21475885056 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41945088 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: 0xb82fb82f

        Device Boot      Start         End      Blocks   Id  System
p8_resize.img1   *        2048    41945087    20971520    7  HPFS/NTFS/exFAT

Command (m for help): w
The partition table has been altered!

Syncing disks.
root@disksrv1:/image# 

เป็นอันเสร็จขั้นตอนการขยายขนาดพาร์ทิชั่น

การขยายระบบไฟล์ NTFS จะต้องใช้ loopback ด้วยโดยหา loopback device ที่ว่างโดยใช้คำสั่ง

root@diskserv:/image# losetup -f
/dev/loop19
root@diskserv:/image# 

โปรแกรมจะแสดง loopback device แรกที่ว่างออกมา ซึ่งในแต่ละเครื่องจะไม่เหมือนกัน ในตัวอย่างข้างต้นคือ /dev/loop19

จากนั้นใช้คำสั่งต่อไปนี้เพื่อทดสอบการขยายไดรฟ์ C: ซึ่งจะไม่มีการเขียนข้อมูลใดๆ ทั้งสิ้น

root@diskserv:/image# losetup -o 1048576 /dev/loop19 p8_resize.img
root@diskserv:/image# ntfsresize -n -s 21474836480 -v /dev/loop19
ntfsresize v2.0.0 (libntfs 10:0:0)
Device name        : /dev/loop19
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 10737414656 bytes (10738 MB)
Current device size: 21474836480 bytes (21475 MB)
New volume size    : 21474832896 bytes (21475 MB)
Checking for bad sectors ...
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 6334 MB (59.0%)
Collecting resizing constraints ...
Schedule chkdsk for NTFS consistency check at Windows boot time ...
Resetting $LogFile ... (this might take a while)
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
The read-only test run ended successfully.
root@diskserv:/image#

จะเห็นว่าบรรทัดสุดท้ายโปรแกรมแสดงผลการทดสอบว่าสำเร็จเรียบร้อย

จากนั้นจึงใช้คำสั่งอีกครั้ง โดยในครั้งนี้จะเป็นการขยายจริง

root@diskserv:/image# ntfsresize -s 21474836480 -v /dev/loop19
ntfsresize v2.0.0 (libntfs 10:0:0)
Device name        : /dev/loop19
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 10737414656 bytes (10738 MB)
Current device size: 21474836480 bytes (21475 MB)
New volume size    : 21474832896 bytes (21475 MB)
Checking for bad sectors ...
Checking filesystem consistency ...
100.00 percent completed
Accounting clusters ...
Space in use       : 6334 MB (59.0%)
Collecting resizing constraints ...
WARNING: Every sanity check passed and only the dangerous operations left.
Make sure that important data has been backed up! Power outage or computer
crash may result major data loss!
Are you sure you want to proceed (y/[n])? y
Schedule chkdsk for NTFS consistency check at Windows boot time ...
Resetting $LogFile ... (this might take a while)
Updating $BadClust file ...
Updating $Bitmap file ...
Updating Boot record ...
Syncing device ...
Successfully resized NTFS on device '/dev/loop19'.
root@disksrv1:/image# 

เมื่อขยายไดรฟ์ C: เรียบร้อยแล้วก็ลบ loopback device ดังนี้

root@diskserv:/image# losetup -d /dev/loop19
root@diskserv:/image#

เป็นอันเสร็จสิ้นการขยายขนาดไดรฟ์ C: ก็สามารถนำไฟล์ Image ใหม่นี้มาใช้งานได้ โดยทำตามขั้นตอนในหัวข้อ #การนำไฟล์ Image มาใช้งาน

เมื่อบูตเข้าวินโดวส์ครั้งแรก วินโดวส์จะตรวจสอบไดรฟ์ C: ซึ่งเมื่อตรวจสอบเรียบร้อยก็ให้ Update Master Image

การนำไฟล์ Image มาใช้งาน

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

/etc/rc.d/init.d/iet stop

จากนั้นให้นำไฟล์ Image ใหม่มาใช้ (โดยสำรองไฟล์เก่าไว้ก่อน)

cd /image
mv p8.img p8_old.img
mv p8_resize.img p8.img

เมื่อเปลี่ยนไฟล์เรียบร้อยแล้ว ก็ให้เริ่มระบบ โดยใช้คำสั่ง

/etc/rc.d/init.d/iet start

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