যৌক্তিক এবং শারীরিক ব্লক ডিভাইসের নামগুলির মধ্যে ম্যাপিং


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

"সিসিস", "ডিএম- #" এবং "ভলগ্রুপ ##" এর মধ্যে ম্যাপিংটি কোথায় পাব?

ধন্যবাদ


3
সবকিছু /dev/mapperডিরেক্টরি সাধারণত প্রকৃত ডিভাইসে একটি সিমবলিক লিঙ্ক আছে।
jw013

উত্তর:


25

সুবিধাজনক dmsetup ls --treeএবং lsblkব্যবহারগুলি রয়েছে।


2
যদিও এটি আপনাকে ভিজি এবং তাদের পিভিগুলির মধ্যে ম্যাপিং দেয় না। তার জন্য, আপনার চালানো pvdisplayএবং vgdisplayতাদের আউটপুট এর সাথে সম্পর্কিত করতে হবে dmsetup ls
অ্যালেক্সিয়াস

3
@ অ্যালেক্সিয়স,? চেষ্টা করিনি lsblk?
পোজ

কোন lsblkসেন্টওএস 5. উপর
karatedog

6

আমি কেবল এটির মধ্যে দৌড়াদৌড়ি করছিলাম, তাই আমি এখানে কীভাবে সহায়তা করেছি তা নথি করব।

পোইজের উত্তরটি সঠিক, আপনি dmsetup ls --treeকীভাবে আউটপুটটি ব্যাখ্যা করতে জানেন তা থেকে আপনার প্রয়োজনীয় সমস্ত তথ্য পেতে পারেন ।

সিসিস হ'ল ডিভাইসের নাম, এটি আপনার আসল ডিস্ক। Man পৃষ্ঠা ভাল এটা spells আউট, কিন্তু আমি এখানে প্রাসঙ্গিক অধ্যায় অনুলিপি করব:

   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

ষষ্ঠ কলামে ডিএম নম্বর তালিকাভুক্ত করা হয়েছে। সুতরাং, আমার সার্ভারের জন্য, ভিজি -0-অপ্টটি মাউন্ট করা / অপ্ট হয় এবং মানচিত্রগুলি ডিএম -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অ্যাক্সেস প্রয়োজন
ইরুবার

-2

সমস্ত বাঁধাই ফাইল ম্যাপ করা হয় /etc/multipath/bindings। আপনি এর থেকে মত এখানে যেকোনো ডিভাইস নাম পরিবর্তন করতে পারেন /dev/mapper/mpathfথেকে /dev/mapper/mpathe

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.