इसके अलावा tmpfs
और ramfs
, एक और विकल्प है /dev/ram0
ब्लॉक युक्ति। हाल के उबंटू संस्करणों पर, यह डिवाइस डिफ़ॉल्ट रूप से मौजूद नहीं है, लेकिन इसके माध्यम से बनाया जा सकता है modprobe brd
।
यह दृष्टिकोण अधिक अनुमानित है क्योंकि यह एक वास्तविक ext4
फाइल सिस्टम बनाता है और आपके द्वारा निर्दिष्ट सीमा से अधिक नहीं होता है। लेकिन यह स्थापित करने के लिए अधिक कदम उठाता है, और कम कुशलता से रैम का उपयोग करता है।
Brd कर्नेल मॉड्यूल का उपयोग करना (/ dev / ram0)
4GB RAM डिस्क बनाने और शुरू करने के लिए:
mkdir /ramdisk
modprobe brd rd_nr=1 rd_size=$((4 * 1048576))
mkfs.ext4 /dev/ram0
mount /dev/ram0 /ramdisk
rd_nr
पैरामीटर निर्दिष्ट करता है कि कितने रैम डिस्क बनाने के लिए (डिफ़ॉल्ट रूप से, यह 16 बनाता है, यानी /dev/ram0
के माध्यम से /dev/ram15
)। rd_size
पैरामीटर में आकार है किलोबाइट । $(( ... ))
वाक्य रचना आप खोल में गणित काम करने दिया।
रैम डिस्क से निपटने के लिए, इसे अनमाउंट करें और brd
कर्नेल मॉड्यूल को हटा दें :
umount /ramdisk
modprobe -r brd
अंदर एक ब्लॉक डिवाइस बनाना ramfs
वैकल्पिक रूप से, आप अंदर एक ब्लॉक डिवाइस बना सकते हैं 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
truncate
आदेश पर मांग दिए गए आकार ऐसी है कि वह आरंभ नहीं हो जाता की एक खाली फ़ाइल (यानी खपत स्मृति) पैदा करता है।
रैम डिस्क से निपटने के लिए, इसे umount करें और डिस्क छवि को हटा दें:
umount /ramdisk
rm /ramdisk-storage/ramdisk.img
के साथ तुलना tmpfs
औरramfs
हालांकि tmpfs
और ramfs
एक ब्लॉक डिवाइस का उपयोग कर से अधिक प्रभावी हैं, कृपया नीचे उनकी कमियां हैं।
tmpfs
डिस्क पर स्वैप कर सकते हैं। यह अधिक कुशल है, लेकिन ऐसा समय हो सकता है जब आप एक शुद्ध रैम डिस्क चाहते हैं:
- आप जिन फ़ाइलों के साथ काम कर रहे हैं वे संवेदनशील हैं (जैसे एन्क्रिप्टेड पार्टीशन से फ़ाइलें)।
- आप प्रदर्शन परीक्षण कर रहे हैं और आप डिस्क I / O को एक कारक नहीं बनाना चाहते हैं (SSD लिखना समय बहुत भिन्न हो सकता है)।
- आप एक बड़ी फ़ाइल खोल रहे हैं और आप अपना SSD नहीं पहनना चाहते हैं।
ramfs
सेट करना आसान है, फ़ाइलों को हटाने के बाद एक बार फिर से स्पेस दें और रैम का अधिक कुशलता से उपयोग करें (सिस्टम फ़ाइलों को बफर नहीं करता है क्योंकि यह जानता है कि वे रैम में हैं)। लेकिन इसके अपने डाउनसाइड्स और आश्चर्य हैं:
df
उपयोगिता स्थान उपयोग रिपोर्ट नहीं करता:
root@cello-linux:~# df -h /ramdisk
Filesystem Size Used Avail Use% Mounted on
ramfs 0 0 0 - /ramdisk
कोई आकार सीमा पैरामीटर नहीं है। यदि आप रैमडिस्क में बहुत अधिक डालते हैं, तो आपका सिस्टम लटका रहेगा।
जब आप कम से कम इसकी उम्मीद करते हैं तो स्पार्स फाइलें असुरक्षित हो सकती हैं। आज सुबह, मैंने एक वीएम छवि (150 जी, लेकिन डिस्क पर उपयोग किए जाने वाले 49 जी) की नकल की ramfs
(मेरे पास 128 जी रैम है)। वह काम किया। लेकिन जब मैं कॉपी किया सेramfs
गंतव्य के लिए, अपने सिस्टम अनुत्तरदायी बन गया। cp
उपयोगिता जाहिरा तौर पर छेद भरा पढ़ा है, लेकिन लिखने पर नहीं।
दोनों tmpfs
और ramfs
एक वास्तविक तुलना में अलग तरह व्यवहार कर सकता है ext4
फाइल सिस्टम। रैम में एक ब्लॉक डिवाइस बनाना और इसे इससे ext4
बचना।
अधिक गहराई से तुलना के लिए: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
mount -o size=16G -t tmpfs none /mnt/tmpfs