ย้าย/var
โดยไม่เปลี่ยนเป็นโหมดผู้ใช้คนเดียว
เมื่อฉันเข้ายึดเวอร์ชวลเซิร์ฟเวอร์ใหม่ที่ได้รับการจัดเตรียมให้กับฉันโดย บริษัท ผู้ให้บริการโฮสต์ของฉันฉันสร้างโลจิคัลวอลุ่มเพิ่มเติมสำหรับvar
และhome
ซึ่งเป็นไดเรกทอรีปกติในพาร์ติชันรูท เนื่องจากผู้ให้บริการเซิร์ฟเวอร์เสมือนไม่ได้มีอินเทอร์เฟซเหมือน KVM ซึ่งฉันสามารถเข้าถึงเซิร์ฟเวอร์ในโหมดผู้ใช้คนเดียวคำตอบข้างต้นไม่สามารถใช้ได้กับการตั้งค่าของฉัน ฉันหวังว่าคำตอบนี้มีประโยชน์สำหรับผู้อื่นในสถานการณ์ที่คล้ายกัน (ฉันได้เก็บรายละเอียด LVM ไว้ แต่สามารถข้ามได้เนื่องจากไม่เกี่ยวข้องโดยเฉพาะอย่างยิ่งว่าระบบไฟล์ใหม่ถูกสร้างขึ้นบนโลจิคัลวอลุ่มหรือพาร์ติชันดิสก์)
สร้างและใช้/var
ระบบไฟล์ใหม่ด้วย LVM
สร้างระบบไฟล์สำหรับvar
ไดรฟ์ข้อมูลใหม่ติดตั้ง (ใช้ไดเรกทอรีชั่วคราว) และคัดลอกไฟล์จากปัจจุบัน/var
ไปยังระบบไฟล์ใหม่ เมื่อคัดลอกไฟล์ด้วยrsync
ให้ใช้-a, --archive
ตัวเลือกเพื่อรักษาการประทับเวลา, ความเป็นเจ้าของ, โหมด ฯลฯ และ-X, --xattrs
ตัวเลือกของมันเพื่อรักษาแอตทริบิวต์เพิ่มเติมเช่นป้ายความปลอดภัยที่ใช้โดย AppArmor และ SELinux
sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
sudo rsync -raX /var/ /var.new/
อัพเดตตารางระบบไฟล์
กำหนดค่าระบบไฟล์ใหม่ที่จะใช้เป็นจุดต่อใหม่/var
โดยเพิ่มบรรทัดต่อไป/etc/fstab
นี้ โปรดทราบว่า0
จะใช้เป็นหมายเลขรหัสผ่าน (ฟิลด์สุดท้าย) เพื่อให้ระบบไฟล์ไม่ได้รับการตรวจสอบโดยอัตโนมัติ ( fsck
) หลังจากการรีบูตจำนวนหนึ่ง (ฉันไม่สามารถเข้าสู่เซิร์ฟเวอร์ในโหมดผู้ใช้คนเดียว)
/dev/mapper/VolGroup00-var /var ext4 defaults 0 0
ตั้งแต่ฉันไม่สามารถเปลี่ยนเข้าสู่โหมดผู้เดียว, /var
รีบูตเครื่องคอมพิวเตอร์ที่จะใช้ปริมาณใหม่นี้เป็น
กู้คืนพื้นที่ว่างในดิสก์จากระบบไฟล์รูท
หลังจากรีสตาร์ทเครื่องแล้วให้ทำตามขั้นตอนต่อไปนี้เพื่อล้างข้อมูลไดเร็กทอรีชั่วคราวและลบ/var
ไฟล์เก่าออกจากระบบไฟล์รูท:
ลบจุดเมานท์ชั่วคราว:
sudo rmdir /var.new
สร้างจุดใหม่ติดเพื่อสร้างทางเลือกเส้นทางไปยังไฟล์เก่า/var
ไดเรกทอรีบนระบบแฟ้มราก (มันกำลัง“หลอกลวง” โดยใหม่/var
ระบบแฟ้มติดตั้งอยู่บนไดเรกทอรี):
sudo mkdir /old-root
sudo mount /dev/mapper/VolGroup00-root /old-root/
sudo rm -rf /old-root/var/*
sudo umount /old-root/
sudo rmdir /old-root/