ฉันจะจัดเก็บ / var บนพาร์ติชันแยกต่างหากได้อย่างไร


13

ฉันต้องการที่จะเก็บในพาร์ทิชันที่แยกต่างหากจาก/var /วิธีการตั้งค่านี้ถูกต้องคืออะไร?

คำตอบ:


17

ก่อนอื่นให้เตรียมพาร์ติชันใหม่ (เช่นพร้อมpartedและmkfs)

สมมติว่าพาร์ติชันคือ / dev / sda5

เมานต์พาร์ติชันใหม่:

mkdir /var2
mount /dev/sda5 /var2

ซิงค์ var ปัจจุบันของคุณ:

rsync -a /var/ /var2

เพิ่มรายการไปยัง / etc / fstab

/dev/sda5    /var    ext4    defaults      2 2

Reboot

หากคุณจำเป็นต้องกลับไปที่เดิม / var ของคุณเพียงแค่แสดงความคิดเห็นออกรายการใน fstab


1
ฉันจะเพิ่มข้อมูลบางอย่างในการกู้คืนพื้นที่บนเก่า/var: เริ่มต้นจาก LiveCD ที่ติดพาร์ทิชันบนระบบที่ติดตั้งและ/ rm -rf /var/*
enzotib

1
จุดดี. หรือคุณสามารถเมานต์/ไปยังตำแหน่งอื่นบนระบบปัจจุบันในขณะที่มันกำลังทำงาน (แต่หลังจากรีบูตเครื่อง) จากนั้นคุณสามารถไปที่เก่า/varและลบถ้าคุณต้องการ
Aleksandr Levchuk

1
ฉันเคยสงสัยเกี่ยวกับสิ่งเหล่านั้นเช่นกัน 1 แรกเป็นสิ่งที่โบราณและไม่มีผลจริง ๆ อย่างที่สองควบคุมลำดับของ fsck เมื่อถึงเวลาสแกน ext ของคุณในระหว่างการบู๊ต ฉันไม่สนใจพวกเขาอีกต่อไป เพียงแค่ใส่ 1 1 เพราะไวยากรณ์ต้องการ
Aleksandr Levchuk

2
คุณควรใส่ 2 2 เพื่อให้สิ่งต่าง ๆ เช่น / รับการสแกน fsck ก่อน / var เมื่อคุณรีบูตเวลา 30 มิฉะนั้นถ้า / var ล้มเหลวและขอให้คุณแก้ไขสิ่งต่าง ๆ ด้วยตนเองในเชลล์ผู้ใช้เดียว - จากนั้นคุณจะไม่มีระบบไฟล์ใด ๆ สิ่งที่สนุก.
Aleksandr Levchuk

2
การแนะนำให้ใช้ UUID ใน fstab ไม่ใช่หรือ? ฉันได้ใช้อันที่เหมาะสมblkid -o list -s UUIDแต่ฉันคิดว่าคุณต้องใช้กับ sudo
steevc

2

การกำหนดค่าพาร์ติชันใหม่ / var บนเซิร์ฟเวอร์เสมือน

เมื่อฉันเข้าครอบครองเซิร์ฟเวอร์เสมือนใหม่ที่ได้รับการจัดเตรียมโดย บริษัท โฮสติ้งของนายจ้างฉันมีพื้นที่ว่างไม่เพียงพอในระบบไฟล์รูท โชคดีที่พวกเขาใช้Logical Volume Manager (LVM)เพื่อแบ่งย่อยดิสก์เสมือนและมีพื้นที่ว่างเพียงพอที่จะสร้างไดรฟ์ใหม่ ฉันสร้างโลจิคัลวอลุ่มพิเศษสำหรับvarและhomeซึ่งเป็นไดเร็กทอรีปกติในระบบไฟล์รูท เนื่องจากผู้ให้บริการเซิร์ฟเวอร์เสมือนไม่ได้มีอินเทอร์เฟซเหมือน KVM ซึ่งฉันสามารถเข้าถึงเซิร์ฟเวอร์ในโหมดผู้ใช้คนเดียวฉันจึงใช้วิธีที่คล้ายกันมากกับ Aleksander ที่เค้าร่างไว้ (คำตอบนี้มีรายละเอียดเพิ่มเติมสำหรับการกู้คืนพื้นที่ดิสก์ใน นอกเหนือจากคำสั่งเฉพาะ LVM)

สร้างระบบไฟล์ใหม่ / var ด้วย LVM

สร้างโลจิคัลวอลุ่มสำหรับvarระบบไฟล์ใหม่เมาท์ (ใช้ไดเร็กทอรีชั่วคราว) และคัดลอกไฟล์จากปัจจุบัน/varไปยังระบบไฟล์ใหม่:

# Create a new 60GB logical volume in the `VolGroup00` group called `var`.
sudo lvcreate -L 60GB -n var VolGroup00
# Create an ext4 filesystem on this new `var` volume.
sudo mkfs.ext4 /dev/VolGroup00/var
# Mount this filesystem at a temporary mount-point.
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new

เนื่องจากกระบวนการที่กำลังรันอยู่จะมีไฟล์ที่/varเปิดอยู่และถูกใช้อยู่ทรีไดเรกทอรีจึงไม่สามารถย้ายไปยังระบบไฟล์ใหม่ได้ เรียกซ้ำ ( -r) คัดลอกไฟล์จาก/varพาร์ติชันปัจจุบันไปยังระบบไฟล์ใหม่ในขณะที่คงคุณสมบัติของไฟล์และคุณสมบัติเพิ่มเติม ( -a, --archiveตัวเลือก) ผู้ใช้ที่ระมัดระวังอาจสร้างสแนปชอต LVMของไดรฟ์ข้อมูลปัจจุบันก่อนที่จะคัดลอก แต่นั่นเป็นรายละเอียดนอกหัวข้อมากเกินไปสำหรับคำถามนี้

sudo cp -ra /var/ /var.new/

อีกทางเลือกหนึ่งไฟล์สามารถคัดลอกได้โดยrsyncมี-a, --archiveตัวเลือกเพื่อรักษาการประทับเวลา, ความเป็นเจ้าของ, โหมด ฯลฯ และ-X, --xattrsตัวเลือกเพื่อรักษาแอตทริบิวต์เพิ่มเติมเช่นป้ายความปลอดภัยที่ใช้โดย AppArmor และ SELinux:

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(พวกเขาถูก "ปิดบัง" โดยระบบไฟล์ใหม่โดยใช้/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/

คำอธิบายที่ดีของตัวเลือกที่เกี่ยวข้อง อย่างไรก็ตามคุณใช้lvcreateและmkfs.ext4ไม่อธิบายว่ามีอะไรหรือเหตุใดจึงใช้ บางทีคุณอาจบอกได้ง่ายๆว่าการทำพาร์ติชันใหม่นั้นไม่ใช่หัวข้อหลักของคำตอบ
PhoneixS

ขอบคุณสำหรับคำติชม @ PhoneixS ฉันได้แก้ไขคำตอบเพื่อให้ชัดเจนยิ่งขึ้นและให้ข้อมูลบริบทเพิ่มเติม
Anthony Geoghegan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.