Ответы:
Это совершенно нормально в системах Linux. Это своего рода подготовительное действие для случая, когда требуются диски RAM. Каждый из них имеет размер 64 МиБ, что является очень низким значением. При необходимости размер будет увеличен автоматически.
Почему вдруг в Wily появилось 16 RAM-дисков, объяснить можно только с трудом.
Я проверил стандартные диски RAM на:
Драйвер RAM-диска - это способ использовать основную системную память в качестве блочного устройства. Это требуется для initrd, исходной файловой системы, используемой, если вам нужно загрузить модули для доступа к корневой файловой системе (см. Documentation / initrd.txt). Он также может быть использован для временной файловой системы для криптографии, так как содержимое стирается при перезагрузке.
Диск RAM растет динамически, поскольку требуется больше места. Это делается с помощью оперативной памяти из буферного кеша. Драйвер помечает используемые им буферы как грязные, чтобы подсистема ВМ не пыталась восстановить их позже.
RAM-диск поддерживает до 16 RAM-дисков по умолчанию и может быть переконфигурирован для поддержки неограниченного количества RAM-дисков (на свой страх и риск). Просто измените конфигурационный символ BLK_DEV_RAM_COUNT в меню конфигурации блочных драйверов и (пере) соберите ядро.
Понятия не имею, почему 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 /
Я знаю, что эта ветка старая, но я наткнулся на нее совсем недавно. После установки Slackware 14.2 я получил те же 16 RAM дисков на выходе
fdisk -l
. Я исследовал немного дальше и обнаружил, что в пакете 'util-linux', частью которого является fdisk (среди прочего), выбор того, что fdisk считает блочным устройством, существенно изменился. В пакете util-linux версии 2.21 это решение основано на сообщаемой геометрии диска, тогда как в текущей версии 2.72 вывод / proc / partitions анализируется. Согласно моим поискам в Интернете, ramdisk были там в 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;
Может быть, это помогает некоторым другим ...
Сообщение Йоханнеса является правильным. 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.
Это поведение зависит от параметров ядра, которые вы можете изменить, только перекомпилировав собственное ядро. Вы можете изменить размер устройств ram *, используя параметр GRUB ramdisk_size, но не количество. Это бесполезно, потому что даже если у вас много памяти, каждый виртуальный диск увеличится до любого установленного вами размера. Так, например, если вам нужен виртуальный диск 8 ГБ - что я и делаю, см. Ниже - вы получите 16x 8 ГБ экземпляров. Я не знаю, безвредно ли это, если вы не используете большинство из них, но я не хотел бы блокировать мою систему, если это не так.
Я хочу использовать устройство 8 ГБ / dev / ram для зеркалирования с разделом жесткого диска 8 ГБ для конкретной цели размещения на нем области горячего диска. Мое приложение автоматически записывает блоки в обычное хранилище на основе свободного места, поэтому не имеет значения, что оно маленькое.
С записью позади mdadm это должно привести к быстрой записи записей, если они бурные, с стороной зеркала на жестком диске, нагоняющей, когда вещи тише, чтобы обеспечить хотя бы некоторую защиту данных. Я использовал эту настройку с Solaris, но это не представляется возможным в Linux, так как оно поставляется из коробки.
Поскольку оперативная память на несколько порядков быстрее SSD, это должно быть выигрышно, но я не могу попробовать. Как уже заметили другие, если вы создадите RAID1 с tmpfs, он не будет повторно собираться при загрузке, потому что шаг, который инициализирует tmpfs, слишком поздно в процессе загрузки - на mountall. К тому времени ваши mds хорошо и действительно построены, поэтому он не работает, и вам придется перестраивать его вручную.
Устройства OTOH / dev / ram * были бы идеальными для этого - если бы вы могли их настроить. Это самое первое, что настраивается, а ram0 - это исходная / файловая система.