ปรับแต่ง Filesystem
เมื่อติดตั้ง Slackware เสร็จแล้ว ก็ต้องปรับแต่ง Filesystem เพื่อให้ตรงกับการใช้งาน
เนื้อหา
เปลี่ยนการอ้างอิง Filesystem
เนื่องจากใน Linux การอ้างถึงดิสก์ และพาร์ทิชั่นจะไม่ข้ามตัวที่เว้นไว้ เช่น เสียบฮาร์ดดิสก์ที่ SATA-1, SATA-3 และ SATA-4 ก็จะได้ชื่อดิสก์เป็น sda, sdb และ sdc ตามลำดับ แต่ถ้าในภายหลังเอาฮาร์ดดิสก์มาเสียบเพิ่มที่ SATA-2 ดิสก์ลูกนี้จะได้ชื่อเป็น sdb ส่วนดิสก์ที่เสียบที่ SATA-3 และ SATA-4 ก็จะกลายเป็น sdc และ sdd ตามลำดับ ดังนั้นเพื่อไม่ให้สับสนในการอ้างถึงดิสก์ และพาร์ทิชั่น เราจึงเปลี่ยนมาใช้การอ้างถึงโดยใช้ชื่อแทนพาร์ทิชั่น
เริ่มจากตรวจสอบ filesystem โดยใช้คำสั่ง df เพื่อดู partition ในปัจจุบัน (โดยปกติแล้วจะเป็น /dev/sda)
root@diskserv:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 10452940 3574228 6354424 36% / /dev/sda2 10452940 352352 9576300 4% /var /dev/sda3 57070904 9658148 44553848 18% /space tmpfs 8177704 0 8177704 0% /dev/shm root@diskserv:~#
จากผลของคำสั่ง df ข้างต้น จะเห็นว่า sda1 เป็น root partition, sda2 อยู่ที่ /var และ sda3 อยู่ที่ /space
ให้ตั้งชื่อแต่ละ filesystem โดยใช้คำสั่ง tune2fs ดังนี้
root@diskserv:~# tune2fs -L root_partition /dev/sda1 root@diskserv:~# tune2fs -L var_partition /dev/sda2 root@diskserv:~# tune2fs -L space_partition /dev/sda3
Lilo
เดิมใน /etc/lilo.conf จะอ้างถึง filesystem โดยใช้ชื่อ device เช่น /dev/sda1 การเปลี่ยนมาใช้ LABEL=xxxx จะต้องใช้ initrd ด้วย โดยสามารถสร้าง initrd ได้ดังนี้
root@diskserv:~# mkinitrd -c -k 3.2.21 7536 blocks /boot/initrd.gz created. Be sure to run lilo again if you use it. root@diskserv:~#
โดยที่ 3.2.21 คือรุ่นของ Kernel (อย่างไรก็ดีพารามิเตอร์นี้ไม่มีผลต่อการใช้งานในส่วนของการอ้างถึง filesystem)
จากนั้นใช้ root="LABEL=xxxx" ใน /etc/lilo.conf เดิมจะมีการอ้างถึง root โดยใช้ device name /dev/sda1 ดังนี้
# Linux bootable partition config begins image = /boot/vmlinuz root = /dev/sda1 label = Linux read-only # Partitions should be mounted read-only for checking # Linux bootable partition config ends
ให้เปลี่ยนไปอ้างถึง LABEL=root_partition แทน และเรียกใช้ initrd ดังนี้
# Linux bootable partition config begins image = /boot/vmlinuz root = "LABEL=root_partition" label = Linux read-only # Partitions should be mounted read-only for checking initrd = /boot/initrd.gz # Linux bootable partition config ends
จากนั้นเรียกคำสั่ง lilo เพื่อติดตั้งค่าใหม่ตามที่กำหนด
เมื่อแก้ไขทุกอย่างเรียบร้อยแล้ว ให้ตรวจสอบซ้ำอีกครั้ง เพราะการกำหนดค่าเหล่านี้ผิดจะทำให้เครื่องบูตไม่ได้
เมื่อตรวจสอบถูกต้องเรียบรอ้ยแล้วให้ทดลองบูตเครื่องใหม่
FSTAB
การอ้างถึง filesystem อีกส่วนหนึ่งคือใน /etc/fstab ซึ่งจะเป็นไฟล์กำหนดว่าจะให้พาร์ทิชั่นใดใช้งานที่ใด
การกำหนดใน /etc/fstab ให้ใช้ label แทน device name โดยเดิมจะมีการอ้างถึง filesystem ต่างๆ โดยใช้ชื่อ device ดังนี้
/dev/sda1 / ext4 defaults 1 1 /dev/sda2 /var ext4 defaults 1 2 /dev/sda3 /space ext4 defaults 1 2 #/dev/cdrom /mnt/cdrom auto noauto,owner,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0
ให้เปลี่ยนเป็นอ้างถึงโดย LABEL=xxx โดยแก้ไขไฟล์ /etc/fstab ในส่วนที่เป็นสีน้ำเงินเป็นดังนี้
LABEL=root_partition / ext4 defaults 1 1 LABEL=var_partition /var ext4 defaults 1 2 LABEL=space_partition /space ext4 defaults 1 2 #/dev/cdrom /mnt/cdrom auto noauto,owner,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0
เมื่อแก้ไขทุกอย่างเรียบร้อยแล้ว ให้ตรวจสอบซ้ำอีกครั้ง เพราะการกำหนดค่าเหล่านี้ผิดจะทำให้เครื่องบูตไม่ได้
จากนั้นให้บูตเครื่องใหม่ เพื่อตรวจสอบว่าทำงานได้ถูกต้องหรือไม่
เมื่อบูตเครื่องใหม่ได้ถูกต้อง และตรวจสอบว่าทำงานได้ตามปกติแล้ว ให้ปิดเครื่อง แล้วใส่ฮาร์ดดิสก์ให้ครบทุกลูก
ติดตั้งฮาร์ดดิสก์
เมื่อใส่ฮาร์ดดิสก์ที่เหลือทั้งหมด และบูตเครื่องขึ้นมาใหม่แล้ว ก็จะต้องติดตั้งฮาร์ดดิสก์เหล่านั้น โดยการสร้างพาร์ทิชั่น, ฟอร์แมตพาร์ทิชั่น และเรียกใช้งาน
สร้างพาร์ทิชั่น
ในขั้นตอนนี้ จะสร้างพาร์ทิชั่นสำหรับ CoW เท่านั้น โดยพาร์ทิชั่นสำหรับ Image ซึ่งเป็น RAID จะทำในขั้นตอน ติดตั้ง RAID
ตามแผน จะใช้ SSD สำหรับ CoW โดยเสียบไว้ที่พอร์ต SATA พอร์ตที่ 2 ซึ่งสามารถตรวจสอบได้ โดยใช้คำสั่ง fdisk -l ดังนี้
root@diskserve:/# fdisk -l Disk /dev/sda: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders, total 156301488 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: 0x5eff8315 Device Boot Start End Blocks Id System /dev/sda1 * 2048 20973567 10485760 83 Linux /dev/sda2 20973568 41945087 10485760 83 Linux /dev/sda3 41945088 156301487 57178200 83 Linux Disk /dev/sdb: 128.0 GB, 128035676160 bytes 30 heads, 63 sectors/track, 132312 cylinders, total 250069680 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: 0xd948caf7 Device Boot Start End Blocks Id System /dev/sdb1 2048 250069679 125033816 7 HPFS/NTFS/exFAT root@diskserve:/#
ทั้งนี้อาจจะมีข้อมูลจากฮาร์ดดิสก์ลูกอื่นที่เสียบไว้อีก แต่ในที่นี้จะสนใจเฉพาะ /dev/sdb ซึ่งเป็น SSD ที่จะใช้สำหรับทำ CoW เท่านั้น (หากติดตั้ง SSD ไว้ที่พอร์ตอื่น ชื่อ device อาจจะไม่ใช่ /dev/sdb ให้ใช้ชื่อที่ตรงตามการติดตั้ง)
จากในรูป จะเห็นว่า /dev/sdb มีพาร์ทิชั่นแบบวินโดวส์อยู่แล้ว จึงต้องลบพาร์ทิชั่นนี้ก่อน แต่ถ้าเป็น SSD ที่ยังไม่มีพาร์ทิชั่นใดๆ ก็ให้ข้ามขั้นตอนการลบพาร์ทิชั่นได้
การจัดการพาร์ทิชั่น ใช้คำสั่ง fdisk ดังนี้
fdisk /dev/sdb
ถ้าฮาร์ดดิสก์มีข้อมูลพาร์ทิชั่นอยู่แล้ว โปรแกรมจะรอรับคำสั่งเลย ดังนี้
Command (m for help):
แต่ถ้าฮาร์ดดิสก์ยังไม่มีข้อมูลพาร์ทิชั่น โปรแกรมจะแสดงข้อความบอกว่ายังไม่มีพาร์ทิชั่น แล้วจะรอรับคำสั่งดังข้างต้น
ถ้าฮาร์ดดิสก์มีพาร์ทิชั่นอยู่แล้ว จะต้องลบพาร์ทิชั่นทั้งหมดออกเสียก่อน โดยใช้คำสั่ง d (ดี) ซึ่งถ้ามีพาร์ทิชั่นมากกว่า 1 โปรแกรมจะถามเลขพาร์ทิชั่น แต่ถ้ามีเพียงพาร์ทิชั่นเดียว โปรแกรมจะลบพาร์ทิชั่นนั้นเลย เช่น ถ้าฮาร์ดดิสก์มี 2 พาร์ทิชั่น โปรแกรมจะถามเลขพาร์ทิชั่น ดังนี้
Command (m for help): d Partition number (1-2):
ให้พิมพ์เลขพาร์ทิชั่นที่ต้องการลบ แล้วกดปุ่ม Enter
เมื่อลบพาร์ทิชั่นหมดแล้ว (ตรวจสอบโดยคำสั่ง p (พี)) หรือฮาร์ดดิสก์ไม่มีพาร์ทิชั่นมาก่อน ก็สามารถสร้างพาร์ทิชั่นสำหรับทำ CoW ได้ โดยใช้คำสั่ง n (เอ็น) โดยเลือกเป็น Primary และให้กด Enter ในคำถามต่อไปทั้งหมด (Partition number, First sector และ Last sector) ดังนี้
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-250069679, default 2048): Using default value 2048 Last sector (2048-250069679, default 250069679): Using default value 250069679
จากนั้นให้ใช้คำสั่ง p (พี) อีกครั้ง เพื่อตรวจสอบว่าได้ตารางพาร์ทิชั่นตรงตามต้องการหรือไม่
และเมื่อตรวจสอบว่าตารางพาร์ทิชั่นถูกต้องแล้ว ใช้คำสั่ง w (ดับเบิลยู) เพื่อบันทึกตารางพาร์ทิชั่น และออกจากโปรแกรม fdisk
ฟอร์แมตพาร์ทิชั่น
เมื่อสร้างพาร์ทิชั่นเรียบร้อยแล้ว ให้ฟอร์แมตพาร์ทิชั่น โดยใช้คำสั่งดังนี้
mke2fs -t ext4 -L cow_partition /dev/sdb1
ปรับแต่ค่าของ filesystem ดังนี้
tune2fs -r 20480 /dev/sdb1 tune2fs -O ^has_journal /dev/sdb1
คำสั่งแรกเพื่อลดขนาดของเนื้อที่สงวนจากเดิม 5% เป็น 10 MB ส่วนคำสั่งที่สองเป็นการไม่ใช้ journal บน filesystem นี้
นำพาร์ทิชั่นมาใช้งาน
เมื่อฟอร์แมตพาร์ทิชั่นเสร็จแล้ว ก็ทดลอง mount พาร์ทิชั่นโดยใช้คำสั่งดังนี้
mount /dev/sdb1 /cow
ตรวจสอบการ mount โดยใช้คำสั่งดังนี้
root@diskserv:/# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 10452940 3891504 6037148 40% / /dev/sda2 10452940 370392 9558260 4% /var /dev/sda3 57070904 21561128 32650868 40% /space /dev/sdb1 124848956 1969160 116628108 2% /cow tmpfs 8177700 0 8177700 0% /dev/shm root@diskserv:/#
จะเห็นว่ามีการ mount /dev/sdb1 มาใช้งานที่ /cow ตรงตามต้องการ
จากนั้นให้เพิ่มการกำหนดค่าในไฟล์ /etc/fstab เพื่อให้ระบบ mount พาร์ทิชั่นนี้ในตอนบูต ดังนี้
LABEL=root_partition / ext4 defaults 1 1
LABEL=var_partition /var ext4 defaults 1 2
LABEL=space_partition /space ext4 defaults 1 2
LABEL=cow_partition /cow ext4 defaults,discard 1 2
#/dev/cdrom /mnt/cdrom auto noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
ให้เพิ่มบรรทัดสีน้ำเงินเข้าไป สังเกตุว่าใด้ใช้คำสั่ง discard ด้วย ทั้งนี้เพื่อให้ระบบเปิดการทำงาน TRIM เพื่อเป็นการเพิ่มประสิทธิภาพในการใช้งาน SSD
เมื่อตรวจสอบความถูกต้องของไฟล์ /etc/fstab เรียบร้อยแล้ว ให้บูตเครื่องใหม่
เก็บไฟล์ CoW ไว้ใน /space
กรณีที่ต้องการเก็บไฟล์ cow ไว้ใน /space เลย ก็สามารถทำได้เช่นกัน โดยข้ามขั้นตอนทั้งหมดในหัวข้อ ติดตั้งฮาร์ดดิสก์ แล้วเรียกคำสั่งดังนี้
cd / rmdir cow mkdir /space/cow ln -s /space/cow
เพื่อเป็นการสร้างไดเรกทอรี cow ไว้ภายใต้ไดเรกทอรี /space และเชื่อมโยงไดเรกทอรี /space/cow มายัง /cow เพื่อให้โครงสร้างไดเรกทอรียังคงเหมือนเดิม