fdisk -l показує 16 оперативні диски / dev / ram0… / ram15


17

З тих пір, як я оновив 15.10, fdisk -lповідомляє про 16 оперативні диски ( /dev/ram0... /dev/ram15). Я трохи не впевнений, для чого вони потрібні. Чи безпечно їх видалити? Якщо ні, то як я можу позбутися цього виходу fdisk?

Відповіді:


13

Це цілком нормально для систем Linux. Це свого роду підготовча дія до випадку, коли потрібно мати оперативні пам’яті. Кожен з них має розмір 64 Мб, дуже низьке значення. При необхідності розмір збільшуватиметься автоматично.

Чому раптом у Wily доступні 16 дисків оперативної пам’яті, можна пояснити лише важко.

Я протестував диски оперативної пам'яті за замовчуванням на:

  • CentOS 7 - Немає оперативної пам’яті
  • Fedora 23 - Немає оперативної пам’яті
  • Ubuntu 14.04 - Немає оперативної пам’яті
  • Raspbian Jessie - 16 дисків оперативної пам’яті (4 Мбіт)

Джерело

Драйвер оперативної пам’яті оперативної пам’яті - це спосіб використання основної системної пам’яті як блочного пристрою. Це потрібно для initrd, початкової файлової системи, яка використовується, якщо вам потрібно завантажити модулі для доступу до кореневої файлової системи (див. Документація / initrd.txt). Він також може бути використаний для тимчасової файлової системи для роботи з криптовалютою, оскільки вміст стирається при перезавантаженні.

Диск оперативної пам’яті динамічно зростає, оскільки потрібно більше місця. Це робиться за допомогою оперативної пам'яті з буфера кешу. Драйвер позначає буфери, які він використовує, як брудні, щоб підсистема VM не намагалася повернути їх пізніше.

Диск ОЗУ підтримує до 16 дисків оперативної пам’яті за замовчуванням, і їх можна переконфігурувати для підтримки необмеженої кількості дисків ОЗУ (на власний ризик). Просто змініть символ конфігурації BLK_DEV_RAM_COUNT у меню конфігурації драйверів блоків та (пере) побудуйте ядро.


І це змінилося з 15.04 до 15.10?
RudiC

4
Зауважте, що вони не використовують жодної пам'яті, якщо ви ніколи нічого не пишете їм. Що, здається, змінилося - це те, що ядро ​​не використовувалося для переліку ramdisks в / proc / розділів, але тепер так, тому fdisk -l звітує про них.
psusi

@RudiC: Оскільки ви користуєтесь репутацією 6: Якщо ця відповідь допомогла вам, не забудьте натиснути сіру зліва від цього тексту, що означає , що ця відповідь є дійсною ! ;-)
Fabby

1
Дякую, що нагадали. Відповіді прояснювали, пояснювали ситуацію, тож дякую за це. На жаль, у мене ще немає поняття, як придушити цей безладний тривожний вихід.
RudiC

Просто FYI - перевірив ванільну Дебіан Джессі, і це той самий результат, який ви отримали для Raspian Jessie.
UpTheCreek

12

Не маю уявлення, чому fdisk раптом повідомляє / dev / ram.

Однак ви можете сказати fdisk повідомляти лише про певні пристрої.

fdisk -l /dev/sd*

Буде перераховано справжні диски.

Крім того, ви можете також використовувати parted та lsblk.

Розділений вихід для одного приводу тут.

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

Відповідний вихід 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 /

1
зауважте, що на деяких полях (версії ACPI?) фізичні пристрої розташовані h d *, а не s d *.
кіт

8

Я знаю, що ця нитка стара, але я натрапив на неї лише нещодавно. Після встановлення Slackware 14.2 я отримав ті самі 16 оперативної пам’яті на виході fdisk -l. Я трохи далі проаналізував і виявив, що в пакеті "util-linux", до якого входить fdisk (серед інших), розділення того, що fdisk вважається блоковим пристроєм, істотно змінилося. У пакеті util-linux версії 2.21 це рішення засноване на геометрії повідомленого диска, тоді як у поточній версії 2.72 вихід / / proc / розділів аналізується. Згідно з моїми пошуками в Інтернеті, рамкові диски існували в Linux з ядра 2.4, fdisk просто не показував їх. Оскільки мене дратує перелік багатьох "дисків", які не є реальними дисками, я зробив патч для 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;

Можливо, це допомагає деяким іншим ...


1
Це змушує вас перекомпілюватиfdisk

5

Пост Йоганнеса правильний. Ram-диски вже давно знаходяться в ядрі, саме поведінка fdisk змінилася. Замість виправлення fdisk я написав простий скрипт perl (5 рядків коду, 6 рядків коментарів) для вирішення проблеми. Я вклав це ~/bin/fdisk-l, і тепер я просто пам’ятаю, щоб не ставити пробіл між fdiskі -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, $_);

Станом на квітень 2017 року, диски ram більше не з’являються за замовчуванням із поточним ядром Ubuntu, тому ця проблема вирішена. Дивіться: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1593293


0

Ця поведінка регулюється параметрами ядра, які ви можете змінити, лише перекомпілювавши власне ядро. Ви можете змінити розмір пристроїв ram *, використовуючи параметр GRUB ramdisk_size, але не рахуючи. Це марно, адже навіть якщо у вас буде багато пам'яті, кожен рамковий диск збільшуватиметься до будь-якого встановленого розміру. Так, наприклад, якщо ви хочете використовувати 8-Гбайт-рамм-диск, що я роблю, див. Нижче - ви отримаєте екземпляри 16x 8 Гб. Я не знаю, чи це нешкідливо, якщо ви не використовуєте більшість з них, але я неохоче цегляну систему, якщо її немає.

Я хочу використовувати пристрій 8 ГБ / дев / оперативної пам’яті для дзеркального відображення з розділом жорсткого диска 8 ГБ для конкретної мети розміщення на ньому гарячого диску. Моя програма автоматично записує блоки на звичайне зберігання на основі вільного місця, тому не має значення, що вона невелика.

При записі під mdadm це має спричинити швидке записування, якщо вони швидко лопаються, при цьому жорсткий диск дзеркала наздоганяється, коли все спокійніше, щоб забезпечити принаймні деякий захист даних. Я використовував цю установку разом із Solaris, але це не здається можливим для Linux, оскільки воно виходить з коробки.

Оскільки оперативна пам’ять на порядок швидше, ніж SSD, це має бути виграш, але я не можу це спробувати. Як зауважили інші, якщо ви будуєте RAID1 з tmpfs, він не збирається знову при завантаженні, тому що етап, який ініціалізує tmpfs, занадто пізно в процесі завантаження - у mounttall. Ваш MDS добре і справді побудований до того часу, тому він виходить з ладу, і ви повинні відновити його вручну.

Для цього ідеально підійдуть пристрої OTOH / dev / ram * - якби ви могли їх налаштувати. Вони - найперше, що встановлюється, а ram0 - це початкова / файлова система.


Це хороша відповідь. Проте видаліть "запит на вдосконалення", оскільки це не підходить для відповіді.

Я все ще хотів би зробити запит на покращення. Який найкращий спосіб?
mrchuck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.