LVM論理ボリュームのパーティションとそのタイプのリストのような「fdisk -l」


22

「fdisk -l」がドライブパーティションテーブルをリストし、各パーティションのパーティションID /タイプを表示する方法を知っていますか?

LVM論理ボリュームのパーティションIDを取得する同様の方法はありますか?

編集:私は「lvs」を知っていますが、これは主に探しているものです(「fdisk -l」のような論理ボリュームのリストが表示されます...論理ボリュームのパーティションタイプ(「仮想パーティション」と考えたい)です。その情報は、右側の最後の2列にある「fdisk -l」のリストです(物理ディスクの「8e」など) LVMパーティション、またはLinux extの場合は「83」など)。

私が探しているツールはLVMの一部ではないかもしれません。パーティションに指定されたパーティションID /タイプを出力できる他のユーティリティだけでしょうか?


1
cat /etc/fstablvmを使用してもファイルシステムのタイプを表示してみてください...

回答:


16

Linux LVMのパーティションIDは8eで、fdiskによって報告されます。

$ sudo fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00008ec7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1013     8136891   8e  Linux LVM
/dev/sda2            1014        1044      249007+   5  Extended
/dev/sda5            1014        1044      248976   83  Linux

LVMは、ストレージデバイスの上部にある抽象レイヤーであり、管理しやすくなっています。LVMのパーティションIDが表示されるため、fdiskが提供するもの以外の情報が必要かどうかはわかりません。ただし、LVM論理ボリュームに関する追加情報については、「lvscan」、「lvs」、および「lvdisplay」を使用できます。

$ sudo lvscan 
  ACTIVE            '/dev/ops1test/root' [7.35 GB] inherit
  ACTIVE            '/dev/ops1test/swap_1' [388.00 MB] inherit

$ sudo lvs 
  LV     VG       Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  root   ops1test -wi-ao   7.35G                                      
  swap_1 ops1test -wi-ao 388.00M                                      

$ sudo lvdisplay
  --- Logical volume ---
  LV Name                /dev/ops1test/root
  VG Name                ops1test
  LV UUID                BfKOpy-L7Ql-905o-7tFk-nnsV-0c7I-w4g9y6
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                7.35 GB
  Current LE             1881
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Name                /dev/ops1test/swap_1
  VG Name                ops1test
  LV UUID                8SNfQ9-Hlfk-Edsb-vmL1-DeE3-nBRR-YAM1dV
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                388.00 MB
  Current LE             97
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

同様に、「vgscan」、「vgs」、および「vgdisplay」を使用して、ボリュームグループ自体に関する情報を学習できます。

$ sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "ops1test" using metadata type lvm2

$ sudo vgs
  VG       #PV #LV #SN Attr   VSize VFree 
  ops1test   1   2   0 wz--n- 7.76G 32.00M

$ sudo vgdisplay
  --- Volume group ---
  VG Name               ops1test
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7.76 GB
  PE Size               4.00 MB
  Total PE              1986
  Alloc PE / Size       1978 / 7.73 GB
  Free  PE / Size       8 / 32.00 MB
  VG UUID               ofpvks-2EDZ-limu-0wAh-tYUN-ISG3-mSS65O

4
また:PVS、pvdisplayと物理ボリュームに関するデータを取得するためのpvscan ...
freiheit

9

論理ボリュームには、古いDOSパーティションのような「タイプ」はありません。Unixファイルのように、それらが何であるかを知るためにそれらを読む必要があります。このような何かがトリックを行う必要があります:

lvs --all --noheadings | while read lv vg rest; do file --dereference --special-files "/dev/mapper/$(echo $vg | sed 's/-/--/')-$lv"; done

以下は、このコマンドが出力する出力の例です(少し切り捨てられています)。

[...]
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext4 filesystem data, UUID=b000000e-00f0-0cde-b000-fa0d000ddc00 (extents) (64bit) (large files) (huge files)
[...]

2
すばらしい答え。OPが何を求めているのか、他の誰も理解していないようです。スクリプトに1つの変更を加える必要がありました。ファイルコマンドに--dereferenceオプションを追加しました。各LVは、デバイスマッパーによって/ dm-Xにリンクされます。
codewaggle

1
@codewaggleありがとう。オプションが追加されました。'09に回答を書き戻したとき、オプションは必要ありませんでしたが、時間が変わります。
テディ

2
これは受け入れられた答えであるはずです!
lanoxx

1
VG名にダッシュがあると、これらが二重になり、答えが更新されたときに機能しません。おそらく同じ問題がLV名にも当てはまりますが、私はそれをテストしませんでした。
sjas

6

LVMは、物理ディスクの上の抽象概念です。

論理ボリューム(ファイルをフォーマットして配置できます)は、1つ以上の物理エクステント(実際の物理ディスクパーティション)で構成されるボリュームグループから割り当てられます。

あなたの質問は少し不明瞭です。論理ボリュームが物理的に存在するディスクパーティションを表示する場合、lvdisplay --mapsが役立ちます。

#lvdisplay --maps
  ---論理ボリューム---
  LV名/ dev / VolGroup00 / root
  VG名VolGroup00
  LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx
  LV書き込みアクセス読み取り/書き込み
  LVステータスが利用可能
  #オープン1
  LVサイズ5.00 GB
  現在のLE 160
  セグメント1
  割り当て継承
  先読みセクターの自動
  -現在256に設定
  ブロックデバイス253:0

  ---セグメント---
  論理エクステント0〜159:
    タイプリニア
    物理ボリューム/ dev / sda2
    物理エクステント0〜159

質問に答えていませんが、LVが断片化されているかどうかを確認する唯一の方法です。賛成票、これはまだ他のどこでも見ていません。
sjas

6

論理ボリュームには「タイプ」という概念はなく、単なるブロックデバイスです。ブロックデバイスの内容を調べて、その中にあるものを判別する場合は、blkidツールを調べてください。


5

1)論理ボリュームは(物理)ディスクパーティションではありません。これは、Device Mapperを使用してLinuxカーネル内に作成された仮想ブロックデバイスです。これは、2つのディスクパーティションを使用する単一のブロックデバイス、および単一のディスクパーティションを使用する2つのブロックデバイスなどをセットアップするために使用できる技術です。

# dmsetup targets 

DMについて詳しく知りたい場合は、ホームページにアクセスし、マニュアルページを確認し、RedHat マニュアルを読んでください。たとえば、この記事を参照してください。ウィキペディアでのみ言及されている素晴らしい技術です。

2)たとえば、自宅のコンピューターには、物理​​ディスクパーティションとDMデバイス(論理ボリューム)があります。

# cat /proc/partitions

メジャーマイナー#ブロック名

   3     0   80043264 hda
   3     1     204800 hda1
   3     2   79831029 hda2
   3    64   19589976 hdb
   3    65     104391 hdb1
   3    66   19478812 hdb2
 253     0   17432576 dm-0
 253     1    2031616 dm-1
 253     2   77762560 dm-2
 253     3    2064384 dm-3

主に、タイプやIDはなく、開始セクターの数と長さだけで定義されます。

# dmsetup status -j 253 -m 0
0 34865152 linear

したがって、dm-0は、物理デバイスの34865152セクターで構成されるフラグメントです。

# dmsetup deps -j 253 -m 0
1 dependencies  : (3, 66)

そして、このデバイスは/ dev / hdb2パーティションです!

# fdisk /dev/hdb
Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1   *           1          13      104391   83  Linux
/dev/hdb2              14        2438    19478812+  8e  Linux LVM

そして、それはtimbermanが言及したLVM(8e)タイプのパーティションです。

# pvs
  PV         VG         Fmt  Attr PSize  PFree
  /dev/hda2  VolGroup   lvm2 a-   76,13G    0 
  /dev/hdb2  VolGroup00 lvm2 a-   18,56G    0 

この単一(物理)ディスクパーティションは、グループ内の論理ボリュームを保持できます。2つのディスクがあるので、このようなグループが2つあり、各グループには2つの論理デバイスがあります。

# lvs
  LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  lv_root  VolGroup   -wi-a- 74,16G                                      
  lv_swap  VolGroup   -wi-a-  1,97G                                      
  LogVol00 VolGroup00 -wi-ao 16,62G
  LogVol01 VolGroup00 -wi-ao  1,94G 

したがって、dm-0とdm-1は最初のディスク(CentOSを使用)の/ dev / hdb2パーティションに作成された2つのLV(lvrootとlvswap)であり、dm-2とdm-3は/ dev / hda2パーティションに作成されたLVです2番目のディスク(Fedoraを使用)。

論理デバイスはラベル(UUID)を持つことができます。上記のlvdisplayコマンドで確認できます。ただし、これらは単なるラベルであり、メジャー番号、マイナー番号の代わりに(-u)を使用できます(-j -mスイッチ)。


4

lsblkは必要な情報を提供しますか?

[root@localhost ~]# lsblk -o TYPE,NAME,KNAME,UUID,MOUNTPOINT,SIZE                                                                                                                                                                        
TYPE NAME                KNAME UUID                                   MOUNTPOINT  SIZE
rom  sr0                 sr0   2014-07-04-15-59-23-00                             362M
disk vda                 vda                                                        1G
part └─vda1              vda1  7eadd712-6571-4722-8a5e-5d419176f6dc   /boot      1023M
disk vdb                 vdb   eVbl9d-dxf0-yqiV-evZC-FHPB-RrZb-eb1897              20G
lvm  ├─vg_system-lv_swap dm-0  44bb22f8-d8c6-482c-8763-36ee58c2528e   [SWAP]        1G
lvm  ├─vg_system-lv_usr  dm-1  c1f9ac62-17a3-4dfa-88b6-6a26394dd270   /usr          2G
lvm  ├─vg_system-lv_root dm-2  6724461a-2401-42ec-8180-fb7582040b68   /            10G
lvm  ├─vg_system-lv_var  dm-3  f2044fb7-5a64-4ae3-8407-891f75aba534   /var          2G
lvm  └─vg_system-lv_home dm-4  8ad80cce-bdf4-43e9-b755-b987169ed062   /home         2G
[root@localhost ~]# 

0

論理ボリュームには、パーティションIDまたはタイプがありません。それらは複数の物理ボリューム(PV)にまたがる物理エクステント(PE)で構成されます。各物理ボリュームはパーティション(たとえば/ dev / sda2)または完全なディスク(たとえば/ dev / sdb)です。



0

パーティションタイプIDは、パーティション自体ではなく、パーティションテーブルにのみ保存されます。一方、LVMの論理ボリュームは通常、ディスクとしてではなく個々のパーティションのように扱われるため、パーティションテーブルがなく、したがって検索するパーティションタイプIDもありません。

また、LinuxではタイプIDは情報提供のみを目的としていることに注意してください(ただし、これはWindowsには当てはまりません)。そのパーティションの内容とファイルシステムには影響しません。


0

この1行のコマンドが役立つと思います:

for i in $(df -h | grep mapper | cut -d" " -f1); do echo $i; lvdisplay --maps $i | grep "Physical volume"; done

出力はこれに類似したです:

/dev/mapper/myserver-root
    Physical volume /dev/sda5
/dev/mapper/SambaShares
    Physical volume /dev/sdb1
    Physical volume /dev/sdo1
    Physical volume /dev/sdp
/dev/mapper/Test--Disc
    Physical volume /dev/sdf1
    Physical volume /dev/sdg1
    Physical volume /dev/sdh1
    Physical volume /dev/sdi1
/dev/mapper/Clonezilla-partimag
    Physical volume /dev/sdk1
    Physical volume /dev/sdj1
    Physical volume /dev/sdl1
    Physical volume /dev/sdm1
    Physical volume /dev/sdn1
    Physical volume /dev/sdq1

0

「Mark V」の前の投稿を見ると、lsblkコマンドが使用されたことがわかります。

これは素晴らしいオプションですが、OPはほとんどの回答から省略されたタイプを要求しました。上記のlsblkを使用して「FSTYPE」を追加すると、期待されるタイプが得られます。

# lsblk -o TYPE,NAME,KNAME,UUID,MOUNTPOINT,SIZE,FSTYPE
TYPE NAME               KNAME UUID                                   MOUNTPOINT  SIZE FSTYPE
disk fd0                fd0                                                        4K
disk sda                sda                                                      100G
part ├─sda1             sda1  a6f1731f-e2bf-4dae-a443-269b079388a6   /boot         1G xfs
part ├─sda2             sda2  6CCtv5-HHYq-aXDm-m4jj-IpD3-rfv7-AI57D9              49G 
LVM2_member
lvm  │ ├─cl_hadron-root dm-0  0c8bfb8b-ec32-4152-9abd-b6bc5c475b00   /            97G xfs
lvm  │ └─cl_hadron-swap dm-1  8aeeadab-69da-49ff-991d-dad8857fb82b   [SWAP]        2G 
swap
# 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.