Bạn biết làm thế nào "fdisk -l" liệt kê các bảng phân vùng ổ đĩa và hiển thị id/loại phân vùng cho mỗi phân vùng?
Có cách nào tương tự để lấy id phân vùng cho khối lượng logic LVM không?
EDIT: Tôi biết về "lvs", phần lớn là những gì tôi đang tìm kiếm (nó cung cấp cho tôi danh sách các tập hợp lý, giống như "fdisk -l" ... ngoại trừ việc biết những gì cũng hữu ích các loại phân vùng của các khối logic (mà tôi muốn gọi là "phân vùng ảo"). Thông tin đó là những gì "fdisk -l" liệt kê trên hai cột cuối cùng bên phải. (Chẳng hạn như "8e" cho vật lý Phân vùng LVM hoặc "83" cho Linux ext, v.v.).
Công cụ tôi đang tìm kiếm có thể không phải là một phần của LVM; có lẽ chỉ một số tiện ích khác có thể in id/loại phân vùng được cung cấp một phân vùng?
ID phân vùng cho Linux LVM là 8e, được báo cáo bởi 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 là một lớp trừu tượng trên đầu thiết bị lưu trữ để giúp bạn dễ dàng quản lý nó hơn. Tôi không chắc chắn thông tin nào ngoài những gì fdisk cung cấp cho bạn, vì ID phân vùng cho LVM được hiển thị. Tuy nhiên, để biết thêm thông tin về khối lượng logic LVM, bạn có thể sử dụng 'lvscan', 'lvs' và '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
Tương tự, bạn có thể tìm hiểu thông tin về chính nhóm âm lượng với 'vgscan', 'vss' và '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
Khối lượng logic không có "loại" như các phân vùng DOS cũ làm. Giống như các tệp Unix, bạn sẽ phải đọc chúng để tìm hiểu chúng là gì. Một cái gì đó như thế này nên thực hiện các mẹo:
lvs --all --noheadings | while read lv vg rest; do file --dereference --special-files "/dev/mapper/$(echo $vg | sed 's/-/--/')-$lv"; done
Dưới đây là một ví dụ cho đầu ra mà lệnh này sẽ cung cấp (cắt ngắn một chút):
[...]
/dev/mapper/VolGroup00-LogVol00: Linux rev 1.0 ext4 filesystem data, UUID=b000000e-00f0-0cde-b000-fa0d000ddc00 (extents) (64bit) (large files) (huge files)
[...]
LVM là một sự trừu tượng trên các đĩa vật lý.
Khối lượng logic (mà bạn có thể định dạng và đặt tệp vào) được phân bổ từ các nhóm âm lượng, có thể được tạo thành từ một hoặc nhiều phạm vi vật lý - phân vùng đĩa vật lý thực tế.
Câu hỏi của bạn là một chút không rõ ràng. Nếu bạn muốn hiển thị các phân vùng đĩa nào mà Khối lượng hợp lý đang nằm trên vật lý, lvdisplay --maps có thể giúp:
[.__.] # lvdisplay --maps [.__.] --- Khối lượng logic --- [.__.] Tên LV /dev/Volgroup00/root[.__.] Tên VG Volgroup00 [.__.] LV UUID xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx [.__.] LV Viết Quyền truy cập đọc/ghi [.__.] [.__.] LE 160 hiện tại [.__.] Phân đoạn 1 [.__.] Kế thừa phân bổ [.__.] Đọc các ô phía trước tự động [.__.] - hiện được đặt thành 256 [.__.] Chặn thiết bị 253: 0 [.__.] [.__.] --- Phân đoạn --- [.__.] Phạm vi logic 0 đến 159: [.__.] Nhập tuyến tính [.__.] Khối lượng vật lý /dev/sda2[.__ .] Phạm vi vật lý từ 0 đến 159 [.__.]
Khối lượng logic không có khái niệm về "loại", chúng chỉ là các thiết bị chặn. Nếu bạn muốn kiểm tra nội dung của một thiết bị khối và xác định những gì có trong đó, bạn có thể muốn xem công cụ blkid
, chính xác là điều đó.
1) Ổ đĩa logic KHÔNG phải là phân vùng đĩa (vật lý). Nó là một thiết bị khối ảo được tạo bên trong nhân Linux với Device Mapper. Đó là công nghệ người ta có thể sử dụng để thiết lập một thiết bị khối đơn bằng cách sử dụng hai phân vùng đĩa cũng như hai thiết bị khối bằng cách sử dụng một phân vùng đĩa đơn, và nhiều hơn nữa.
# dmsetup targets
Nếu bạn muốn biết thêm về DM hãy truy cập vào nó trang chủ , hãy kiểm tra nó trang thủ công , đọc RedHat thủ công = hoặc ví dụ này bài viết. Đó chỉ là công nghệ tuyệt vời đã đề cập trong Wikipedia.
2) Chẳng hạn, trên máy tính ở nhà, tôi có các phân vùng đĩa vật lý cũng như các thiết bị DM (khối lượng logic).
# cat /proc/partitions
tên #blocks chính nhỏ
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
Chủ yếu chúng không có bất kỳ loại hoặc ID nào, chúng được xác định chỉ bằng số ngành bắt đầu và độ dài.
# dmsetup status -j 253 -m 0
0 34865152 linear
Vì vậy, dm-0 là một mảnh bao gồm 34865152 ngành của một số thiết bị vật lý.
# dmsetup deps -j 253 -m 0
1 dependencies : (3, 66)
Và thiết bị này là/dev/hdb2 phân vùng!
# 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
Và đó là phân vùng kiểu LVM (8e), được đề cập bởi timberman.
# pvs
PV VG Fmt Attr PSize PFree
/dev/hda2 VolGroup lvm2 a- 76,13G 0
/dev/hdb2 VolGroup00 lvm2 a- 18,56G 0
Phân vùng đĩa đơn (vật lý) này có thể chứa các khối logic trong một nhóm. Tôi có hai đĩa nên có hai nhóm như vậy và mỗi nhóm chứa hai thiết bị logic.
# 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
Vì vậy, dm-0 và dm-1 là hai LV (lvroot và lvswap) được tạo trên phân vùng/dev/hdb2 của đĩa đầu tiên của tôi (với CentOS) trong khi dm-2 và dm-3 là LV được tạo trên phân vùng/dev/hda2 của tôi của đĩa thứ hai của tôi (với Fedora).
Các thiết bị logic có thể có nhãn (UUID). Bạn có thể kiểm tra chúng bằng lệnh lvdisplay, được đề cập ở trên. Nhưng chúng chỉ là nhãn mà bạn có thể sử dụng (-u) thay vì số chính, số phụ (công tắc -j -m).
Lsblk có cung cấp thông tin bạn cần không?
[[email protected] ~]# 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
[[email protected] ~]#
Khối lượng logic không có ID hoặc loại phân vùng. Chúng bao gồm mức độ vật lý (PE) có thể được trải rộng trên nhiều khối lượng vật lý (PV), mỗi khối có thể là một phân vùng (ví dụ/dev/sda2) hoặc một đĩa hoàn chỉnh (ví dụ/dev/sdb).
có lẽ không cần nhưng tôi đã tự học một chút ở đây http://www.linuxconfig.org/Linux_lvm_-_Logical_Volume_Manager
Id loại phân vùng chỉ được lưu trữ trong bảng phân vùng, không phải trên chính phân vùng. Mặt khác, khối lượng logic LVM thường được xử lý như các phân vùng riêng lẻ, không phải là đĩa, do đó không có bảng phân vùng và do đó không có id loại phân vùng để tìm kiếm.
Cũng lưu ý rằng id loại chỉ dành cho mục đích thông tin trong Linux (tuy nhiên điều này không đúng với Windows). Nó không có liên quan đến nội dung và hệ thống tập tin của phân vùng đó.
Nếu bạn nhìn vào bài viết trước từ "Mark V", bạn sẽ thấy lệnh lsblk đã được sử dụng.
Đây là một lựa chọn tuyệt vời, tuy nhiên OP đã yêu cầu loại bỏ qua trong hầu hết các câu trả lời. Sử dụng lsblk từ phía trên và thêm "FSTYPE", bạn sẽ có được loại dự kiến:
# 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
#
Tôi nghĩ rằng lệnh một dòng này có thể giúp:
for i in $(df -h | grep mapper | cut -d" " -f1); do echo $i; lvdisplay --maps $i | grep "Physical volume"; done
Đầu ra tương tự như sau:
/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