2009-12-08 51 views
11

Tôi đang tìm cách dễ dàng hơn để kiểm tra ứng dụng của mình đối với các thiết bị chặn bị lỗi tạo ra lỗi đọc khi đọc một số khối nhất định. Đang cố gắng sử dụng một ổ đĩa cứng vật lý với các khối xấu đã biết là một nỗi đau và tôi muốn tìm một giải pháp phần mềm nếu có.Mô phỏng thiết bị chặn bị lỗi có lỗi đọc?

Tôi đã tìm thấy Linux Disk Failure Simulation Driver cho phép tạo giao diện có thể được định cấu hình để phát sinh lỗi khi các dải khối nhất định được đọc, nhưng dành cho hạt nhân Linux 2.4 và chưa được cập nhật 2.6.

Điều gì sẽ là hoàn hảo sẽ là trình điều khiển vòng lặp và vòng lặp cũng cho phép bạn định cấu hình để trả về lỗi đọc khi cố gắng đọc từ một tập hợp các khối nhất định.

+0

Ngoài các câu trả lời xem [danh sách các cơ chế tiêm lỗi đĩa Linux] (https://unix.stackexchange.com/a/144200/61610) trên trên [Tệp Đặc biệt gây ra lỗi I/O và câu hỏi Unix & Linux] (https://unix.stackexchange.com/questions/77492/special-file-that-causes-io-error/144200#144200). – Anon

Trả lời

19

Đây không phải là thiết bị vòng lặp mà bạn đang tìm kiếm, mà là thiết bị lập bản đồ.

Sử dụng dmsetup để tạo thiết bị được hỗ trợ bởi mục tiêu "lỗi". Nó sẽ hiển thị trong /dev/mapper/<name>.

Trang 7 của Device mapper presentation (PDF) đã chính xác những gì bạn đang tìm kiếm:

dmsetup create bad_disk << EOF 
    0 8  linear /dev/sdb1 0 
    8 1  error 
    9 204791 linear /dev/sdb1 9 
EOF 

Hoặc bỏ qua sdb1 phần để đưa các "lỗi" mục tiêu là thiết bị cho khối 0-8 (thay vì sdb1) để tạo đĩa lỗi tinh khiết.

Xem thêm The Device Mapper phụ lục từ "RHEL 5 Quản lý trình quản lý khối lượng hợp lý".

+0

Làm việc hoàn hảo - chỉ là những gì tôi cần. Cảm ơn! – SteveG

+0

Tệp PDF ở trên không giải thích được (ít nhất là tôi không hiểu) cú pháp dòng lệnh cho "dmsetup create". Trang man giải thích: dmsetup create dev_name dev_mapper_table. Arg thứ hai (dev_mapper_table) là một tệp văn bản mô tả cách các khối được ánh xạ. Trang man dmsetup là terse và không giải thích cú pháp của bảng này. Đây là một liên kết giải thích nó ... [link] (https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/device_mapper.html#dm-mappings) – technicalbloke

4

Cách dễ nhất để chơi với thiết bị chặn đang sử dụng nbd.

Tải xuống nguồn của người dùng từ git://github.com/yoe/nbd.git và sửa đổi nbd-server.c để không đọc hoặc viết trên bất kỳ khu vực nào bạn muốn không thành công hoặc thất bại trong mẫu ngẫu nhiên có thể kiểm soát hoặc về cơ bản bất cứ điều gì bạn muốn.

5

Dường như khả năng tiêm lỗi tích hợp của Linux sẽ là một ý tưởng hay để sử dụng.

Blog: http://blog.wpkg.org/2007/11/08/using-fault-injection/
tham khảo: https://www.kernel.org/doc/Documentation/fault-injection/fault-injection.txt

+0

Trong khi liên kết là tốt để đọc thêm, bạn nên trình bày một cách rõ ràng một câu trả lời cụ thể ở đây, tôi đoán vậy. –

+0

Nó cũng phụ thuộc vào hạt nhân bạn đang sử dụng: Ví dụ trong hạt nhân SLES11 SP4 tính năng không được biên dịch trong. –

Các vấn đề liên quan