เทคนิคการขยายขนาดพาร์ติชั่นของ MicroSD บนเครื่อง RasPBX
โพสต์แล้ว: 19 ก.ย. 2015 11:58
จากบทความแนะนำการติดตั้ง RasPBX นี้ เทคนิคการติดตั้ง Asterisk+FreePBX บน Raspberry PI ผมได้แนะนำวิธีการขยายขนาดพาร์ติชั่นบน MicroSD ไปแล้วโดยการรันคำสั่ง raspi-config แล้วเลือกจากเมนู แต่ถ้าทำไม่สำเร็จให้ลองทำตามขั้นตอนในบทความนี้ครับ
เนื่องจากไฟล์อิเมจของ Linux ที่ทำบน Rasp Pi ถูกทำมาสำหรับขนาดเนื้อที่เพียงประมาณ 3.5GB เท่านั้น ดังนั้นไม่ว่าเราจะไรท์อิเมจลงบน MicroSD สักขนาดกี่ GB ก็ตาม ระบบปฏิบัติการจะเห็นขนาดพาร์ติชั่นที่ใช้ได้จริงๆเพียง 3.5 GB เท่านั้น ซึ่งก็ใช้ติดตั้ง OS ไปแล้วก็กิ๊กกว่าๆ ใช้งานได้อีกเพียงกิ๊กกว่าๆเท่านั้น
มาดูตัวอย่างที่ว่ากันครับ รันคำสั่งนี้ "df -h" (เวลาพิมพ์ไม่ต้องใส่เครื่องหมาย " ครับ) แล้วดูผลลัพธ์
ดูพาร์ติชั่น /dev/root ครับ ซึ่งเป็นที่ๆเก็บไฟล์ระบบและโปรแกรมต่างๆทั้งที่ติดตั้งมาให้ดีฟอลท์หรือที่เราจะติดตั้งในอนาคต มีขนาดเพียง 3.5GB ใช้ไปแล้ว 1.6GB เหลืออีก 1.8GB เอง ทั้งๆที่ MicroSD อันนี้ที่ผมใส่เข้าไปมันขนาดตั้ง 16GB หายไปเยอะเลย
บทความนี้แนะนำเทคนิคการขยายขนาดของพาร์ติชั่นให้ใช้ได้เต็มความจุของ MicroSD การ์ดครับ
สำหรับบาง Distro อย่างเช่น Asterisk for Raspberry และ RaspBian มีคำสั่งให้ขยายขนาดพาร์ติชั่นครับ คือคำสั่ง "raspi-config" เมื่อสั่งรันจะเห็นเมนู เลือกเข้าเมนู "1. Expand file system" ซึ่งถ้าโชคดีก็จะขยายได้ครับ รีบู๊ตครั้งหนึ่งก็จะใช้งานได้แล้ว
แต่ถ้าเจอข้อความแบบนี้ "/dev/root does not exist or is not a symlink. Don't know how to expand" แทน ณ ตอนนี้คงต้องทำการขยายแบบ manual ครับ ทำตามขั้นตอนตามที่ผมแนะนำได้เลยนะครับ ระวังนิดนึงไม่งั้นต้องได้ไรท์ไฟล์อิเมจใหม่แน่ๆ
1. ตรวจสอบขนาดพาร์ติชั่น
คำสั่ง
ผลลัพธ์
พาร์ติชั่น /dev/root เก็บไฟล์ระบบปฏิบัติการ เก็บโปรแกรม
พาร์ติชั่น /dev/mmcblk0p1 สำหรับบู๊ตระบบ
2. ดูจำนวนและขนาดของแต่ละพาร์ติชั่น
คำสั่ง
ผลลัพธ์
จะเห็นว่าพาร์ติชั่น /dev/mmcblk0p2 ซึ่งเก็บลินุกซ์มีขนาดเพียง 3.6GB เท่านั้น เราต้องขยายพาร์ติชั่นนี้ให้เต็มเนื้อที่ความจุที่เหลือ
3. ขยายขนาดพาร์ติชั่น
รันคำสั่งนี้กับพาร์ติชั่น /dev/mmcblk0 ซึ่งเป็นพาร์ติชั่นหลัก
แล้วตั้งค่าตามที่ต้องการ
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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
Disklabel type: dos
Disk identifier: 0x000ee283
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 155647 153600 75M c W95 FAT32 (LBA)
/dev/mmcblk0p2 157696 7626751 7469056 3.6G 83 Linux
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (155648-31116287, default 155648):157696 <-- สังเกตุว่าตัวเลขเดียวกับค่า Start ของ /dev/mmcblk0p2 คำสั่งก่อนหน้า
Last sector, +sectors or +size{K,M,G,T,P} (155648-31116287, default 31116287):
Created a new partition 2 of type 'Linux' and of size 14.8 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
ตรวจสอบ
คำสั่ง
ผลลัพธ์
จะเห็นว่าขนาดพาร์ติชั่น root (/dev/mmcblk0p2) ขยายเป็น 14.8 GB แล้ว
4. รีบู๊ตเครื่อง
ต่อไปให้รีบู๊ตเพื่อให้ระบบ mount พาร์ติชั่นใหม่
5. ปรับขนาดพาร์ติชั่นใหม่
หลังจากรีบู๊ต ให้ปรับขนาดพาร์ติชั่น รันคำสั่ง
ผลลัพธ์
6. ตรวจสอบขนาดพาร์ติชั่น
เพื่อความแน่ใจ เสร็จแล้วตรวจสอบพาร์ติชั่นอีกครั้งด้วยคำสั่ง
ผลลัพธ์
บทความที่เกี่ยวข้อง
เทคนิคการติดตั้ง G.729 Codec บน RasPBX
เทคนิคการทำไฟล์ Image ของ RasPBX
รวมเทคนิคการใช้งาน Elastix
รวมเทคนิคการใช้งาน Asterisk
รวมเทคนิคการใช้งาน Issabel
รวมเทคนิคการใช้งาน FreePBX
รวมเทคนิคการใช้งาน RasPBX - Asterisk on Raspberry Pi
เนื่องจากไฟล์อิเมจของ Linux ที่ทำบน Rasp Pi ถูกทำมาสำหรับขนาดเนื้อที่เพียงประมาณ 3.5GB เท่านั้น ดังนั้นไม่ว่าเราจะไรท์อิเมจลงบน MicroSD สักขนาดกี่ GB ก็ตาม ระบบปฏิบัติการจะเห็นขนาดพาร์ติชั่นที่ใช้ได้จริงๆเพียง 3.5 GB เท่านั้น ซึ่งก็ใช้ติดตั้ง OS ไปแล้วก็กิ๊กกว่าๆ ใช้งานได้อีกเพียงกิ๊กกว่าๆเท่านั้น
มาดูตัวอย่างที่ว่ากันครับ รันคำสั่งนี้ "df -h" (เวลาพิมพ์ไม่ต้องใส่เครื่องหมาย " ครับ) แล้วดูผลลัพธ์
- โค้ด: เลือกทั้งหมด
Filesystem Size Used Avail Use% Mounted on
/dev/root 3.5G 1.6G 1.8G 47% /
devtmpfs 484M 0 484M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 13M 475M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/mmcblk0p1 75M 32M 44M 42% /boot
ดูพาร์ติชั่น /dev/root ครับ ซึ่งเป็นที่ๆเก็บไฟล์ระบบและโปรแกรมต่างๆทั้งที่ติดตั้งมาให้ดีฟอลท์หรือที่เราจะติดตั้งในอนาคต มีขนาดเพียง 3.5GB ใช้ไปแล้ว 1.6GB เหลืออีก 1.8GB เอง ทั้งๆที่ MicroSD อันนี้ที่ผมใส่เข้าไปมันขนาดตั้ง 16GB หายไปเยอะเลย
บทความนี้แนะนำเทคนิคการขยายขนาดของพาร์ติชั่นให้ใช้ได้เต็มความจุของ MicroSD การ์ดครับ
สำหรับบาง Distro อย่างเช่น Asterisk for Raspberry และ RaspBian มีคำสั่งให้ขยายขนาดพาร์ติชั่นครับ คือคำสั่ง "raspi-config" เมื่อสั่งรันจะเห็นเมนู เลือกเข้าเมนู "1. Expand file system" ซึ่งถ้าโชคดีก็จะขยายได้ครับ รีบู๊ตครั้งหนึ่งก็จะใช้งานได้แล้ว
แต่ถ้าเจอข้อความแบบนี้ "/dev/root does not exist or is not a symlink. Don't know how to expand" แทน ณ ตอนนี้คงต้องทำการขยายแบบ manual ครับ ทำตามขั้นตอนตามที่ผมแนะนำได้เลยนะครับ ระวังนิดนึงไม่งั้นต้องได้ไรท์ไฟล์อิเมจใหม่แน่ๆ
1. ตรวจสอบขนาดพาร์ติชั่น
คำสั่ง
- โค้ด: เลือกทั้งหมด
df -h
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
Filesystem Size Used Avail Use% Mounted on
/dev/root 3.5G 1.6G 1.8G 47% /
devtmpfs 484M 0 484M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 13M 475M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/mmcblk0p1 75M 32M 44M 42% /boot
พาร์ติชั่น /dev/root เก็บไฟล์ระบบปฏิบัติการ เก็บโปรแกรม
พาร์ติชั่น /dev/mmcblk0p1 สำหรับบู๊ตระบบ
2. ดูจำนวนและขนาดของแต่ละพาร์ติชั่น
คำสั่ง
- โค้ด: เลือกทั้งหมด
fdisk -l
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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
Disklabel type: dos
Disk identifier: 0x000ee283
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 155647 153600 75M c W95 FAT32 (LBA)
/dev/mmcblk0p2 157696 7626751 7469056 3.6G 83 Linux
จะเห็นว่าพาร์ติชั่น /dev/mmcblk0p2 ซึ่งเก็บลินุกซ์มีขนาดเพียง 3.6GB เท่านั้น เราต้องขยายพาร์ติชั่นนี้ให้เต็มเนื้อที่ความจุที่เหลือ
3. ขยายขนาดพาร์ติชั่น
รันคำสั่งนี้กับพาร์ติชั่น /dev/mmcblk0 ซึ่งเป็นพาร์ติชั่นหลัก
- โค้ด: เลือกทั้งหมด
fdisk /dev/mmcblk0
แล้วตั้งค่าตามที่ต้องการ
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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
Disklabel type: dos
Disk identifier: 0x000ee283
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 155647 153600 75M c W95 FAT32 (LBA)
/dev/mmcblk0p2 157696 7626751 7469056 3.6G 83 Linux
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (155648-31116287, default 155648):157696 <-- สังเกตุว่าตัวเลขเดียวกับค่า Start ของ /dev/mmcblk0p2 คำสั่งก่อนหน้า
Last sector, +sectors or +size{K,M,G,T,P} (155648-31116287, default 31116287):
Created a new partition 2 of type 'Linux' and of size 14.8 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).
ตรวจสอบ
คำสั่ง
- โค้ด: เลือกทั้งหมด
fdisk -l
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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
Disklabel type: dos
Disk identifier: 0x000ee283
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 155647 153600 75M c W95 FAT32 (LBA)
/dev/mmcblk0p2 155648 31116287 30960640 14.8G 83 Linux
จะเห็นว่าขนาดพาร์ติชั่น root (/dev/mmcblk0p2) ขยายเป็น 14.8 GB แล้ว
4. รีบู๊ตเครื่อง
ต่อไปให้รีบู๊ตเพื่อให้ระบบ mount พาร์ติชั่นใหม่
- โค้ด: เลือกทั้งหมด
reboot
5. ปรับขนาดพาร์ติชั่นใหม่
หลังจากรีบู๊ต ให้ปรับขนาดพาร์ติชั่น รันคำสั่ง
- โค้ด: เลือกทั้งหมด
resize2fs /dev/mmcblk0p2
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 3869824 (4k) blocks long.
6. ตรวจสอบขนาดพาร์ติชั่น
เพื่อความแน่ใจ เสร็จแล้วตรวจสอบพาร์ติชั่นอีกครั้งด้วยคำสั่ง
- โค้ด: เลือกทั้งหมด
df -h
ผลลัพธ์
- โค้ด: เลือกทั้งหมด
Filesystem Size Used Avail Use% Mounted on
/dev/root 15G 1.8G 13G 13% /
devtmpfs 484M 0 484M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 13M 475M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/mmcblk0p1 75M 32M 44M 42% /boot
บทความที่เกี่ยวข้อง
เทคนิคการติดตั้ง G.729 Codec บน RasPBX
เทคนิคการทำไฟล์ Image ของ RasPBX
รวมเทคนิคการใช้งาน Elastix
รวมเทคนิคการใช้งาน Asterisk
รวมเทคนิคการใช้งาน Issabel
รวมเทคนิคการใช้งาน FreePBX
รวมเทคนิคการใช้งาน RasPBX - Asterisk on Raspberry Pi