Ánh xạ giữa tên thiết bị khối logic và vật lý


19

Tôi không thể tìm ra ánh xạ giữa các tên thiết bị khối vật lý và logic khác nhau. Đầu ra của "cat / Proc / Discstats" là:

 104    0 cciss/c0d0 ...
 104    1 cciss/c0d0p1 ...
 104    2 cciss/c0d0p2 ...
 104    16 cciss/c0d1 ...
 253    0 dm-0 ...
 253    1 dm-1 ...
 253    2 dm-2 ...
 253    3 dm-3 ...

Đầu ra của "df -h" là:

/dev/cciss/c0d0p1                 99M   39M   56M  42% /boot
/dev/mapper/VolGroup01-LogVol02   908G  760G  103G  89% /home
/dev/mapper/VolGroup01-LogVol03   193G  181G  2.6G  99% /opt
/dev/mapper/VolGroup00-LogVol00   54G   11G   41G  21%  /

Tôi tìm thấy ánh xạ giữa "cciss", "dm- #" và "Volgroup ##" ở đâu?

Cảm ơn


3
Mọi thứ trong /dev/mapperthư mục thường là một liên kết tượng trưng đến thiết bị thực tế.
jw013

Câu trả lời:


25

Có tiện dụng dmsetup ls --treevà đồ dùng lsblk.


2
Mặc dù điều đó không cung cấp cho bạn ánh xạ giữa VG và PV của họ. Cho rằng, bạn sẽ cần phải chạy pvdisplayvgdisplayvà tương quan sản lượng của họ như của dmsetup ls.
Alexios

3
@Alexios ,? Không thử lsblkà?
poige

Không có lsblktrên CentOS 5.
karatedog

6

Tôi vừa mới chạy vào đây, vì vậy tôi sẽ ghi lại những gì đã giúp tôi ở đây.

Câu trả lời của poise là chính xác, Bạn có thể nhận được tất cả thông tin bạn cần dmsetup ls --tree, nếu bạn biết cách diễn giải đầu ra.

cciss là tên thiết bị, đó là đĩa thực của bạn. Các trang người đàn ông thích rõ ràng nó ra tốt, nhưng tôi sẽ sao chép các phần có liên quan ở đây:

   Device nodes
   The device naming scheme is as follows:

   Major numbers:

       104     cciss0
       105     cciss1
       106     cciss2
       105     cciss3
       108     cciss4
       109     cciss5
       110     cciss6
       111     cciss7

   Minor numbers:

       b7 b6 b5 b4 b3 b2 b1 b0
       |----+----| |----+----|
            |           |
            |           +-------- Partition ID (0=wholedev, 1-15 partition)
            |
            +-------------------- Logical Volume number

   The device naming scheme is:

       /dev/cciss/c0d0         Controller 0, disk 0, whole device
       /dev/cciss/c0d0p1       Controller 0, disk 0, partition 1
       /dev/cciss/c0d0p2       Controller 0, disk 0, partition 2
       /dev/cciss/c0d0p3       Controller 0, disk 0, partition 3

       /dev/cciss/c1d1         Controller 1, disk 1, whole device
       /dev/cciss/c1d1p1       Controller 1, disk 1, partition 1
       /dev/cciss/c1d1p2       Controller 1, disk 1, partition 2
       /dev/cciss/c1d1p3       Controller 1, disk 1, partition 3

"Dm- #" là số ánh xạ thiết bị. Cách dễ nhất để ánh xạ các số DM là chạy lvdisplay, trong đó hiển thị tên âm lượng hợp lý, nhóm âm lượng mà nó thuộc về và thiết bị khối. Trong hàng "Chặn thiết bị", giá trị được liệt kê sau dấu hai chấm là số DM.

root@centos:/dev > lvdisplay /dev/vg0/opt 
  --- Logical volume ---
  LV Name                /dev/vg0/opt
  VG Name                vg0
  LV UUID                ObffAT-txIn-5Rwy-bW5s-gekn-VLZv-71mDZi
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.00 GB
  Current LE             32
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:5

Bản đồ nào trở lại độc đáo với đầu ra của dmsetup ls --tree

vg0-opt (253:5)
 └─ (104:3)

Bạn cũng có thể xem ánh xạ số DM bằng cách chạy ls -lrt /dev/mapper.

root@centos:/dev > ls -lrt /dev/mapper
total 0
crw------- 1 root root  10, 60 Aug 29  2013 control
brw-rw---- 1 root disk 253,  0 Aug 29  2013 vg0-root
brw-rw---- 1 root disk 253,  1 Aug 29  2013 vg0-usr
brw-rw---- 1 root disk 253,  2 Aug 29  2013 vg0-tmp
brw-rw---- 1 root disk 253,  3 Aug 29  2013 vg0-var
brw-rw---- 1 root disk 253,  4 Aug 29  2013 vg0-home
brw-rw---- 1 root disk 253,  5 Aug 29  2013 vg0-opt

Cột thứ sáu liệt kê số DM. Vì vậy, đối với máy chủ của tôi, vg0-opt được gắn trên / opt và ánh xạ trở lại DM-5.



2

Câu trả lời của @Jon Buys và @ poige là chính xác, nhưng ít nhất là trên các hệ thống có kernel tương đối gần đây, nó thậm chí còn đơn giản hơn.

Các mục trong /dev/mapperchỉ đơn giản là các liên kết mềm trỏ đến dm-xthiết bị /dev, vì vậy tất cả những gì bạn cần là:

ls -l /dev/mapper

Ví dụ, trên hệ thống của tôi, điều này cho thấy:

# ls -l /dev/mapper/  
total 0
crw-------. 1 root root 10, 236 Dec 12 10:11 control
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_raid10-lv_cache_pool_home_cdata -> ../dm-3
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_raid10-lv_cache_pool_home_cmeta -> ../dm-4
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_raid10-lv_cache_pool_var_cdata -> ../dm-7
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_raid10-lv_cache_pool_var_cmeta -> ../dm-8
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_raid10-lv_home -> ../dm-6
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_raid10-lv_home_corig -> ../dm-5
lrwxrwxrwx. 1 root root       8 Dec 12 10:11 vg_raid10-lv_var -> ../dm-10
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_raid10-lv_var_corig -> ../dm-9
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_ssd-lv_root -> ../dm-0
lrwxrwxrwx. 1 root root       7 Dec 12 10:11 vg_ssd-lv_swap -> ../dm-1
lrwxrwxrwx. 1 root root       8 Dec 27 20:00 vg_ssd_sata-docker--pool -> ../dm-13
lrwxrwxrwx. 1 root root       8 Dec 27 20:00 vg_ssd_sata-docker--pool_tdata -> ../dm-12
lrwxrwxrwx. 1 root root       8 Dec 27 20:00 vg_ssd_sata-docker--pool_tmeta -> ../dm-11
lrwxrwxrwx. 1 root root       7 Dec 27 20:00 vg_ssd_sata-lv_scratch -> ../dm-2
lrwxrwxrwx. 1 root root       8 Dec 27 20:00 vg_ssd_sata-lv_vms -> ../dm-14

Nếu bạn lskhông có ích và không hiển thị các liên kết mềm, hãy thử điều này:

for x in /dev/mapper/*; do echo "$(realpath $x) -> $x"; done;

cái nào sẽ xuất ra cái gì đó như:

/dev/mapper/control -> /dev/mapper/control
/dev/dm-3 -> /dev/mapper/vg_raid10-lv_cache_pool_home_cdata
/dev/dm-4 -> /dev/mapper/vg_raid10-lv_cache_pool_home_cmeta
...

và nếu bạn muốn tìm một ánh xạ cụ thể, ví dụ dm-6:

# (for x in /dev/mapper/*; do echo "$(realpath $x) -> $x"; done;) | grep dm-6
/dev/dm-6 -> /dev/mapper/vg_raid10-lv_home

1

Tôi đã có cùng một vấn đề, có thể là "sâu" hơn một chút: lên đến mức điểm gắn kết. Trong trường hợp bất cứ ai quan tâm, đây là hai chức năng tôi đang sử dụng, để truy vấn cả hai cách.

######## FIND THE LVPATH of an existing FS. Query the lvm using FS' mount point
fileSystem_to_lvPath(){
    FS_TO_QUERY=$1
    #Call like this:  $0 /tmp
    #Relevant commands for debug: blkid, lsblk, dmsetup, lvdisplay, lvs
    #OLD Solution: DEV_MAPPER=$(df -l --output=source $1 | awk '{print $1}' | cut -d"/" -f 4 | tail -1)

    #Find DeviceMapper_MajorMinorNumber for specific fs
    DeviceMapper_MajorMinorNumber=$(lsblk --noheadings --output TYPE,MAJ:MIN,MOUNTPOINT | grep -w lvm | grep -w $FS_TO_QUERY | awk '{print $2}')

    #VG=$(lvs --noheadings --separator : --options lv_kernel_major,lv_kernel_minor,vg_name,lv_name,lv_path | grep $DeviceMapper_MajorMinorNumber | awk -F : '{print $3}')
    #LV=$(lvs --noheadings --separator : --options lv_kernel_major,lv_kernel_minor,vg_name,lv_name,lv_path | grep $DeviceMapper_MajorMinorNumber | awk -F : '{print $4}')
    LV_PATH=$(lvs --noheadings --separator : --options lv_kernel_major,lv_kernel_minor,vg_name,lv_name,lv_path | grep $DeviceMapper_MajorMinorNumber | awk -F : '{print $5}')
    echo $LV_PATH
    #echo "$VG/$LV"
}

và truy vấn ngược:

######## FIND THE FS (and FS' mountpoint) of an existing LVPATH:
 lvPath_to_fileSystem(){
    LV_PATH=$1
    #Call like this:  $0 /dev/vg00/opt
    #Relevant commands for debug: blkid, lsblk, dmsetup, lvdisplay, lvs
    #OLD Solution: DEV_MAPPER=$(df -l --output=source $1 | awk '{print $1}' | cut -d"/" -f 4 | tail -1)

    #Find DeviceMapper_MajorMinorNumber for specific lv_path
    DeviceMapper_MajorMinorNumber=$(lvs --noheadings --separator : --options lv_kernel_major,lv_kernel_minor,vg_name,lv_name,lv_path | grep $LV_PATH | awk -F : '{print $1":"$2}')

    FS=$(lsblk --noheadings --output TYPE,MAJ:MIN,MOUNTPOINT | grep -w lvm | grep -w $DeviceMapper_MajorMinorNumber | awk '{print $3}')

    echo $FS
}

1

Sử dụng dmsetup ls --tree -o blkdevname.

[root@redhat7 Packages]# dmsetup ls --tree -o blkdevname
rhel-swap <dm-1> (253:1)
 └─ <sda2> (8:2)
rhel-root <dm-0> (253:0)
 └─ <sda2> (8:2)
oraclevg-oraclelv <dm-2> (253:2)
 └─ <sdb> (8:16)

cần roottruy cập
iruvar

-2

Tất cả các ràng buộc được ánh xạ trong tập tin /etc/multipath/bindings. Bạn có thể đổi tên ở đây bất kỳ thiết bị nào như từ /dev/mapper/mpathfđến /dev/mapper/mpathe.

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.