web-dev-qa-db-ja.com

どのようにブロックRAMディスクをオンデマンドで作成しますか?

modprobe brd rd_nr=1 rd_size=4585760 max_part=1でRAMブロックデバイスを作成する場合は/dev/ram0を実行できることを学びましたが、デバイスをフラッシュして(RAMを解放するため)、削除して別のデバイスを作成するとします。 modprobe brd rd_nr=1 rd_size=4585760 max_part=1をもう一度実行すると、/devに別のRAMデバイスが作成されないようです。

手順を再作成します。

1)ディスクを作成します:modprobe brd rd_nr=1 rd_size=4585760 max_part=1

2)RAMディスクを任意のタスクに使用します:例:dd if=/dev/zero of=/dev/ram0 count=1000

3)メモリを解放するblockdev --flushbufs /dev/ram0

4)デバイスファイルを削除します:rm /dev/ram0

5)別のものを作成してみてください:modprobe brd rd_nr=1 rd_size=4585760 max_part=1

6)ls /dev/ram*でエラーが発生する

rd_nrを好きな数に変更できることはわかっていますが、それらをその場で作成できるようにしたいと思っています。

編集:tmpfsを作成したくないので、ユースケースにはブロックデバイスが必要です

3
sreya

/dev/ram0を自分で削除しないでください。 Sudo rmmod brdを実行すると削除され、スペースが解放されてモジュールが削除されます。その後、modprobeから再開できます。

4
meuh

私は/ dev/ramに精通していませんが、tmpfsとループデバイスで同様のことができます。

mkdir /ramdisks
mount -t tmpfs tmpfs /ramdisks
dd if=/dev/zero of=/ramdisks/disk0 bs=1M count=100
losetup /dev/loop0 /ramdisks/disk0
mke2fs /dev/loop0
...
losetup -d /dev/loop0
rm /ramdisks/disk0
2
Hauke Laging