จะย้าย / var ไปยังพาร์ติชั่นอื่นที่มีอยู่ได้อย่างไร?


16

ฉันมี / พาร์ทิชันที่มี / var และมีขนาดเล็กเกินไป ฉันมีพาร์ติชั่นอื่นที่มีพื้นที่ว่างเพียงพอ

นี่คือ df ของฉัน:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

ฉันจะย้ายโฟลเดอร์ / var จาก sda1 ไปยัง sda2 ได้อย่างไร

คำตอบ:


19

เข้าสู่โหมดผู้ใช้คนเดียวและตรวจสอบให้แน่ใจว่ากระบวนการเขียนใด ๆ/varถูกหยุด (ตรวจสอบด้วยlsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# คุณสามารถลบออก/var.oldเมื่อเสร็จสิ้นเพื่อเรียกคืนพื้นที่
  • mkdir -p /var
  • mount -o bind /home/var /var
  • อัปเดตของคุณ/etc/fstabเพื่อทำให้การผูกติดถาวร

/etc/fstab

 /home/var /var        none    bind

Thks! ฉันจะเข้าสู่โหมดผู้ใช้คนเดียวได้อย่างไร โฟลเดอร์ 'var' จะอยู่ใน / home หรือไม่
Jérémie

ใช่จะมี/home/varไดเรกทอรีอยู่เสมอหากคุณแก้ปัญหาด้วยวิธีนี้ วิธีหนึ่งที่คุณสามารถเข้าสู่โหมดผู้ใช้คนเดียวได้โดยการรีบู๊ตและเลือกโหมดผู้ใช้คนเดียวจากเมนูบู๊ต
Zoredache

ฉันไม่แน่ใจว่ามันจะทำงานได้ดีตลอดเวลาหรือไม่ หากคุณใช้เวอร์ชั่นที่ใหม่กว่า (เสียงดัง) คุณอาจจะตกลงเพราะมีระบบไฟล์ / run OTOH: ในช่วงต้นของไฟล์บูตกระบวนการสามารถเปิดใน / var ก่อนที่จะถูกผูกติด
cstamas

1
@cstamas การมี / var ในระบบไฟล์แยกต่างหากได้รับการสนับสนุนและเป็นเช่นนี้มาตลอด แนะนำให้มี / var ในการแยกเป็นสิ่งที่ดีใน FHS และเอกสาร Debian อย่างเป็นทางการ
Zoredache

ตกลงฉันคิดว่าคุณพูดถูก มันเป็นเรื่องแปลกสำหรับฉันที่จะทำเช่นนี้ด้วยการผูกภูเขา
cstamas

5

คุณยังสามารถใช้:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

ดูเหมือนว่าจะง่ายกว่า messing รอบกับ fstab และสิ่งที่ติด


1
ไม่แน่ใจว่าทำไมคนอื่นถึงลงคะแนนนี้ มันจะทำงานได้ดีอย่างสมบูรณ์แบบ sym-link ควรใช้งานได้ดี ฉันแค่ใช้การผูกติดกับสิ่งอื่น ๆ ดังนั้นฉันจึงมักจะคิดถึงสิ่งนั้นก่อน
Zoredache

1
หากต้องการเพิ่มสิ่งนี้อาจไม่ปลอดภัย แต่ใช้งานได้จริง ฉันเพิ่งทำสิ่งนี้บนเครื่องก่อนที่จะวางลงในการผลิต ฉันควรใช้ความระมัดระวังหากเป็นเครื่องจักรที่ใช้งานอยู่หรือมีกระบวนการทำงานมากมาย ในกรณีของฉันมันเป็นเซิร์ฟเวอร์ใหม่ที่มีความหมายในการใช้งาน Tomcat เท่านั้น
AJ Brown

1
การเชื่อมโยง / var ทำงานได้ แต่แทนที่จะทำเช่นนั้นฉันชอบที่จะใส่รายการใน / etc / fstab เพื่อจดจำตัวเองว่าฉันใส่พาร์ทิชัน / โวลุ่มใดและทำไม (คุณสามารถเพิ่มความคิดเห็น) วิธีนี้ยังเป็นที่เข้าใจมากขึ้นสำหรับฉันว่าฉันต้องเปลี่ยนแปลงการกำหนดค่าอย่างไรหากฉันต้องการเปลี่ยนแปลงบางอย่างในฮาร์ดแวร์ของฉัน
gerlos

1
ฉันไม่เห็นว่ามันจะทำงานอย่างไร ฉันต้องการให้มันทำงานได้ แต่สิ่งพื้นฐานเช่น init ใช้ / var ใช่ไหม
Sue Spence

1

ย้าย/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ไฟล์เก่าออกจากระบบไฟล์รูท:

  1. ลบจุดเมานท์ชั่วคราว:

    sudo rmdir /var.new
    
  2. สร้างจุดใหม่ติดเพื่อสร้างทางเลือกเส้นทางไปยังไฟล์เก่า/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/
    
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.