เนื่องจากไฟล์อิเมจของ 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