ค้นหาเว็บไซต์

วิธีย้ายโฮมไดเร็กตอรี่ไปยังพาร์ติชั่นใหม่หรือดิสก์ใน 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

  1. วิธีลบบัญชีผู้ใช้ด้วย Home Directory ใน Linux
  2. Ext2, Ext3 & Ext4 คืออะไร และวิธีสร้างและแปลงระบบไฟล์ Linux
  3. 7 วิธีในการกำหนดประเภทระบบไฟล์ใน Linux (Ext2, Ext3 หรือ Ext4)
  4. วิธีติดตั้งระบบไฟล์หรือไดเรกทอรี Linux ระยะไกลโดยใช้ SSHFS บน SSH

ในคู่มือนี้ เราได้อธิบายวิธีย้ายไดเร็กทอรี /home ไปยังพาร์ติชันเฉพาะใน Linux คุณสามารถแบ่งปันความคิดเกี่ยวกับบทความนี้ผ่านแบบฟอร์มความคิดเห็นด้านล่าง