fdisk -lは16個のRAMディスク/ dev / ram0…/ ram15を表示します


17

15.10にアップグレードして以来、fdisk -l16個のRAMディスク(/dev/ram0... /dev/ram15)が報告されています。私はそれらが何のために必要なのか少しわかりません。それらを削除しても安全ですか?そうでない場合、どうすればそのfdisk出力を取り除くことができますか?

回答:


13

これはLinuxシステムではまったく正常です。RAMディスクが必要な場合の準備アクションのようなものです。それぞれのサイズは64 MiBで、非常に低い値です。必要に応じて、サイズは自動的に増加します。

突然16個のRAMディスクがWilyで使用可能になる理由を説明するのは困難です。

デフォルトのRAMディスクを以下でテストしました:

  • CentOS 7 – RAMディスクなし
  • Fedora 23 – RAMディスクなし
  • Ubuntu 14.04 – RAMディスクなし
  • Raspbian Jessie – 16 RAMディスク(4MiB)

ソース

RAMディスクドライバーは、メインシステムメモリをブロックデバイスとして使用する方法です。ルートファイルシステムにアクセスするためにモジュールをロードする必要がある場合に使用される初期ファイルシステムであるinitrdに必要です(Documentation / initrd.txtを参照)。また、内容は再起動時に消去されるため、暗号化作業用の一時ファイルシステムにも使用できます。

RAMディスクは、より多くのスペースが必要になると動的に大きくなります。これは、バッファキャッシュのRAMを使用して行われます。ドライバーは、VMサブシステムが後でそれらを再利用しようとしないように、使用しているバッファーをダーティとしてマークします。

RAMディスクはデフォルトで最大16個のRAMディスクをサポートし、無制限の数のRAMディスクをサポートするように再構成できます(自己責任で)。[ブロックドライバーの構成]メニューで構成シンボルBLK_DEV_RAM_COUNTを変更し、カーネルを(再)ビルドします。


そして、これは15.04から15.10に変更されましたか?
-RudiC

4
何も書き込まない場合、メモリを使い果たしないことに注意してください。変更されたように見えるのは、カーネルが/ proc / partitionsのramdiskをリストするのに使用していなかったが、現在はそうであるため、fdisk -lがそれらを報告することです。
-psusi

@RudiC:あなたは評判6ユーザーだとして:この答えはあなたを助けている場合、グレーをクリックすることを忘れないでください☑を意味し、このテキストの左側で[はい、この答えは有効です;-)
Fabby

1
思い出させてくれてありがとう。答えは啓発的で、状況を説明してくれたので、それらに感謝します。残念ながら、その厄介な邪魔な出力を抑制する方法がまだわかりません。
RudiC

参考までに、Debian Jessieのバニラを確認してください。これは、Raspian Jessieの場合と同じ結果です。
UpTheCreek

12

fdiskが突然/ dev / ramを報告する理由はわかりません。

ただし、特定のデバイスのみを報告するようにfdiskに指示できます。

fdisk -l /dev/sd*

実際のドライブをリストします。

または、partedとlsblkを使用することもできます。

ここで1つのドライブの分割出力。

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バージョン?)では、物理デバイスはs d * ではなくh d *であることに注意してください。

8

私はこのスレッドが古いことを知っていますが、最近になって初めて遭遇しました。Slackware 14.2をインストールした後、の出力で同じ16 RAMディスクを取得しました fdisk -l。私はもう少し調べて、「util-linux」パッケージで、どのfdisk(他のものも)の一部であることがわかりました。fdiskがブロックデバイスと見なすものの選択が大幅に変更されました。util-linuxパッケージバージョン2.21では、この決定は報告されたディスクジオメトリに基づいていますが、現在のバージョン2.72では/ proc / partitionsの出力が解析されます。インターネットでの私の検索によると、カーネル2.4からラムディスクはLinuxにありましたが、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年4月現在、RAMディスクは現在のUbuntuカーネルではデフォルトで表示されなくなっているため、この問題は解決されています。参照:https : //bugs.launchpad.net/ubuntu/+source/linux/+bug/1593293


0

この動作は、カスタムカーネルを再コンパイルすることによってのみ変更できるカーネルオプションによって管理されます。GRUBパラメーターramdisk_sizeを使用して、ram *デバイスのサイズを変更できますが、カウントは変更できません。メモリがたくさんある場合でも、すべての RAMディスクは設定したサイズに増加するため、これは役に立ちません。したがって、たとえば、8GBのRAMディスクが必要な場合(これは以下を参照)、8GBのインスタンスが16x取得されます。これらのほとんどを使用しない場合、これが無害であるかどうかはわかりませんが、使用しない場合、システムをブリックすることには消極的です。

8GBの/ dev / ramデバイスを使用して、ホットディスク領域を置くという特定の目的のために、8GBのハードディスクパーティションでミラーリングしたいと思います。私のアプリケーションは、空き領域に基づいてブロックを通常のストレージに自動的に書き出すので、小さいことは問題ではありません。

mdadmでライトビハインドを使用すると、書き込みがバースト的である場合に書き込みが高速になり、少なくともある程度のデータ保護を提供するために静かになるとミラーのHDD側が追いつきます。私はこのセットアップをSolarisで使用しましたが、Linuxではすぐに使用できるようになっているように思えません。

RAMはSSDよりも桁違いに速いので、これは勝利になるはずですが、私はそれを試すことはできません。他の人が気づいたように、tmpfsを使用してRAID1を構築する場合、tmpfsを初期化するステップは、bootallプロセス(mountall)では遅すぎるため、ブート時に再構築されません。あなたのmdsはそれまでにうまく構築されているため、失敗し、手動で再構築する必要があります。

OTOH / dev / ram *デバイスは、これに最適です(構成できる場合)。これらは最初にセットアップされるもので、ram0は初期/ファイルシステムです。


これは良い答えです。ただし、「エンハンスメントリクエスト」は削除するのが適切ではありません。

引き続き機能強化のリクエストを行いたいです。最善の方法は何ですか?
mrchuck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.