Mantıksal ve fiziksel blok cihaz adları arasında eşleme


19

Farklı mantıksal ve fiziksel blok cihaz adları arasındaki eşlemeyi bulamıyorum. "Cat / proc / diskstats" çıktısı:

 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" çıktısı:

/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- #" ve "VolGroup ##" arasındaki eşlemeyi nerede bulabilirim?

Teşekkürler


3
/dev/mapperDizindeki her şey genellikle gerçek aygıta bir sembolik bağlantıdır.
jw013

Yanıtlar:


25

Kullanışlı dmsetup ls --treeve lsblkaraçlar var.


2
Her ne kadar bu size VG'ler ve PV'leri arasındaki eşlemeyi vermese de. Bunun için, çalıştırmak gerekiyordu pvdisplayve vgdisplayve bunun için kendi çıkışını ilişkilendirmek dmsetup ls.
Alexios

3
@Alexios,? Denemedin lsblkmi?
Haziran'da poige

lsblkCentOS 5'de Hayır
karatedog

6

Sadece bununla uğraşıyordum, bu yüzden burada bana neyin yardımcı olduğunu belgeleyeceğim.

poise cevabı doğru, dmsetup ls --treeÇıktıyı nasıl yorumlayacağınızı biliyorsanız, ihtiyacınız olan tüm bilgileri alabilirsiniz .

cciss aygıt adıdır, gerçek diskiniz budur. Adam sayfası de durumu özetleyen, ama burada ilgili bölümü kopyalayacağız:

   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- #" aygıt eşleyici numarasıdır. DM numaralarını eşlemenin en kolay yolu lvdisplay, mantıksal birim adını, ait olduğu birim grubunu ve blok cihazını gösteren çalıştırmaktır. "Cihazı engelle" satırında, iki nokta üst üste işaretinden sonra listelenen değer DM sayısıdır.

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

Hangi çıktı güzelce geri eşler dmsetup ls --tree

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

DM numarası eşlemelerini çalıştırarak da görebilirsiniz 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

Altıncı sütun DM numarasını listeler. Bu nedenle, sunucum için vg0-opt / opt üzerine monte edilir ve DM-5 ile eşlenir.



2

@Jon Buys ve @ poige'in cevapları doğrudur, ancak en azından nispeten yeni bir çekirdeğe sahip sistemlerde, daha da basittir.

İçindeki girişler /dev/mappersadece dm-xcihazı işaret eden yumuşak bağlantılardır /dev, bu yüzden ihtiyacınız olan tek şey:

ls -l /dev/mapper

Örneğin, sistemimde bu şunu gösterir:

# 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

Bilgisayarınız lsyararsızsa ve yazılım bağlantıları göstermiyorsa şunu deneyin:

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

hangi gibi bir şey çıktı gerekir:

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

ve belirli bir eşleme bulmak istiyorsanız, örneğin 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

Ben aynı sorunu yaşadım, belki biraz "daha derin": bağlama noktası seviyesine kadar. Herhangi birinin ilgilenmesi durumunda, her iki yolu da sorgulamak için kullandığım iki işlev var.

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

ve ters sorgu:

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

Kullanın 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)

rooterişim ihtiyacı
iruvar

-2

Tüm ciltleme dosyada eşlenir /etc/multipath/bindings. Sen den gibi burada herhangi bir cihazı yeniden adlandırabilirsiniz /dev/mapper/mpathfiçin /dev/mapper/mpathe.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.