ปรับแต่ง Filesystem

จาก NakhonNet
(เปลี่ยนทางจาก เปลี่ยนการอ้างอิง 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 เพื่อให้โครงสร้างไดเรกทอรียังคงเหมือนเดิม


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