ฉันจะปรับขนาดพาร์ติชันโดยใช้บรรทัดคำสั่งโดยไม่ใช้ GUI บนเซิร์ฟเวอร์ได้อย่างไร


44

ฉันเข้าถึงเซิร์ฟเวอร์ผ่านเทอร์มินัลเท่านั้นและฉันไม่สามารถใช้เครื่องมือกราฟิกเช่น GParted!
ฉันต้องการสร้างพาร์ติชันใหม่จากส่วนหนึ่งของรูท (ประมาณ 768mb) เพื่อแลกเปลี่ยน

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         20G  1.3G   18G   7% /
udev             10M     0   10M   0% /dev
tmpfs           199M  4.9M  194M   3% /run
tmpfs           100M   12K  100M   1% /run/user
tmpfs           5.0M  4.0K  5.0M   1% /run/lock

คำตอบ:


36

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

ทางเลือกอื่น ๆ : swap file

เป็นทางเลือกหนึ่งในการสร้างพาร์ทิชันทั้งหมดไฟล์ swap นำเสนอความสามารถในการเปลี่ยนขนาดของไฟล์ได้ทันทีและสามารถลบออกได้ง่ายขึ้น สามารถสลับไฟล์ hot plugableได้ ie สามารถเพิ่มและลบออกได้โดยไม่ต้องถอด / ปิดระบบปฏิบัติการ

  1. สร้างไฟล์ 512 MB /swapfileที่เรียกว่า นี่จะเป็นไฟล์สลับของเรา

    fallocate -l 512M /swapfile  
    

    หรือ

    dd if=/dev/zero of=/swapfile bs=1M count=512
    
  2. ตั้งค่าการอนุญาตที่ถูกต้อง (เนื่องจากไฟล์ swap ที่สามารถอ่านได้ทั่วโลกเป็นช่องโหว่ในพื้นที่ขนาดใหญ่):

    chmod 600 /swapfile
    
  3. หลังจากสร้างไฟล์ที่มีขนาดที่ถูกต้องแล้วให้ฟอร์แมตเป็น swap:

    mkswap /swapfile
    
  4. เปิดใช้งานไฟล์ swap:

    swapon /swapfile
    
  5. แก้ไข/etc/fstabและเพิ่มรายการสำหรับไฟล์ swap:

    /swapfile none swap defaults 0 0
    

รายละเอียดเพิ่มเติมที่วิกิพีเดียลินุกซ์โค้ง


ฉันคิดว่านี่เป็นคำตอบที่ง่ายและมีประสิทธิภาพที่สุด =)! มีความหมายในการใช้ไฟล์แทนพาร์ติชันหรือไม่?
Alaa Ali

2
ประสิทธิภาพต่ำเล็กน้อยหากไฟล์มีการแยกส่วน ไม่มีข้อได้เปรียบด้านประสิทธิภาพใด ๆ สำหรับไฟล์ swap ที่ต่อเนื่องหรือพาร์ติชั่นทั้งสองจะได้รับการใช้วิธีเดียวกัน
totti

1
ฉันคิดว่านี่เป็นทางออกที่ดีที่สุด ในขณะที่คุณไม่ได้ฟอร์แมต, ลดขนาดหรือเปลี่ยนพาร์ติชั่น (ตาราง), ไม่มีความเสี่ยงในการสูญหายของข้อมูล
R110

27

ก่อนอื่นสิ่งสำคัญคือต้องรู้ว่าคุณไม่สามารถปรับขนาดเพื่อลดขนาดพาร์ติชันรูทของคุณหากคุณใช้งานอยู่ (ซึ่งเรียกว่าการย่อขนาดแบบออนไลน์) คุณสามารถเติบโตได้ทางออนไลน์เท่านั้น นี้ได้รับการสนับสนุนโดยresize2fsคำสั่ง ฉันจะถือว่าสิ่งต่อไปนี้:

  • คุณไม่ต้องการที่จะสูญเสียข้อมูลของคุณในพาร์ทิชันราก
  • คุณไม่มีสิทธิ์เข้าถึงฮาร์ดไดรฟ์เพื่อใช้ LiveCD สิ่งนี้สามารถนำไปใช้กับสภาพแวดล้อมเสมือนจริงหรือจากระยะไกล ในกรณีของเวอร์ช่วลคุณยังสามารถจัดการการบูตจาก LiveCD ได้หากคุณตั้งค่า VM ให้บูตจาก LiveCD นี่คือการสมมติว่า VM รองรับการแสดงผล Desktop GUI จากตำแหน่งที่คุณจะเรียกใช้แอป Gparted เพื่อปรับขนาดได้อย่างง่ายดาย แต่เนื่องจากมีโอกาสน้อยกว่าที่ฉันคิดว่าคุณไม่สามารถ

มีพาร์ติชัน 2 ประเภทที่คุณสามารถปรับขนาดพาร์ติชัน LVM หรือ Logical Volume Manager ซึ่งสนับสนุนการปรับขนาดออนไลน์ (ลดขนาด / ขยายตัว) ตั้งแต่การสร้างกาแล็กซี่และพาร์ติชันมาตรฐานที่เราใช้ส่วนใหญ่ ขณะนี้มีเพียงหนึ่งเดียวที่ได้รับการสนับสนุนการปรับขนาดออนไลน์เกือบสมบูรณ์แบบ (ลดขนาด / ขยาย) เกือบ 100% คือระบบไฟล์ btrfs (ซึ่งยังอยู่ระหว่างการพัฒนา) ฉันจะอธิบายวิธีการทำพาร์ติชั่นปกติที่พวกเราส่วนใหญ่ใช้ในระบบไฟล์ ext4

การปรับขนาด (Growing) ฉากกั้น

ในการขยายพาร์ติชันของคุณคุณสามารถทำได้ด้วยการติดตั้งรูท เมื่อต้องการทำสิ่งนี้ให้ทำ:

sudo resize2fs /dev/sda1

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

sudo resize2fs /dev/sda1 25G

โปรดทราบว่าถ้าคุณต้องการระบุ 25.4 GB คุณไม่สามารถใช้ "." คุณจะต้องลงหน่วยวัดหนึ่งหน่วย ในกรณีนี้จาก GB เป็น MB ดังนั้นมันจะเป็นดังนี้:

sudo resize2fs /dev/sda1 25400M

วิธีนี้คุณจะมีพาร์ติชัน 25.4G

การปรับขนาด (ลดขนาด) พาร์ติชั่น

การย่อขนาดพาร์ติชันเป็นกระบวนการสองขั้นตอนซึ่งเกี่ยวข้องกับ:

  • ลดขนาดของระบบไฟล์ตามจำนวนที่ต้องการ
  • การลดขนาดของอุปกรณ์บล็อกพื้นฐานเพื่อให้ตรงกับระบบไฟล์

ก่อนที่จะลดความจุของระบบไฟล์คุณต้องลดขนาดของอุปกรณ์บล็อก (ซึ่งอาจเป็นพาร์ติชันหรือโลจิคัลวอลุ่ม) เนื่องจากสิ่งนี้ไม่สามารถใช้ได้กับระบบไฟล์ ext * ใด ๆ คุณจะไม่สามารถย่อขนาดจาก 20 GB เป็น 19.5 GB เพื่อสร้าง swap 500 MB

แม้แต่ Ext4 ไม่รองรับการหดตัวทางออนไลน์ หากคุณพยายามที่จะทำมันคุณจะได้รับต่อไปนี้:

ป้อนคำอธิบายรูปภาพที่นี่

เดิมพันเดียวของคุณเท่าที่ฉันรู้ก็คือ:

  • ติดตั้ง Ubuntu รุ่นอื่นบนเซิร์ฟเวอร์เดียวกัน (บนพาร์ติชันอื่น) ที่สามารถใช้เพื่อลดขนาดพาร์ติชันรูทของเซิร์ฟเวอร์ Ubuntu ดั้งเดิม

  • ติดตั้งเซิร์ฟเวอร์ Ubuntu ตั้งแต่เริ่มต้นด้วยขนาดที่คุณต้องการ

  • ใช้ Ubuntu Server Live Image เพื่อปรับขนาดพาร์ติชัน สำหรับกรณีนี้คุณจะต้องไปที่หน้าจอนี้:

    ป้อนคำอธิบายรูปภาพที่นี่

    และเลือกตัวเลือกการปรับขนาดตามที่แสดงในภาพด้านบน จากตรงนั้นคุณจะเลือกขนาดใหม่ตั้งแต่นั้นคุณสามารถยกเลิกการต่อหน่วยและย่อขนาดได้ถ้าต้องการ

ในฐานะที่เป็นความช่วยเหลือเพิ่มเติมที่นี่คือระบบไฟล์ gparted suppor http://gparted.org/features.phpซึ่งให้รายละเอียดของรายการที่ได้รับการสนับสนุนและรวมถึงหากพวกเขามีการปรับขนาดออนไลน์เต็มรูปแบบ Btrfs อยู่ท่ามกลางพวกเขา


ฉันอยากรู้อยากเห็นมีระบบไฟล์อื่น ๆ ที่รองรับการหดตัวทางออนไลน์หรือไม่ zfs หรือ btrfs อาจจะ?
เซท

ฉันได้เพิ่มลิงค์ที่ด้านล่าง เคอร์เนลต้องการการสนับสนุนเช่นนี้หากระบบไฟล์มีการปรับขนาดออนไลน์อย่างถูกต้อง
Luis Alvarado

ฉันมีเซิร์ฟเวอร์อูบุนตูในเครื่อง vmware และขนาดของดิสก์คือ 120G แต่หลังจากใช้โซลูชันแรกฉันได้รับข้อผิดพลาดนี้: ระบบไฟล์มีความยาว 27262720 บล็อกแล้ว ไม่มีอะไรทำ!
Dr.jacky

1
ขอบคุณ @ Mr.Hyde มีปัญหาหลายประการเกี่ยวกับ Workstation 10 และ 11 ฉันอยากจะแนะนำ 12 และสำหรับ Ubuntu ฉันจะอัปเดตเป็น LTS ล่าสุดหรือ LTS ใหม่เพราะมีปัญหาบางอย่างเช่นกัน ในกรณีของฉันฉันมี VMware เวิร์กสเตชัน 12.0.1 และ Ubuntu 15.10 64 บิต
Luis Alvarado

3
จากหน้าปรับขนาด 2fs:The resize2fs program does not manipulate the size of partitions.
ACK_stoverflow

6

คำตอบขึ้นอยู่กับว่าคุณสามารถยกเลิกการต่อเชื่อมพาร์ติชันเพื่อลดขนาดหรือไม่ ในกรณีของคุณคุณอาจไม่สามารถ unmount พาร์ติชัน ใน Linux (UNIX / MAC OS) การติดตั้งพาร์ติชันหมายถึงการใช้ระบบไฟล์และการแมปกับจุดเมานท์ (ในกรณีของคุณ/) การ unmountหมายความว่าคุณหยุดใช้ระบบไฟล์และลบการแมปไปยังจุดเมานท์ คุณไม่สามารถ unmount ระบบไฟล์ที่มีระบบปฏิบัติการของคุณ

หากพาร์ติชั่นนั้นสามารถ unmount ได้

ให้ถือว่าคุณต้องการที่จะลดขนาดพาร์ติชัน ext4 200GB บนติดตั้งไป/dev/sda4 /dataปัจจุบันมีเพลงและภาพยนตร์หรือที่คล้ายกันดังนั้นคุณสามารถยกเลิกการต่อเชื่อมได้ชั่วคราว คุณต้องการสร้าง swap 4GB

sudo umount /dev/sda4

เพื่อยกเลิกการต่อเชื่อมพาร์ติชัน

sudo resize2fs /dev/sda4 196G

เพื่อปรับขนาดระบบไฟล์ ext4 เป็น 196 GB สมมติว่ามีพื้นที่เพียงพอ ตอนนี้คุณต้องลดขนาดพาร์ติชัน ตอนนี้ฉันเชื่อว่าคุณจำเป็นต้องใช้cfdiskเพื่อลบพาร์ติชันที่มีอยู่และสร้างพาร์ติชันที่มีขนาดเล็กลงแทน จากนั้นคุณสามารถสร้างพาร์ติชันใหม่สำหรับการแลกเปลี่ยน

sudo cfdisk /dev/sda 

จะให้ gui แบบข้อความเพื่อตรวจสอบตารางพาร์ติชันของคุณ ฉันขอแนะนำให้คุณไปprintยังตารางพาร์ทิชันไปยังไฟล์หรือหน้าจอ ณ จุดนั้นและจดบันทึกการกำหนดค่าปัจจุบันเป็นการสำรองข้อมูล จากนั้นคุณสามารถเลือก/dev/sda4และdeleteพาร์ติชัน ในสถานที่ของมันfree spaceจะปรากฏขึ้น ใช้newเพื่อสร้างพาร์ติชันใหม่โดยมีขนาด 196 GB แทนและตั้งค่าเป็น ext4 จากนั้นย้ายไปยังพื้นที่ว่างต่อท้ายและสร้างพาร์ทิชัน swap 4GB swapมีประเภท หมายเหตุ:ฉันไม่ได้ทดสอบคำสั่งเหล่านี้เนื่องจากฉันไม่สามารถเล่นกับฉันได้/ในขณะนี้

ถ้าพาร์ติชันไม่สามารถ unmount

คุณไม่สามารถลดขนาดพาร์ติชัน ext3 / 4 ที่เมาท์ (ดู manpage ของresize2fs) ในขณะที่คุณใช้ระบบปฏิบัติการจาก/คุณจะไม่สามารถยกเลิกการ/ต่อเชื่อม นั่นหมายความว่าคุณต้องบูตระบบปฏิบัติการอื่น (เช่นจากปุ่ม USB) เพื่อทำการเปลี่ยนแปลง

ในกรณีของคุณเป็นเซิร์ฟเวอร์ระยะไกล (บน KVM เป็นไปได้มากที่สุด) ดังนั้นคุณอาจไม่สามารถบูตจากอิมเมจ USB / ภาพสด อาจมีวิธีอื่นในการเปลี่ยนการแบ่งพาร์ติชันจากผู้ให้บริการ vServer ของคุณผ่าน GUI ผู้ดูแลระบบ ฉันเชื่อว่าเป็นทางออกที่ดีที่สุดของคุณในขณะนี้

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