fdisk -l zeigt 16 RAM-Datenträger / dev / ram0… / ram15 an

17

Seit dem Upgrade auf 15.10 werden fdisk -l16 RAM-Datenträger gemeldet ( /dev/ram0... /dev/ram15). Ich bin ein bisschen unsicher, wofür diese benötigt werden. Ist es sicher, sie zu löschen? Wenn nicht, wie kann ich diese fdisk Ausgabe loswerden?

RudiC
quelle

Antworten:

13

Dies ist auf Linux-Systemen völlig normal. Es ist eine Art vorbereitende Maßnahme für den Fall, dass die RAM-Disks benötigt werden sollten. Jeder von ihnen hat eine Größe von 64 MiB, ein sehr niedriger Wert. Bei Bedarf wird die Größe automatisch erhöht.

Warum in Wily plötzlich 16 RAM-Disks verfügbar sind, lässt sich nur schwer erklären.

Ich habe die Standard-RAM-Disks getestet auf:

  • CentOS 7 - Keine RAM-Festplatten
  • Fedora 23 - Keine RAM-Festplatten
  • Ubuntu 14.04 - Keine RAM-Festplatten
  • Raspbian Jessie - 16 RAM- Festplatten (4 MB)

Quelle

Der RAM-Festplattentreiber ist eine Möglichkeit, den Hauptsystemspeicher als Blockgerät zu verwenden. Es wird für initrd benötigt, ein anfängliches Dateisystem, das verwendet wird, wenn Sie Module laden müssen, um auf das Root-Dateisystem zuzugreifen (siehe Dokumentation / initrd.txt). Es kann auch für ein temporäres Dateisystem für Kryptoarbeiten verwendet werden, da die Inhalte beim Neustart gelöscht werden.

Die RAM-Disk wächst dynamisch, wenn mehr Speicherplatz benötigt wird. Hierzu wird RAM aus dem Puffercache verwendet. Der Treiber markiert die verwendeten Puffer als fehlerhaft, damit das VM-Subsystem später nicht versucht, sie zurückzugewinnen.

Der RAM-Datenträger unterstützt standardmäßig bis zu 16 RAM-Datenträger und kann so konfiguriert werden, dass er eine unbegrenzte Anzahl von RAM-Datenträgern unterstützt (auf eigenes Risiko). Ändern Sie einfach das Konfigurationssymbol BLK_DEV_RAM_COUNT im Konfigurationsmenü Block drivers und erstellen Sie den Kernel (neu).

AB
quelle
Und das änderte sich von 15.04 bis 15.10?
RudiC
4
Beachten Sie, dass sie keinen Speicher belegen, wenn Sie ihnen nie etwas schreiben. Was sich geändert zu haben scheint, ist, dass der Kernel keine RAM-Disks in / proc / Partitionen auflistete, sondern dies jetzt tut, so dass fdisk -l darüber berichtet.
Psusi
@RudiC: Als Benutzer von Reputation 6: Wenn Ihnen diese Antwort geholfen hat, vergessen Sie nicht, auf das graue links neben diesem Text zu klicken , was bedeutet, dass Ja, diese Antwort gültig ist ! ;-)
Fabby
1
Danke, dass du mich erinnert hast. Die Antworten waren aufschlussreich und erklärten die Situation, also danke für die Antworten. Leider habe ich immer noch keine Ahnung, wie ich diese störende Ausgabe unterdrücken kann.
RudiC
Nur zu Ihrer Information - Vanille geprüft Debian Jessie, und es ist das gleiche Ergebnis, das Sie für Raspian Jessie erhalten haben.
UpTheCreek
12

Keine Ahnung, warum fdisk plötzlich / dev / ram meldet.

Sie können fdisk jedoch anweisen, nur bestimmte Geräte zu melden.

fdisk -l /dev/sd*

Listet echte Laufwerke auf.

Alternativ könnten Sie auch parted und lsblk verwenden.

Geteilte Ausgabe für ein Laufwerk hier.

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

Entsprechende lsblk-Ausgabe

    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 /

quelle
1
Beachten Sie, dass auf einigen Boxen (ACPI-Versionen?) physische Geräte h d * und nicht s d * sind.
Katze
8

Ich weiß, dass dieser Thread alt ist, aber ich bin erst vor kurzem darauf gestoßen. Nach der Installation von Slackware 14.2 habe ich die gleichen 16 RAM-Disks in der Ausgabe von fdisk -l. Ich habe ein wenig weiter nachgeforscht und festgestellt, dass sich in dem Paket 'util-linux', zu dem unter anderem fdisk gehört, die Auswahl dessen, was fdisk als Blockgerät ansieht, wesentlich geändert hat. In der util-linux-Paketversion 2.21 basiert diese Entscheidung auf der gemeldeten Plattengeometrie, während in der aktuellen Version 2.72 die Ausgabe von / proc / partitions analysiert wird. Laut meinen Recherchen im Internet sind die RAM-Disks seit Kernel 2.4 in Linux vorhanden, fdisk hat sie nur nicht angezeigt. Da ich mich über die Auflistung vieler "Festplatten" ärgere, die keine echten Festplatten sind, habe ich einen Patch für fdisk gemacht:

    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;

Vielleicht hilft das einigen anderen ...

Johannes
quelle
1
Dies zwingt Sie zum Neukompilierenfdisk
5

Der Beitrag von Johannes ist richtig. Die RAM-Disks sind schon lange im Kernel, es ist das Verhalten von fdisk, das sich geändert hat. Anstatt fdisk zu patchen, habe ich ein einfaches Perl-Skript geschrieben (5 Codezeilen, 6 Kommentarzeilen), um das Problem zu beheben. Ich lege es hinein ~/bin/fdisk-lund erinnere mich jetzt nur daran, kein Leerzeichen zwischen fdiskund zu setzen -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, $_);

Ab April 2017 werden die RAM-Festplatten nicht mehr standardmäßig mit dem aktuellen Ubuntu-Kernel angezeigt, sodass dieses Problem behoben ist. Siehe: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1593293

Jeff Norden
quelle
0

Dieses Verhalten wird von Kerneloptionen bestimmt, die Sie nur durch Neukompilieren eines benutzerdefinierten Kernels ändern können. Sie können die Größe der RAM * -Geräte mit dem GRUB-Parameter ramdisk_size ändern, jedoch nicht die Anzahl. Das ist nutzlos, denn selbst wenn Sie über viel Arbeitsspeicher verfügen, wird jede RAM-Disk auf die von Ihnen festgelegte Größe erhöht. Wenn Sie zum Beispiel eine 8-GB-RAM-Disk haben möchten - was ich auch tue, siehe unten -, erhalten Sie 16x 8-GB-Instanzen. Ich weiß nicht, ob dies harmlos ist, wenn Sie die meisten von ihnen nicht verwenden, aber ich zögere, mein System zu ziegeln, wenn dies nicht der Fall ist.

Ich möchte ein 8 GB / dev / ram-Gerät zum Spiegeln mit einer 8 GB-Festplattenpartition verwenden, um einen Hot-Disk-Bereich darauf zu platzieren. Meine Anwendung schreibt die Blöcke basierend auf dem freien Speicherplatz automatisch in den regulären Speicher. Es spielt also keine Rolle, ob sie klein sind oder nicht.

Mit Write-Behind unter mdadm sollte dies dazu führen, dass Schreibvorgänge schnell ablaufen, wenn sie platzen, und dass die HDD-Seite des Spiegels aufholt, wenn die Dinge leiser sind, um zumindest einen gewissen Datenschutz zu gewährleisten. Ich habe dieses Setup mit Solaris verwendet, aber es scheint unter Linux nicht möglich zu sein, da es sofort einsatzbereit ist.

Da RAM um Größenordnungen schneller ist als SSD, sollte dies ein Gewinn sein, aber ich kann es nicht versuchen. Wie andere bemerkt haben, wird ein RAID1, das mit tmpfs erstellt wird, beim Booten nicht neu zusammengesetzt, da der Schritt zum Initialisieren von tmpfs beim Booten viel zu spät ist - bei mountall. Ihre mds sind bis dahin wirklich fertig, so dass es fehlschlägt und Sie es manuell neu erstellen müssen.

OTOH / dev / ram * -Geräte wären dafür perfekt - wenn Sie sie konfigurieren könnten. Sie sind das allererste, was eingerichtet wird, und ram0 ist das initiale / Dateisystem.

mrchuck
quelle
Das ist eine gute Antwort. Bitte entfernen Sie die "Erweiterungsanforderung", da sie für eine Antwort nicht geeignet ist.
Ich möchte immer noch die Erweiterung beantragen. Was ist der beste Weg?
Mrchuck