Linux

Tạo swap file cho Linux

Một trong những điểm biến Linux thành môi trường lập trình thân thiện và tốt hơn Windows là Swap, tên tiếng Việt là Vùng tráo đổi.. Trong trường hợp bạn chưa nghe về swap, thì nó là – nói một cách ngắn gọn và đời thường – một phân vùng/tập tin trên ổ cứng hoạt động như RAM, nhằm bổ sung bộ nhớ (memory) cho hệ thống khi lượng RAM “cứng” đã được sử dụng hết. Thực ra, trên Windows có pager với chức năng gần như swap. Tuy nhiên, xét về mức độ linh hoạt thì swap linh hoạt và “ngon” hơn.

Tux

Có hai cách tạo swap: Một là tạo hẳn một phân vùng có định dạng là linux-swap và mount nó vào Linux, chỉ định cho hệ thống khi thiếu RAM thì đọc-ghi trên phân vùng này. Cách này có cái hay là swap nằm ở một phân vùng riêng biệt so với hệ thống, nhưng yếu điểm là việc dung lượng bạn phải chia “cứng” cho nó, và việc thu hồi nó không hề dễ dàng. Vì vậy, tôi sẽ hướng dẫn các bạn tạo swap theo cách thứ hai, đó là dùng swap dưới dạng tập tin.

1. Tạo tập tin swap:

Trước tiên, bạn kiểm tra coi hệ thống đã có swap chưa. Có hai cách. Một là bạn mở Bộ theo dõi hệ thống (System Monitor nếu ngôn ngữ là tiếng Anh). Bạn truy cập tab Tài nguyên (Resources) và nhìn xuống phần Bộ nhớ và Vùng tráo đổi (Memory and swap). Nếu phần Vùng tráo đổi (Swap) là Không sẵn sàng (Not available), nghĩa là hệ thống của bạn chưa có swap. Nếu có rồi thì bạn có thể yên chí rồi và dừng đọc tiếp.

Cách thứ hai là dùng dòng lệnh với câu lệnh bên dưới. Output của nó là các thông tin về swap, còn nếu không thấy gì là chưa có.

Để tạo tập tin swap, bạn sẽ chạy dòng lệnh trong Terminal theo mẫu bên dưới. Trong đó, tham số thứ nhất sau flag -l là kích thước của tập tin swap mà bạn muốn, còn tham số thứ hai ngay sau kích thước đó là đường dẫn tới tập tin swap, bao gồm tên tập tin luôn. Lưu ý, thao tác này không hẳn tạo tập tin swap mà chỉ là tạo một tập tin rỗng có kích thước cho trước, để biến nó thành swap file, bạn sẽ làm thêm một số thao tác nữa. Sau này, nếu bạn muốn tạo một tập tin rỗng với kích thước định trước thì cứ thoải mái dùng câu command này. Ở đây, tôi sẽ tạo một tập tin rỗng /swapfile có kích thước 4GB – và 4GB này cũng là kích thước swap – thì tôi chạy command với sudo:

Bạn chờ một lát, thời gian chờ còn phụ thuộc vào tốc độ đọc ghi của ổ cứng.  Thông thường, kích thước swap nên là 1/2*, hoặc 1*, hoặc 2*, hoặc 4* với tổng lượng RAM của bạn. Chẳng hạn, máy tôi chỉ có 4GB RAM, chạy Android Studio 3.0 không nổi, nên bắt buộc phải swap. Do đó, kích thước swap của tôi nên là 2GB, hoặc 4GB, hoặc 8GB, hoặc 16GB. Nhưng đó chỉ là các con số mang tính tham khảo ở mức “nên”, còn thực tế, bạn cho swap là 5.2GB hoặc 6.9GB thì hệ thống cũng vẫn hoạt động như đã định mà thôi. Để kiểm tra lại, bạn chạy command bên dưới, có sudo hay không thì cũng không “nhằm nhọt” gì.

Lưu ý là swap file của tôi là /swapfile. Bạn muốn đặt tên khác ở vị trí khác thì cũng không “ảnh hưởng đến hòa bình thế giới”. Chỉ cần truyền đúng path là ngon cơm, nhưng cần lưu ý là định dạng của phân vùng nơi tập tin “cư ngụ” phải hỗ trợ phân quyền, tức là không được là fat32 hay ntfs của Windows. Nếu output đưa ra các thông tin chính xác, chẳng hạn trong trường hợp của tôi, swapfile có kích thước 4GB, là bạn an tâm chuyển sang bước tiếp theo, là tắt quyền đọc cho phép tập tin được truy cập “thoải mái” bởi bất cứ ai. Nói nghe đao to búa lớn, nhưng thực chất nó chính là chmod đó thôi:

Thao tác trên sẽ xóa các quyền read (-r) từ các u-xơ không liên quan để tránh các sự cố bảo mật, chẳng hạn các “hắc-cơ” đọc được nội dung trên tập tin đó. Tất nhiên, bạn cũng có thể bỏ qua điều này nếu cảm thấy nó không cần thiết. Nhưng nếu bạn đang làm swap cho server thì việc tắt quyền -r là rất cần thiết. Cuối cùng, bạn sẽ nói với hệ thống “Ê mày, mày dùng tập tin này làm swap file nhé” thông qua câu lệnh bên dưới, và một lần nữa, đường dẫn và tên tập tin không bắt buộc phải giống như của tôi, bạn có thể đặt khác, miễn là truyền đúng path là được:

Xong rồi đó, hệ thống đã sử dụng tập tin vừa tạo làm swap và tập tin này hoạt động hoàn toàn giống với một phân vùng linux-swap. Và khi hệ thống “xét thấy” cần dùng tới swap vì thiếu RAM, thì nó sẽ tự tìm tới tập tin này và sử dụng. Bạn có thể kiểm tra coi swap đã được mount chưa thông qua Bộ theo dõi hệ thống (System Monitor) hay swapon –show mà tôi đã trình bày bên trên.

2. Tự động mount tập tin swap khi khởi động:

Nếu bạn chỉ dừng lại ở phần 1 bên trên, thì hệ thống sẽ chỉ mount và dùng tập tin swap khi bạn “chỉ định” với swapon. Để hệ thống “tự mò” và mount swap file khi khởi động – tức là bạn khỏi phải swapon mỗi lần mở máy – thì bạn chỉ cần thêm dòng bên dưới vào trong /etc/fstab dưới một dòng mới. Một lần nữa, nếu bạn đặt tập tin swap ở vị trí khác thì cần truyền đúng địa chỉ, không thôi hệ thống sẽ không boot được.

Nếu bạn muốn dùng dòng lệnh, thì chạy:

Để kiểm tra thì bạn chỉ việc khởi động lại máy tính mà thôi. Ở lần khởi động sau, swapfile sẽ tự được mount và sử dụng.

3. Điều chỉnh swappiness:

Swappiness được hiểu ngắn gọn là chỉ số “ưa thích sử dụng” của hệ thống đối với swap. Chỉ số này dao động từ 0-100 và càng cao thì hệ thống càng “thích” dùng swap hơn. Khi đạt tới 100 thì hệ thống sẽ coi swap như RAM và sử dụng swap rất thường xuyên. Thông thường, mặc định là 60 và có nghĩa là khi hệ thống cảm thấy cần thêm RAM, nó sẽ tìm tới swap. Tuy nhiên, vì một lí do nào đó, bạn muốn tăng swappiness lên, chẳng hạn như Android Studio chạy hay thiếu RAM quá, thì bạn chạy lệnh bên dưới, với giá trị bên phải là giá trị swappiness. Ở đây, giả sử tôi muốn tăng swappiness lên 80:

Để kiểm tra giá trị swappiness, bạn chạy:

4. Tắt swap:

Nếu bạn đã tăng cường thêm RAM rồi thì việc dùng swap để chữa cháy là điều nên hạn chế, và nếu được thì tắt swap luôn, vì dùng swap rất dễ làm giảm tuổi thọ ổ cứng. Đương nhiên rồi, vì ổ cứng có sức chống chịu đọc-ghi cường độ cao kém hơn nhiều so với RAM. Để tắt swap, trước hết, bạn sẽ yêu cầu hệ thống dừng dùng swap:

Tất nhiên, bạn có thể dùng tên khác với đường dẫn khác cho tập tin swap của bạn, và phải truyền đúng địa chỉ vào. Có một cách “đường tắt” khác như bên dưới, nhưng cách này không hay cho lắm, vì nếu bạn có nhiều tập tin swap thì đôi khi hệ thống có thể bị treo và không khởi động được vào lần sau:

Xong rồi, bạn chỉ cần xóa dòng mount swap trong /etc/fstab và nếu muốn thì xóa luôn tập tin swap file đã tạo. Chỉ vậy là xong. Chúc các bạn “chữa cháy” thành công sau một kì nghỉ Tết vui vẻ bên gia đình và bạn bè.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.