Khi máy tính cần chạy các chương trình lớn hơn bộ nhớ vật lý sẵn có, hầu hết các hệ điều hành ngày nay sử dụng công nghệ hoán đổi. Đây là công nghệ mà trong đó một phần bộ nhớ tạm thời được lưu trữ trên ổ cứng trong khi các dữ liệu khác được di chuyển vào trong các không gian nhớ vật lý. Dưới đây là một số kỹ thuật giúp bạn quản lý tốt hơn sự hoán đổi trên các hệ thống Linux và có được khả năng thực thi tốt nhất cho các hoán đổi hệ thống con.
Linux phân chia bộ nhớ truy cập ngẫu nhiên (RAM) thành các ngăn nhớ gọi là các trang. Hoán đổi là quá trình ở đó một trang nhớ được sao chép tới không gian được cấu hình trước trên ổ cứng (không gian hoán đổi) nhằm giải phóng trang nhớ đó. Kích thước được kết hợp từ bộ nhớ vật lý và không gian hoán đổi là tổng dung lượng bộ nhớ ảo.
Có 2 lý do quan trọng mà cần phải thực hiện việc hoán đổi. Trước tiên khi hệ thống yêu cầu bộ nhớ lớn hơn bộ nhớ vật lý hiện tại đang có thì nhân hệ thống sẽ được chuyển sang các trang được sử dụng ít hơn và nhường bộ nhớ cho các ứng dụng đang cần xử lý ngay. Thứ hai, số lượng các trang quan trọng được sử dụng bởi một ứng dụng trong suốt giai đoạn khởi động có thể chỉ được dùng để khởi tạo rồi sau đó không dùng lại nữa. Hệ thống có thể chuyển đổi giữa các trang này và giải phóng bộ nhớ cho các ứng dụng khác hay thậm chí cho cả cache lưu trữ ổ.
Tuy nhiên việc hoán đổi cũng không phải hoàn toàn tốt. So với bộ nhớ, các ổ chạy rất chậm. Tốc độ bộ nhớ có thể được đo bằng nano giây (ns) trong khi tốc độ ổ đo bằng mili giây (ms), do đó truy cập ổ chậm hơn hàng chục nghìn lần truy cập vào bộ nhớ vật lý. Càng thực hiện hoán đổi nhiều thì hệ thống sẽ càng chậm. Đôi khi hoán đổi quá mức hoặc nhiều lần liên tiếp sẽ xảy ra ở một trang được chuyển ra rồi ngay lập tức lại được chuyển vào rồi lại chuyển ra rồi cứ thế tiếp tục. Trong mỗi trường hợp thì hệ thống sẽ tìm ra các vùng nhớ trống và cùng lúc đưa vào chạy ứng dụng. Trường hợp này chỉ cần thêm RAM.
Linux có hai loại không gian hoán đổi: partition hoán đổi và tập tin hoán đổi. Partition hoán đổi là một phần độc lập của ổ cứng được sử dụng chỉ để hoán đổi; không một tập tin nào khác được lưu trữ ở đây. Tập tin hoán đổi là một tập tin đặc biệt trong tập tin hệ thống có khả năng lưu trữ ở mọi nơi trong hệ thống và các tập tin dữ liệu.
Để biết được dung lượng không gian hoán đổi mà bạn có, sử dụng lệnh swapon -s. Bạn sẽ thu được kết quả như sau:
Filename Type Size Used Priority /dev/sda5 partition 859436 0 -1
Mỗi dòng liệt kê một không gian hoán đổi riêng được sử dụng bởi hệ thống. Ở đây, trường ‘Type’ chỉ ra rằng không gian hoán đổi này là partition chứ không phải file, và tại trường ‘Filename’ ta thấy rằng hoán đổi xảy ra ở ổ đĩa sda5. ‘Size’ hiển thị dạng kilo byte và trường ‘Used’ cho biết số lượng kilo byte không gian hoán đổi đã sử dụng (trường hợp này là 0). ‘Priority’ cho Linux biết không gian hoán đổi nào được dùng đầu tiên. Một điều tiện lợi khi Linux hoán đổi hệ thống con là nếu bạn có hai hay nhiều không gian hoán đổi (trên 2 thiết bị khác nhau) với cùng một độ ưu tiên, thì Linux sẽ xen kẽ hoán chuyển các hoạt động giữa chúng, do đó có thể năng tốc độ thực thi.
Để thêm các partition hoán đổi vào hệ thống trước hết bạn cần phải chuẩn bị. Bước 1 đảm bảo partition đó được đánh dấu như là partition hoán đổi và bước tiếp theo là tạo các hoán đổi tập tin hệ thống. Để kiểm tra các partition đã được đánh dấu chưa bạn chạy lệnh:
fdisk -l /dev/hdb
Thay thế /dev/hdb bằng thiết bị của ổ cứng trên hệ thống của bạn với partition hoán đổi trên nó. Kết quả như sau:
Device Boot Start End Blocks Id System /dev/hdb1 2328 2434 859446 82 Linux swap / Solaris
Nếu partition chưa được đánh dấu thì bạn cần phải sửa lại nó bằng cách chạy fdisk và dùng tùy chọn ‘t’. Hãy cẩn thận khi làm việc với các các partition. Bạn không muốn xóa đi những partition quan trọng bởi bị lỗi hay thay đổi id của partition khi hệ thống mắc lỗi trong việc hoán đổi. Tất cả dữ liệu trên một partition hoán đổi sẽ bị mất do đó hãy kiểm tra lại thay đổi bạn tạo ra. Đồng thời cũng chú ý rằng Solaris sử dụng cùng ID giống không gian hoán đổi Linux cho cùng các partition, phải cẩn thận để không xóa các partition Solaris đó.
Ngay khi partition được đánh dấu hoán đổi, bạn hãy dùng lệnh mkswap (make swap) như sau:
mkswap /dev/hdb1
Nếu không có lỗi xảy ra thì hoán đổi của bạn đã sẵn sàng được sử dụng. Để kích hoạt hãy nhập:
swapon /dev/hdb1
Bạn có thể kiểm tra bằng lệnh swapon -s. Để cài đặt không gian hoán đổi tự động khi khởi động bạn cần thêm một entry cho /etc/fstab file, nơi chứa một danh sách các tập tin hệ thống và các không gian hoán đổi cần cài đặt tại thời gian khởi động. Mỗi dòng có định dạng sau:
<file system> <mount point> <type> <options> <dump> <pass>
Khi không gian hoán đổi là một loại đặc biệt của tập tin hệ thống thì rất nhiều các tham số không tương thích. Đối với không gian hệ thống, hãy thêm:
/dev/hdb1 none swap sw 0 0
Trong đó dev/hdb là một ngăn hoán đổi. Ngăn này không có điểm lắp đặt cố định, do đó ta có none. Loại hoán đổi với tùy chọn sw và hai tham số cuối cùng không được sử dụng nên chúng có giá trị là 0. Để kiểm tra xem không gián hoán đổi đã được tự động cài đặt mà không cần phải khởi động lại thì bạn có thể dùng lệnh swapoff -a (tắt các không gian hoán đổi) rồi sau đó dùng lệnh swapon -a (cài đặt tất cả mọi không gian hoán đổi liệt kê tại tập tin /etc/fstab) rồi kiểm tra lại bằng lệnh swapon –s
Tập tin hóan đổi
Cũng giống như partition hoán đổi, Linux hỗ trợ cho bạn tạo được một tập tin hoán đổi, chuẩn bị và lắp đặt cùng kiểu với partition hoán đổi. Lợi ích của các tập tin hoán đổi đó là bạn không cần phải tìm kiếm một partition trống hay phân chia lại ổ để thêm vào các không gian hoán đổi.
Để tạo một tập tin hoán đổi, trước tiên hãy dùng lệnh dd để tạo một tập tin trống. Ví dụ tạo một tập tin 1GB, nhập:
dd if=/dev/zero of=/swapfile bs=1024 count=1048576
/swapfile là tên của tập tin hoánđổi và 1048576 là kích cỡ tính bằng kilo byte (ví dụ 1GB).
Chuẩn bị tập tin hoán đổi bạn dùng mkswap như khi tạo một partition, nhưng ở đây dùng tên của tập tin hoán đổi:
mkswap /swapfile
và tương tự, cài đặt tập tin hoán đổi dùng lệnh swapon: swapon /swapfile.
Đầu vào /etc/fstab của một tập tin hoán đổi có dạng như sau:
/swapfile none swap sw 0 0
Cần phải có bao nhiêu không gian hoán đổi?
Có thể chạy hệ thống Linux mà không cần một không gian hoán đổi và hệ thống sẽ hoạt động tối nếu như ta có một bộ nhớ khổng lồ—Nhưng nếu máy tính chạy tràn bộ nhớ vật lý thì hệ thống sẽ bị phá hủy và không có khả năng làm gì khác, do đó bạn nên có một không gian hoán đổi nhất là từ khi không gian đĩa đang ngày càng rẻ hơn.
Câu hỏi được quan tâm nhiều nhất đó là giá thành bao nhiêu? Các phiên bản hệ điều hành Unix cũ hơn (ví dụ như Sun OS và Ultrix) yêu cầu một không gian hoán đổi gấp 2 hay 3 lần không gian bộ nhớ vật lý. Các hệ điều hành ngày nay (ví dụ như Linux) không yêu cầu nhiều không gian hoán đổi nhưng không gian này có thể được sử dụng khi bạn cấu hình máy. Quy luật như sau: 1) đối với hệ thống máy để bàn, sử dụng không gian hoán đổi của hai bộ nhớ hệ thống, khi đó bạn có thể chạy nhiều ứng dụng (nhiều trong số đó có thể sẽ bị tạm ngừng và dễ bị hoán đổi), bạn cũng có thêm dung lượng RAM cho các ứng dụng đang hoạt động. 2) Đối với máy chủ, có lượng hoán đổi ít hơn (một nửa của bộ nhớ vật lý) do đó bạn dễ dàng hoán đổi khi cần nhưng hạn chế số lượng không gian hoán đổi được sử dụng và nâng cấp cho RAM khi cần. 3) Đối với các máy để bạn cũ hơn (chỉ với 128MB), hãy dùng càng nhiều không gian hoán đổi càng tốt, thậm chí có thể lên tới 1GB.
Linux 2.6 kernel có thêm các tham số chủ đạo được gọi là swappiness cho phép các quản trị viên đặt các phương pháp hoán đổi Linux. Đó là các số từ 0 đến 100. Các giá trị càng cao thì càng nhiều trang đuợc hoán đổi, và các giá trị càng thấp thì càng nhiều ứng dụng được giữ lại trong bộ nhớ thậm chí là bị tạm ngừng. Andrew Morton cho biết ông đã chạy các máy để bàn với mức hoán đổi là 100.
Một cách nghĩ khác cho ý kiến của Morton đó là nếu bộ nhớ được hoán đổi quá nhanh thì thời gian khôi phục ứng dụng sẽ yếu đi bởi vì khi cửa sổ ứng dụng được kích thì hệ thống sẽ chuyển ứng dụng quay trở về bộ nhớ, điều này sẽ mất rất nhiều thời gian.
Giá trị mặc định của swappiness là 60. Bạn có thể thay đổi chúng tùy ý bằng cách nhập:
echo 50 > /proc/sys/vm/swappiness
Kết luận
Quản lý không gian hoán đổi là nhiệm vụ chủ chốt của quản trị viên hệ thống. Với kế hoạch tốt và sử dụng hợp lý thì hoán đổi có thể cung cấp tới bạn nhiều lợi ích. Đừng lo ngại về kinh nghiệm và luôn luôn kiểm tra hệ thống để chắc chắc rằng bạn đang đạt được những kết quả như mong muốn.