การแม็พระหว่างชื่ออุปกรณ์โลจิคัลและฟิสิคัลบล็อก


19

ฉันไม่สามารถค้นหาการแม็พระหว่างชื่ออุปกรณ์บล็อกโลจิคัลและฟิสิคัลที่แตกต่างกันได้ ผลลัพธ์ของ "cat / proc / diskstats" คือ:

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

ผลลัพธ์ของ "df -h" คือ:

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

ฉันจะค้นหาการแมประหว่าง "cciss", "dm- #" และ "VolGroup ##" ได้จากที่ใด

ขอบคุณ


3
ทุกอย่างใน/dev/mapperไดเรกทอรีนั้นเป็น symlink ไปยังอุปกรณ์จริง
jw013

คำตอบ:


25

มีประโยชน์dmsetup ls --treeและประโยชน์lsblkมากมาย


2
แม้ว่าจะไม่ได้ให้การแมประหว่าง VG กับ PV ของคุณ เพื่อที่คุณจะต้องทำงานpvdisplayและและความสัมพันธ์ของพวกเขาเพื่อการส่งออกของvgdisplay dmsetup ls
Alexios

3
@Alexios,? ไม่ได้ลองlsblk?
poige

ไม่มีlsblkใน CentOS 5.
karatedog

6

ฉันเพิ่งเจอสิ่งนี้ดังนั้นฉันจะบันทึกสิ่งที่ช่วยฉันที่นี่

คำตอบของ poise นั้นถูกต้องคุณสามารถรับข้อมูลทั้งหมดที่คุณต้องการได้dmsetup ls --treeหากคุณรู้วิธีตีความผลลัพธ์

cciss เป็นชื่ออุปกรณ์นั่นคือดิสก์จริงของคุณ หน้าคนคาถามันออกมาได้ดี แต่ฉันจะคัดลอกส่วนที่เกี่ยวข้องที่นี่:

   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- #" คือหมายเลขอุปกรณ์ทำแผนที่ วิธีที่ง่ายที่สุดในการจับคู่หมายเลข DM คือการเรียกใช้lvdisplayซึ่งแสดงชื่อโลจิคัลวอลุ่มกลุ่มวอลุ่มที่เป็นเจ้าของและอุปกรณ์บล็อก ในแถว "อุปกรณ์บล็อก" ค่าที่แสดงหลังเครื่องหมายโคลอนคือหมายเลข 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

ซึ่งแมปกลับไปที่ผลลัพธ์ของ dmsetup ls --tree

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

นอกจากนี้คุณยังสามารถดูแมปจำนวน DM 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

คอลัมน์ที่หกแสดงหมายเลข DM ดังนั้นสำหรับเซิร์ฟเวอร์ของฉัน vg0-opt ถูกเมาท์บน / opt และแม็พกลับไปที่ DM-5



2

คำตอบของ @Jon Buys's และ @ poige นั้นถูกต้อง แต่อย่างน้อยในระบบที่มีเคอร์เนลที่ค่อนข้างใหม่มันง่ายกว่ามาก

รายการใน/dev/mapperนั้นเป็นลิงก์อ่อน ๆ ที่ชี้ไปที่dm-xอุปกรณ์/devดังนั้นคุณควรจะได้รับ

ls -l /dev/mapper

ตัวอย่างเช่นในระบบของฉันสิ่งนี้แสดง:

# 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

หากคุณlsไม่ช่วยเหลือและไม่แสดงลิงค์อ่อนลองสิ่งนี้:

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

ซึ่งควรส่งออกสิ่งที่ชอบ:

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

และหากคุณต้องการค้นหาแผนที่เฉพาะเช่น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

ฉันมีปัญหาเดียวกันอาจจะ "ลึก" เล็กน้อย: ถึงระดับจุดเมานท์ ในกรณีที่ใครสนใจนี่คือฟังก์ชั่นสองอย่างที่ฉันใช้สำหรับค้นหาทั้งสองวิธี

######## 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"
}

และการสืบค้นกลับ:

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

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)

ต้องการrootการเข้าถึง
iruvar

-2

/etc/multipath/bindingsมีผลผูกพันทุกแมปในแฟ้ม คุณสามารถเปลี่ยนชื่อที่นี่อุปกรณ์ใด ๆ เช่นจากการ/dev/mapper/mpathf/dev/mapper/mpathe

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.