Bên cạnh đó tmpfs
và ramfs
, tùy chọn khác là các /dev/ram0
thiết bị khối. Trên các phiên bản Ubuntu gần đây, thiết bị này không tồn tại theo mặc định, nhưng có thể được tạo thông qua modprobe brd
.
Cách tiếp cận này dễ dự đoán hơn vì nó tạo ra một ext4
hệ thống tập tin thực sự và không bao giờ vượt quá giới hạn bạn chỉ định. Nhưng phải mất nhiều bước hơn để thiết lập và sử dụng RAM kém hiệu quả hơn.
Sử dụng mô-đun hạt nhân brd (/ dev / ram0)
Để tạo và khởi tạo đĩa RAM 4GB:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
Các rd_nr
tham số quy định cụ thể có bao nhiêu đĩa RAM để tạo ra (theo mặc định, nó tạo ra 16, tức là /dev/ram0
thông qua /dev/ram15
). Các rd_size
tham số là kích thước trong kilobyte . Các $(( ... ))
cú pháp cho phép bạn làm phép tính trong vỏ.
Để phân bổ đĩa RAM, ngắt kết nối và xóa brd
mô-đun hạt nhân:
umount /ramdisk
modprobe -r brd
Tạo một thiết bị khối bên trong ramfs
Ngoài ra, bạn có thể tạo một thiết bị khối bên trong ramfs
:
mkdir /ramdisk-storage /ramdisk
mount -t ramfs ramfs /ramdisk-storage
truncate -s 4G /ramdisk-storage/ramdisk.img
mkfs.ext4 /ramdisk-storage/ramdisk.img
mount /ramdisk-storage/ramdisk.img /ramdisk
Các truncate
lệnh tạo ra một tập tin rỗng của một kích thước nhất định như vậy mà nó được khởi tạo (tức là tiêu thụ bộ nhớ) theo yêu cầu.
Để phân bổ đĩa RAM, hãy bỏ qua nó và xóa ảnh đĩa:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
So sánh với tmpfs
vàramfs
Mặc dù tmpfs
và ramfs
hiệu quả hơn so với sử dụng một thiết bị khối, dưới đây là một số nhược điểm của chúng.
tmpfs
có thể trao đổi vào đĩa. Điều này hiệu quả hơn, nhưng có thể đôi khi bạn muốn có một đĩa RAM thuần:
- Các tệp bạn đang làm việc rất nhạy cảm (ví dụ: các tệp từ phân vùng được mã hóa).
- Bạn đang thực hiện kiểm tra hiệu năng và bạn không muốn I / O của đĩa trở thành một yếu tố (thời gian ghi SSD có thể thay đổi rất nhiều).
- Bạn đang giải nén một tệp lớn và bạn không muốn làm hao mòn ổ SSD của mình.
ramfs
dễ dàng thiết lập, lấy lại dung lượng khi bạn xóa tệp và sử dụng RAM hiệu quả hơn (hệ thống không đệm các tệp vì nó biết rằng chúng nằm trong RAM). Nhưng nó có nhược điểm và bất ngờ riêng:
Các df
tiện ích không báo cáo việc sử dụng không gian:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
Không có tham số giới hạn kích thước. Nếu bạn đặt quá nhiều trong ramdisk, hệ thống của bạn sẽ bị treo.
Các tệp thưa thớt có thể trở nên không rõ ràng khi bạn ít mong đợi nhất. Sáng nay, tôi đã sao chép một hình ảnh VM (150G, nhưng 49G được sử dụng trên đĩa) sang ramfs
(tôi có 128G RAM). Điều đó đã làm việc. Nhưng khi tôi sao chép từ các ramfs
đến đích, hệ thống của tôi đã trở thành không phản hồi. Các cp
tiện ích rõ ràng đã lấp đầy các lỗ hổng trên đọc , nhưng không viết.
Cả hai tmpfs
và ramfs
có thể hành xử khác với một ext4
hệ thống tập tin thực sự . Tạo một thiết bị khối trong RAM và khởi tạo nó ext4
để tránh điều này.
Để so sánh sâu hơn: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs