/ dev / mmcblk0 giới hạn phân vùng


7

Tôi vừa gắn thẻ nhớ microSD có 17 phân vùng trong máy tính xách tay của mình và tôi gặp phải lỗi sau trong trình phân vùng YaST:

Your disk /dev/mmcblk0 contains 17 partitions. The maximum number of partitions that the
kernel driver of the disk can handle is 7. Partitions above 7 cannot be accessed

và thực sự - tôi chỉ có /dev/mmcblkp0...7. Chà, thực ra tôi chỉ có 3 phân vùng vì một phân vùng mở rộng bắt đầu từ phân vùng số 5, nên đó là p0, p5, p6, p7.

Tôi đã định dạng thẻ này bằng đầu đọc thẻ trong máy in trên một PC khác đang phơi thẻ microSD /dev/sdxYvà cho phép tôi tạo 17 phân vùng. Bây giờ tôi đã đặt nó vào một máy tính xách tay có đầu đọc thẻ tích hợp và nó báo lỗi ở trên. Tại sao vậy?

Chúng tôi khuyên bạn nên sử dụng LVM nhưng thôi, LVM trên microSD quá mức cần thiết và bất tiện như một địa ngục cho việc lưu trữ di động.


1
@frostschutz - Tôi đoán đó có thể là trường hợp đối với một số cấu hình kernel cũ, có lẽ là nguồn gốc của vấn đề này. Nhưng giới hạn thực tế là 256 .
mikeerv

@frostschutz - ừ, đúng vậy. MMC_BLOCK_MINORS là 8 trong config.gz của tôi. Tuy nhiên, LVM là quá mức. loopmounts sẽ dễ dàng hơn và dễ phục hồi hơn để chắc chắn. Tôi đoán hệ thống cho phép tạo các phân vùng có thể xử lý 18 hoặc bất cứ điều gì, nhưng không phải người hỏi hệ thống đã cắm nó vào.
mikeerv

Câu trả lời:


10

LVM không quá mức nếu bạn có 17 phân vùng. (IMHO)

Đối với giới hạn phân vùng, nó chỉ là mặc định. Có lẽ không ai ngờ rằng nhiều phân vùng trên một thiết bị trước đây chỉ có vài megs.

/usr/src/linux/Documentation/devices.txt:

179 block       MMC block devices
                  0 = /dev/mmcblk0      First SD/MMC card
                  1 = /dev/mmcblk0p1    First partition on first MMC card
                  8 = /dev/mmcblk1      Second SD/MMC card
                    ...

                The start of next SD/MMC card can be configured with
                CONFIG_MMC_BLOCK_MINORS, or overridden at boot/modprobe
                time using the mmcblk.perdev_minors option. That would
                bump the offset between each card to be the configured
                value instead of the default 8.

Vì vậy, nó có thể hoạt động nếu bạn biên dịch lại kernel của mình bằng CONFIG_MMC_BLOCK_MINORS=18hoặc với mmcblk.perdev_minors=18tham số kernel. (Hoặc 32 trong trường hợp nó phải là lũy thừa 2). Làm như vậy sẽ giảm tổng số mmcblkXbạn có thể có trong hệ thống của mình.

Cá nhân tôi muốn giảm số lượng phân vùng để nó hoạt động ở mọi nơi chứ không chỉ hệ thống tùy chỉnh của bạn.


Tôi có nhiều phân vùng với nhiều hệ thống tập tin khác nhau chỉ trong trường hợp một phần của thẻ bị hỏng, nó giống như một "cuộc đột kích gương" nguyên thủy trên một thẻ. LVM bổ sung chỉ làm tăng thêm sự phức tạp và cơ hội thất bại. Welp, sau đó tôi sẽ nhận được một số bộ chuyển đổi. Tôi đã từng thất bại một lần, khi btrfs trên thẻ sd bị hỏng và tôi không thể khôi phục dữ liệu - đó thực sự là cùng một thẻ, tôi đã định dạng lại nó sau thất bại.
Lapsio

Các thiết bị khác cũng có giới hạn phân vùng (thường là 15 thay vì 7). Có 259 block Block Extended Major(không chắc tại sao không được sử dụng bởi mmc, có lẽ không ai mong đợi nó) nhưng thậm chí điều đó có giới hạn. Bạn có thể sử dụng partx, kpartxvà bản đồ phân vùng bổ sung thông qua ứng dụng device mapper w / o sử dụng "LVM" cho mỗi gia nhập. LVM chỉ làm cho mọi thứ đơn giản hơn, nếu bạn sẽ phải sử dụng trình ánh xạ thiết bị. Trong một môi trường nhúng không có trình losetupánh xạ thiết bị, với offset / siz006it cũng có thể là một tùy chọn.
frostschutz

Nhưng việc thêm một tham số kernel có vẻ là điều đơn giản nhất trong tất cả mọi thứ được xem xét.
frostschutz
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.