तार्किक और भौतिक ब्लॉक डिवाइस नामों के बीच मानचित्रण


19

मैं विभिन्न तार्किक और भौतिक ब्लॉक डिवाइस नामों के बीच मैपिंग का पता नहीं लगा सकता। "कैट / प्रोक / डिस्कस्टैट्स" का आउटपुट है:

 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निर्देशिका में सब कुछ आमतौर पर वास्तविक डिवाइस के लिए एक सहिष्णुता है।
jw013

जवाबों:


25

काम dmsetup ls --treeऔर lsblkबर्तन हैं।


2
यद्यपि यह आपको वीजीएस और उनके पीवी के बीच मानचित्रण नहीं देता है। के लिए, आप को चलाने के लिए आवश्यकता होगी pvdisplayऔर vgdisplayऔर उस के लिए अपने उत्पादन सहसंबंधी dmsetup ls
एलेक्सिओस

3
@ एलेक्सियो,? कोशिश नहीं की lsblk?
पूज

lsblkCentOS 5 पर नहीं
कराटेग

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- #" डिवाइस मैपर नंबर है। डीएम नंबरों को मैप करने का सबसे आसान तरीका है lvdisplay, जो लॉजिकल वॉल्यूम नाम, वॉल्यूम समूह और ब्लॉक डिवाइस को दर्शाता है। "ब्लॉक डिवाइस" पंक्ति में, बृहदान्त्र के बाद सूचीबद्ध मूल्य डीएम नंबर है।

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)

आप दौड़ कर डीएम नंबर मैपिंग भी देख सकते हैं 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

छठा कॉलम डीएम नंबर को सूचीबद्ध करता है। इसलिए, मेरे सर्वर के लिए, vg0-opt को / ऑप्ट पर रखा गया है, और DM-5 पर वापस मैप करता है।



2

@ जॉन्स ब्यूस और @ पोइज़ के उत्तर सही हैं, लेकिन कम से कम अपेक्षाकृत हाल के कर्नेल वाले सिस्टम पर, यह और भी सरल है।

इस प्रविष्टि में /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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.