Làm thế nào an toàn để tăng tmpfs đến nhiều hơn bộ nhớ vật lý?


11

Máy chủ của tôi có RAM 2 GB và SSD 120 GB, cùng với một số mảng RAID để lưu trữ. Hệ điều hành là Debian 8 (Linux 3.16).

Tôi có một ứng dụng mạnh mẽ của MySQL có tmpdir= /run/mysqld, được tmpfscấu hình bởi Debian thông qua /etc/default/tmpfs:

# Size limits.  Please see tmpfs(5) for details on how to configure
# tmpfs size limits.
TMPFS_SIZE=40%VM

Điều này đã từng 20%VM, khoảng 384M. Tôi đã chạy đua với nhiều người no space left on device, vì vậy tôi đã tăng nó lên 40%VM, nhưng ngay cả với khoảng 763M, nó vẫn còn quá nhỏ.

Bây giờ tôi nên thêm RAM, nhưng vì tò mò, tôi muốn biết giới hạn ở đây.

  • /dev/sdd1được gắn trên /có khoảng 50 GB miễn phí và khá nhanh (SSD Samsung 850 EVO)
  • /dev/sdd5 là phân vùng trao đổi của tôi, nó là 3.7G (ID loại fdisk là 82)
  • TMPFS_SIZEđược đặt thành 40%VM, nghĩa /runlà 763M

Bây giờ tôi biết rằng tmpfs có thể trao đổi, điều đó là tốt với tôi. Tôi muốn MySQL ghi vào RAM bất cứ khi nào có thể, nhưng nếu nó cần thêm bộ nhớ, tôi có thể cho phép hệ thống trao đổi nó trên SSD.

Vì vậy, với thiết lập của tôi, tôi có thể đẩy /runthành:

  • Lớn 300M? Đúng. Đó là mặc định.
  • 1,5 GB lớn? Có, đã thử, MySQL sử dụng tới 1,3 GB cho nó và hệ thống hoạt động như một cơ duyên. Nhưng đó vẫn là ít hơn một nửa bộ nhớ vật lý + phân vùng trao đổi.
  • 2,5 GB lớn? Đây là nhiều hơn bộ nhớ vật lý, nhưng ít hơn một nửa bộ nhớ vật lý + phân vùng trao đổi của tôi.
  • 4GB lớn? Điều này sẽ phù hợp chặt chẽ trong một nửa trao đổi vật lý +
  • Hơn? thích 10GB? nó có thể sử dụng không gian trống trên /để trao đổi nhiều hơn?

Tôi đoán quy tắc an toàn là TMPFS_SIZEkhông lớn hơn trao đổi + một nửa bộ nhớ vật lý. Tôi có thể vượt qua điều này mà không tăng phân vùng trao đổi?

Ngoài ra, nó có thể được đưa 200%VMvào /etc/default/tmpfs? Tôi đã đọc tmpfs(5)mà không biết liệu tôi có thể đặt> 100% cho việc này không.

Cuối cùng, tôi có nên làm điều đó /etc/fstabthay vào đó và không chạm vào /etc/default/tmpfs?

(biết rằng tôi chỉ thực hiện với nó mount -o remount, tôi chưa khởi động lại máy chủ)

Chỉnh sửa: cho câu hỏi cuối cùng, tôi biết nó có thể / có thể được sửa đổi bằng cách /etc/fstab(xem trích dẫn bên dưới từ trang người đàn ông), tuy nhiên tôi muốn biết cách thực hành tốt nhất, bởi vì tôi chưa bao giờ chạm vào bất cứ điều gì /etc/defaultcho đến nay.

Các tùy chọn gắn kết phức tạp hơn có thể được sử dụng bằng cách tạo một mục phù hợp trong / etc / fstab.


Câu hỏi thú vị. Tôi đoán điều này cũng có thể liên quan rất nhiều đến cài đặt bộ nhớ quá mức.
phk

Có vẻ như kích thước tmpfs tối đa sẽ là vật lý + trao đổi. Tôi đã thấy điều này trong các tài liệu kernel .
Benoit Duffez

Câu trả lời:


8

Tôi hình dung tôi chỉ có thể kiểm tra nó, vì vậy tôi chạy:

sudo mount -o remount,size=2800M /run

Làm việc như người ở:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G   45M  2.7G   2% /run

Vì vậy, tôi điền vào nó một chút:

fallocate -l 1G /run/test.img
fallocate -l 1G /run/test2.img
fallocate -l 500M /run/test3.img

Kết quả:

Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.8G  2.6G  208M  93% /run

Hệ thống vẫn hoạt động. Hoán đổi sẵn có, điều đó chứng tỏ nó đã được sử dụng:

trao đổi sẵn có thả

  • 17:10: tạo 2,5 GB tệp trong /run
  • 17:20: xóa tệp 500M

Tổng số trao đổi được giảm bởi số tiền thực hiện /run.

Tôi đã kiểm tra 10GB trên máy ảo, vì tôi không biết liệu hạt nhân sẽ từ chối kết nối lại hay chỉ có hành vi không mong muốn.

Tôi vẫn đang tìm kiếm một câu trả lời thực tế, nhưng cách thực tế cho thấy nó hoạt động.

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.