Odpowiedzi:
Jest to całkowicie normalne w systemach Linux. Jest to rodzaj działania przygotowawczego na wypadek, gdyby dyski RAM były wymagane. Każdy z nich ma rozmiar 64 MiB, co jest bardzo niską wartością. W razie potrzeby rozmiar zostanie automatycznie zwiększony.
Dlaczego nagle w Wily dostępnych jest 16 dysków RAM, można to wytłumaczyć z trudem.
Testowałem domyślne dyski RAM na:
Sterownik dysku RAM to sposób na wykorzystanie głównej pamięci systemowej jako urządzenia blokowego. Jest wymagany dla initrd, początkowego systemu plików używanego, jeśli trzeba załadować moduły, aby uzyskać dostęp do głównego systemu plików (patrz Dokumentacja / initrd.txt). Można go również użyć do tymczasowego systemu plików do pracy kryptograficznej, ponieważ zawartość jest usuwana przy ponownym uruchomieniu.
Dysk RAM dynamicznie rośnie, gdy potrzeba więcej miejsca. Robi to za pomocą pamięci RAM z bufora pamięci podręcznej. Sterownik zaznacza używane bufory jako brudne, aby podsystem maszyny wirtualnej nie próbował ich później odzyskać.
Dysk RAM domyślnie obsługuje do 16 dysków RAM i można go ponownie skonfigurować w celu obsługi nieograniczonej liczby dysków RAM (na własne ryzyko). Wystarczy zmienić symbol konfiguracyjny BLK_DEV_RAM_COUNT w menu Blokuj konfigurację sterowników i (ponownie) zbudować jądro.
Nie mam pojęcia, dlaczego fdisk nagle zgłasza / dev / ram.
Możesz jednak powiedzieć fdisk, aby zgłaszał tylko określone urządzenia.
fdisk -l /dev/sd*
Wymieni prawdziwe dyski.
Alternatywnie możesz użyć parted i lsblk.
Podzielone wyjście dla jednego napędu tutaj.
Model: ATA Samsung SSD 840 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 2096kB 120GB 120GB extended boot
7 2097kB 26.2GB 26.2GB logical ext4
5 26.2GB 36.7GB 10.5GB logical ext4
6 36.7GB 47.2GB 10.5GB logical ext4
Odpowiadające wyjście lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 1K 0 part
├─sda5 8:5 0 9.8G 0 part /mnt/Links
├─sda6 8:6 0 9.8G 0 part
└─sda7 8:7 0 24.4G 0 part /
Wiem, że ten wątek jest stary, ale natknąłem się na niego dopiero niedawno. Po zainstalowaniu Slackware 14.2 mam te same 16 dysków RAM na wyjściu
fdisk -l
. Zbadałem trochę dalej i odkryłem, że w pakiecie „util-linux”, którego częścią jest fdisk (między innymi), wybór tego, co fdisk uważa za urządzenie blokowe, znacznie się zmienił. W pakiecie util-linux w wersji 2.21 decyzja ta opiera się na zgłoszonej geometrii dysku, podczas gdy w bieżącej wersji 2.72 dane wyjściowe / proc / partitions są analizowane. Według moich wyszukiwań w Internecie ramdyski były tam w Linuksie od jądra 2.4, fdisk po prostu ich nie pokazał. Ponieważ denerwuje mnie lista wielu „dysków”, które nie są prawdziwymi dyskami, stworzyłem łatkę dla fdisk:
diff -Nur util-linux-2.27.1_ori/disk-utils/fdisk-list.c util-linux-2.27.1_fdisk-no-ram-disks/disk-utils/fdisk-list.c
--- util-linux-2.27.1_ori/disk-utils/fdisk-list.c 2015-10-06 08:59:51.572589724 +0200
+++ util-linux-2.27.1_fdisk-no-ram-disks/disk-utils/fdisk-list.c 2016-08-16 15:55:14.840952091 +0200
@@ -312,6 +312,10 @@
if (devno <= 0)
continue;
+ /* dont list RAM disks */
+ if (strstr(line, "ram") && devno >= 256)
+ continue;
+
if (sysfs_devno_is_lvm_private(devno) ||
sysfs_devno_is_wholedisk(devno) <= 0)
continue;
Może to pomaga niektórym innym ...
Post Johannesa jest poprawny. Dyski RAM są w jądrze od dłuższego czasu, zmieniło się zachowanie fdisk. Zamiast łatać fdisk, napisałem prosty skrypt perla (5 linii kodu, 6 linii komentarza) do obsługi tego problemu. Włożyłem to ~/bin/fdisk-l
, a teraz po prostu pamiętam, aby nie umieszczać spacji między fdisk
i -l
.
#! /usr/bin/perl -w
# Run fdisk -l and filter out the 16 /dev/ram devices.
# Sun Mar 5 16:13:45 2017. Jeff Norden, jeff(at)math.tntech.edu
$_=`sudo fdisk -l`; #include sudo we don't have to be root
# weed out ram disks. The seemingly contradictory s (single) and m (multiline)
# flags allow "." to match "\n" and "^" to match at all beginning-of-lines.
s|^Disk /dev/ram.*?\n\n\n||smg;
# Do better than blank lines separating devices. Handle odd cases when there
# are more than two blank lines between devices or none at the end.
$hrule= '='x60 . "\n";
s/(\n\n\n+)|(\n+$)/\n$hrule/g;
print($hrule, $_);
Od kwietnia 2017 r. Dyski RAM nie pojawiają się domyślnie w bieżącym jądrze Ubuntu, więc problem został rozwiązany. Zobacz: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1593293
To zachowanie jest regulowane przez opcje jądra, które można zmienić tylko poprzez rekompilację niestandardowego jądra. Możesz zmienić rozmiar urządzeń RAM *, używając parametru GRUB ramdisk_size, ale nie licząc. Jest to bezużyteczne, ponieważ nawet jeśli masz dużo pamięci każdy ramdysk zwiększy się do ustawionego rozmiaru. Na przykład, jeśli chcesz ramdysku 8 GB - co ja, patrz poniżej - otrzymasz 16x 8 GB instancji. Nie wiem, czy jest to nieszkodliwe, jeśli nie używasz większości z nich, ale niechętnie zepsuję mój system, jeśli tak nie jest.
Chcę użyć urządzenia 8 GB / dev / ram do wykonania kopii lustrzanej partycji dysku twardego 8 GB w celu umieszczenia na nim obszaru dysku twardego. Moja aplikacja automatycznie wypisze bloki do zwykłej pamięci masowej w oparciu o wolne miejsce, więc nie ma znaczenia, że jest małe.
W przypadku zapisu poniżej mdadm powinno to spowodować, że zapisy będą płonąć szybko, jeśli są pęknięte, a strona HDD lustra nadrabia zaległości, gdy wszystko jest cichsze, aby zapewnić przynajmniej pewną ochronę danych. Korzystałem z tej konfiguracji w systemie Solaris, ale wydaje się, że nie jest to możliwe w przypadku Linuksa, ponieważ jest wyprowadzany z pudełka.
Ponieważ pamięć RAM jest o rząd wielkości szybsza niż SSD, powinna to być wygrana, ale nie mogę jej wypróbować. Jak zauważyli inni, jeśli zbudujesz RAID1 przy pomocy tmpfs, nie da się go ponownie złożyć przy starcie, ponieważ krok inicjujący tmpfs jest o wiele za późno na starcie - podczas montowania. Twoje MD są do tego czasu dobrze zbudowane, więc się nie udaje i trzeba je odbudować ręcznie.
Urządzenia OTOH / dev / ram * byłyby do tego idealne - gdybyś mógł je skonfigurować. Są to pierwsze rzeczy, które się konfigurują, a ram0 to system początkowy / system plików.