web-dev-qa-db-fra.com

fdisk -l affiche 16 disques RAM / dev / ram0 ... / ram15

Depuis ma mise à niveau vers 15.10, fdisk -l signale 16 disques RAM (/dev/ram0 ... /dev/ram15). Je ne sais pas trop à quoi ils servent. Est-il prudent de les supprimer? Sinon, comment puis-je me débarrasser de cette sortie fdisk?

17
RudiC

Ceci est parfaitement normal sur les systèmes Linux. Il s’agit en quelque sorte d’une action préparatoire pour le cas où les disques RAM devraient être nécessaires. Chacun d'entre eux a une taille de 64 Mo, une valeur très faible. Si nécessaire, la taille sera augmentée automatiquement.

Pourquoi soudainement 16 RAM disques sont disponibles dans Wily, ne peuvent s’expliquer que difficilement.

J'ai testé les disques RAM par défaut sur:

  • CentOS 7 - Pas de disques RAM
  • Fedora 23 - Pas de disques RAM
  • Ubuntu 14.04 - Pas de disques RAM
  • Raspbian Jessie - 16 RAM disques (4 Mo)

Source

Le pilote de disque RAM permet d’utiliser la mémoire principale du système en tant que périphérique bloc. Il est requis pour initrd, un système de fichiers initial utilisé si vous devez charger des modules pour accéder au système de fichiers racine (voir Documentation/initrd.txt). Il peut également être utilisé pour un système de fichiers temporaire pour le travail de cryptographie, car le contenu est effacé au redémarrage.

Le disque RAM grossit de manière dynamique à mesure que de l'espace supplémentaire est requis. Pour ce faire, utilisez RAM à partir du cache. Le pilote marque les tampons qu'il utilise comme étant sales afin que le sous-système VM n'essaye pas de les récupérer ultérieurement.

Le disque RAM prend en charge jusqu'à 16 disques RAM par défaut et peut être reconfiguré pour prendre en charge un nombre illimité de disques RAM (à vos risques et périls). Il suffit de changer le symbole de configuration BLK_DEV_RAM_COUNT dans le menu de configuration des pilotes de blocs et de (re) construire le noyau.

13
A.B.

Aucune idée pourquoi fdisk rapporte soudainement/dev/ram.

Vous pouvez toutefois indiquer à fdisk de ne signaler que des périphériques spécifiques.

fdisk -l /dev/sd*

Fera la liste des lecteurs réels.

Alternativement, vous pouvez également utiliser Parted et Lsblk.

Sortie séparée pour un lecteur ici.

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

Sortie correspondante de 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 /
12
user433395

Je sais que ce fil est vieux, mais je ne l'ai trouvé que récemment. Après l’installation de Slackware 14.2, j’ai reçu les mêmes 16 disques RAM dans la sortie de fdisk -l. J'ai étudié un peu plus loin et découvert que dans le paquetage "util-linux", dont fdisk fait partie (parmi d'autres), la sélection de ce que fdisk considère comme un périphérique en mode bloc a changé de manière substantielle. Dans le paquetage util-linux version 2.21, cette décision est basée sur la géométrie du disque rapportée, tandis que dans la version actuelle 2.72, la sortie de/proc/partitions est analysée. Selon mes recherches sur Internet, les disques virtuels sont présents sous Linux depuis le noyau 2.4, fdisk ne les a tout simplement pas affichés. Comme je suis agacé par la liste de nombreux "disques", qui ne sont pas de vrais disques, j'ai créé un patch pour 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;

Peut-être que cela aide certains autres ...

8
Johannes

Le message de Johannes est correct. Les disques RAM sont dans le noyau depuis longtemps, c'est le comportement de fdisk qui a changé. Au lieu de corriger fdisk, j’ai écrit un simple script Perl (5 lignes de code, 6 lignes de commentaires) pour gérer le problème. Je l'ai mis dans ~/bin/fdisk-l, et maintenant je viens de me rappeler et non de mettre un espace entre fdisk et -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, $_);

Depuis avril 2017, les disques ram n'apparaissent plus par défaut avec le noyau Ubuntu actuel. Ce problème est donc résolu. Voir: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/159329

5
Jeff Norden

Ce comportement est régi par les options du noyau que vous ne pouvez modifier qu'en recompilant un noyau personnalisé. Vous pouvez modifier la taille des périphériques ram * à l'aide d'un paramètre GRUB ramdisk_size mais pas du nombre. Ceci est inutile, car même si vous avez beaucoup de mémoire tous = disque virtuel augmentera à la taille que vous avez définie. Ainsi, par exemple, si vous voulez un disque RAM de 8 Go - ce que je fais, voir ci-dessous -, vous obtiendrez 16 instances de 8 Go. Je ne sais pas si c'est inoffensif si vous n'en utilisez pas la plupart, mais je suis réticent à bricoler mon système si ce n'est pas le cas.

Je souhaite utiliser un périphérique de 8 Go/dev/ram en miroir avec une partition de disque dur de 8 Go dans le but spécifique de placer une zone de disque chaud dessus. Mon application écrira automatiquement les blocs dans la mémoire de stockage normale en fonction de l'espace disponible. Par conséquent, peu importe sa taille.

Avec l'écriture en attente sous mdadm, cela devrait avoir pour effet de rendre les écritures fulgurantes si elles sont en rafale, le côté disque dur du miroir se rattrapant lorsqu'il est plus silencieux d'assurer au moins une certaine protection des données. J'ai utilisé cette configuration avec Solaris, mais cela ne semble pas possible avec Linux, car il sort de la boîte.

Puisque RAM est beaucoup plus rapide que les disques SSD, cela devrait être une victoire, mais je ne peux pas l'essayer. Comme d'autres l'ont remarqué, si vous construisez un RAID1 avec tmpfs, il ne sera pas réassemblé au démarrage car l'étape d'initialisation de tmpfs est beaucoup trop tardive dans le processus de démarrage - à mountall. Vos mds sont bel et bien construits à ce moment-là, alors ils échouent et vous devez le reconstruire manuellement.

Les périphériques OTOH/dev/ram * seraient parfaits pour cela - si vous pouviez les configurer. Ils sont la toute première chose qui est configurée, et ram0 est le système de fichiers/initial.

0
mrchuck