ฉันจะเพิ่มขนาดของ swapfile โดยไม่ต้องลบมันใน terminal ได้อย่างไร


59

มีวิธีเพิ่ม "swapfile" ที่มีอยู่ของฉันโดยไม่ต้องทำลายและสร้างใหม่หรือไม่ ฉันต้องการเพิ่มพื้นที่สว็อปของฉันจาก 1GB เป็น 2GB ปัจจุบันมีการตั้งค่าดังนี้:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        1048572 736640  -1
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Nov  9  2016 /swapfile

ฉันใช้ Ubuntu 14.04


คุณมี RAM เท่าใด 2G เพียงพอหรือไม่ ฉันคิดว่าคุณจะต้องswapoffสร้างใหม่ / swapfile mkswapและswapon -a
heynnema

1
เพิ่มไฟล์ swap ใหม่ทำตามคำแนะนำของคำถามข้างต้น คุณสามารถมีไฟล์ swap ได้ 2 ไฟล์)
Ravexina

1
@Ravexina คำถามเกี่ยวกับมือใหม่ แต่ทำไมฉันถึงต้องการเพิ่มไฟล์ swap ใหม่แทนที่จะเพิ่มขนาดของไฟล์ที่มีอยู่เดิม? หรือไม่สามารถเพิ่มไฟล์สวอปที่มีอยู่ได้?
เดฟ

@Dave ที่เป็นไปได้มากเกินไปในขณะที่คุณอาจจะรู้ว่าเราสามารถทำได้swapoffแล้วddและในที่สุดmkswap swaponฉันคิดว่าคุณไม่ต้องการสัมผัสไฟล์ของคุณ
Ravexina

2
@Ravexina โพสต์นั้นเป็นคำตอบ
Sergiy Kolodyazhnyy

คำตอบ:


66

ก่อนปิดใช้งานไฟล์สลับ:

sudo swapoff /swapfile

ตอนนี้เราจะเพิ่มขนาดไฟล์สว็อป:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc

คำสั่งดังกล่าวจะผนวก 1GiB เป็นศูนย์ไบต์ที่ท้ายไฟล์ swap ของคุณ

ตั้งค่าไฟล์เป็น "ไฟล์สลับ":

sudo mkswap /swapfile

เปิดใช้งาน swaping:

sudo swapon /swapfile

3
sudo fallocate -l 2G /swapfileน่าจะปลอดภัยกว่า DD (แม้ว่าจะไม่ให้ swapfile เดิม) sudo chmod 600 /swapfileและมันยังต้องการ
heynnema

7
@heynnema ไม่fallocateสร้างไฟล์หร็อมแหร็ม? swaponmanpage กล่าวว่าไฟล์แลกเปลี่ยนเบาบางมีปัญหา (โดยเฉพาะการกล่าวขวัญfallocate)
muru

3
@heynnema ไม่mkswapmanpage บอกว่าไฟล์ไม่ควรมีรูใด ๆ
muru

1
@muru เดาว่าฉันผิด :-)ทุกครั้งที่ฉันอ่านวิธีสร้าง / swapfile โดยเริ่มจาก 17.04 พวกเขาใช้ fallocate ฉันเดาว่าเราจะต้องใช้ "ตัวทำลายดิสก์"!
heynnema

1
@heynnema: สิ่งที่คุณสามารถทำได้คือการใช้fallocateการจัดสรรพื้นที่ดิสก์ล่วงหน้าจากนั้นใช้ddเพื่อเติมช่องว่างด้วยค่าศูนย์
David Foerster

39

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

dd if=/dev/zero of=/some/file count=1K bs=1M
mkswap /some/file
sudo chown root:root /some/file
sudo chmod 600 /some/file
sudo swapon /some/file

เป็นsudo chmod 600 /some/fileที่ต้องการหรือไม่?
heynnema

1
และcount=1Kให้ไฟล์ 1G หรือไม่ นับเป็นขนาดบล็อกใช่หรือไม่ และนั่นอาจเป็น 512/4096? หรือคณิตศาสตร์ของฉันผิด
heynnema

3
+1 วิธีการนี้ทำให้ง่ายต่อการตัดการเชื่อมต่อหนึ่งใน swapfiles หากคุณตัดสินใจในภายหลังว่าคุณต้องการพื้นที่ดิสก์กลับ
joeytwiddle

2
นี่จะต้องทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้องจริงๆ ว้าวไชโย!
Beshoy Girgis

1
@muru นี่เป็นวิธีการแก้ปัญหาแบบถาวรหรือไม่? ฉันใช้คำสั่งเหล่านี้ในวันที่ 30 เมษายน แต่ในบางครั้งในเดือนพฤษภาคม swapfile ที่สองของฉันก็หายไป ฉันไม่ได้ลบ แต่มันหายไป
Christopher Rucinski

13

คุณสามารถสร้างไฟล์สว็อปอื่นได้เหมือนที่ฉันทำ:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. ตรวจสอบว่ามันใช้งานได้sudo swapon --show
    หากต้องการให้เพิ่มไฟล์ลงในfstabไฟล์อย่างถาวร
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

โปรดทราบว่าfallocateควรใช้บิตในการสร้างไฟล์เนื่องจากจะสร้างไฟล์ sparce เห็นman mkswap
ชาร์ลส์กรีน

@ CharlesGreen มันใช้งานได้ตามที่ฉันเขียนดังนั้นจึงควรใช้กับ almos ทุกคน
borekon

ฉันจะอ่านหนังสือman mkswapโดยเฉพาะอย่างยิ่ง pargraph ครั้งสุดท้ายก่อน "สิ่งแวดล้อม"
Charles Green

1
ทำงานกับ NanoPi Neo กับ Armbian v 5.65
BiTinerary

5

ฉันมีผลลัพธ์ที่ดีบน Ubuntu 17.04 ของฉันทำตามคำแนะนำของอาเรียน Acosta จากที่blogpost หนึ่งสามารถทดแทน 4G ที่นี่sudo fallocate -l 4G /swapfileด้วยจำนวนกิกะไบต์ที่คุณต้องการ ตัวอย่างเช่นsudo fallocate -l 2G /swapfileสำหรับ TS

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

ฉันได้สร้างสคริปง่ายๆที่เพิ่มไฟล์ swap ให้ 4GB และทดสอบบน Ubuntu 16.04

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

#!/bin/bash
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Turning Off Swap ======"
sudo swapoff /swapfile
echo "====== Allocating 4GB Swap ======"
sudo fallocate -l 4G /swapfile
echo "====== Making Swap ======"
sudo mkswap /swapfile
echo "====== Setting Permissions to Root Only  ======"
sudo chmod 600 /swapfile
echo "====== Turning On Swap ======"
sudo swapon /swapfile
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Done! ======"

3
คุณควรเพิ่มอาร์กิวเมนต์ในสคริปต์ซึ่งเป็นจำนวน SWAP ที่จะเพิ่มและในที่สุดก็เพิ่มลงใน fstab แต่ถึงอย่างนั้นฉันก็ชอบสิ่งนี้
LnxSlck

0

คำตอบทั่วไปสำหรับ "วิธีปรับขนาดไฟล์สลับ":

จาก Bogdan Cornianu ที่นี่: https://bogdancornianu.com/change-swap-size-in-ubuntu/

[QUOTE (เกือบ VERBATIM ที่มีการเพิ่มความคิดเห็นของฉันเพียงไม่กี่) เริ่ม]

ในตัวอย่างต่อไปนี้เราจะขยายพื้นที่สว็อปที่มีอยู่ใน/ swapfileจาก 4 GiB เป็น 8 GiB

  1. ปิดการแลกเปลี่ยนกระบวนการทั้งหมด

    sudo swapoff -a
    
  2. ปรับขนาดการแลกเปลี่ยน

    sudo dd if=/dev/zero of=/swapfile bs=1G count=8
    

    if= ไฟล์อินพุต = ไฟล์
    ofเอาต์พุต
    bs= ขนาดบล็อก; นี่1Gหมายถึง 1 Gibibyte หรือลิ่มซึ่งตามที่man ddเป็นG = 1024 * 1024 * 1024ไบต์
    count= ตัวคูณของบล็อก

  3. ทำให้ไฟล์ใช้งานได้เป็น swap

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

    sudo swapon /swapfile
    
  5. ตรวจสอบจำนวนการแลกเปลี่ยนที่มี

    grep SwapTotal /proc/meminfo
    

[QUOTE END]

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