fdisk -l 16 ram diskini gösterir / dev / ram0… / ram15


17

15.10'a yükselttiğimden beri, fdisk -l16 koç diskini ( /dev/ram0... /dev/ram15) bildiriyor . Bunların ne için gerekli olduğundan biraz emin değilim. Onları silmek güvenli mi? Değilse, o fdisk çıktısından nasıl kurtulabilirim?

Yanıtlar:


13

Linux sistemlerinde bu normaldir. RAM disklerin gerekli olması durumunda bir tür hazırlık eylemi. Her birinin boyutu 64 MiB, çok düşük bir değer. Gerekirse, boyut otomatik olarak büyütülecektir.

Wily'de neden aniden 16 RAM disk mevcut, ancak zorlukla açıklanabilir.

Varsayılan RAM disklerini test ettim:

  • CentOS 7 - RAM diski yok
  • Fedora 23 - RAM diskleri yok
  • Ubuntu 14.04 - RAM diski yok
  • Raspbian Jessie - 16 RAM disk (4MiB)

Kaynak

RAM disk sürücüsü, ana sistem belleğini bir blok aygıt olarak kullanmanın bir yoludur. Kök dosya sistemine erişmek için modül yüklemeniz gerektiğinde kullanılan ilk dosya sistemi olan initrd için gereklidir (bkz. Documentation / initrd.txt). İçerik yeniden başlatıldığında silindiğinden, kripto işi için geçici bir dosya sistemi için de kullanılabilir.

RAM alanı daha fazla alan gerektiğinden dinamik olarak büyür. Bunu tampon önbellekten RAM kullanarak yapar. Sürücü, kullandıkları arabellekleri kirli olarak işaretler, böylece VM alt sistemi daha sonra geri almaya çalışmaz.

RAM diski varsayılan olarak 16'ya kadar RAM diskini destekler ve sınırsız sayıda RAM diskini desteklemek üzere yeniden yapılandırılabilir (kendi sorumluluğunuzdadır). Blok sürücüleri yapılandırma menüsünde BLK_DEV_RAM_COUNT yapılandırma sembolünü değiştirin ve çekirdeği (yeniden) oluşturun.


Ve bu 15.04'ten 15.10'a mı değişti?
RudiC

4
Onlara hiçbir şey yazmazsanız bellek kullanmazlar. Değişmiş gibi görünen, çekirdeğin / proc / bölümlerindeki ramdiskleri listelememiş olması, ancak şimdi değişmesi, fdisk -l raporlarıdır.
psusi

@RudiC: Bir itibar 6 kullanıcısı olduğunuzda: Bu cevap size yardımcı olduysa , bu metnin solundaki gri renkli işaretini tıklamayı unutmayın , bu da Evet, bu cevabın geçerli olduğu anlamına gelir ! ;-)
Fabby

1
Bana hatırlattığın için teşekkürler. Cevaplar aydınlatıcıydı, durumu açıklıyor, bu yüzden onlar için teşekkürler. Ne yazık ki, o dağınık rahatsız edici çıktıyı nasıl bastıracağım konusunda hala bir fikrim yok.
RudiC

Sadece FYI - vanilya Debian Jessie'yi kontrol etti ve Raspian Jessie için aldığın aynı sonuç.
UpTheCreek

12

Fdisk'in neden birdenbire / dev / ram bildirdiği hakkında hiçbir fikrim yok.

Ancak fdisk'e yalnızca belirli aygıtları bildirmesini söyleyebilirsiniz.

fdisk -l /dev/sd*

Gerçek sürücüleri listeler.

Alternatif olarak parted ve lsblk komutlarını da kullanabilirsiniz.

Burada bir sürücü için çıkış ayrıştırıldı.

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

Karşılık gelen lsblk çıktısı

    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
Not Bazı kutular (ACPI versiyonları?) fiziksel cihazlar olduklarını h d *, değil lar d *.
kedi

8

Bu iş parçasının eski olduğunu biliyorum, ama sadece son zamanlarda rastladım. Slackware 14.2'yi kurduktan sonra çıkışında aynı 16 RAM disk var fdisk -l. Biraz daha araştırdım ve fdisk'in (diğerleri arasında) bir parçası olduğu 'util-linux' paketinde, fdisk'in blok cihazı olarak gördüğü şeyin seçilmesinin önemli ölçüde değiştiğini buldum. Util-linux paket sürüm 2.21'de bu karar bildirilen disk geometrisine dayanırken, mevcut sürüm 2.72'de / proc / bölümlerin çıktısı ayrıştırılır. İnternette yaptığım araştırmalara göre, ramdiskler 2.4 sürümünden beri Linux'ta var, fdisk onları göstermedi. Gerçek disk olmayan birçok "disk" in listesinden rahatsız olduğum için, fdisk için bir yama yaptım:

    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;

Belki bu bazılarına yardım eder ...


1
Bu sizi yeniden derlemeye zorlarfdisk

5

Johannes'in gönderisi doğru. Koç diskleri uzun zamandır çekirdeğin içindedir, değişen fdisk davranışıdır. Fdisk yamalama yerine, sorunu çözmek için basit bir perl betiği (5 satır kod, 6 yorum satırı) yazdım. Ben koydu ~/bin/fdisk-lve şimdi sadece hatırlamak değil arasına boşluk koymak fdiskve -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, $_);

Nisan 2017 itibariyle, ram diskleri artık geçerli Ubuntu çekirdeğiyle varsayılan olarak görünmüyor, bu nedenle bu sorun çözüldü. Bkz. Https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1593293


0

Bu davranış, yalnızca özel bir çekirdeği yeniden derleyerek değiştirebileceğiniz çekirdek seçenekleri tarafından yönetilir. Ram * cihazlarının boyutunu ramdisk_size GRUB parametresini kullanarak değiştirebilirsiniz, ancak sayımı değiştiremezsiniz. Bu işe yaramaz, çünkü çok fazla belleğiniz olsa bile, her ramdisk ayarladığınız boyuta yükselecektir. Örneğin, 8GB ramdisk istiyorsanız - bunu yapıyorum, aşağıya bakın - 16x 8GB örnekler alacaksınız. Çoğunu kullanmazsanız bunun zararsız olup olmadığını bilmiyorum, ama eğer değilse sistemimi tuğlalamak konusunda isteksizim.

Üzerine bir hot disk alanı koymak için özel bir 8GB sabit disk bölümü ile yansıtmak için 8GB / dev / ram cihazı kullanmak istiyorum. Uygulamam, blokları otomatik olarak boş alana göre düzenli depolama alanına yazacak, bu yüzden küçük olması önemli değil.

Mdadm altında arkadan yazma özelliği ile, eğer yazmalar patlarsa hızlı yanıp sönme yapma etkisi olmalı, en azından bir miktar veri koruması sağlamak için daha sessiz olduğunda aynanın HDD tarafı yakalanır. Bu kurulumu Solaris ile kullandım, ancak kutudan çıktığı için Linux ile mümkün görünmüyor.

RAM SSD'den daha hızlı büyüklük emirleri olduğundan, bu bir kazanç olmalı, ama deneyemiyorum. Diğerlerinin de fark ettiği gibi, tmpfs ile bir RAID1 oluşturursanız, önyükleme sırasında yeniden bir araya gelmez çünkü tmpfs'yi başlatan adım önyükleme işleminde çok geç - mountall'de. MD'leriniz o zamana kadar iyi ve gerçekten inşa edilmiştir, bu yüzden başarısız olur ve manuel olarak yeniden oluşturmanız gerekir.

OTOH / dev / ram * cihazları bunun için mükemmel olurdu - eğer onları yapılandırabilirseniz. Bunlar ilk kurulan şeydir ve ram0 ilk / dosya sistemidir.


Bu iyi bir cevap. Bununla birlikte, bir yanıt için uygun olmadığından lütfen "geliştirme isteğini" kaldırın.

Yine de geliştirme isteğinde bulunmak istiyorum. En iyi yol nedir?
mrchuck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.