Câu trả lời:
Điều này là hoàn toàn bình thường trên các hệ thống Linux. Đây là một hành động chuẩn bị cho trường hợp cần phải có đĩa RAM. Mỗi chiếc đều có kích thước 64 MiB, giá trị rất thấp. Nếu cần thiết, kích thước sẽ được tăng tự động.
Tại sao đột nhiên 16 đĩa RAM có sẵn trong Wily, chỉ có thể được giải thích với độ khó.
Tôi đã kiểm tra các đĩa RAM mặc định trên:
Trình điều khiển đĩa RAM là một cách để sử dụng bộ nhớ hệ thống chính như một thiết bị khối. Nó được yêu cầu cho initrd, một hệ thống tệp ban đầu được sử dụng nếu bạn cần tải các mô-đun để truy cập hệ thống tệp gốc (xem Tài liệu / initrd.txt). Nó cũng có thể được sử dụng cho một hệ thống tệp tạm thời để hoạt động với tiền điện tử, vì nội dung bị xóa khi khởi động lại.
Đĩa RAM tự động phát triển khi cần thêm dung lượng. Nó thực hiện điều này bằng cách sử dụng RAM từ bộ đệm bộ đệm. Trình điều khiển đánh dấu bộ đệm mà nó đang sử dụng là bẩn để hệ thống con VM không cố lấy lại chúng sau này.
Đĩa RAM hỗ trợ tối đa 16 đĩa RAM theo mặc định và có thể được cấu hình lại để hỗ trợ số lượng đĩa RAM không giới hạn (có nguy cơ của riêng bạn). Chỉ cần thay đổi biểu tượng cấu hình BLK_DEV_RAM_COUNT trong menu Cấu hình trình điều khiển khối và (tái) xây dựng kernel.
Không biết tại sao fdisk đột nhiên báo cáo / dev / ram.
Tuy nhiên, bạn có thể yêu cầu fdisk chỉ báo cáo các thiết bị cụ thể.
fdisk -l /dev/sd*
Sẽ liệt kê các ổ đĩa thực.
Ngoài ra, bạn cũng có thể sử dụng parted và lsblk.
Đầu ra chia tay cho một ổ đĩa ở đây.
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
Đầu ra lsblk tương ứng
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 /
Tôi biết chủ đề này là cũ, nhưng tôi chỉ đi qua nó gần đây. Sau khi cài đặt Slackware 14.2, tôi nhận được cùng 16 đĩa RAM trong đầu ra của
fdisk -l
. Tôi đã nghiên cứu thêm một chút và thấy rằng trong gói 'linux-linux', mà fdisk (trong số những thứ khác) là một phần của, bộ lọc của những gì fdisk coi là thiết bị khối thay đổi đáng kể. Trong gói produc-linux phiên bản 2.21, quyết định này dựa trên hình dạng đĩa được báo cáo trong khi ở phiên bản hiện tại 2.72, đầu ra của / Proc / phân vùng được phân tích cú pháp. Theo các tìm kiếm của tôi trên internet, ramdisks đã có trong Linux kể từ kernel 2.4, fdisk không hiển thị chúng. Vì tôi thấy khó chịu vì việc liệt kê nhiều "đĩa" không phải là đĩa thật, tôi đã tạo một bản vá cho 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;
Có lẽ điều này giúp một số người khác ...
Bài viết của Johannes là chính xác. Các đĩa ram đã ở trong kernel từ lâu, đó là hành vi của fdisk đã thay đổi. Thay vì vá fdisk, tôi đã viết một tập lệnh perl đơn giản (5 dòng mã, 6 dòng nhận xét) để xử lý vấn đề. Tôi đặt nó vào ~/bin/fdisk-l
, và bây giờ tôi chỉ nhớ không đặt một khoảng trống giữa fdisk
và -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, $_);
Kể từ tháng 4 năm 2017, các đĩa ram không còn xuất hiện theo mặc định với kernel Ubuntu hiện tại, vì vậy vấn đề này đã được giải quyết. Xem: https://bugs.launchpad.net/ubfox/+source/linux/+orms/1593293
Hành vi này bị chi phối bởi các tùy chọn kernel mà bạn chỉ có thể thay đổi bằng cách biên dịch lại kernel tùy chỉnh. Bạn có thể thay đổi kích thước của các thiết bị ram * bằng cách sử dụng tham số GRUB ramdisk_size nhưng không phải là số lượng. Điều này là vô ích, bởi vì ngay cả khi bạn có nhiều bộ nhớ, mỗi ramdisk sẽ tăng lên bất kỳ kích thước nào bạn đặt. Vì vậy, ví dụ nếu bạn muốn một ramdisk 8GB - mà tôi làm, hãy xem bên dưới - bạn sẽ nhận được các bản sao 16x 8GB. Tôi không biết liệu điều này có vô hại hay không nếu bạn không sử dụng hầu hết trong số họ, nhưng tôi miễn cưỡng gạch hệ thống của mình nếu không.
Tôi muốn sử dụng thiết bị 8GB / dev / ram để nhân bản với phân vùng đĩa cứng 8GB cho mục đích cụ thể là đặt một khu vực đĩa nóng trên đó. Ứng dụng của tôi sẽ tự động ghi các khối ra bộ nhớ thông thường dựa trên dung lượng trống, do đó không thành vấn đề khi nó nhỏ.
Với ghi phía sau dưới mdadm, điều này sẽ có tác dụng làm cho ghi nhanh nếu chúng bị vỡ, với mặt ổ cứng của gương bắt kịp khi mọi thứ yên tĩnh hơn để cung cấp ít nhất một số bảo vệ dữ liệu. Tôi đã sử dụng thiết lập này với Solaris, nhưng dường như không thể với Linux khi nó ra khỏi hộp.
Vì RAM là đơn đặt hàng có cường độ nhanh hơn SSD, nên đây là một chiến thắng, nhưng tôi không thể thử nó. Như những người khác đã nhận thấy, nếu bạn xây dựng RAID1 bằng tmpfs, nó sẽ không lắp ráp lại khi khởi động vì bước khởi tạo tmpfs là quá muộn trong quá trình khởi động - tại mountall. Mds của bạn được xây dựng tốt và thực sự sau đó, vì vậy nó thất bại và bạn phải xây dựng lại nó bằng tay.
Các thiết bị OTOH / dev / ram * sẽ hoàn hảo cho việc này - nếu bạn có thể định cấu hình chúng. Chúng là thứ đầu tiên được thiết lập và ram0 là hệ thống tập tin / ban đầu.