Làm thế nào để tôi vô hiệu hóa trao đổi?


83

Tôi có một số dữ liệu nhạy cảm trong ram mà tôi không muốn ở trên đĩa. Làm thế nào để tôi vô hiệu hóa trao đổi? Tôi có nhiều hơn thì đủ ram. Nếu ram quá cao tôi không có vấn đề gì với quá trình bị chấm dứt. Làm thế nào để tôi vô hiệu hóa trao đổi?

Lưu ý: Tôi không có phân vùng trao đổi và điều này đang chạy trong VM (VMWare)

swap 

2
Ngay cả khi bạn có nhiều RAM, đó không phải là ý tưởng tốt nhất để hoàn toàn hoạt động mà không cần trao đổi (xem ví dụ alexonlinux.com/swap-vs-no-swap ). Tùy thuộc vào yêu cầu của bạn, bạn có thể xem xét đặt phân vùng trao đổi trên thiết bị được bảo mật dm-crypt, để mọi thứ được ghi vào nó sẽ được mã hóa. Tất nhiên, bạn phải chắc chắn rằng việc hoán đổi đó được kích hoạt sau khi khối lượng mã hóa có sẵn và bị vô hiệu hóa trước khi ánh xạ thiết bị bị vô hiệu hóa (tất nhiên tôi nghĩ đó là mặc định trên Ubuntu, nhưng tôi không chắc). Chỉ cần tìm kiếm trên web cho "trao đổi mã hóa" để tìm thấy nhiều hướng dẫn.
soulsource

1
Apropose : askubfox.com/questions/248158/ khăn Bạn không cần trao đổi cho đến khi bạn cần nó. Và sau đó bạn thực sự cần nó.

Điều gì về một cryptswap? / dev / mapper / cryptswap1

Câu trả lời:


121

Sử dụng

sudo swapoff -a  

là cách thông thường để tắt trao đổi, với swapon -alệnh được sử dụng để bật lại. Xem man swapoff để biết thêm thông tin về việc tắt trao đổi cho các thiết bị rõ ràng.


7
Điều này dường như không tồn tại trong suốt quá trình khởi động lại?
ebyrob

19
Thay đổi vĩnh viễn để hoán đổi thường được thực hiện trong / etc / fstab.
ubfan1

Có phải chúng ta chỉ sao chép cái này vào / etc / fstab
Max

6
Không. Thay vào đó, bạn nhận xét dòng trao đổi trong / etc / fstab.
Torsten Bronger

Bạn có thể đọc trong các câu trả lời khác làm thế nào để bình luận nó ra.
Carolus

25

Bạn có thể vô hiệu hóa trao đổi sau khi khởi động lại bằng cách chỉ nhận xét (thêm # ở trước dòng) mục trao đổi trong /etc/fstabtệp. Nó sẽ ngăn phân vùng trao đổi tự động gắn kết sau khi khởi động lại. Để làm điều này trong một lệnh duy nhất:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

hoặc đơn giản:

sudo sed -i '/ swap / s/^/#/' /etc/fstab

Bây giờ mục trao đổi của bạn trên /etc/fstabsẽ trông tương tự như thế này:

#UUID=xxxxxxxx-xxxx-xxxxx-xxx-xxxxxxxxxxx none            swap    sw              0       0

Với các số cụ thể của riêng bạn và các chữ cái viết thường thay vì các chữ cái "x".


2
Tại sao UUID được trích dẫn của bạn có một số chữ số cụ thể? Chúng có nên giống hệt nhau cho tất cả các UUID không? UUID của phân vùng của tôi không có bất kỳ sự trùng hợp nào với các chữ số được chỉ định của bạn.
Ruslan

Các lệnh sed của bạn không hoạt động trong trường hợp các trường được phân tách bằng các tab (không phải dấu cách). Nó được viết tốt hơn dưới dạng sed -ri '/\sswap\s/s/^#?/#/' /etc/fstabPS: Tôi cũng đã thêm #?để ngăn các thay đổi bổ sung cho / etc / fstab khi dòng đã bị vô hiệu hóa.
Alek_A

4

Nếu bạn lo lắng về nội dung của trao đổi, bạn luôn có thể tắt nó như được chỉ định theo cách thông thường sudo swapoff -avà sau đó điền vào thiết bị trao đổi với số không hoặc dữ liệu ngẫu nhiên bằng cách sử dụng dd.

Trước tiên, hãy sử dụng nội dung của fstab để tìm tệp hoán đổi hoặc thiết bị của bạn ( less /etc/fstab)

Đã xác định vị trí của nó và kiểm tra hai lần và ba lần vị trí của nó tại sda5 hoặc /swapfile (phân vùng trao đổi được thay thế theo mặc định bằng một tệp hoán đổi trong 17.04 trở lên.) .

Trong trường hợp phân vùng trao đổi hoặc ổ đĩa: (mở đầu bằng / dev) ban hành lệnh "hủy đĩa" (không được sử dụng nhẹ)

sudo dd if=/dev/zero of=swapthay thế từ hoán đổi bằng thiết bị hoán đổi hoặc tập tin bạn đặt trong/etc/fstab

để nổ nó đầy số không hoặc

sudo dd if=/dev/random of=swapmột lần nữa thay thế từ hoán đổi bằng thiết bị hoán đổi hoặc tập tin bạn đặt trong/etc/fstab

để nổ nó đầy dữ liệu ngẫu nhiên.

Trong trường hợp hoán đổi (được mở đầu chỉ bằng một đường dẫn): bạn chỉ cần xóa tệp bằngrm /path/to/swapfile

Lần sau khi bạn bật trao đổi với

swapon -a

Hệ thống sẽ vui vẻ sử dụng nó một lần nữa. Nếu bạn có nhiều RAM, bạn có thể không cần trao đổi gì cả. Ra lệnh

free khi hệ thống chịu tải nặng và xem mức độ sử dụng để đưa ra quyết định này.

Nếu bạn xác định rằng bạn vĩnh viễn không cần trao đổi (để ngủ đông hoặc bất cứ điều gì khác), bạn có thể chỉ cần nhận xét dòng đó trong fstab như được đề xuất ở đây

miễn phí


3

Nó có thể là giải pháp khập khiễng, nhưng tôi đã sử dụng nó thường xuyên. Bạn chỉ cần gõ

sudo -s
crontab -e

Và thêm

@reboot sudo swapoff -a  

Vì vậy, nó sẽ tự động bị vô hiệu hóa khi khởi động.


4
Tôi hy vọng nó đi mà không nói rằng đây là một phương pháp rất kém. Tại sao phải tạo một tác vụ thời gian khởi động để tắt tùy chọn khác, khi có một tệp khác có thể được chỉnh sửa để dừng nó được bật ở vị trí đầu tiên
underscore_d

Có lẽ không hài lòng về mặt thẩm mỹ, nhưng không có gì nghèo nàn về nó. Nếu bạn đã quá quen với việc sử dụng crontab thì giải pháp này sẽ giúp ngón tay dễ dàng hơn một chút và có ý nghĩa hơn là chỉ đơn giản là sao chép một cách mù quáng những gì người dùng khác trên SE đã nói với bạn để / etc / fstab. Và, bạn vẫn sẽ nhớ cách thực hiện với máy tính mới mà không phải chạy lại google. Tôi tình cờ hầu như không biết crontab là gì và quen thuộc hơn nhiều với các phân vùng đĩa nhưng logic vẫn đứng vững.
Nicholas Pipitone

Trên thực tế, đây có thể là giải pháp tốt hơn. Bởi vì / etc / fstab đề xuất chỉ hoạt động cho các phân vùng trao đổi. Giải pháp này áp dụng cho các thiết lập linux bất kể họ có sử dụng phân vùng hay tệp hoán đổi hay không.
Nicholas Pipitone

2
sudo swapoff -a

Lệnh trên chỉ vô hiệu hóa trao đổi cho một phiên hiện tại , bạn cần nhận xét phân vùng trao đổi trong tệp / etc / fstab . Để làm điều này, bạn chỉ cần thêm "#" (dòng bình luận) vào đầu dòng trao đổi. Các bước như:

  1. Mở tệp fstab, gõ sudo gedit /etc/fstabvào terminal.

Nội dung của tệp sẽ như thế này:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/host/ubuntu/disks/root.disk /               ext4    loop,errors=remount-ro 0       1
/host/ubuntu/disks/swap.disk none            swap    loop,sw         0       0
#/dev/sda10 /media/ASD  vfat    defaults    0   0
#/dev/sda1  /media/98   vfat    defaults    0   0
  1. Chỉ cần thêm hàm băm (#) vào đầu dòng phân vùng trao đổi, để dòng này trông như:

#/host/ubuntu/disks/swap.disk none swap loop,sw 0 0

  1. Khởi động lại PC của bạn

0

Đi vào terminal và thực hiện lệnh này : gnome-disks. Nó không được cài đặt trong tất cả các bản phân phối. Nếu vậy, hãy làm theo các hướng dẫn được in để cài đặt nó và thử lại. Tìm kiếm một thiết bị có từ 'hoán đổi' trên khung bên trái. Nó thường có kích thước giống như bộ nhớ vật lý của bạn. Nhấp vào nút vuông để vô hiệu hóa nó. Xác thực thay đổi này với mật khẩu gốc của bạn.

Ảnh chụp màn hình: http://imgur.com/Og6igqb

Trong ứng dụng Giám sát hệ thống (gnome-system-Monitor), bạn sẽ thấy nó báo cáo khu vực trao đổi là 'không khả dụng'. Khu vực trao đổi bị vô hiệu hóa nhưng không bị xóa. Bạn có thể kích hoạt nó dễ dàng một lần nữa trong tương lai. Xóa không gian hoán đổi đã khiến hệ thống của tôi không có hại nhưng bạn sẽ tự tạo ra nhiều công việc hơn nếu bạn quyết định bạn muốn nó quay lại (ngủ đông) trong tương lai.

chỉnh sửa: để ngăn chặn việc gắn kết khi khởi động, bạn nên vào phần "Chỉnh sửa tùy chọn gắn kết ..." trong đĩa gnome và bỏ chọn "Gắn kết khi khởi động".


1
Bạn có nghĩ rằng câu trả lời này khiến người dùng lo ngại về việc có dữ liệu nhạy cảm trên phân vùng trao đổi không? Bạn có thể nói với chúng tôi tại sao?
Anh Cả Geek

1
Điểm chính của người dùng là hỏi làm thế nào để vô hiệu hóa trao đổi. Nếu bạn có dữ liệu nhạy cảm, bạn nên sử dụng mã hóa tiền khởi động một cách lý tưởng.
user170544

1
Tôi tôn trọng không đồng ý. Khi tôi đọc câu hỏi, câu đầu tiên tôi bắt gặp là "Tôi có một số dữ liệu nhạy cảm trong ram mà tôi không muốn ở trên đĩa." Tôi tin rằng đây là mối quan tâm chính của anh ấy, đó là lý do tại sao anh ấy bắt đầu với nó. Bất kể, tôi tin rằng tôi đã bao gồm mọi khía cạnh của câu hỏi của anh ấy trong câu trả lời của tôi. Hãy coi đó là một ví dụ hữu ích.
Anh Cả Geek

0

Thay thế defaultsbằng sw,noautotrong dòng bao gồm mục trao đổi trong tệp /etc/fstab:

/dev/mapper/centos-swap swap  swap    sw,noauto        0 0

(Đường dẫn /dev/mapper/centos-swapcó lẽ khác với bạn).

Bây giờ hãy kiểm tra đầu ra sau khi khởi động lại, trao đổi của bạn không bao giờ được gắn kết:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         100        3408           8         282        3483
**Swap:             0           0           0**
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.