Làm cách nào để tăng kích thước của tệp hoán đổi mà không loại bỏ nó trong thiết bị đầu cuối?


59

Có cách nào để tăng "hoán đổi" hiện tại của tôi mà không phải phá hủy và tạo lại nó không? Tôi muốn tăng dung lượng trao đổi của mình từ 1GB lên 2GB. Hiện tại nó được thiết lập như vậy:

$ 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

Tôi đang sử dụng Ubuntu 14.04.


Bạn có bao nhiêu RAM? 2G đã đủ chưa? Tôi nghĩ rằng bạn sẽ phải swapoff, tạo một mkswapswapon -a
tệp

1
Thêm một tập tin trao đổi mới, làm theo hướng dẫn của câu hỏi trên. bạn có thể có 2 tệp hoán đổi;)
Ravexina

1
@Ravexina, Có lẽ một câu hỏi dành cho người mới, nhưng tại sao tôi muốn thêm một tệp hoán đổi mới thay vì tăng kích thước của tệp hiện có? Hoặc là không thể tăng một tập tin trao đổi hiện có?
Dave

@Dave Điều đó cũng có thể, vì bạn có thể biết chúng ta có thể swapoffsau đó ddmkswapcuối cùng swapon. Tôi nghĩ bạn không muốn chạm vào tập tin của bạn.
Ravexina

2
@Ravexina đăng câu trả lời
Sergiy Kolodyazhnyy

Câu trả lời:


66

Đầu tiên vô hiệu hóa tập tin trao đổi:

sudo swapoff /swapfile

Bây giờ hãy tăng kích thước của tệp hoán đổi:

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

Lệnh trên sẽ nối thêm 1GiB 0 byte vào cuối tệp hoán đổi của bạn.

Thiết lập tệp dưới dạng "tệp hoán đổi":

sudo mkswap /swapfile

cho phép thay đổi:

sudo swapon /swapfile

3
sudo fallocate -l 2G /swapfilecó lẽ an toàn hơn dd (mặc dù nó không giữ tệp hoán đổi ban đầu) và nó cũng cần a sudo chmod 600 /swapfile.
heynnema

7
@heynnema Không fallocatetạo tập tin thưa thớt? Trang này swaponcho biết các tệp hoán đổi thưa thớt là có vấn đề (đề cập cụ thể fallocate).
muru

3
@heynnema không, mkswaptrang này cũng nói rằng các tệp không được chứa bất kỳ lỗ hổng nào.
muru

1
@muru đoán tôi sai :-) Mỗi lần tôi đọc cách tạo / hoán đổi với sự khởi đầu của 17.04 họ đã sử dụng ngụy biện. Tôi đoán rằng chúng ta sẽ phải sử dụng "trình hủy đĩa"!
heynnema

1
@heynnema: Những gì bạn có thể làm là sử dụng fallocateđể phân bổ trước dung lượng đĩa và sau đó sử dụng ddđể lấp đầy các lỗ bằng số không.
David Foerster

39

Bạn nên thêm một tập tin hoán đổi mới thay vì thay đổi kích thước của tập tin tồn tại bởi vì nó khiến bạn không có gì để làm như vậy . Để thay đổi kích thước một tập tin hoán đổi, trước tiên bạn phải vô hiệu hóa nó, điều này cho thấy nội dung trao đổi thành RAM, điều này làm tăng áp lực lên RAM và thậm chí có thể triệu tập kẻ giết người OOM (chưa kể rằng bạn có thể sẽ đập đĩa của bạn trong vài phút). Nhiều tệp hoán đổi không phải là một vấn đề, thật dễ dàng để thiết lập một tệp hoán đổi khác. Hoàn toàn không có lợi ích gì khi thay đổi kích thước tệp hoán đổi bằng cách thêm tệp khác.

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/fileyêu cầu, hoặc không?
heynnema

1
Và có count=1Kcung cấp một tập tin 1G? số lượng là trong kích thước khối, có? Và đó có thể là 512/4096? Hay là toán của tôi sai?
heynnema

3
+1 Cách tiếp cận này cũng giúp bạn dễ dàng ngắt kết nối một trong các tệp hoán đổi nếu sau đó bạn quyết định bạn cần dung lượng đĩa trở lại.
joeytwiddle

2
Điều này thực sự cần được đánh dấu là câu trả lời chính xác. Wow, bravo!
Beshoy Girgis

1
@muru đây có phải là một giải pháp lâu dài? Tôi đã thực hiện các lệnh này vào ngày 30 tháng 4, nhưng đôi khi vào tháng Năm, giao dịch hoán đổi thứ hai của tôi đã biến mất. Tôi đã không xóa nhưng nó đã biến mất
Christopher Rucinski

13

Bạn có thể tạo một tệp hoán đổi khác như tôi đã làm:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. Xác minh nó đang hoạt động với sudo swapon --show
    Để làm cho nó vĩnh viễn thêm một tệp vào fstabtệp gõ:
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Xin lưu ý rằng fallocatebit nên được sử dụng để tạo tệp, vì nó tạo ra một tệp sparce. xemman mkswap
Charles Green

@CharlesGreen nó hoạt động với tôi như tôi đã viết, vì vậy nó sẽ hoạt động cho bất kỳ ai.
borekon

Tôi sẽ đọc sách man mkswap, đặc biệt là bản vẽ cuối cùng trước "Môi trường"
Charles Green

1
đã làm việc trên NanoPi Neo với Armbian v 5.65
BiTinerary

5

Tôi có kết quả tốt trên Ubuntu 17.04 của mình theo lời khuyên của Arian Acosta từ blogpost . Người ta có thể thay thế 4G ở đây sudo fallocate -l 4G /swapfilebằng bất kỳ lượng gigabyte nào bạn muốn. Ví dụ sudo fallocate -l 2G /swapfilecho TS.

Nói chung, kích thước được đề xuất cho một tệp hoán đổi là gấp 2 lần dung lượng RAM, nhưng bạn có thể làm cho nó lớn như bạn cần. Hãy nhớ rằng đây không phải là một thay thế cho bộ nhớ vì hiệu suất kém hơn nhiều vì mọi thứ được lưu trữ trong đĩa.

Tôi đã tạo một tập lệnh bash đơn giản làm tăng tệp hoán đổi thành 4GB và đã thử nó trên Ubuntu 16.04.

Điều này có thể được chạy từng dòng hoặc một tập lệnh bash, nhưng tôi sử dụng nó để thực hiện cài đặt không đầu.

#!/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
Bạn nên thêm một đối số vào tập lệnh, đó là số lượng SWAP được thêm vào và cuối cùng thêm nó vào fstab. Nhưng tôi vẫn thích điều này
LnxSlck

0

Câu trả lời chung cho "cách thay đổi kích thước tệp hoán đổi":

Từ Bogdan Cornianu, tại đây: https://bogdancornianu.com/change-swap-size-in-ub Ubuntu /

[NHANH TAY (XÁC MINH ĐỘNG LỰC, chỉ với một vài bổ sung nhận xét của tôi) BẮT ĐẦU]

Trong ví dụ sau, chúng tôi sẽ mở rộng không gian hoán đổi có sẵn trong / hoán đổi từ 4 GiB thành 8 GiB.

  1. Tắt tất cả các quy trình trao đổi

    sudo swapoff -a
    
  2. Thay đổi kích thước trao đổi

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

    if= tập tin đầu vào = tập tin
    ofđầu ra
    bs= kích thước khối; ở đây, 1Glà viết tắt của 1 Gibibyte, hoặc GiB, trong đó, theo man ddG = 1024 * 1024 * 1024 byte
    count= số nhân của khối

  3. Làm cho tập tin có thể sử dụng như trao đổi

    sudo mkswap /swapfile
    
  4. Kích hoạt tệp hoán đổi

    sudo swapon /swapfile
    
  5. Kiểm tra số lượng trao đổi có sẵn

    grep SwapTotal /proc/meminfo
    

[KẾT THÚC]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.