fdisk -l hiển thị 16 đĩa ram / dev / ram0 khăn / ram15


17

Kể từ khi tôi nâng cấp lên 15.10, fdisk -lbáo cáo 16 đĩa ram ( /dev/ram0... /dev/ram15). Tôi hơi không chắc chắn những gì cần thiết cho. Có an toàn để xóa chúng? Nếu không, làm thế nào tôi có thể thoát khỏi đầu ra fdisk đó?

Câu trả lời:


13

Đ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:

  • CentOS 7 - Không có đĩa RAM
  • Fedora 23 - Không có đĩa RAM
  • Ubuntu 14.04 - Không có đĩa RAM
  • Raspbian Jessie - 16 đĩa RAM (4MiB)

Nguồ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.


Và điều này đã thay đổi từ 15.04 thành 15.10?
RudiC

4
Lưu ý rằng họ không sử dụng hết bộ nhớ nếu bạn không bao giờ viết bất cứ điều gì cho họ. Điều dường như đã thay đổi là kernel không được sử dụng để liệt kê ramdisks trong / Proc / phân vùng, nhưng bây giờ thì có, vì vậy fdisk -l báo cáo về chúng.
psusi

@RudiC: Khi bạn là một người dùng uy tín 6: Nếu câu trả lời này đã giúp bạn, đừng quên nhấn vào màu xám ở bên trái của văn bản này, điều đó có nghĩa Vâng, câu trả lời này là hợp lệ ! ;-)
Fabby

1
Cảm ơn vì đã nhắc tôi. Các câu trả lời đã được khai sáng, giải thích tình hình, vì vậy cảm ơn cho những người. Thật không may, tôi vẫn không biết làm thế nào để triệt tiêu đầu ra đáng lo ngại đó.
RudiC

Chỉ cần FYI - đã kiểm tra vanilla Debian Jessie, và đó là kết quả tương tự mà bạn nhận được cho Raspian Jessie.
UpTheCux

12

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 /

1
lưu ý rằng trên một số hộp (phiên bản ACPI?) thiết bị vật lý là h d *, không phải s d *.
mèo

8

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 ...


1
Điều này buộc bạn phải biên dịch lạifdisk

5

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-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


0

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.


Đây là một câu trả lời tốt. Vui lòng xóa "yêu cầu nâng cao", tuy nhiên, vì nó không phù hợp để trả lời.

Tôi vẫn muốn thực hiện yêu cầu nâng cao. cách tốt nhất là gì?
mrchuck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.