Hệ thống tệp bộ nhớ ảo TMPFS trong Linux

Tác giả sysadmin, T.Một 10, 2023, 02:50:18 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Hệ thống tệp bộ nhớ ảo TMPFS trong Linux


Tmpfs, trước đây được gọi là shmfs, là một hệ thống tệp tạm thời và đề cập đến một hệ thống tệp nằm trong bộ nhớ và/hoặc (các) phân vùng trao đổi. Tmpfs không lưu trữ dữ liệu tệp trên bộ lưu trữ thông thường, không dễ bay hơi. Thay vào đó, nhân UNIX quản lý bộ nhớ ảo, nơi chứa các tệp Tmpfs. Lý do chính mà Tmpfs được tạo ra là để cải thiện hiệu suất bằng cách cho phép các tệp tạm thời được ghi và đọc từ đó mà không cần sử dụng I/O của đĩa hoặc mạng.


Trong bài viết này, chúng ta sẽ xem tổng quan về hệ thống tệp Tmpfs trong Linux.

1. Ưu điểm của việc sử dụng hệ thống Tmpfs

Hệ thống tệp bộ nhớ truy cập ngẫu nhiên trước đây (ramfs) trong Linux đã được thay thế bằng hệ thống tệp tạm thời mới (Tmpfs). Điều này là do RAMFS cũ không giải quyết đúng các tình huống khi hệ thống hết RAM.

Việc gắn các thư mục dưới dạng Tmpfs có một số lợi ích như:

  • Để tăng tốc truy cập vào các tệp bên trong chúng.
  • Để đảm bảo rằng mỗi khi hệ thống khởi động lại, nội dung của các thư mục sẽ tự động bị xóa.
  • Tmpfs tăng tốc độ thao tác tệp trong khi vẫn giữ nguyên ngữ nghĩa của tệp UNIX.
  • Tmpfs không cần dung lượng đĩa cố định hoặc dành riêng cho các tệp và không có tác động bất lợi đến hiệu suất.

Thay vì sử dụng bộ nhớ vật lý chuyên dụng như "đĩa RAM", Tmpfs lưu trữ dữ liệu tệp trong bộ đệm trang của hệ điều hành. Nó giúp đọc và ghi tệp dễ dàng hơn, cho phép hệ thống tệp phát triển và thu nhỏ nhanh chóng mà không sử dụng bất kỳ dung lượng ổ đĩa nào và không ảnh hưởng đến hiệu suất tổng thể của hệ thống.

2. Gắn kết Tmpfs

Sử dụng lệnh mount và chọn "tmp" làm loại hệ thống tệp để tạo hệ thống tệp loại Tmpfs. Vì Tmpfs luôn sử dụng bộ nhớ làm tài nguyên hệ thống tệp nên tham số tài nguyên để gắn kết (ví dụ: thiết bị thô) bị bỏ qua. Vì Tmpfs luôn sử dụng bộ nhớ làm tài nguyên hệ thống tệp nên tham số tài nguyên để gắn (chẳng hạn như thiết bị thô) không được tính đến.

Hiện tại, Tmpfs không có tùy chọn gắn kết. Nhiều tùy chọn gắn kết thông thường không liên quan đến ngữ cảnh của Tmpfs. Chẳng hạn, việc tạo một Tmpfs mount "chỉ đọc" không có ý nghĩa gì vì chúng không chứa bất kỳ dữ liệu nào khi chúng được mount lần đầu tiên. Tmpfs hỗ trợ tất cả các loại tệp, bao gồm các tệp thiết bị đặc biệt liên kết tượng trưng, khối và ký tự - ngữ nghĩa tệp UNIX. Mặc dù có thể có nhiều hệ thống tệp dựa trên Tmpfs được gắn trên một hệ thống, nhưng tất cả chúng phải chia sẻ cùng một nhóm tài nguyên.

Vì nội dung của hệ thống tệp dựa trên bộ nhớ bị xóa sau khi khởi động lại hệ thống hoặc thao tác ngắt kết nối và vì các tệp này có thời gian tồn tại rất ngắn nên /tmp là vị trí phù hợp nhất cho chúng (do đó được gọi là Tmpfs). Điều này chỉ ra rằng /usr/tmp không phải là vị trí thích hợp để gắn hệ thống tệp Tmpfs vì nội dung của nó được giữ lại giữa các lần khởi động lại.

3. Kích thước của Tmpfs

Lượng không gian trống mà Tmpfs có thể sử dụng tỷ lệ thuận với lượng không gian hoán đổi chưa sử dụng. Kích thước của hệ thống tệp Tmpfs mở rộng để phù hợp với các tệp được thêm vào nó, nhưng người dùng thường xuyên sử dụng Tmpfs phải biết rằng sự tăng trưởng này đi kèm với một số chi phí vốn có. Tmpfs chia sẻ tài nguyên của nó với các phân đoạn dữ liệu và ngăn xếp của các chương trình đang được thực thi.

Nếu các hệ thống tệp Tmpfs ở gần dung lượng tối đa cho phép, thì có thể việc thực thi các chương trình rất lớn bị ảnh hưởng. Tmpfs có thể chỉ định tất cả không gian hoán đổi của hệ thống, ngoại trừ 4 MB. Điều này là đủ để đảm bảo rằng hầu hết các chương trình có thể thực thi. Tuy nhiên, có thể một số chương trình không thể thực thi nếu hệ thống tệp Tmpfs gần hết công suất. Người dùng có kế hoạch chạy các chương trình lớn và sử dụng rộng rãi Tmpfs nên tìm cách tăng không gian hoán đổi có sẵn trong hệ thống.

4. Công dụng của Tmpfs

Việc sử dụng Tmpfs bao gồm:

  • Luôn luôn có một gắn kết bên trong kernel mà không thể nhìn thấy. Bộ nhớ dùng chung SYSV và ánh xạ ẩn danh dùng chung đều sử dụng Tmpfs. Tmpfs mount độc lập với CONFIG_TMPFS. Phần người dùng có thể nhìn thấy của Tmpfs sẽ không được tạo nếu CONFIG_TMPFS không được đặt. Tuy nhiên, các cơ chế bên trong luôn tồn tại.
  • Bộ nhớ chia sẻ POSIX (shm_open, shm_unlink) yêu cầu tmpfs được gắn tại /dev/shm cho glibc phiên bản 2.2 trở lên. Điều này có thể được giải quyết bằng cách đưa dòng sau vào tệp /etc/fstab:

Mã nguồn [Chọn]
tmpfs /dev/shm tmpfs defaults 00
  • Nếu được yêu cầu, hãy tạo thư mục nơi bạn muốn gắn Tmpfs. Bộ nhớ dùng chung được sử dụng bởi SYSV không cần gắn kết Tmpfs. Điều này được thực hiện với giá đỡ bên trong. Để sử dụng bộ nhớ dùng chung SYSV trong các phiên bản kernel 2.3, phải gắn shm fs (tiền thân của Tmpfs).
  • Nó thực sự hữu ích đối với một số người dùng khi gắn nó vào các vị trí như /tmp và /var/tmp và có một đĩa trao đổi khá lớn. Ngoài ra, các tệp Tmpfs được gắn vòng lặp hiện đang hoạt động. Do đó, phần lớn mkinitrd của các bản phân phối sẽ hoạt động với một Tmpfs.
  • Và có quá nhiều để liệt kê.

5. Tùy chọn gắn kết cho Tmpfs

Hãy khám phá một số tùy chọn gắn kết với Tmpfs:

  • size: Điều này chỉ định số byte tối đa có thể được sử dụng cho một phiên bản Tmpfs. Theo mặc định, chỉ có thể sử dụng một nửa RAM vật lý mà không có dung lượng hoán đổi. Nếu các phiên bản Tmpfs được tạo lớn hơn mức cần thiết, máy sẽ bị kẹt trong bế tắc vì trình xử lý OOM sẽ không thể giải phóng bộ nhớ đó.
  • nr blocks: Cũng giống như tùy chọn kích thước. Tuy nhiên, nó nằm trong khối PAGE_CACHE_SIZE.
  • nr inodes: Đó là giới hạn trên của inodes cho trường hợp này. Giá trị mặc định là một nửa số trang RAM vật lý hoặc số trang RAM lowmem (trên hệ thống có highmem), tùy theo giá trị nào ít hơn.

Thông thường, các tệp Tmpfs sẽ bị xóa trong quá trình khởi động lại hệ thống. Nhưng nếu bạn muốn giữ chúng, bạn có thể sử dụng systemd-tmpfiles. Chúng tôi khuyên bạn nên đọc các trang hướng dẫn nếu muốn tìm hiểu thêm về Tmpfs.