swapon ไม่มีผลกระทบ / proc / swaps ยังคงว่างเปล่า


10

เซิร์ฟเวอร์ Ubuntu ของฉันมีหน่วยความจำไม่เกิน 512 MB ไม่เพียงพอสำหรับการเรียกใช้ Node.js + MongoDB

ดังนั้นฉันตัดสินใจที่จะเพิ่มไฟล์ swap:

# dd if=/dev/zero of=/root/myswapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.69263 s, 229 MB/s
# mkswap /root/myswapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=3c64da32-d0b4-49e5-92db-fba961b8ae28
# swapon /root/myswapfile

ไม่มีข้อความแสดงข้อผิดพลาด => สำเร็จ!

ตอนนี้ควรมีการแสดงรายการไฟล์ swap ใหม่แต่ไม่ใช่ :

# swapon -s
Filename                Type        Size    Used    Priority

(รายการว่างเปล่า)

ฉันจะทำให้มันทำงานได้อย่างไร อะไรคือสาเหตุของการแลกเปลี่ยนที่หายไป?


1
ลองย้ายไฟล์ swap ไปที่รูทของพาร์ติชัน aka/
2707974

1
เมื่อฉันลองครั้งแรกฉันลองใช้ด้วย/ swapfile
user22611

2
เปลี่ยนการอนุญาตchmod 600 /root/myswapfileอีกครั้งswapon /root/myswapfile
2707974

1
นั่นไม่ได้ช่วย ... การแจ้งเตือนที่น่าสนใจ: ฉันต้องสลับก่อนที่จะสวิงถึงแม้ว่าการแลกเปลี่ยนจะไม่ปรากฏในรายการ
22611

3
ไม่freeแสดงการใช้งานแลกเปลี่ยนใด ๆ
mdd

คำตอบ:


4

ก่อนอื่นให้ลบ swapfile เดิมของคุณ:

sudo rm /myswapfile

ถัดไปเรียกใช้คำสั่งต่อไปนี้ทีละรายการ:

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile

ผลลัพธ์ควรคล้ายกับที่แสดงต่อไปนี้:

-rw------- 1 root root 1.0G Aug  3 18:20 /swapfile

ตอนนี้ให้รันคำสั่งต่อไปนี้:

sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s

ตอนนี้แก้ไข / etc / fstab เพื่อทำการเปลี่ยนแปลงอย่างถาวร:

sudo nano /etc/fstab

และเพิ่มบรรทัดต่อไปนี้ในตอนท้ายของไฟล์:

/swapfile    none            swap    sw              0       0

กดCTRL+ oจากนั้นกดENTERเพื่อบันทึกไฟล์

กดCTRL+ xเพื่อออกจากนาโน

แหล่งที่มา: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04


หากยังไม่ได้ผลคุณอาจต้องการตรวจสอบความรวดเร็ว:

cat /proc/sys/vm/swappiness

คำสั่งนี้ควรคืนค่าตัวเลข ค่าเริ่มต้นควรเป็น 60

หากไม่มีเอาต์พุตให้รันคำสั่งต่อไปนี้ทีละตัว:

sudo sysctl vm.swappiness=60
echo "vm.swappiness = 60" | tee -a /etc/sysctl.conf

-a เป็นสิ่งสำคัญหลังจากteeหรือคุณจะเขียนทับไฟล์ทั้งหมด !!!


1

ใช้fdiskเพื่อสร้างการแลกเปลี่ยน เพิ่มพาร์ติชั่นใหม่เลือก Linux swap เขียนการเปลี่ยนแปลง คุณจำเป็นต้องเพิ่มเข้าไปในของคุณmkswap /dev/sd? /etc/fstab/เปลี่ยน XXX เป็น UUID สลับ

UUID=XXX none            swap    sw              0       0

เรียกใช้จะทำให้มันใช้ได้จากswapon -a/etc/fstab


1

คุณสลับไฟล์ควรอยู่ใน / swapfile ที่มี 600 สิทธิ์

#moving file and changing rights
sudo mv /root/myswapfile /myswapfile
sudo chmod 600 /myswapfile

sudo mkswap /myswapfile

เพิ่มไฟล์สลับ ฉันคิดว่าคุณลืมคำสั่งนี้

sudo swapon /myswapfile
#check swap is working
sudo swapon -s

1
คำสั่ง chmod sudo chmod 600...จะต้อง sudo chown root:root ...มันก็อาจจะทำให้คุ้มค่ามันเป็นของราก:
วิลฟ์

1
หากคุณเห็นโพสต์หลักของ @ user22611 ใช้ดูว่าเขาทำงานเป็นราก
UNIm95

1
makeswapmkswap
user22611

1
@ user22611 ใช่ คุณพูดถูก mkswap และ chmod
UNIm95

1
@ UNIm95 - คุณสามารถแก้ไขโพสต์เพื่อแก้ไขปัญหาเหล่านี้ได้ ....
วิลฟ์

-1

คุณสามารถทำสิ่งนี้:

sudo umount -a
gedit /etc/fstab

และเขียนตรงนี้คือ swap:

/proc/swap     proc   default  errors=noremount     1

แล้วสิ่งนี้:

sudo mount -a

จากนั้นเรียกใช้ gpart และตั้งค่า swap drive เป็น swap และติดตั้งบนไดรฟ์ root dev และอาจทำงานได้ดีในลักษณะนี้


4
เอ่อ ... ไม่sudo umount -aเลิกเมานท์ทุกอย่างเหรอ? (ซึ่งอาจจะทำลายสิ่งที่ถ้าในการใช้งาน) ถ้าคุณกำลังพยายามที่จะยกเลิกการต่อเชื่อมสิ่งแลกเปลี่ยนที่มีอยู่ก่อนมันอาจจะดีกว่าที่จะพบพวกเขาในและจากนั้นพวกเขายกเลิกการต่อเชื่อมโดยเฉพาะหรือการใช้งานmount sudo swapoff -a
วิลฟ์

1
มันเป็นสิ่งที่ฉันไม่ได้ทำในสิ่งที่คุณทำและมันเป็นสิ่งเดียวที่จะทำ
Michael

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