Tại sao Linux sử dụng phân vùng trao đổi thay vì tệp?


32

Dường như với tôi một tập tin trao đổi là linh hoạt hơn.


1
Bạn có thể sử dụng một tập tin trao đổi trong Linux. Tôi đang làm như vậy ngay bây giờ trên nhiều máy. Tôi không sử dụng bất cứ thứ gì đặc biệt, chỉ là ext4 hoặc ext4 trên LVM. Không mã hóa hoặc bất cứ điều gì phức tạp. Đình chỉ và ngủ đông đã làm việc rất tốt cho tôi, ngay cả trên máy NVMe của tôi.
Cory T

Câu trả lời:


32

Một tệp hoán đổi linh hoạt hơn nhưng cũng dễ đọc hơn phân vùng trao đổi. Một lỗi hệ thống tập tin có thể làm hỏng tập tin trao đổi. Một tập tin trao đổi có thể là một nỗi đau cho quản trị viên, vì tập tin không thể được di chuyển hoặc xóa. Một tập tin trao đổi không thể được sử dụng để ngủ đông. Một tập tin trao đổi đã chậm hơn một chút trong quá khứ, mặc dù sự khác biệt là không đáng kể ngày nay.

Ưu điểm của tệp hoán đổi là không phải quyết định kích thước trước. Tuy nhiên, trong Linux, bạn vẫn không thể thay đổi kích thước tệp hoán đổi trực tuyến: bạn phải hủy đăng ký nó, thay đổi kích thước, sau đó đăng ký lại (hoặc tạo một tệp khác và xóa tệp cũ). Vì vậy, không có nhiều lợi ích cho một tệp hoán đổi trong Linux, so với phân vùng trao đổi. Nó chủ yếu hữu ích khi bạn tạm thời cần thêm bộ nhớ ảo, thay vì cố định vĩnh viễn.


4
trong quá khứ cũng có một lợi ích hiệu suất. Nhưng tôi nghĩ rằng điều đó đã kết thúc khi 2.6 xuất hiện.
xenoterracide

Có vẻ như điều này không thực sự trả lời câu hỏi. Hay tôi đang thiếu một cái gì đó? Câu trả lời chỉ nói về các tệp hoán đổi và hoàn toàn không đề cập đến các phân vùng. @Gilles là cố ý, hay bạn vừa mắc lỗi đánh máy?
gabe.

1
@gabe: Tôi đã thảo luận về các tập tin trao đổi so với các phân vùng. Hy vọng điều này là rõ ràng hơn bây giờ.
Gilles 'SO- ngừng trở nên xấu xa'

1
Tôi chỉ ra ở đây ý kiến ​​của tôi trong câu trả lời của ông. Nhận thức fs gây ra mất hiệu suất trên các tập tin trao đổi là moot.
ata

2
Theo Ubuntu Community Help Wiki help.ubfox.com/community/SwapFaq Một phân vùng trao đổi là cần thiết để ngủ đông. Trích dẫn: "Nó không thể sử dụng tệp hoán đổi trên hệ thống tệp đang hoạt động.". Và về hiệu suất, có vẻ như không có sự khác biệt trừ khi tệp này thưa thớt. serverfault.com/questions/25653/
Mạnh

28

Một phân vùng trao đổi có thể được ưa thích vì nó tránh được sự phụ thuộc vào hệ thống tệp khi tất cả những gì bạn cần là một nhóm bộ nhớ có thể định địa chỉ.

Nhưng không có gì ngăn cản bạn sử dụng tệp hoán đổi thay vì phân vùng trao đổi hoặc ngoài phân vùng trao đổi.

  • Tạo tập tin:

    dd if=/dev/zero of=/extraswap bs=1M count=512
    
  • Khởi tạo nội dung tệp:

    mkswap /extraswap
    
  • Sử dụng nó:

    swapon /extraswap
    
  • Xem nếu nó hoạt động:

    free -m
    

Để bắt đầu sử dụng hoán đổi luôn ở lúc khởi động, hãy chỉnh sửa / etc / fstab và thêm

/extraswap           swap          swap    defaults    0 0

[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html


5
Bí danh hữu ích Tôi đã sử dụng mãi mãi để cho phép tôi nhập moreswapvào một thiết bị đầu cuối nếu tôi đột nhiên cần thêm dung lượng trao đổi:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
Michael Mrozek

Đây là thông tin tốt, nhưng nó không trả lời câu hỏi.
lesmana

6
Ngoài ra, bit trên hệ thống tập tin là không chính xác. Trái với suy nghĩ thông thường, không có chi phí sử dụng hoán đổi. Andrew Morton đưa ra lời giải thích đơn giản ở đây . Đó là một trong những lý do sử dụng trình quản lý trao đổi dựa trên tệp hoán đổi động như daemon hoán đổi là một giải pháp tốt nếu được cấu hình tốt.
ata

Hãy thêm rằng cách tiếp cận tệp hoán đổi có thể là lựa chọn duy nhất của bạn khi bạn đang chạy trên đám mây.
sorin

1

Có lẽ lý do chính là hạt nhân chính đình chỉ vào đĩa không hoạt động với các tập tin trao đổi. Ví dụ, các hướng dẫn wiki Debian là để cài đặt uswsuspnếu bạn cần điều này.

Gần đây, các tệp hoán đổi không hoạt động nếu hệ thống tệp là btrfs, vì vậy đơn giản nhất là các bản phân phối luôn tạo trao đổi dưới dạng phân vùng.

Nó được đề cập một cách mơ hồ rằng việc sử dụng một tệp để trao đổi có khả năng hiệu suất thấp hơn một phân vùng, trước phiên bản kernel 2.6. https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15


1

Để hoàn thiện tôi sẽ thêm câu trả lời của riêng mình:

Như đã nói bởi @Gilles, một tệp hoán đổi không thể được sử dụng để ngủ đông. Khi sử dụng tệp hoán đổi, hệ thống phải định vị tiêu đề của tệp hoán đổi, nhưng để thực hiện điều này, hệ thống tệp chứa tệp hoán đổi phải được gắn và hệ thống tệp được ghi nhật ký - ví dụ: ext3, ext4 và về cơ bản là tất cả các hệ thống tệp hiện đại được Linux sử dụng - không thể được gắn trong quá trình tiếp tục từ đĩa. (Trong thực tế, có nhiều cách để làm như vậy, nhưng khá cồng kềnh.)

Nguồn: https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt


0

Tôi nghĩ rằng điều đó chủ yếu là do thời gian truy cập vào các dữ liệu nằm trên một phân vùng thấp hơn. Điểm quan trọng của tệp hoán đổi là nhiều hơn để giúp quản trị viên hệ thống khi anh ta thực sự hết RAM và cần phải vận hành các hoạt động lớn có thể làm sập hệ thống của anh ta. Trong trường hợp này, anh ta sẽ thỉnh thoảng tạo các tệp hoán đổi khi cần thiết.

Nhưng dù sao bạn có thể có cả hai.

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.