Làm thế nào để tắt hoán đổi vĩnh viễn và lấy lại không gian? (trên Debian Jessie)


48

Tôi đã cài đặt Debian Jessie với phân vùng mặc định trên ổ SSD của mình. Phân vùng đĩa hiện tại của tôi trông như thế này:

Phân vùng đĩa hiện tại của tôi trông như thế này

Vì tôi có 16GB RAM, tôi cho rằng tôi không cần trao đổi . Nhưng vì tôi có các ổ đĩa khác nên tôi có thể tạo một tệp hoán đổi, ví dụ, trên một trong các ổ đĩa khác.

Bạn có thể cho tôi biết những bước tôi nên làm để loại bỏ phân vùng trao đổi chính xác và vĩnh viễn để nó không chiếm dung lượng đĩa không ? Tôi muốn xóa phân vùng trao đổi vì hiện tại tôi chỉ có SSD 128 GB.

Đây là những gì tôi đã thử và khởi động lại mỗi lần; mỗi bước này không cố định hoặc không làm gì cả :

  1. Sử dụng swapofftiện ích:

    swapoff --all
    
  2. Sử dụng tiện ích GParted :

    Nhấp chuột phải vào phân vùng trao đổi và nhấp vào Hoán đổi.

  3. Nhận xét UUID của phân vùng trao đổi trong tệp sau:

    /etc/fstab
    
  4. Nhận xét UUID của phân vùng trao đổi trong tệp sau:

    /etc/initramfs-tools/conf.d/resume
    
  5. Chạy các lệnh này cuối cùng (cả theo thứ tự này và thứ tự ngược lại):

    update-grub
    
    update-initramfs -u
    

1
Swapoff chỉ vô hiệu hóa trao đổi cho hệ thống hiện đang chạy, để làm cho nó vĩnh viễn, bạn nên kết hợp nó với loại bỏ các mục liên quan khỏi /etc/fstab. Khi đã xong, trao đổi sẽ bị vô hiệu hóa và không quay trở lại trong lần khởi động tiếp theo. Bây giờ bạn nên sửa đổi bảng phân vùng và mở rộng hệ thống tập tin chính của bạn nếu bạn muốn lấy lại không gian chưa sử dụng. Xem câu trả lời của tôi để được hướng dẫn chi tiết.
André Borie

@ burian.vlastimil bạn có thể gửi toàn bộ của bạn /etc/fstab?
André Borie

@ burian.vlastimil Vui lòng chỉnh sửa nó trong câu hỏi của bạn vì các bình luận không bảo toàn ngắt dòng. Những thay đổi của bạn trong fstab có tồn tại sau khi khởi động lại không hoặc dòng trao đổi có bị thiếu?
André Borie

1
Nếu tôi có thể chọc vào câu hỏi này, mục đích của trao đổi là xóa các trang không sử dụng và bảo vệ hệ thống hết bộ nhớ. Do đó, như SnakeDoc đề xuất, có 512MB trao đổi luôn tốt. Cá nhân, tôi có SSD không có phân vùng trao đổi mà thay vào đó là tệp hoán đổi trong thư mục / của tôi. Nếu bạn chọn làm như vậy, sử dụng hướng dẫn này để tạo tệp. Đối với phân vùng trao đổi, bạn có thể khởi động usb trực tiếp và sử dụng gparted để xóa phân vùng đó. Hãy chắc chắn để cập nhật grub, mặc dù.
Sergiy Kolodyazhnyy

4
@SnakeDoc - bạn thường sẽ không bị hoảng loạn hạt nhân, trình xử lý OOM sẽ khởi động và tiêu diệt quá trình giải phóng bộ nhớ (và nó thường làm một công việc khá tốt khi quyết định giết một người, nói chung là ưu tiên để giết các quá trình lớn hơn và mới hơn). Tôi duy trì một số lượng lớn máy chủ không có trao đổi được thiết lập để hoảng loạn trên OOM thay vì giết các quy trình vì các máy chủ được cấu hình sao cho chúng sẽ không bao giờ hết bộ nhớ và nếu có, tôi muốn chúng hoảng loạn và khởi động lại thay vì trao đổi và làm chậm (hoặc để người xử lý OOM quyết định quá trình giết chết)
Johnny

Câu trả lời:


46

Thực thi như root:

# swapoff -a

Và để thay đổi đó vĩnh viễn, hãy chỉnh sửa /etc/fstabvà xóa hoặc nhận xét mục trao đổi.


@ burian.vlastimil, bạn có ý nghĩa gì với khóa? Bạn có thể xác minh rằng không có thiết bị trao đổi nào được sử dụng thông qua việc nhìn vào dòng đầu tiên - nó sẽ báo cáo 'Hoán đổi KiB: 0 tổng'. Bạn cũng có thể cat /proc/swaps- chỉ cần báo cáo một dòng tiêu đề. Nếu đó là trường hợp, thì có, bạn có thể xóa phân vùng trao đổi một cách an toàn - và phóng to phân vùng khác - để lấy lại không gian đó - nếu đó là những gì bạn muốn.
maxschlepzig

@ burian.vlastimil, trao đổi có thể được kích hoạt bởi initramfs của bạn, bạn có thể phải xóa resumetùy chọn kernel (tham chiếu UUID của trao đổi của bạn), tức là cập nhật grub và tạo lại initramfs (về cơ bản làm ngược lại một số bước trong Hoán đổi ).
maxschlepzig

@ burian.vlastimil, bạn cũng có thể grep config grub (bên dưới /boot) cho uuid đó và bạn có thể giải nén initramsfs của mình và grep nội dung của nó để đi đến nguyên nhân gốc rễ của việc này. Hãy chắc chắn rằng bạn thực hiện một grep không phân biệt chữ hoa chữ thường.
maxschlepzig

2
chỉ cần đặt swapoff -avào /etc/rc.local. có trao đổi trong vài mili giây khi bạn khởi động không có vấn đề gì. với 16GB RAM sẽ không có gì được ghi ở đó trong một thời gian dài. chỉ để lại không gian trao đổi ở đó (không gian đĩa là rẻ) và không thay đổi /etc/fstab .
Skaperen

tạo một tệp hoán đổi tạm thời , sau đó bạn có thể khôi phục dung lượng bằng cách xóa tệp sau khi bạn tắt trao đổi
Skaperen

40
  1. Nếu bạn đã mở GParted , hãy đóng nó. Tính năng Swapoff của nó dường như không phải là vĩnh viễn.

  2. Mở terminal và trở thành root( su); nếu bạn đã sudokích hoạt, bạn cũng có thể làm ví dụ sudo -i; xem man sudocho tất cả các tùy chọn):

    sudo -i
    
  3. Tắt phân vùng trao đổi cụ thể và / hoặc tất cả các trao đổi :

    swapoff --all
    
  4. Đảm bảo 100% phân vùng phân vùng trao đổi cụ thể bị tắt:

    cat /proc/swaps
    
  5. Mở trình soạn thảo văn bản mà bạn có kỹ năng với tệp này, ví dụ: nanonếu không chắc chắn:

    nano /etc/fstab
    
  6. Nhận xét / xóa UUID của phân vùng trao đổi , ví dụ:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. Mở trình soạn thảo văn bản mà bạn có kỹ năng với tệp này, ví dụ: nanonếu không chắc chắn:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. Nhận xét / xóa UUID của phân vùng trao đổi được xác định trước đó , ví dụ:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. Đừng đóng thiết bị đầu cuối vì bạn sẽ cần nó sau này.

Lưu ý: Các bước tiếp theo khác nhau tùy thuộc vào việc bạn dựa vào CLI hay GUI .


GUI :

  1. Mở GParted , từ menu hoặc thuận tiện hơn từ thiết bị đầu cuối mà chúng tôi đã mở:

    gparted
    
  2. Nếu bạn chưa cài đặt nó, bạn có thể làm như vậy; sau đó chạy lại lệnh trước:

    apt-get install gparted
    
  3. Chọn ổ đĩa của bạn từ menu trên cùng bên phải.

  4. Khi GParted kích hoạt lại phân vùng trao đổi khi khởi chạy, bạn sẽ phải nhấp chuột phải vào phân vùng trao đổi cụ thể và nhấp vào Swapoff -> Điều này sẽ được áp dụng ngay lập tức.

  5. Xóa phân vùng trao đổi với nhấp chuột phải -> Xóa. Bạn phải áp dụng thay đổi ngay bây giờ.

  6. Thay đổi kích thước phân vùng chính / khác của bạn bằng cách nhấp chuột phải -> Thay đổi kích thước / Di chuyển. Bạn phải áp dụng thay đổi ngay bây giờ.

  7. Quay lại thiết bị đầu cuối, hãy tạo lại hình ảnh khởi động :

    update-initramfs -u -k all
    
  8. Cập nhật GRUB :

    update-grub
    
  9. Bạn có thể khởi động lại ngay bây giờ nếu bạn muốn kiểm tra xem máy có khởi động không.


CLI :

Tôi sẽ kiểm tra VM nếu giải pháp của tôi hoạt động, sau đó tôi sẽ chia sẻ nó. Trong khi chờ đợi, hãy xem câu trả lời này .


1
đầy đủ nhất, giải thích tốt.
benzkji

Nếu bạn gặp phải tình trạng khởi động chậm sau đó với thông báo gave up waiting for suspend/resume device: Trong tệp /etc/initramfs-tools/conf.d/resume, đừng chỉ vô hiệu hóa dòng, thay thế nó bằng RESUME=none. ( nguồn )
tanius

17

Nhận xét / xóa mục nhập có liên quan /etc/fstabđể ngăn không cho nó được kích hoạt trong lần khởi động tiếp theo, sau đó khởi động lại hoặc chạy swapoff -ađể vô hiệu hóa việc sử dụng phân vùng trao đổi cho hệ thống hiện đang chạy.

Bây giờ xóa phân vùng trao đổi, mở rộng phân vùng hệ thống của bạn trên không gian không sử dụng đó và mở rộng hệ thống tập tin thực tế. Tôi không biết liệu trình quản lý phân vùng đồ họa của bạn có thể làm tất cả điều đó hay không, nhưng nếu đó không phải là cách thức không thể tin được khi sử dụng fdiskresize2fs:

# fdisk /dev/sdX

# Display current partition table, copy/paste this output somewhere to be able to go back in case you screw up

Command (m for help): p
Device       Boot  Start    End Sectors Size Id Type
/dev/sda1        2048  22527   20480  10M ef EFI (FAT-12/16/32)
/dev/sda2       22528 186367  163840  80M 83 Linux
/dev/sda3      186368 204799   18432   9M 82 Linux swap / Solaris

# Delete the swap partition

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.

# Delete the system partition

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.

# Create a new system partition starting the same as the old one but ending a bit farther, at the end of the (now deleted) swap partition

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
# Enter the same start sector as the old part.
First sector (22528-204799, default 22528): 22528
# Enter the end sector of the old swap partition
Last sector, +sectors or +size{K,M,G,T,P} (22528-204799, default 204799): 204799

Created a new partition 2 of type 'Linux' and of size 89 MiB.

# Save the changes
Command (m for help): w
The partition table has been altered.

Cuối cùng, chúng tôi mở rộng hệ thống tệp hiện tại để sử dụng không gian trống mới (cho đến bây giờ hệ thống tệp thực tế không biết rằng chúng tôi đã thêm một số không gian vào phân vùng bên dưới của nó). Theo mặc định, resize2fssử dụng toàn bộ phân vùng trừ khi được cung cấp kích thước cố định, vì vậy chúng tôi không phải chỉ định bất kỳ thứ gì ngoài thiết bị khối phân vùng. Phát triển một hệ thống tệp (trái ngược với thu hẹp) có thể được thực hiện trực tuyến với phân vùng được gắn kết:

# resize2fs /dev/sda2

Bây giờ bạn đã vô hiệu hóa thành công trao đổi và lấy lại không gian chưa sử dụng mà không cần khởi động lại.

Lưu ý rằng quy trình cho Debian hơi khác một chút và yêu cầu chỉnh sửa thêm một số tệp. Kiểm tra câu trả lời này để biết thêm.


Điều này không làm việc cho tôi. Tôi đã có 3 phân vùng. một cho / boot, một cho / và trao đổi. Khi tôi cố gắng tạo phân vùng mới, tôi chỉ có thể tạo phân vùng 16gb: /
Freedo

Ngoài ra, ít nhất là cho các bản phân phối dựa trên Debian 9: cần phải chạy partprobetrước resize2fslệnh, nếu không thì kernel không biết về bảng phân vùng mới và sẽ không có gì thay đổi kích thước.
tanius

2

Nhấp chuột phải vào phân vùng trao đổi trong GParted và nhấp vào Hoán đổi. Sau đó xóa phân vùng trao đổi của bạn, xóa nó khỏi /etc/fstabvà tạo lại initramfsgrub(có thể không cần thiết).

Các phân vùng swap không nên được thêm vào initramfsbởi các initramfskịch bản cập nhật nếu phân vùng swap không tồn tại.

Theo bài đăng này , sau đây là cách chính xác để tái sinh initramfsgrub:

update-initramfs -c -k <kernel>

update-grub

-2

Bạn có thể bấm chuột phải vào phân vùng swap trong GParted và chọn swapoff tùy chọn. Đó là một cách nhanh chóng để hoàn thành điều tương tự bạn yêu cầu.

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.