fdisk-l показывает 16 дисков/dev/ram0 …/ram15 поршня

С тех пор, как я обновил до 15,10, fdisk -l отчеты 16 дисков поршня (/dev/ram0 ... /dev/ram15). Я немного не уверен, для чего это необходимо. Действительно ли безопасно удалить их? В противном случае, как я могу избавиться от этого вывод fdisk?

18
задан 29 December 2015 в 09:43

5 ответов

Это совершенно нормально в системах Linux. Это своего рода подготовительное действие на случай, если потребуются RAM-диски. Каждый из них имеет размер 64 МиБ, что очень мало. При необходимости размер будет увеличен автоматически.

Почему внезапно в Wily стали доступны 16 RAM-дисков, объяснить трудно.

Я тестировал RAM-диски по умолчанию на:

  • CentOS 7 - Нет RAM диски
  • Fedora 23 - без RAM-дисков
  • Ubuntu 14.04 - без RAM-дисков
  • Raspbian Jessie - 16 RAM дисков (4MiB)

Source

Драйвер RAM-диска способ использовать основную системную память как блочное устройство. Это требуется для initrd, начальной файловой системы, используемой, если вам нужно загрузить модули для доступа к корневой файловой системе (см. Documentation / initrd.txt). Оно может также может использоваться для временной файловой системы для работы с шифрованием, так как содержимое стираются при перезагрузке.

RAM-диск динамически увеличивается по мере того, как требуется больше места. Это делается с помощью ОЗУ из буферного кеша. Драйвер помечает используемые буферы как грязные. так что подсистема виртуальных машин не пытается вернуть их позже.

RAM-диск поддерживает до 16 RAM-дисков по умолчанию и может быть перенастроен поддерживать неограниченное количество RAM-дисков (на ваш страх и риск). Просто измени символ конфигурации BLK_DEV_RAM_COUNT в меню конфигурации драйверов блока и (пере) собрать ядро.

13
ответ дан 23 November 2019 в 02:19

Понятия не имею, почему 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 /
12
ответ дан 23 November 2019 в 02:19

Я знаю, что эта нить старая, но я наткнулся на нее только недавно. После установки Slackware 14.2 я получил те же 16 дисков оперативной памяти в выводе fdisk -l . Я исследовал немного дальше и обнаружил, что в 'утил-линуксе' пакет, частью которого является fdisk (среди прочих), существенно изменился выбор того, что fdisk считает блочным устройством. В пакете util-linux версии 2.21 это решение основано на сообщенной геометрии диска, в то время как в текущей версии 2.72 анализируется вывод разделов /proc/. Согласно моим поискам в интернете ramdisks были в 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;

Может это поможет некоторым другим...

9
ответ дан 23 November 2019 в 02:19

Это поведение регулируется параметрами ядра, которые можно изменить только путем перекомпиляции собственного ядра. Вы можете изменить размер RAM * устройств, используя параметр GRUB ramdisk_size, но не счетчик. Это бесполезно, потому что даже если у вас много памяти , каждый ramdisk будет увеличиваться до любого установленного вами размера. Так, например, если вам нужен ramdisk на 8 ГБ - что я хочу, см. Ниже - вы получите 16 экземпляров по 8 ГБ. Я не знаю, безвредно ли это, если вы не используете большинство из них, но я не хочу блокировать свою систему, если это не так.

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

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

Поскольку RAM на несколько порядков быстрее SSD, это должно быть победой, но я могу » Я попробую. Как уже заметили другие, если вы создаете RAID1 с помощью tmpfs, он не будет повторно собираться при загрузке, потому что этап, на котором инициализируется tmpfs, происходит слишком поздно в процессе загрузки - при mountall. К тому времени ваши mds уже полностью построены, поэтому они выйдут из строя, и вам придется восстанавливать их вручную.

Устройства OTOH / dev / ram * идеально подходят для этого - если вы можете их настроить. Это самое первое, что настраивается, а ram0 - это начальная / файловая система.

0
ответ дан 23 November 2019 в 02:19

Сообщение Йоханнеса верное. 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[1245 visible

5
ответ дан 23 November 2019 в 02:19

Другие вопросы по тегам:

Похожие вопросы: