Post Views:
725
เมื่อเราต้องการเพิ่ม Harddisk ลูกใหม่ที่มีขนาดหลาย Terabyte บนระบบ Linux ตามปกติแล้วระบบปฏิบัติการ Linux เราจะสามารถสร้าง Disk Partition และ Format ได้ไม่เกิน 2TB เท่านั้น และถ้าหากว่าเรามี Disk ขนาดใหญ่ เราจึงต้องสร้างหลายๆ Partition โดยแบ่งเป็น Partition ละไม่เกิน 2TB คำถามคือ แล้วถ้าหากเราต้องการเพียง Partition เดียวแต่ต้องการใช้พื้นที่ทั้งหมดของ Disk ทั้งลูกหล่ะ???
เราจะแก้ปัญหานี้ด้วยการใช้คำสั่ง GNU Parted ด้วย GPT (Intel EFI/GPT Partition Table) ซึ่ง GPT (GUID Partition Table) เป็นการจัด Partition Table ของ Harddisk Drive ตาม EFI (Extensible Firmware Interface) Standard ที่นำเสนอโดย Intel สำหรับใช้ทดแทน PC BIOS ที่หมดยุคของ IBM PC โดยที่ EFI จะใช้ GPT ในขณะที่ BIOS จะใช้ Master Boot Record (MBR)
Linux GPT Kernel Support
EFI GUID Partition นั้นสามารถทำงานได้ทั้งบน 32bit และ 64bit platforms แต่จะต้องมีการ include GPT Support ใน Kernel เสียก่อนจึงจะเรียกใช้งาน GPT ได้ ไม่เช่นนั้นอาจจะไม่สามารถ boot เข้าระบบได้ หลังจาก restart ซึ่งโดยปกติแล้วในระบบปฏิบัติการ Linux ในเวอร์ชั่นใหม่ๆ จะ include GPT Support ใน Kernel มาแล้ว ส่วนสำหรับเวอร์ชั่นเก่าที่ยังไม่รองรับการใช้งานนั้นจำเป็นจะต้อง recompile kernel เสียก่อน โดยการ recompile kernel จะต้องเซ็ท CONFIG_EFI_PARTITION = y (ขั้นตอนการ recompile kernel จะไม่ขอกล่าวถึงในที่นี้ แต่จะเขียนถึงในโอกาสบันทึกต่อไปครับ)
File Systems
Partition Types
[*] Advanced partition selection
[*] EFI GUID Partition support (NEW)
....
การหาขนาดของ HDD
# fdisk -l /dev/cciss/c1d0
จะได้ผลลัพท์ลักษณะดังต่อไปนี้ (ตัวอย่างนี้จะเป็น HDD ที่เป็น System RAID ซึ่ง Device ที่เป็น RAID จะถูกเก็บอยู่ที่ /dev/cciss แต่สำหรับระบบทั่วไปที่ไม่มี RAID นั้น Device ที่เป็น HDD ต่างๆ จะถูกเก็บที่ /dev/sdx เช่น /dev/sda /dev/sdb … เป็นต้น)
WARNING: GPT (GUID Partition Table) detected on '/dev/cciss/c1d0'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/cciss/c1d0: 6001.0 GB, 6000979861504 bytes
255 heads, 63 sectors/track, 729577 cylinders, total 11720663792 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: 0x00000000
Device Boot Start End Blocks Id System
/dev/cciss/c1d0p1 1 4294967295 2147483647+ ee GPT
จากผลลัพท์จะเห็นว่า HDD มีขนาด 6001.0GB หรือประมาณ 6TB
การสร้าง Partition ที่มีขนาดโตกว่า 2TB
#parted /dev/cciss/c1d0
ได้ผลลัพท์
GNU Parted 2.3
Using /dev/cciss/c1d0
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
สร้าง GPT disklabel
(parted) mklabel gpt
ได้ผลลัพท์
Warning: The existing disk label on /dev/cciss/c1d0 will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)
ต่อไปตั้งค่า default unit เป็น TB
(parted) unit TB
ต่อไปสร้าง Partition โดยสร้างเต็มพื้นที่ของ HDD
(parted) mkpart primary 0 0
หรือสร้าง Partition ระบุขนาดของ Partition ที่ต้องการ
(parted) mkpart primary 0.00TB 5.50TB
ใช้คำสั่ง print เพื่อแสดง Partition
(parted) print
จะได้ผลลัพท์
Model: Compaq Smart Array (cpqarray)
Disk /dev/cciss/c1d0: 5.50TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 0.00TB 5.50TB 5.50TB ext4 primary
ออกจากโปรแกรม parted โดยพิมพ์คำสั่ง quit
(parted) quit
Information: You may need to update /etc/fstab
ที่ผ่านมาเป็นการสร้าง Partition เมื่อลองใช้คำสั่ง ls เพื่อดูใน /dev/cciss จะได้ Device เพิ่มขึ้นมา คือ /dev/cciss/c1d0p1 ซึ่งการที่จะนำ Partition ไปใช้งานได้จะต้องทำการ Format Partition เสียก่อน โดยในตัวอย่างนี้เป็นการ format เป็น File System Type แบบ Ext4 ดังนี้
# mkfs.ext4 /dev/cciss/c1d0p1
หรือต้องการใส่ Label ของ Partition ด้วย
# mkfs.ext4 -L Label /dev/cciss/c1d0p1
จะได้ผลลัพท์ลักษณะดังต่อไปนี้
# mkfs.ext4 -L data /dev/cciss/c1d0p1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=Label
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
183136256 inodes, 1465082624 blocks
73254131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
44711 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
การนำ Partition ไปใช้งาน
# mkdir /data
# mount /dev/cciss/c1d0p1 /data
# df -h
จะได้ผลลัพท์ ดังนี้
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p1 129G 1.9G 121G 2% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 3.0G 12K 3.0G 1% /dev
tmpfs 597M 584K 597M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 3.0G 0 3.0G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/cciss/c1d0p1 5.5T 58M 5.2T 1% /data
หรือหากต้องการให้มีการ mount partition ทุกครั้งที่เปิดเครื่อง
ก่อนอื่นต้องหาค่า UUID หรือ block id ของ Partition ดังนี้
# blkid /dev/cciss/c1d0p1
จะได้ผลลัพท์ ลักษณะดังต่อไปนี้
/dev/cciss/c1d0p1: LABEL="data" UUID="90f69e04-c3c9-43a5-962a-08a14c2d0dd3" TYPE="ext4"
จากนั้นแก้ไขไฟล์ /etc/fstab เพิ่มบรรทัดดังต่อไปนี้
UUID=90f69e04-c3c9-43a5-962a-08a14c2d0dd3 /data ext4 defaults 0 2
จากนั้นใช้คำสั่ง mount /data หรือ reboot
จอ บอ จบ ครับ
สำคัญมาก ขั้นตอนการแก้ไขไฟล์ /etc/fstab เนื้อหาในไฟล์จะต้องมีรูปแบบที่ถูกต้องการสะกดคำต่างๆ จะต้องไม่ผิด ไม่เช่นนั้นอาจจะไม่สามารถ boot เข้าระบบได้หลังจากสั่ง reboot
Credit:
https://www.kernel.org
https://wiki.archlinux.org/index.php/partitioning
http://www.cyberciti.biz
เมื่อเราต้องการเพิ่ม Harddisk ลูกใหม่ที่มีขนาดหลาย Terabyte บนระบบ Linux ตามปกติแล้วระบบปฏิบัติการ Linux เราจะสามารถสร้าง Disk Partition และ Format ได้ไม่เกิน 2TB เท่านั้น และถ้าหากว่าเรามี Disk ขนาดใหญ่ เราจึงต้องสร้างหลายๆ Partition โดยแบ่งเป็น Partition ละไม่เกิน 2TB คำถามคือ แล้วถ้าหากเราต้องการเพียง Partition เดียวแต่ต้องการใช้พื้นที่ทั้งหมดของ Disk ทั้งลูกหล่ะ???
เราจะแก้ปัญหานี้ด้วยการใช้คำสั่ง GNU Parted ด้วย GPT (Intel EFI/GPT Partition Table) ซึ่ง GPT (GUID Partition Table) เป็นการจัด Partition Table ของ Harddisk Drive ตาม EFI (Extensible Firmware Interface) Standard ที่นำเสนอโดย Intel สำหรับใช้ทดแทน PC BIOS ที่หมดยุคของ IBM PC โดยที่ EFI จะใช้ GPT ในขณะที่ BIOS จะใช้ Master Boot Record (MBR)
Linux GPT Kernel Support
EFI GUID Partition นั้นสามารถทำงานได้ทั้งบน 32bit และ 64bit platforms แต่จะต้องมีการ include GPT Support ใน Kernel เสียก่อนจึงจะเรียกใช้งาน GPT ได้ ไม่เช่นนั้นอาจจะไม่สามารถ boot เข้าระบบได้ หลังจาก restart ซึ่งโดยปกติแล้วในระบบปฏิบัติการ Linux ในเวอร์ชั่นใหม่ๆ จะ include GPT Support ใน Kernel มาแล้ว ส่วนสำหรับเวอร์ชั่นเก่าที่ยังไม่รองรับการใช้งานนั้นจำเป็นจะต้อง recompile kernel เสียก่อน โดยการ recompile kernel จะต้องเซ็ท CONFIG_EFI_PARTITION = y (ขั้นตอนการ recompile kernel จะไม่ขอกล่าวถึงในที่นี้ แต่จะเขียนถึงในโอกาสบันทึกต่อไปครับ)
การหาขนาดของ HDD
จะได้ผลลัพท์ลักษณะดังต่อไปนี้ (ตัวอย่างนี้จะเป็น HDD ที่เป็น System RAID ซึ่ง Device ที่เป็น RAID จะถูกเก็บอยู่ที่ /dev/cciss แต่สำหรับระบบทั่วไปที่ไม่มี RAID นั้น Device ที่เป็น HDD ต่างๆ จะถูกเก็บที่ /dev/sdx เช่น /dev/sda /dev/sdb … เป็นต้น)
จากผลลัพท์จะเห็นว่า HDD มีขนาด 6001.0GB หรือประมาณ 6TB
การสร้าง Partition ที่มีขนาดโตกว่า 2TB
ได้ผลลัพท์
สร้าง GPT disklabel
ได้ผลลัพท์
ต่อไปตั้งค่า default unit เป็น TB
ต่อไปสร้าง Partition โดยสร้างเต็มพื้นที่ของ HDD
หรือสร้าง Partition ระบุขนาดของ Partition ที่ต้องการ
ใช้คำสั่ง print เพื่อแสดง Partition
จะได้ผลลัพท์
ออกจากโปรแกรม parted โดยพิมพ์คำสั่ง quit
ที่ผ่านมาเป็นการสร้าง Partition เมื่อลองใช้คำสั่ง ls เพื่อดูใน /dev/cciss จะได้ Device เพิ่มขึ้นมา คือ /dev/cciss/c1d0p1 ซึ่งการที่จะนำ Partition ไปใช้งานได้จะต้องทำการ Format Partition เสียก่อน โดยในตัวอย่างนี้เป็นการ format เป็น File System Type แบบ Ext4 ดังนี้
หรือต้องการใส่ Label ของ Partition ด้วย
จะได้ผลลัพท์ลักษณะดังต่อไปนี้
การนำ Partition ไปใช้งาน
จะได้ผลลัพท์ ดังนี้
หรือหากต้องการให้มีการ mount partition ทุกครั้งที่เปิดเครื่อง
ก่อนอื่นต้องหาค่า UUID หรือ block id ของ Partition ดังนี้
จะได้ผลลัพท์ ลักษณะดังต่อไปนี้
จากนั้นแก้ไขไฟล์ /etc/fstab เพิ่มบรรทัดดังต่อไปนี้
จากนั้นใช้คำสั่ง mount /data หรือ reboot
จอ บอ จบ ครับ
สำคัญมาก ขั้นตอนการแก้ไขไฟล์ /etc/fstab เนื้อหาในไฟล์จะต้องมีรูปแบบที่ถูกต้องการสะกดคำต่างๆ จะต้องไม่ผิด ไม่เช่นนั้นอาจจะไม่สามารถ boot เข้าระบบได้หลังจากสั่ง reboot
Credit:
PREECHA BOONLAMP
More Posts
PREECHA BOONLAMP