tra-loi-cau-hoi-phat-trien-web.com

Cách tốt nhất để vô hiệu hóa trao đổi trong Linux

Tôi đang chạy kernel 3.18.9 được biên dịch tùy chỉnh và tôi đang tự hỏi về cách tốt nhất để vô hiệu hóa trao đổi trên hệ thống. Tôi cũng sử dụng init nếu nó tạo ra sự khác biệt.

Có đủ để nhận xét hoặc xóa dòng trao đổi trong /etc/fstab Để ngăn trao đổi hoạt động/gắn khi khởi động hay tôi nên biên dịch lại kernel mà không có Support for paging of anonymous memory (swap) để chắc chắn 100% không được kích hoạt ?

Tôi chạy các phân vùng được mã hóa và muốn ngăn chặn sự cố rò rỉ vào đĩa cứng. Thông số kỹ thuật hệ thống của tôi cũng đủ lớn để tôi có thể tồn tại trong môi trường không có trao đổi.

57
user283167
  1. Xác định các thiết bị và tệp hoán đổi được định cấu hình bằng cat /proc/swaps.
  2. Tắt tất cả các thiết bị và tập tin trao đổi với swapoff -a.
  3. Xóa mọi tham chiếu phù hợp được tìm thấy trong /etc/fstab.
  4. Tùy chọn: Phá hủy mọi thiết bị hoán đổi hoặc tệp được tìm thấy trong bước 1 để ngăn chặn việc sử dụng lại chúng. Do những lo ngại của bạn về việc rò rỉ thông tin nhạy cảm, bạn có thể muốn xem xét thực hiện một số loại xóa an toàn.

người đàn ông hoán đổi

85
Aaron Copley

Nếu bạn thực sự chắc chắn rằng bạn muốn tắt tính năng hoán đổi (lưu ý: đây là không nên , ngay cả khi bạn khá chắc chắn rằng vật lý RAM là quá đủ), hãy làm theo các bước sau:

  1. chạy swapoff -a: điều này sẽ ngay lập tức vô hiệu hóa trao đổi
  2. xóa mọi mục hoán đổi khỏi /etc/fstab
  3. reboot hệ thống. Nếu trao đổi không còn, tốt. Nếu vì lý do nào đó, nó vẫn ở đây, bạn phải xóa phân vùng trao đổi. Lặp lại các bước 1 và 2 và sau đó, sử dụng fdisk hoặc parted để xóa phân vùng trao đổi (hiện không được sử dụng). Hãy hết sức cẩn thận tại đây: xóa phân vùng sai sẽ gây ra hậu quả tai hại!
  4. reboot
11
shodanshok

Nó được sử dụng để chỉ trao đổi phân vùng trong /etc/fstab đã được sử dụng tự động, tuy nhiên, systemd có thể thay đổi một chút. Bạn có thể cần phải làm:

systemctl mask dev-sdXX.swap

(thay đổi sdXX) thành phân vùng trao đổi được định dạng thực của bạn, điều này đặt ra câu hỏi tại sao bạn có phân vùng trao đổi nếu bạn không muốn sử dụng ...

Nếu bạn không sử dụng systemd, sau đó, xóa các mục trao đổi khỏi /etc/fstab nên là đủ (theo như tôi biết).

Có lẽ giải pháp thực sự là loại bỏ các phân vùng trao đổi, vì vậy chúng sẽ không được sử dụng một cách tình cờ. Để xóa phân vùng trao đổi, tôi sẽ sử dụng fdisk để thay đổi loại phân vùng từ hoán đổi sang thứ khác, sau đó định dạng lại phân vùng hoặc sử dụng: dd if=/dev/zero of=/dev/old-swap-partition để loại bỏ nó ra và ngăn chặn việc sử dụng nó.

Xem thêm Thiết lập sử dụng phân vùng trao đổi với systemd.

11
Gregor

Vào Raspbian 1 (Buster), câu trả lời sạch sẽ là:

Để vô hiệu hóa nó cho đến lần khởi động lại tiếp theo , như đã nêu trong */etc/fstab*:

Sudo /sbin/dphys-swapfile swapoff

Để tắt trao đổi khi khởi động:

Sudo systemctl disable dphys-swapfile

(Hóa ra tôi không thể tìm thấy thông tin đó ở bất cứ đâu ...)

2
Michaël GENAY

Trên hộp Linux Mint của tôi (phiên bản 19.3 (Tricia), dựa trên buntu 18.04 (Bionic Beaver)) mà không có phân vùng trao đổi hoặc không có bất kỳ trao đổi nào cả, systemctl đã báo cáo rằng hoán đổi .swap thất bại trong mỗi lần bắt đầu. Nó có thể bị vô hiệu hóa bằng lệnh:

Sudo systemctl disable swapfile.swap

Exchangefile.swap là một phần 'đặc biệt' của systemd, bạn có thể đọc về con người, sử dụng man systemd.special chỉ huy.

1
piotao

Khi tôi xem tệp / etc/fstab trên Raspbian, tôi thấy một bình luận nói rằng

a swapfile is not a swap partition, no line here
  use dphys-swapfile swap[on|off] for that

Nhưng để vô hiệu hóa hoàn toàn tệp hoán đổi cấu hình sẵn, nó hoạt động hoàn toàn tốt:

swapoff -a
chmod -x /etc/init.d/dphys-swapfile
reboot

Giải pháp này có vẻ hơi nhanh và bẩn đối với tôi, tuy nhiên, bạn chỉ có thể kích hoạt nó bằng:

chmod +x /etc/init.d/dphys-swapfile
reboot
0
Ilka31415