fdisk -l mostra 16 discos RAM / dev / ram0… / ram15

17

Desde que fiz o upgrade para 15.10, fdisk -l reporta 16 discos de RAM ( /dev/ram0 ... /dev/ram15 ). Estou um pouco inseguro para o que é necessário. É seguro excluí-los? Se não, como posso me livrar dessa saída do fdisk?

    
por RudiC 28.11.2015 / 17:31

5 respostas

12

Isso é perfeitamente normal em sistemas Linux. É uma espécie de ação preparatória para o caso em que os discos RAM devem ser necessários. Cada um deles tem um tamanho de 64 MiB, um valor muito baixo. Se necessário, o tamanho será aumentado automaticamente.

Por que, de repente, 16 discos RAM estão disponíveis em Wily, só podem ser explicados com dificuldade.

Eu testei os discos RAM padrão em:

  • CentOS 7 - Sem discos RAM
  • Fedora 23 - Sem discos RAM
  • Ubuntu 14.04 - Sem discos RAM
  • Jessie Raspbian - discos de 16 RAM (4 MiB)

Fonte

  

O driver de disco RAM é uma maneira de usar a memória principal do sistema como um dispositivo de bloco. isto   é necessário para initrd, um sistema de arquivos inicial usado se você precisar carregar módulos   para acessar o sistema de arquivos raiz (veja Documentation / initrd.txt). Pode   também ser usado para um sistema de arquivos temporário para o trabalho de criptografia, uma vez que o conteúdo   são apagados na reinicialização.

     

O disco RAM cresce dinamicamente conforme mais espaço é necessário. Ele faz isso usando   RAM do cache de buffer. O driver marca os buffers que está usando como sujos   para que o subsistema da VM não tente recuperá-los mais tarde.

     

O disco RAM suporta até 16 discos RAM por padrão e pode ser reconfigurado   para suportar um número ilimitado de discos RAM (por sua conta e risco). Apenas mude   o símbolo de configuração BLK_DEV_RAM_COUNT no menu de configuração de drivers de bloco   e (re) construir o kernel.

    
por A.B. 28.11.2015 / 18:00
12

Não tenho idéia do porque o fdisk repentinamente está relatando / dev / ram.

Você pode, no entanto, dizer ao fdisk para relatar apenas dispositivos específicos.

fdisk -l /dev/sd*

Relacionará as unidades reais.

Como alternativa, você também pode usar parted e lsblk.

Saída parcial para uma unidade aqui.

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

Saída lsblk correspondente

    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 /
    
por user433395 25.12.2015 / 12:33
8

Eu sei que esse segmento é antigo, mas acabei descobrindo isso recentemente. Depois de instalar o Slackware 14.2, obtive os mesmos 16 discos RAM na saída de %código%. Eu investiguei um pouco mais e descobri que no 'util-linux' pacote, do qual o fdisk (entre outros) faz parte, a seleção do que o fdisk considera como dispositivo de bloco mudou substancialmente. Na versão 2.21 do pacote util-linux, esta decisão é baseada na geometria de disco reportada, enquanto na versão atual 2.72 a saída de / proc / partitions é analisada. De acordo com minhas buscas na internet, os ramdisks estavam lá no Linux desde o kernel 2.4, o fdisk simplesmente não os mostrava. Como estou incomodado com a listagem de muitos "discos", que não são discos reais, fiz um patch para o 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;

Talvez isso ajude alguns outros ...

    
por Johannes 17.08.2016 / 12:37
5

O post de Johannes está correto. Os discos RAM estão no kernel há muito tempo, é o comportamento do fdisk que mudou. Em vez de corrigir o fdisk, escrevi um script perl simples (5 linhas de código, 6 linhas de comentário) para lidar com o problema. Eu coloquei em ~/bin/fdisk-l , e agora eu só lembro de não para colocar um espaço entre fdisk e -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 partir de abril de 2017, os discos ram não aparecem mais por padrão com o kernel atual do Ubuntu, portanto, esse problema foi resolvido. Veja: link

    
por Jeff Norden 06.03.2017 / 00:33
0

Esse comportamento é governado pelas opções do kernel que você pode alterar apenas recompilando um kernel personalizado. Você pode alterar o tamanho dos dispositivos ram * usando um parâmetro ramdisk_size do GRUB, mas não a contagem. Isso é inútil, porque mesmo se você tiver muita memória, todo disco irá aumentar para qualquer tamanho que você definir. Então, por exemplo, se você quiser um disco RAM de 8GB - o que eu faço, veja abaixo - você terá 16x instâncias de 8GB. Não sei se isso é inofensivo se você não usar a maioria deles, mas estou relutante em bloquear meu sistema, se não for o caso.

Eu quero usar um dispositivo de 8GB / dev / ram para espelhar com uma partição de disco rígido de 8GB com o propósito específico de colocar uma área de hot disk nele. Meu aplicativo irá gravar automaticamente os blocos no armazenamento regular com base no espaço livre, portanto, não importa que seja pequeno.

Com o write-behind sob o mdadm, isso deve ter o efeito de tornar as gravações rápidas se elas estiverem em rajadas, com o lado HDD do espelho se aproximando quando as coisas estão mais silenciosas para fornecer pelo menos alguma proteção de dados. Eu usei essa configuração com o Solaris, mas não parece ser possível com o Linux como ele sai da caixa.

Como a RAM é maior que a SSD, isso deve ser uma vitória, mas não posso tentar. Como outros já perceberam, se você construir um RAID1 com tmpfs, ele não será remontado na inicialização porque a etapa que inicializa o tmpfs é tarde demais no processo de inicialização - no mountall. Seus mds estão bem e verdadeiramente construídos até então, então ele falha, e você tem que reconstruí-lo manualmente.

Os dispositivos OTOH / dev / ram * seriam perfeitos para isso - se você pudesse configurá-los. Eles são a primeira coisa que é configurada, e o ram0 é o sistema de arquivos inicial.

    
por mrchuck 02.02.2017 / 07:24