fdisk -l mostra 16 dischi ram / dev / ram0… / ram15


17

Da quando ho effettuato l'aggiornamento a 15.10, fdisk -lriporta 16 dischi ram ( /dev/ram0... /dev/ram15). Non sono sicuro di cosa siano necessari. È sicuro eliminarli? In caso contrario, come posso eliminare l'output di fdisk?

Risposte:


13

Questo è perfettamente normale sui sistemi Linux. È una specie di azione preparatoria per il caso in cui i dischi RAM dovrebbero essere richiesti. Ognuno di essi ha una dimensione di 64 MiB, un valore molto basso. Se necessario, la dimensione verrà aumentata automaticamente.

Perché improvvisamente 16 dischi RAM sono disponibili in Wily, può essere spiegato solo con difficoltà.

Ho testato i dischi RAM predefiniti su:

  • CentOS 7 - Nessun disco RAM
  • Fedora 23 - Nessun disco RAM
  • Ubuntu 14.04 - Nessun disco RAM
  • Raspbian Jessie - 16 dischi RAM (4MiB)

fonte

Il driver del disco RAM è un modo per utilizzare la memoria di sistema principale come dispositivo a blocchi. È richiesto per initrd, un filesystem iniziale usato se è necessario caricare i moduli per accedere al filesystem di root (consultare Documentation / initrd.txt). Può anche essere utilizzato per un filesystem temporaneo per il lavoro crittografico, poiché i contenuti vengono cancellati al riavvio.

Il disco RAM cresce dinamicamente quando è necessario più spazio. Lo fa usando la RAM dalla cache del buffer. Il driver contrassegna i buffer che utilizza come sporchi in modo che il sottosistema VM non tenti di recuperarli in seguito.

Il disco RAM supporta fino a 16 dischi RAM per impostazione predefinita e può essere riconfigurato per supportare un numero illimitato di dischi RAM (a proprio rischio). Basta cambiare il simbolo di configurazione BLK_DEV_RAM_COUNT nel menu di configurazione dei driver di blocco e (ri) costruire il kernel.


E questo è cambiato dal 15.04 al 15.10?
RudiC,

4
Nota che non consumano memoria se non scrivi nulla. Ciò che sembra essere cambiato è che il kernel non ha usato per elencare i ramdisk in / proc / partitions, ma ora lo fa, quindi fdisk -l riporta su di essi.
psusi,

@RudiC: Dato che sei un utente di reputazione 6: se questa risposta ti ha aiutato, non dimenticare di fare clic sul grigio a sinistra di questo testo, il che significa Sì, questa risposta è valida ! ;-)
Fabby,

1
Grazie per avermi ricordato. Le risposte sono state illuminanti, spiegando la situazione, quindi grazie per quelli. Sfortunatamente, non ho ancora idea di come sopprimere quel disordinato output di disturbo.
RudiC,

Cordiali saluti - ho controllato la vaniglia Debian Jessie, ed è lo stesso risultato che hai ottenuto per Raspian Jessie.
UpTheCreek

12

Non ho idea del perché improvvisamente fdisk stia segnalando / dev / ram.

Puoi comunque dire a fdisk di segnalare solo dispositivi specifici.

fdisk -l /dev/sd*

Elencherà unità reali.

In alternativa puoi anche usare parted e lsblk.

Uscita parziale per un'unità qui.

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

Uscita lsblk corrispondente

    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 /

1
si noti che su alcuni box (versioni ACPI?) i dispositivi fisici sono h d *, non s d *.
cat

8

So che questo thread è vecchio, ma l'ho trovato solo di recente. Dopo aver installato Slackware 14.2 ho ottenuto gli stessi 16 dischi RAM nell'output di fdisk -l. Ho studiato un po 'di più e ho scoperto che nel pacchetto' util-linux ', di cui fdisk (tra gli altri) fa parte, la selezione di ciò che fdisk considera come dispositivo a blocchi è cambiata sostanzialmente. Nel pacchetto util-linux versione 2.21 questa decisione si basa sulla geometria del disco riportata mentre nella versione 2.72 corrente viene analizzato l'output di / proc / partitions. Secondo le mie ricerche su Internet i ramdisk sono presenti su Linux dal kernel 2.4, fdisk non li ha mostrati. Dato che sono infastidito dall'elenco di molti "dischi", che non sono veri dischi, ho creato una patch per 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;

Forse questo aiuta alcuni altri ...


1
Questo ti costringe a ricompilarefdisk

5

Il post di Johannes è corretto. I dischi ram sono nel kernel da molto tempo, è cambiato il comportamento di fdisk. Invece di patchare fdisk, ho scritto un semplice script perl (5 righe di codice, 6 righe di commento) per gestire il problema. L'ho inserito ~/bin/fdisk-le ora mi ricordo di non lasciare uno spazio tra fdiske -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, $_);

A partire da aprile 2017, i dischi ram non appaiono più per impostazione predefinita con l'attuale kernel Ubuntu, quindi questo problema è stato risolto. Vedi: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1593293


0

Questo comportamento è regolato da opzioni del kernel che è possibile modificare solo ricompilando un kernel personalizzato. Puoi cambiare la dimensione dei dispositivi ram * usando un parametro GRUB ramdisk_size ma non il conteggio. Questo è inutile, perché anche se hai molta memoria ogni ramdisk aumenterà a qualunque dimensione tu abbia impostato. Quindi, ad esempio, se vuoi un ramdisk da 8 GB - cosa che faccio, vedi sotto - otterrai 16 istanze da 8 GB. Non so se questo sia innocuo se non li usi quasi tutti, ma sono riluttante a bloccare il mio sistema se non lo è.

Voglio usare un dispositivo da 8 GB / dev / ram per eseguire il mirroring con una partizione del disco rigido da 8 GB allo scopo specifico di inserire un'area del disco rigido su di esso. La mia applicazione scriverà automaticamente i blocchi nella memoria normale in base allo spazio libero, quindi non importa che sia piccola.

Con write-behind sotto mdadm, ciò dovrebbe avere l'effetto di rendere le scritture molto veloci se sono esplose, con il lato HDD del mirror che si riprende quando le cose sono più silenziose per fornire almeno un po 'di protezione dei dati. Ho usato questa configurazione con Solaris, ma non sembra possibile con Linux come viene fuori dalla scatola.

Poiché la RAM ha ordini di grandezza più veloci dell'SSD, questa dovrebbe essere una vittoria, ma non posso provarla. Come altri hanno notato, se si crea un RAID1 con tmpfs, non verrà riassemblato all'avvio perché il passaggio che inizializza tmpfs è troppo tardi nel processo di avvio - su mountall. A quel punto i tuoi md sono davvero ben costruiti, quindi fallisce e devi ricostruirlo manualmente.

I dispositivi OTOH / dev / ram * sarebbero perfetti per questo - se potessi configurarli. Sono la prima cosa che viene impostata e ram0 è il file system iniziale.


Questa è una buona risposta Rimuovere tuttavia la "richiesta di miglioramento", poiché non è appropriato per una risposta.

Vorrei ancora fare la richiesta di miglioramento. Qual è il modo migliore?
Mrchuck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.