วิธีย้ายโฮมไดเร็กตอรี่ไปยังพาร์ติชั่นใหม่หรือดิสก์ใน Linux
บนระบบ Linux ไดเร็กทอรีตัวใดตัวหนึ่งที่จะขยายขนาดขึ้นอย่างแน่นอนต้องเป็นไดเร็กทอรี /home
เนื่องจากไดเร็กทอรีบัญชีระบบ (ผู้ใช้) จะอยู่ใน /home ยกเว้นบัญชีรูท ผู้ใช้จะจัดเก็บเอกสารและไฟล์อื่นๆ อย่างต่อเนื่องในที่นี้
ไดเร็กทอรีที่สำคัญอีกไดเร็กทอรีที่มีพฤติกรรมเดียวกันคือ /var
ซึ่งมีไฟล์บันทึกซึ่งขนาดจะค่อยๆ เพิ่มขึ้นเมื่อระบบยังคงทำงานต่อไป เช่น ไฟล์บันทึก ไฟล์เว็บ ไฟล์สปูลการพิมพ์ เป็นต้น
เมื่อไดเร็กทอรีเหล่านี้เต็ม อาจก่อให้เกิดปัญหาร้ายแรงต่อระบบไฟล์รูท ส่งผลให้การบูตระบบล้มเหลวหรือปัญหาอื่นๆ ที่เกี่ยวข้อง อย่างไรก็ตาม บางครั้งคุณอาจสังเกตเห็นสิ่งนี้ได้หลังจากติดตั้งระบบของคุณและกำหนดค่าไดเร็กทอรีทั้งหมดบนระบบไฟล์/พาร์ติชั่นรูทเท่านั้น
แนะนำให้อ่าน: อธิบายโครงสร้างไดเร็กทอรี Linux และเส้นทางไฟล์สำคัญ
ในคู่มือนี้ เราจะแสดงวิธีย้ายโฮมไดเร็กทอรีไปยังพาร์ติชันเฉพาะที่อาจอยู่บนดิสก์จัดเก็บข้อมูลใหม่ใน Linux
การติดตั้งและการแบ่งพาร์ติชันฮาร์ดดิสก์ใหม่ใน Linux
ก่อนที่เราจะดำเนินการต่อไป เราจะอธิบายโดยย่อถึงวิธีเพิ่มฮาร์ดดิสก์ใหม่ให้กับเซิร์ฟเวอร์ Linux ที่มีอยู่
หมายเหตุ: หากคุณมีพาร์ติชั่นที่พร้อมสำหรับการดำเนินการอยู่แล้ว ให้ย้ายไปยังส่วนที่อธิบายขั้นตอนในการย้ายไดเร็กทอรี /home
ใน พาร์ติชั่นของตัวเองด้านล่าง
เราจะถือว่าคุณได้แนบดิสก์ใหม่เข้ากับระบบแล้ว บนฮาร์ดดิสก์ จำนวนพาร์ติชั่นที่จะสร้างรวมทั้งตารางพาร์ติชั่นมักจะถูกกำหนดโดยประเภทป้ายชื่อดิสก์ และพื้นที่สองสามไบต์แรกจะกำหนด MBR (Master Boot Record ) ซึ่งจัดเก็บตารางพาร์ติชันเช่นเดียวกับบูตโหลดเดอร์ (สำหรับดิสก์ที่สามารถบู๊ตได้)
แม้ว่าจะมีป้ายกำกับหลายประเภท แต่ Linux ยอมรับเพียงสองประเภทเท่านั้น: MSDOS MBR (ขนาด 516 ไบต์) หรือ GPT (ตารางพาร์ติชัน GUID) MBR.
สมมติว่าฮาร์ดดิสก์ใหม่ (/dev/sdb ขนาด 270 GB ใช้เพื่อวัตถุประสงค์ของคู่มือนี้ คุณอาจต้องการความจุที่มากขึ้นบนเซิร์ฟเวอร์สำหรับ ฐานผู้ใช้ขนาดใหญ่
ก่อนอื่นคุณต้องตั้งค่าประเภทป้ายชื่อดิสก์โดยใช้ fdisk หรือแยกส่วน เราใช้ชื่อป้ายกำกับ GPT ในตัวอย่างนี้
parted /dev/sdb mklabel gpt
หมายเหตุ: fdisk รองรับเฉพาะ MSDOS MBR ในตอนนี้ และ parted รองรับทั้งสองป้ายกำกับ
ตอนนี้สร้างพาร์ติชันแรก (/dev/sdb1) ที่มีขนาด 106GB เราได้สงวนพื้นที่ไว้ 1024MB สำหรับ MBR
parted -a cylinder /dev/sdb mkpart primary 1074MB 107GB
อธิบายคำสั่งด้านบน:
- a – ตัวเลือกเพื่อระบุการจัดแนวพาร์ติชัน
- mkpart – คำสั่งย่อยเพื่อสร้างพาร์ติชัน
- หลัก – ตั้งค่าประเภทพาร์ติชันเป็นประเภทหลักบนฮาร์ดดิสก์ (ค่าอื่นเป็นแบบลอจิคัลหรือแบบขยาย)
- 1074MB – จุดเริ่มต้นของพาร์ติชัน
- 107GB – สิ้นสุดพาร์ติชัน
ตอนนี้ตรวจสอบพื้นที่ว่างบนดิสก์ดังนี้
parted /dev/sdb print free
เราจะสร้างพาร์ติชันอื่น (/dev/sdb2) ที่มีขนาด 154GB
parted -a cylinder /dev/sdb mkpart primary 115GB 268GB
ต่อไป มาตั้งค่าประเภทระบบไฟล์ในแต่ละพาร์ติชัน
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2
หากต้องการดูอุปกรณ์หน่วยเก็บข้อมูลทั้งหมดที่ต่ออยู่บนระบบ ให้พิมพ์
parted -l
การย้ายโฮมไดเร็กตอรี่ไปเป็นพาร์ติชั่นเฉพาะ
ตอนนี้เราได้เพิ่มดิสก์ใหม่และสร้างพาร์ติชันที่จำเป็นแล้ว ตอนนี้ได้เวลาย้ายโฟลเดอร์ home ไปไว้ในพาร์ติชั่นตัวใดตัวหนึ่งแล้ว หากต้องการใช้ระบบไฟล์ ระบบจะต้องเมาต์เข้ากับระบบไฟล์รูทที่จุดเมานท์: ไดเร็กทอรีเป้าหมาย เช่น /home
ขั้นแรกให้แสดงรายการการใช้งานระบบไฟล์โดยใช้คำสั่ง df บนระบบ
df -l
เราจะเริ่มต้นด้วยการสร้างไดเร็กทอรีใหม่ /srv/home ซึ่งเราสามารถเมานต์ /dev/sdb1 ได้ในขณะนี้
mkdir -p /srv/home
mount /dev/sdb1 /srv/home
จากนั้นย้ายเนื้อหาของ /home ไปที่ /srv/home (ดังนั้นเนื้อหาเหล่านั้นจะถูกจัดเก็บไว้ใน /dev/sdb1) โดยใช้คำสั่ง rsync หรือ คำสั่งซีพี
rsync -av /home/* /srv/home/
OR
cp -aR /home/* /srv/home/
หลังจากนั้นเราจะค้นหาความแตกต่างระหว่างสองไดเร็กทอรีโดยใช้เครื่องมือ diff หากทุกอย่างเรียบร้อยดี ให้ไปยังขั้นตอนต่อไป
diff -r /home /srv/home
หลังจากนั้น ให้ลบเนื้อหาเก่าทั้งหมดใน /home ดังต่อไปนี้
rm -rf /home/*
ยกเลิกการต่อเชื่อม /srv/home ถัดไป
umount /srv/home
สุดท้ายนี้ เราต้องเมานต์ระบบไฟล์ /dev/sdb1 ไปที่ /home ในช่วงเวลานี้
mount /dev/sdb1 /home
ls -l /home
การเปลี่ยนแปลงข้างต้นจะคงอยู่สำหรับการบูตปัจจุบันเท่านั้น เพิ่มบรรทัดด้านล่างใน /etc/fstab เพื่อทำการเปลี่ยนแปลงอย่างถาวร
ใช้คำสั่งต่อไปนี้เพื่อรับพาร์ติชัน UUID
blkid /dev/sdb1
/dev/sdb1: UUID="e087e709-20f9-42a4-a4dc-d74544c490a6" TYPE="ext4" PARTLABEL="primary" PARTUUID="52d77e5c-0b20-4a68-ada4-881851b2ca99"
เมื่อคุณทราบพาร์ติชัน UUID แล้ว ให้เปิดไฟล์ /etc/fstab เพิ่มบรรทัดต่อไปนี้
UUID=e087e709-20f9-42a4-a4dc-d74544c490a6 /home ext4 defaults 0 2
อธิบายฟิลด์ในบรรทัดด้านบน:
- UUID – ระบุอุปกรณ์บล็อก คุณสามารถใช้ไฟล์อุปกรณ์ /dev/sdb1 ก็ได้
- /home – นี่คือจุดเชื่อมต่อ
- etx4 – อธิบายประเภทระบบไฟล์บนอุปกรณ์/พาร์ติชัน
- ค่าเริ่มต้น – ตัวเลือกเมานต์ (ในที่นี้ค่านี้หมายถึง rw, suid, dev, exec, auto, nouser และ async)
- 0 – ใช้โดยเครื่องมือดัมพ์ 0 หมายถึงอย่าดัมพ์หากไม่มีระบบไฟล์
- 2 – ใช้โดยเครื่องมือ fsck เพื่อค้นหาลำดับการตรวจสอบระบบไฟล์ ค่านี้หมายถึงตรวจสอบอุปกรณ์นี้หลังจากระบบไฟล์รูท
บันทึกไฟล์และรีบูตระบบ
คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อดูว่าไดเร็กทอรี /home ได้รับการย้ายไปยังพาร์ติชันเฉพาะเรียบร้อยแล้ว
df -hl
แค่นั้นแหละ! เพื่อทำความเข้าใจเพิ่มเติมเกี่ยวกับระบบไฟล์ Linux โปรดอ่านคำแนะนำเหล่านี้ที่เกี่ยวข้องกับการจัดการระบบไฟล์บน Linux
- วิธีลบบัญชีผู้ใช้ด้วย Home Directory ใน Linux
- Ext2, Ext3 & Ext4 คืออะไร และวิธีสร้างและแปลงระบบไฟล์ Linux
- 7 วิธีในการกำหนดประเภทระบบไฟล์ใน Linux (Ext2, Ext3 หรือ Ext4)
- วิธีติดตั้งระบบไฟล์หรือไดเรกทอรี Linux ระยะไกลโดยใช้ SSHFS บน SSH
ในคู่มือนี้ เราได้อธิบายวิธีย้ายไดเร็กทอรี /home ไปยังพาร์ติชันเฉพาะใน Linux คุณสามารถแบ่งปันความคิดเกี่ยวกับบทความนี้ผ่านแบบฟอร์มความคิดเห็นด้านล่าง