Làm thế nào để tăng không gian hoán đổi?


128

Theo mặc định, tôi có 250 MB dung lượng trao đổi trong Ubuntu và tôi muốn mở rộng nó sang kích thước lớn hơn. Tôi cần 800 MB, mà tôi nghĩ sẽ đủ để mở một số ứng dụng mà không phải đạt giới hạn trao đổi hiện tại. Tôi hy vọng ai đó có thể giúp tôi.


2
Vui lòng mở Gparted và đăng ảnh chụp màn hình những gì bạn thấy ở đây.
Aaron Hill

Nếu phân vùng trao đổi của bạn có thể được mở rộng vào không gian chưa phân bổ liền kề thì hãy sử dụng gparted. Nếu không có không gian như vậy, có lẽ do phân vùng (đã khởi động) đang hoạt động của bạn đang sử dụng tất cả không gian không trao đổi, nên gpartedsẽ không cho phép bạn giảm kích thước của phân vùng hoạt động để tạo không gian chưa phân bổ. Trong trường hợp này, bạn có thể cài đặt lại Ubuntu để tạo không gian hoán đổi lớn hơn.
H2ONaCl

Câu trả lời:


172

Bạn luôn có thể tạo tập tin trao đổi

để thêm không gian trao đổi. Điều này không giống nhau (về mọi khía cạnh) như phân vùng trao đổi nhưng nó sẽ dễ dàng và năng động.

Thay đổi /media/fasthdd/swapfile.imgthành bất cứ điều gì bạn thích, ví dụ như nó có thể /swap.imglà tốt. /media/fasthdd/swapfile.imgchỉ là tên tệp ví dụ, nếu bạn đang sử dụng tên này thì tất nhiên phải có thư mục /media/fasthdd/có đủ dung lượng trống cho tệp hoán đổi mới của bạn.

Sử dụng bất kỳ ứng dụng đầu cuối nào để chạy lệnh. Tất cả các lệnh nên được chạy với quyền root , để làm điều này, bạn có thể thêm sudovào đầu mỗi lệnh hoặc chạy sudo bashtrước khi chạy lệnh.

1. Tạo tệp trống:
Tệp này sẽ chứa nội dung bộ nhớ ảo để làm cho tệp đủ lớn cho nhu cầu của bạn. Cái này sẽ tạo tệp 1Gb có nghĩa là không gian hoán đổi + 1Gb cho hệ thống của bạn:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Nếu bạn muốn tạo tệp 3Gb thì hãy thay đổi giá trị đếm thành count=3M. Xem man ddđể biết thêm thông tin.

2. Nướng swap file:
lệnh sau đây sẽ làm cho "hoán đổi hệ thống tập tin" bên trong tập tin swap tươi của bạn.

mkswap /media/fasthdd/swapfile.img

3. Khởi động khi khởi động:
Để đảm bảo rằng không gian hoán đổi mới của bạn được kích hoạt trong khi khởi động máy tính, bạn nên thêm nó vào tệp cấu hình hệ thống tệp /etc/fstab. Thêm nó vào cuối tệp, điều này được khuyến nghị vì các hệ thống tệp khác ( ít nhất là một tệp có chứa tệp hoán đổi ) phải được gắn ở chế độ đọc ghi trước khi chúng tôi có thể truy cập bất kỳ tệp nào.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Kích hoạt:
Bạn có thể khởi động lại máy tính hoặc kích hoạt tệp hoán đổi mới bằng tay với lệnh sau:

swapon /media/fasthdd/swapfile.img


Nếu mọi thứ trở nên tốt đẹp

bạn sẽ thấy rằng có nhiều không gian trao đổi hơn có sẵn để sử dụng. Bạn có thể sử dụng các lệnh sau để kiểm tra trao đổi mới của mình và xác nhận rằng nó đang hoạt động:

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB

5
Để chỉnh sửa, /etc/fstabhãy thử điều này tại dòng lệnh:sudo gedit /etc/fstab
Ben

Điều đó đã giúp tôi rất nhiều, cảm ơn bạn rất nhiều.
Rika

Làm thế nào để hủy kích hoạt tệp hoán đổi mới được tạo?
Rika

1
có nó trao đổi của nó!
Rika

2
sử dụng lệnh "exchangeon -s" để xem trạng thái chứ không phải là "cat / Proc / swaps". sau đó lệnh "miễn phí" cũng cung cấp thông tin sử dụng trao đổi.
Paul M

40

Phương pháp GUI để tăng kích thước của phân vùng trao đổi

Một cách khác để tăng kích thước trao đổi là sử dụng Trình soạn thảo phân vùng GParted . Nói tóm lại, bạn thay đổi kích thước phân vùng trao đổi, sau đó nhấp chuột phải vào nó và chọn "Hoán đổi".

Việc khởi động đĩa trực tiếp gparted hoặc đĩa sống Ubuntu dễ dàng hơn (do đó tất cả các /dev/sdaphân vùng sẽ không được kết nối). Nếu bạn chạy đĩa Ubuntu trực tiếp, thì bạn phải cài đặt gparted bằng cách chạy các lệnh bên dưới:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Bạn phải có thể tăng kích thước của phân vùng trao đổi chỉ khi có một không gian chưa được phân bổ hiện diện trước hoặc sau phân vùng trao đổi. Nếu không có không gian chưa phân bổ (không gian mà chúng tôi đang cố gắng thêm bằng phân vùng trao đổi) bên dưới hoặc bên trên phân vùng trao đổi, thì chúng tôi phải thay đổi kích thước các phân vùng và lấy không gian chưa phân bổ đó.

Trường hợp 1 - không gian chưa phân bổ có mặt trước hoặc sau phân vùng trao đổi

Phân vùng GParted

Trong ảnh chụp màn hình ở trên, tôi có 11,4 GB dung lượng chưa phân bổ trước khi hoán đổi linux và 12,8 GB sau phân vùng trao đổi.

  • Để thay đổi kích thước, nhấp chuột phải vào phân vùng trao đổi (/ dev / sda9 tại đây) và nhấp vào tùy chọn Thay đổi kích thước / Di chuyển. Nó sẽ trông giống thế này:

    nhập mô tả hình ảnh ở đây

  • Kéo mũi tên thanh trượt sang trái hoặc phải, sau đó nhấp vào nút Thay đổi kích thước / Di chuyển. Phân vùng trao đổi của bạn sẽ được thay đổi kích thước.


Trường hợp 2 - không gian chưa phân bổ nằm giữa các phân vùng

nhập mô tả hình ảnh ở đây

Trong ảnh chụp màn hình ở trên, không gian chưa phân bổ mà chúng tôi muốn thêm vào phân vùng trao đổi là giữa dev/sda7/dev/sda8. Để di chuyển không gian chưa phân bổ từ đó sang ngay trên phân vùng trao đổi, chúng tôi phải làm theo các bước đơn giản được đưa ra dưới đây,

  • Nhấp chuột phải vào phân vùng / dev / sda8 và nhấp vào tùy chọn Thay đổi kích thước / Di chuyển .

    nhập mô tả hình ảnh ở đây

  • nhấp và di chuyển thanh trượt sang cực bên trái, để không gian chưa phân bổ ở ngay phía trên /dev/sda8phân vùng sẽ xuất hiện bên dưới /dev/sda8. Sau đó nhấp vào nút Thay đổi kích thước / Di chuyển.

  • Và bây giờ, không gian chưa phân bổ đã ở ngay trên phân vùng trao đổi giống như Trường hợp 1. Bây giờ hãy theo dõi Trường hợp 1.


Trường hợp 3 - nếu không gian chưa phân bổ có mặt bên ngoài phân vùng Mở rộng)

nhập mô tả hình ảnh ở đây

Tôi có một không gian chưa được phân bổ là 18 GB ngay bên dưới phân vùng mở rộng . Để thêm không gian này vào phân vùng trao đổi linux (hiện diện bên trong phân vùng mở rộng), chúng tôi phải làm theo các bước dưới đây,

  • Nhấp chuột phải vào phân vùng mở rộng và chọn tùy chọn Thay đổi kích thước / Di chuyển , nó sẽ giống như ảnh chụp màn hình bên dưới

    nhập mô tả hình ảnh ở đây

  • Nhấp và kéo mũi tên sang cực bên phải và nhấp vào Thay đổi kích thước / Di chuyển , để không gian chưa phân bổ 18 GB sẽ ở dưới cùng của phân vùng mở rộng. Tôi có 14,80 GB không gian chưa phân bổ đã có ở dưới cùng và bây giờ là 18,34 GB kết hợp với điều đó để tạo không gian chưa phân bổ (18,34 + 14,80 GB) ở dưới cùng của phân vùng mở rộng.

  • Bây giờ có một không gian chưa được phân bổ ngay bên dưới phân vùng trao đổi, nó sẽ giống như Trường hợp 1 , sau đó làm theo trường hợp 1.

LƯU Ý: Đừng quên sao lưu tất cả các dữ liệu quan trọng của bạn trước khi tiến hành các hoạt động trên.


2
Hướng dẫn tuyệt vời cho các công cụ GUI, xứng đáng với ++. Tuy nhiên, có lẽ nên có một số cảnh báo về những rủi ro có thể liên quan đến chỉnh sửa phân vùng. Hướng dẫn sao lưu MBR đơn giản hoặc liên kết đến hướng dẫn đó sẽ là sự bổ sung tuyệt vời, lỗi có thể không xảy ra nhưng chi phí có thể tăng cao + việc sao lưu MBR sẽ không tiêu tốn quá nhiều thời gian hoặc không gian và có thể tiết kiệm rất nhiều công việc, không gian và thời gian khi được thực hiện chính xác.
Sampo Sarrala

2
Đừng quên trao đổi, nhấp chuột phải vào phân vùng trao đổi một trao đổi
user3752281

30

Bạn cũng có thể sử dụng fallocatenếu bạn muốn dự trữ dung lượng cho tệp hoán đổi của mình mà không cần điền vào tệp từ 0 đến dd.

Từ mantrang:

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Nếu bạn đã có một swapđịnh nghĩa, bạn có thể xóa nó hoặc giữ nó và * nix của bạn sẽ quản lý nó (thậm chí tốt hơn bằng cách xác định swaponmức độ ưu tiên). Điều này có thể hữu ích, trong trường hợp bạn muốn trải rộng trao đổi giữa các thiết bị, ổ đĩa khác nhau (dựa trên tốc độ của chúng hoặc các nhu cầu tùy chỉnh khác, hãy xem mục đích của nhiều tệp hoán đổi trên StackExchange là gì ).

fallocateCách sử dụng đơn giản để thêm tệp hoán đổi thứ hai

Kiểm tra tình hình hoán đổi:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Tạo tệp hoán đổi 4G

Cách tiêu chuẩn để tạo và kích hoạt một tập tin trao đổi.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Làm cho trao đổi của bạn vĩnh viễn

Thêm một dòng trong /etc/fstabtệp của bạn để trao đổi sẽ được khởi tạo trong lần khởi động lại tiếp theo (chúng tôi cũng cập nhật ở đây mức độ ưu tiên của không gian hoán đổi mới được tạo và chúng tôi cập nhật mức độ ưu tiên của tệp hoán đổi cũ).

Trong tệp / etc / fstab của bạn, lưu ý mức độ ưu tiên của trao đổi trước là 10.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Kiểm tra tình hình trao đổi sau khi khởi động lại:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Xóa một trong các không gian hoán đổi (ví dụ 256Mb gốc)

Biên tập /etc/fstab

Xóa dòng liên quan đến trao đổi bạn muốn loại bỏ.

Xóa trao đổi đó

Xóa và xóa tập tin trao đổi.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Tài nguyên:


3
1-up cho fallocate, tốt hơn rất nhiều so với ddnếu fs của bạn hỗ trợ nó. Những người một lớp vẫn cảm thấy khó đọc, có thể dễ nghiên cứu hơn nếu những thứ đó được chia thành các lệnh thực tế?
Sampo Sarrala

3
Đây là một ví dụ về câu trả lời hoàn hảo, rất đơn giản để hiểu, rất đơn giản để thực hiện. Nó hoạt động như một bùa mê trong Ubuntu 18
Damián Rafael Lattenero

7

Trong trường hợp của tôi, tôi đã có một tệp hoán đổi mà tôi nghĩ là 1GB nhưng khi tôi xem xét kỹ hơn thì nó chỉ lớn 256 MB và khi biên dịch trước tài sản đường ray của tôi, máy chủ sẽ hết bộ nhớ

Errno::ENOMEM: Cannot allocate memory - nodejs

Tôi đã tạo tệp hoán đổi của mình như được mô tả ở đây: https://stackoverflow.com/a/34885004/784318

Bây giờ, dòng tạo ra một tập tin trống được gọi /swapfilelà như sau:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

Bây giờ để thay đổi kích thước tệp hoán đổi, tôi phải thực hiện các bước đơn giản sau:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the `/swapfile`
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

Tệp đã được tạo (536870912/1024/1024 = 512 MB):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

Sử dụng free -mlệnh tôi có thể thấy rằng tệp bây giờ là 512 MB như mong đợi:


Bạn không nên sử dụng cờ -r nguy hiểm với lệnh rm để xóa tệp đơn. rm -f nên là quá đủ.
Sampo Sarrala

1
@SampoSarrala Cảm ơn vì đã đề phòng, tôi đã thay đổi tập lệnh cho phù hợp.
Besi

@Besi Cảm ơn bạn! Đây chính xác là những gì tôi cần để tăng kích thước tệp hoán đổi trên hệ thống Ubuntu 18.04 LTS của mình. Nó hoạt động chính xác như bạn đã viết nó. Trợ giúp tuyệt vời !!!
B-gốc

Tôi thích giải pháp này vì nó là dòng lệnh, không yêu cầu phân vùng lại và giải thích phải làm gì nếu một tệp hoán đổi đã tồn tại.
cxrodgers

3

Làm thế nào để thêm một tập tin trao đổi

  1. tạo tập tin .img

    sudo dd if = / dev / zero of = / exchange.img bs = 1M đếm = 1000

lưu ý !: bs = 1M đếm = 1000 ==> 1GB

(bs * tính = kích thước tính bằng megabyte)

ví dụ khác:

sudo dd if = / dev / zero of = / exchange.img bs = 10M đếm = 100

  1. định dạng tập tin .img

    sudo mkswap /swap.img

  2. cho phép trao đổi tập tin

    sudo hoán đổi /swap.img

  3. thêm tập tin trao đổi vào fstab

thêm dòng này vào fstab của bạn (/ etc / fstab)

/swap.img   none            swap    sw              0       0

Tôi thường đặt nhãn trên trao đổi, ví dụ: "mkswap -L SWAP2".
Paul M

Lưu ý: Đây là câu trả lời giống như câu trả lời được chấp nhận / được đánh giá cao nhất của Sampo Sarria, nhưng với ít ngữ cảnh hơn và với hoán đổi img được thêm trực tiếp vào root thay vì / media / fasthdd
thép

0

Thay đổi kích thước Hoán đổi thành 8GB

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Kiểm tra nếu nó hoạt động

grep Swap /proc/meminfo
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.