Làm thế nào để tìm hình ảnh thuộc về / dev / loop?


9

Tôi làm việc rất nhiều với các ổ đĩa được tạo ảnh, nghĩa là thực hiện một bản sao dd của ổ đĩa đang đề cập và sau đó làm việc trên hình ảnh thay vì chính ổ đĩa đó.

Đối với hầu hết các công việc, tôi sử dụng kpartx để ánh xạ các phân vùng của ổ đĩa vào một thiết bị dưới / dev / mapper /. Điều tôi băn khoăn ở đây là liệu có cách nào để tìm bản đồ nào thuộc về hình ảnh nào không.

Xem xét điều này:

root@vyvyan:/tmp# kpartx -a -v Image1 
add map loop1p1 (254:4): 0 10240 linear /dev/loop1 2048
add map loop1p2 (254:5): 0 10240 linear /dev/loop1 12288
add map loop1p3 (254:6): 0 52848 linear /dev/loop1 22528
root@vyvyan:/tmp# kpartx -a -v Image2
add map loop2p1 (254:7): 0 33508 linear /dev/loop2 2048
add map loop2p2 (254:8): 0 39820 linear /dev/loop2 35556

Bây giờ, hãy nói rằng tôi quên hình ảnh đã đi đến ánh xạ nào. Có cách nào để cho kpartx - hoặc kernel, hoặc bất cứ điều gì khác - cho tôi biết hình ảnh đó đi đâu không?

EDIT Ngoài ra, nếu tôi vô tình rm tệp hình ảnh trong khi kpartx đã thêm ánh xạ, làm thế nào để bạn loại bỏ ánh xạ? kpartx muốn hình ảnh thực tế có mặt.

Câu trả lời:


13

losetup (lệnh thường được sử dụng để thiết lập chúng) sẽ cho bạn biết:

$ /sbin/losetup --list
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso

Lưu ý rằng với các phiên bản cũ hơn, bạn có thể sử dụng -athay vì sử dụng --listvà kết quả này ở định dạng khác và hiện không dùng nữa.

Thông tin đến từ /sys:

$ cat /sys/class/block/loop0/loop/backing_file 
/var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso

Một lựa chọn khác, có thể di động hơn, là lấy nó từ udisks:

$ udisksctl info -b /dev/loop0
/org/freedesktop/UDisks2/block_devices/loop0:
⋮
  org.freedesktop.UDisks2.Loop:
    Autoclear:          false
    BackingFile:        /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso
    SetupByUID:         1000
⋮

losetupcũng sẽ vui vẻ loại bỏ chúng cho bạn, sử dụng -dtùy chọn. Điều đó chỉ yêu cầu thiết bị lặp như một tham số; nó không quan tâm đến tập tin / thiết bị sao lưu.


losetup -d / dev / loop0: "loop: không thể xóa thiết bị / dev / loop0: Thiết bị hoặc tài nguyên bận". Tuy nhiên, nó không được gắn kết hoặc sử dụng theo bất kỳ cách nào. Tại sao lại thế này?
bos

@bos bạn có nó được ánh xạ dưới / dev / mapper không? Điều đó có thể được tính là sử dụng. Xóa ánh xạ thiết bị ánh xạ thiết bị. (nếu kpartx không có cách nào để làm điều đó, bạn có thể sử dụng dmsetup)
derobert

0

Tôi cũng sẽ thêm như sau. Bạn có thể thăm dò nơi các thiết bị được ánh xạ với kpartx. Ví dụ:

%> sudo kpartx -lv /dev/loop0
loop0p1 : 0 122880 /dev/loop0 8192
loop0p2 : 0 8257536 /dev/loop0 131072

Điều này hữu ích khi bạn quên nơi các tệp được ánh xạ. Tất nhiên loop0p1 và loop0p2 được ánh xạ dưới thư mục / dev / mapper.


Sẽ thật tuyệt nếu kpartx liệt kê rõ ràng thư mục mà các thiết bị lặp được ánh xạ bên dưới.
Xofo
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.