Używając Linuksa, kiedy uruchamiam, automatycznie mam 16 ramdysków 16 MB, jednak chciałbym utworzyć jeden naprawdę duży ramdysk do testowania oprogramowania.
Odkryłem, że mogę dostosować rozmiar ramdysków już w systemie za pomocą parametru rozruchowego jądra, ramdisk_size
jednak powoduje to, że wszystkie 16 ramdysków (/ dev / ram0 - / dev / ram15) ma określony rozmiar. Więc jeśli chcę utworzyć ramdysk o pojemności 1 GB, potrzebowałbym 16 GB pamięci.
Zasadniczo chcę utworzyć ramdysk o pojemności 10 GB, który byłby / dev / ram0. Jak miałbym to zrobić? Zakładam, że istnieje parametr rozruchowy jądra, ale po prostu go nie znalazłem.
Aby zrobić duży dysk RAM po rozruchu bez bałagania się parametrami jądra. Użyj tmpfs, utwórz plik, zamontuj go za pomocą pętli i zamontuj za pomocą systemu plików:
Prawdopodobnie trochę obniżenia wydajności przez wiele różnych warstw ... ale przynajmniej działa.
źródło
Inną opcją jest użycie urządzeń pętli (w przeciwieństwie do funkcji loobpack montowania, jak wspomniano wcześniej):
Teraz / dev / loop jest legalnym urządzeniem blokowym, na którym Twoja aplikacja działałaby jak fizyczne urządzenie lub ramdysk, tyle że ma kopię zapasową pliku. Możesz gdzieś zamontować lub aplikacja działa na węźle urządzenia, który implementuje standardowe blokowe elementy ioctls. Zapisuje pamięć RAM systemu i jest przydatna do przechowywania przypadków testowych itp.
(Możesz nawet fdisk myfs.img, utworzyć na nim partycje i użyć --offset i --sizelimit z losetup, aby skierować każdą / dev / loopX do określonych partycji w obrazie, więc loop0, loop1 stają się jak sdc1, sdc2 itp. )
źródło
Zamiast tego możesz użyć pliku pętli. Wystarczy utworzyć plik pętli o żądanym rozmiarze (jeśli chcesz umieścić go w ramdysku tmpfs, dobrze), a następnie sformatuj plik pętli i zamontuj go.
źródło
Przedmiotem napędu ramdrive jest prędkość. Tmpfs nie jest dyskiem. Urządzenia pętli nie są dyskami, ale można umieścić obraz dysku na urządzeniu pętli. Dyski RAM „są” dyskami i bardzo szybkimi dyskami. Spróbuj uruchomić:
i wtedy:
Zobaczysz, co mam na myśli! Ale hdparm czasami niszczy napęd pamięci RAM. Musisz to zrobić jeszcze raz.
Czasami nie ma urządzeń / dev / ram. Aby zrobić:
ale nie będzie miał żadnego rozmiaru. Aby nadać temu rozmiar:
i zatrzyma się, gdy dysk będzie pełny. Wielkość maksymalna jest określana przez jądro config parmezanem:
CONFIG_BLK_DEV_RAM_SIZE
.Następnie po prostu sformatuj, tj
I zamontuj to:
Moim ulubionym jest debugowanie kodu przechowywanego na dysku RAM. Kompilacje mają co najmniej 10-krotną prędkość kodu przechowywaną na dysku twardym. Tabele bazy danych przechowywane na ramdrive również latają, ale musisz mieć skrypt, który okresowo zapisuje na dysku twardym. Większość administratorów nie ma odwagi umieszczać danych na dyskach RAM. A niektóre tabele są za duże.
źródło
Na Lighthouse 64 (puupy Linux oparty na Slackware) zrobiłem to;
Tam masz ramdysk zamontowany jako katalog, w
/mnt/dvd
którym możesz skopiować wklej zapisz, rób wszystko tak, jak w katalogu hd oprócz ram. pamiętaj, aby zapisać pliki w HD przed zamknięciem.źródło