LVM 논리 볼륨의 파티션 및 유형 목록과 같은“fdisk -l”?


22

"fdisk -l"이 드라이브 파티션 테이블을 나열하고 각 파티션의 파티션 ID / 유형을 표시하는 방법을 알고 있습니까?

LVM 논리 볼륨의 파티션 ID를 얻는 비슷한 방법이 있습니까?

편집 : 나는 주로 내가 찾고있는 "lvs"를 알고 있습니다 ( "fdisk -l"과 같은 종류의 논리 볼륨 목록을 제공합니다 ... 논리 볼륨의 파티션 유형 ( "가상 파티션"으로 생각하고 싶습니다.)이 정보는 "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 파티션처럼 "유형"이 없습니다. 유닉스 파일과 마찬가지로, 파일이 무엇인지 확인하려면 파일을 읽어야합니다. 이와 같은 것이 트릭을 수행해야합니다.

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가 요구하는 것을 다른 사람이 이해하지 못하는 것 같습니다. 스크립트를 한 번 변경해야했습니다. --dereference 옵션을 파일 명령에 추가했습니다. 각 LV는 장치 매퍼에 의해 / dm-X에 연결됩니다.
codewaggle

1
@codewaggle 감사합니다; 옵션이 추가되었습니다. '09 년에 답을 썼을 때 옵션이 필요하지 않았지만 시간이 변경되었습니다.
Teddy

2
이것이 정답입니다!
lanoxx

1
VG 이름에 대시가 있으면 두 배가되고 응답이 업데이트되면 작동하지 않습니다. LV 이름에도 동일한 문제가 적용되지만 테스트하지는 않았습니다.
sjas

6

LVM은 물리적 디스크 위의 추상화입니다.

논리 볼륨 (파일을 형식화하고 배치 할 수있는)은 하나 이상의 실제 범위 (실제 실제 디스크 파티션)로 구성 될 수있는 볼륨 그룹에서 할당됩니다.

귀하의 질문은 분명하지 않습니다. 논리 볼륨이 실제로 상주하는 디스크 파티션을 표시하려면 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 커널 내부에서 생성 된 가상 블록 장치입니다. 두 개의 디스크 파티션을 사용하는 단일 블록 장치와 단일 디스크 파티션을 사용하는 두 개의 블록 장치 등을 설정하는 데 사용할 수있는 기술입니다.

# dmsetup targets 

더 DM 방문 그것의에 대해 알고 싶다면 홈페이지 , 그것의 확인 매뉴얼 페이지 , 레드햇 읽어 수동 또는 예를 들어 기사. Wikipedia 에서만 언급 된 훌륭한 기술 입니다.

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 

이 단일 (실제) 디스크 파티션은 그룹 내에 논리 볼륨을 보유 할 수 있습니다. 두 개의 디스크가 있으므로 두 개의 그룹이 있으며 각 그룹에는 두 개의 논리 장치가 있습니다.

# 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 파티션에서 생성 된 두 개의 LV (lvroot 및 lvswap)이고, dm-2 및 dm-3은 / dev / hda2 파티션에서 생성 된 LV입니다. 두 번째 디스크 (Fedora 포함)

논리 장치에는 레이블 (UUID)이있을 수 있습니다. 위에서 언급 한 lvdisplay 명령으로 확인할 수 있습니다. 그러나 그것들은 단지 레이블 일 뿐이며, 주요 소수 (-j -m 스위치) 대신 (-u)를 사용할 수 있습니다.


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가 없습니다.

또한 유형 ID는 Linux에서 유익한 목적으로 만 사용됩니다 (Windows의 경우에는 해당되지 않음). 해당 파티션의 내용과 파일 시스템과는 관련이 없습니다.


0

이 한 줄 명령이 도움이 될 수 있다고 생각합니다.

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.