ตั้งแต่ฉันอัพเกรดเป็น 15.10 fdisk -l
รายงานหน่วยความจำดิสก์ 16 ( /dev/ram0
... /dev/ram15
) ฉันไม่แน่ใจในสิ่งที่พวกเขาต้องการ การลบมันปลอดภัยหรือไม่ ถ้าไม่ฉันจะกำจัดเอาต์พุต fdisk นั้นได้อย่างไร
ตั้งแต่ฉันอัพเกรดเป็น 15.10 fdisk -l
รายงานหน่วยความจำดิสก์ 16 ( /dev/ram0
... /dev/ram15
) ฉันไม่แน่ใจในสิ่งที่พวกเขาต้องการ การลบมันปลอดภัยหรือไม่ ถ้าไม่ฉันจะกำจัดเอาต์พุต fdisk นั้นได้อย่างไร
คำตอบ:
นี่เป็นเรื่องปกติอย่างสมบูรณ์ในระบบ Linux เป็นการเตรียมการสำหรับกรณีที่จำเป็นต้องใช้ RAM ดิสก์ แต่ละอันมีขนาด 64 MiB ซึ่งเป็นค่าที่ต่ำมาก หากจำเป็นขนาดจะเพิ่มขึ้นโดยอัตโนมัติ
ทำไมจู่ๆมี RAM 16 แผ่นใน Wily สามารถอธิบายได้ด้วยความยากลำบาก
ฉันได้ทดสอบดิสก์ RAM เริ่มต้นที่:
RAM disk driver เป็นวิธีการใช้หน่วยความจำระบบหลักเป็นอุปกรณ์บล็อค จำเป็นสำหรับ initrd ซึ่งเป็นระบบไฟล์เริ่มต้นที่ใช้หากคุณต้องการโหลดโมดูลเพื่อเข้าถึงระบบไฟล์รูท (ดูเอกสาร / initrd.txt) นอกจากนี้ยังสามารถใช้สำหรับระบบไฟล์ชั่วคราวสำหรับงานเข้ารหัสเนื่องจากเนื้อหาจะถูกลบเมื่อรีบูต
ดิสก์ RAM เติบโตแบบไดนามิกเมื่อต้องการพื้นที่เพิ่ม ทำได้โดยใช้ RAM จากแคชบัฟเฟอร์ ไดรเวอร์ทำเครื่องหมายบัฟเฟอร์ที่ใช้สกปรกดังนั้นระบบย่อย VM จะไม่พยายามเรียกคืนในภายหลัง
ดิสก์ RAM สนับสนุนดิสก์ RAM สูงสุด 16 ตัวโดยค่าเริ่มต้นและสามารถกำหนดค่าใหม่เพื่อรองรับดิสก์ RAM ได้ไม่ จำกัด จำนวน (คุณต้องรับความเสี่ยงเอง) เพียงเปลี่ยนสัญลักษณ์การกำหนดค่า BLK_DEV_RAM_COUNT ในเมนู Block drivers config และสร้างเคอร์เนลอีกครั้ง
ไม่ทราบว่าทำไม 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 /
ฉันรู้ว่ากระทู้นี้เก่า แต่ฉันเพิ่งเจอเมื่อไม่นานมานี้ หลังจากติดตั้ง 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;
บางทีนี่อาจช่วยคนอื่น ...
โพสต์โดยโยฮันเนสนั้นถูกต้อง 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
ลักษณะการทำงานนี้ควบคุมโดยตัวเลือกเคอร์เนลที่คุณสามารถเปลี่ยนได้โดยการคอมไพล์เคอร์เนลที่กำหนดเองใหม่เท่านั้น คุณสามารถเปลี่ยนขนาดของอุปกรณ์ 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 เป็นระบบไฟล์เริ่มต้น