fdisk -l แสดง ram 16 ดิสก์ / dev / ram0 … / ram15


17

ตั้งแต่ฉันอัพเกรดเป็น 15.10 fdisk -lรายงานหน่วยความจำดิสก์ 16 ( /dev/ram0... /dev/ram15) ฉันไม่แน่ใจในสิ่งที่พวกเขาต้องการ การลบมันปลอดภัยหรือไม่ ถ้าไม่ฉันจะกำจัดเอาต์พุต fdisk นั้นได้อย่างไร

คำตอบ:


13

นี่เป็นเรื่องปกติอย่างสมบูรณ์ในระบบ Linux เป็นการเตรียมการสำหรับกรณีที่จำเป็นต้องใช้ RAM ดิสก์ แต่ละอันมีขนาด 64 MiB ซึ่งเป็นค่าที่ต่ำมาก หากจำเป็นขนาดจะเพิ่มขึ้นโดยอัตโนมัติ

ทำไมจู่ๆมี RAM 16 แผ่นใน Wily สามารถอธิบายได้ด้วยความยากลำบาก

ฉันได้ทดสอบดิสก์ RAM เริ่มต้นที่:

  • CentOS 7 - ไม่มีดิสก์ RAM
  • Fedora 23 - ไม่มีดิสก์ RAM
  • Ubuntu 14.04 - ไม่มีดิสก์ RAM
  • Raspbian Jessie - ดิสก์RAM 16 (4MiB)

แหล่ง

RAM disk driver เป็นวิธีการใช้หน่วยความจำระบบหลักเป็นอุปกรณ์บล็อค จำเป็นสำหรับ initrd ซึ่งเป็นระบบไฟล์เริ่มต้นที่ใช้หากคุณต้องการโหลดโมดูลเพื่อเข้าถึงระบบไฟล์รูท (ดูเอกสาร / initrd.txt) นอกจากนี้ยังสามารถใช้สำหรับระบบไฟล์ชั่วคราวสำหรับงานเข้ารหัสเนื่องจากเนื้อหาจะถูกลบเมื่อรีบูต

ดิสก์ RAM เติบโตแบบไดนามิกเมื่อต้องการพื้นที่เพิ่ม ทำได้โดยใช้ RAM จากแคชบัฟเฟอร์ ไดรเวอร์ทำเครื่องหมายบัฟเฟอร์ที่ใช้สกปรกดังนั้นระบบย่อย VM จะไม่พยายามเรียกคืนในภายหลัง

ดิสก์ RAM สนับสนุนดิสก์ RAM สูงสุด 16 ตัวโดยค่าเริ่มต้นและสามารถกำหนดค่าใหม่เพื่อรองรับดิสก์ RAM ได้ไม่ จำกัด จำนวน (คุณต้องรับความเสี่ยงเอง) เพียงเปลี่ยนสัญลักษณ์การกำหนดค่า BLK_DEV_RAM_COUNT ในเมนู Block drivers config และสร้างเคอร์เนลอีกครั้ง


และนี่เปลี่ยนจาก 15.04 เป็น 15.10?
RudiC

4
โปรดทราบว่าพวกเขาไม่ได้ใช้หน่วยความจำใด ๆ หากคุณไม่เคยเขียนอะไรให้พวกเขา สิ่งที่ดูเหมือนจะมีการเปลี่ยนแปลงคือเคอร์เนลไม่ได้ใช้ในการแสดงรายการ ramdisks ใน / proc / พาร์ทิชัน แต่ตอนนี้ทำดังนั้น fdisk -l รายงานเกี่ยวกับพวกเขา
psusi

@RudiC: ในฐานะที่คุณเป็นผู้ใช้ชื่อเสียงที่ 6: ถ้าคำตอบนี้ช่วยให้คุณไม่ลืมที่จะคลิกสีเทาด้านซ้ายของข้อความนี้ซึ่งหมายความว่าใช่คำตอบนี้ถูกต้อง ! ;-)
Fabby

1
ขอบคุณที่เตือนฉัน. คำตอบคือความกระจ่างอธิบายสถานการณ์ดังนั้นขอบคุณสำหรับเหล่านั้น น่าเสียดายที่ฉันยังไม่รู้ว่าจะปราบปรามสิ่งรบกวนที่รบกวน
RudiC

เพียงแค่ FYI - ตรวจสอบวานิลลาเดเบียนเจสซีและมันก็เป็นผลลัพธ์เดียวกันกับที่คุณได้รับสำหรับราสเปียนเจสซี
UpTheCreek

12

ไม่ทราบว่าทำไม fdisk จึงรายงาน / dev / ram ในทันที

อย่างไรก็ตามคุณสามารถบอก fdisk เพื่อรายงานเฉพาะอุปกรณ์

fdisk -l /dev/sd*

จะแสดงรายการไดรฟ์จริง

หรือคุณสามารถใช้แยกแล้วและ 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 /

1
โปรดทราบว่าในบางกล่อง (รุ่น ACPI?) อุปกรณ์ทางกายภาพคือh d * ไม่ใช่s d *
แมว

8

ฉันรู้ว่ากระทู้นี้เก่า แต่ฉันเพิ่งเจอเมื่อไม่นานมานี้ หลังจากติดตั้ง Slackware 14.2 ผมได้เหมือนกัน 16 RAM fdisk -lดิสก์ในการส่งออกของ ฉันตรวจสอบเพิ่มเติมอีกเล็กน้อยและพบว่าในแพ็คเกจ 'util-linux' ซึ่ง fdisk (ในหมู่อื่น ๆ ) เป็นส่วนหนึ่งการเลือกสิ่งที่ fdisk พิจารณาเมื่ออุปกรณ์บล็อกเปลี่ยนไปอย่างมาก ในแพคเกจ util-linux รุ่น 2.21 การตัดสินใจนี้ขึ้นอยู่กับรูปทรงเรขาคณิตของดิสก์ที่รายงานในขณะที่รุ่นปัจจุบัน 2.72 เอาต์พุตของ / proc / พาร์ติชันจะถูกแยกวิเคราะห์ จากการค้นหาของฉันบนอินเทอร์เน็ต ramdisks อยู่ที่นั่นใน Linux ตั้งแต่ kernel 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;

บางทีนี่อาจช่วยคนอื่น ...


1
บังคับให้คุณทำการคอมไพล์fdisk

5

โพสต์โดยโยฮันเนสนั้นถูกต้อง ram-disk นั้นอยู่ในเคอร์เนลเป็นเวลานานมันเป็นพฤติกรรมของ 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


0

ลักษณะการทำงานนี้ควบคุมโดยตัวเลือกเคอร์เนลที่คุณสามารถเปลี่ยนได้โดยการคอมไพล์เคอร์เนลที่กำหนดเองใหม่เท่านั้น คุณสามารถเปลี่ยนขนาดของอุปกรณ์ ram * โดยใช้พารามิเตอร์ GRUB ramdisk_size แต่ไม่สามารถนับได้ สิ่งนี้ไม่มีประโยชน์เพราะแม้ว่าคุณจะมีหน่วยความจำจำนวนมากทุก ramdisk จะเพิ่มขึ้นตามขนาดที่คุณตั้งไว้ ตัวอย่างเช่นถ้าคุณต้องการ ramdisk 8GB - ซึ่งฉันทำดูด้านล่าง - คุณจะได้รับ 16x 8GB ฉันไม่ทราบว่าสิ่งนี้จะไม่เป็นอันตรายหรือไม่หากคุณไม่ได้ใช้ประโยชน์จากพวกเขาส่วนใหญ่ แต่ฉันลังเลที่จะยกเลิกระบบของฉันหากไม่เป็นเช่นนั้น

ฉันต้องการใช้อุปกรณ์ 8GB / dev / ram เพื่อทำมิรเรอร์ด้วยพาร์ติชั่นฮาร์ดดิสก์ 8GB สำหรับจุดประสงค์เฉพาะในการวางพื้นที่บนดิสก์ แอปพลิเคชันของฉันจะเขียนบล็อกออกไปยังที่เก็บข้อมูลปกติโดยอัตโนมัติตามพื้นที่ว่างดังนั้นมันจึงไม่สำคัญว่ามันจะเล็ก

ด้วย write-behind ภายใต้ mdadm สิ่งนี้ควรมีผลในการทำให้การเขียนเป็นไปอย่างรวดเร็วถ้ามีการระเบิดด้วยด้าน HDD ของกระจกเงาที่จับได้เมื่อสิ่งต่าง ๆ เงียบลงเพื่อให้การปกป้องข้อมูลอย่างน้อยที่สุด ฉันใช้การตั้งค่านี้กับ Solaris แต่ดูเหมือนว่า Linux จะไม่สามารถทำได้เพราะมันออกมานอกกรอบ

เนื่องจากแรมเป็นคำสั่งที่มีขนาดเร็วกว่า SSD นี่น่าจะชนะ แต่ฉันไม่สามารถลองได้ อย่างที่คนอื่นสังเกตถ้าคุณสร้าง RAID1 ด้วย tmpfs มันจะไม่รวมกันอีกครั้งตอนบู๊ตเนื่องจากขั้นตอนที่เริ่มต้น tmpfs นั้นช้าเกินไปในกระบวนการบู๊ต - ที่ mountall mds ของคุณนั้นดีและสร้างขึ้นจริงในตอนนั้นดังนั้นจึงล้มเหลวและคุณต้องสร้างใหม่ด้วยตนเอง

อุปกรณ์ OTOH / dev / ram * จะสมบูรณ์แบบสำหรับสิ่งนี้ - หากคุณสามารถกำหนดค่าได้ พวกเขาเป็นสิ่งแรกที่ได้รับการติดตั้งและ ram0 เป็นระบบไฟล์เริ่มต้น


นี่เป็นคำตอบที่ดี โปรดลบ "คำขอการปรับปรุง" ออกเนื่องจากไม่เหมาะสมสำหรับคำตอบ

ฉันยังต้องการที่จะทำการร้องขอการปรับปรุง วิธีที่ดีที่สุดคืออะไร?
mrchuck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.