Khi bạn cài đặt Linux, quá trình cài đặt có thể sẽ thêm phân vùng trao đổi vào đĩa cứng cùng với các phân vùng cho Linux. Nhưng phân vùng trao đổi này được sử dụng cho cái gì và nó thực sự cần thiết?

Trao đổi là gì?

Khi một hệ điều hành đa nhiệm hết bộ nhớ vật lý, nó không thể khởi động các tiến trình mới hoặc cấp phát bộ nhớ nhiều hơn cho các tiến trình hiện có. Để giải quyết vấn đề này, một khối không gian đặc biệt trên bộ nhớ cục bộ (thường là ổ đĩa cứng) được đặt sang một bên để hoạt động như một vùng lưu giữ tạm thời cho các tiến trình hiện không chạy. Hệ điều hành "hoán đổi" quá trình không hoạt động trong bộ nhớ và trên đĩa cứng. Điều này giải phóng bộ nhớ cho công việc mới. Khi quá trình không hoạt động trở lại hoạt động trở lại, nó sẽ được hoán đổi trở lại từ bộ nhớ cục bộ sang bộ nhớ. Thủ tục này được gọi là trao đổi.

Là không gian trao đổi thực sự cần thiết?

Là không gian trao đổi kỹ thuật cần thiết? Không. Linux có thể làm việc mà không có nó và trong một số trường hợp, như các giải pháp nhúng, Linux có thể chạy mà không cần trao đổi. Nếu hệ điều hành đi vào một tình huống mà nó không có đủ bộ nhớ, nó sẽ hoảng loạn và dừng lại. Nếu có đủ RAM vật lý, máy sẽ chạy mà không gặp bất kỳ sự cố nào.

Là không gian trao đổi thực tế cần thiết? Vâng. Mặc dù trao đổi làm chậm máy tính (khi đọc và ghi vào đĩa cứng chậm hơn nhiều so với truy cập RAM) và có nhiều bộ nhớ vật lý trên bo mạch là giải pháp tốt nhất để tránh trao đổi, có những tình huống hợp pháp khi hoán đổi là mong muốn. Ví dụ, trong quá trình khởi động hệ thống, có thể có các tiến trình chạy (và do đó tiêu thụ bộ nhớ hệ thống) nhưng sau đó có hiệu quả ngủ trong một thời gian rất dài. Hoặc bộ nhớ được cấp phát, ghi vào và sau đó không bao giờ được sử dụng nữa. Trong những tình huống này, thuật toán hoán đổi sẽ bắt đầu di chuyển bộ nhớ này vào đĩa cứng và do đó giải phóng bộ nhớ hệ thống có giá trị. Điều này thực sự đảm bảo rằng số lượng RAM tối đa có sẵn ở mọi thời điểm và do đó tăng hiệu suất.

Trên các máy không có đủ RAM vật lý để mọi thứ nằm trong bộ nhớ thì việc sử dụng không gian hoán đổi là rất cần thiết!

Để hoàn thành, điều đáng nói đến là Linux cũng có một hệ thống con được gọi là Out-Of-Memory Killer (OOM), thay vì dừng hạt nhân khi nó hết bộ nhớ, sẽ bắt đầu giết các tiến trình để giải phóng tài nguyên. Hành động của nó có thể cấu hình được.

Tôi nên phân bổ bao nhiêu không gian hoán đổi?

Không có quy tắc tuyệt đối và vì không gian đĩa cứng rẻ (đô la cho mỗi Gigabyte) nên phân bổ quá nhiều không gian quá ít. Theo quy tắc chung, bạn nên có hai hoặc ba lần dung lượng hoán đổi làm bộ nhớ vật lý.

Thêm hoán đổi mà không mở rộng phân vùng trao đổi

Có hai cách để thêm không gian hoán đổi vào một hệ thống mà không thay đổi phân vùng trao đổi hiện có. Một cách là sử dụng phân vùng trao đổi trên ổ đĩa khác, cách khác là sử dụng tệp hoán đổi.

Để sử dụng một ổ cứng khác, hãy tạo một phân vùng kiểu “trao đổi Linux” (mã 82) và sau đó chạy lệnh “ mkswap ” để chuẩn bị không gian hoán đổi:

 mkswap / dev / sdb2 

Trong đó /dev/sdb2 là tên của phân vùng bạn đã tạo. Để sử dụng không gian hoán đổi ngay lập tức sử dụng lệnh “ swapon ”:

 swapon / dev / sdb2 

Sử dụng " swapon -s " để có danh sách các không gian hoán đổi hiện đang được sử dụng. Để thêm vĩnh viễn không gian hoán đổi vào hệ thống, bạn sẽ cần chỉnh sửa tệp /etc/fstab và thêm một dòng tương tự như sau:

 / dev / sdb2 không trao đổi sw 0 0 

Nếu hệ thống của bạn đang sử dụng số nhận dạng duy nhất để đặt tên cho đĩa, hãy sử dụng lệnh blkid để nhận danh sách các id cho các thiết bị. Dòng để gắn kết không gian hoán đổi trong /etc/fstab sau đó sẽ trông giống như sau:

 UUID = 036da155-1ea1-4392-b8d4-700f65aa1ead không trao đổi sw 0 0 

Để sử dụng tệp hoán đổi, hãy tạo một tệp trống lớn (sử dụng dd ) trên hệ thống tệp mà bạn muốn sử dụng để hoán đổi. Ví dụ: để tạo tệp 1 GB, hãy nhập:

 đ nếu = / dev / zero = / store / swapfile bs = 1024 count = 1048576 

Where /store/swapfile là đường dẫn đến tệp hoán đổi trên hệ thống tệp mong muốn.

Như với phân vùng trao đổi bổ sung, tệp bây giờ cần được chuẩn bị bằng mkswap và sau đó được sử dụng với swapon . Nó cũng cần phải được thêm vào tập tin /etc/fstab . Thủ tục này chính xác giống như trên, nhưng bạn cần sử dụng /store/swapfile thay vì /dev/sdb2 làm tham số không gian hoán đổi.

Swappiness

Nhân Linux có thể được tinh chỉnh để xác định mức độ mạnh mẽ của nó nên cố gắng trao đổi các tiến trình trong bộ nhớ. Xu hướng này được kiểm soát bởi một biến nhân được gọi là swappiness . Một swappiness của 0 có nghĩa là hạt nhân sẽ tránh trao đổi càng nhiều càng tốt, trong khi 100 có nghĩa là hạt nhân sẽ được tích cực trong cách nó sử dụng không gian trao đổi. Cài đặt mặc định cho nhiều bản phân phối Linux là 60. Có thể thay đổi số động bằng lệnh này:

 sudo sysctl vm.swappiness = 10 

Để đặt giá trị vĩnh viễn, bạn cần thay đổi (hoặc thêm, nếu nó không tồn tại) biến vm.swappiness trong tệp /etc/sysctl.conf .

Hãy cho chúng tôi biết nếu bạn có câu hỏi về trao đổi trong Linux.