Làm cách nào để hiển thị tất cả các phân vùng theo định dạng giống như cây (chính, mở rộng và logic)?


11

Tôi đang cố gắng tìm thứ gì đó giống với đầu ra của findmntnhưng với âm lượng thay vì các điểm gắn kết (ví dụ):

TARGET                       TYPE        FSTYPE  
sda 
├─sda1                       Primary     ext4
│ └─/
├─sda2                       Primary     NTFS    
├─sda3                       Primary     ext4 
│ └─/boot
└─sda4                       Extended
  ├─sda5                     Logical     ext4
  │ └─/home
  └─sda6                     Logical     ext4
    └─/var

Chương trình TYPE và FSTYPE là tùy chọn, điều khiến tôi quan tâm hơn cả là cách bố trí cây.

Đầu ra của lsblkphần nào không đầy đủ vì nó không hiển thị sự khác biệt giữa các phân vùng Chính, Mở rộng và Hợp lý. (Tôi biết tôi đang kén chọn ở đây):

lsblk -a
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 186.3G  0 disk 
├─sda1   8:1    0 106.6G  0 part 
├─sda2   8:2    0  52.8G  0 part /media/F66E431C6E42D551
├─sda3   8:3    0  1023M  0 part [SWAP]
├─sda4   8:4    0     1K  0 part 
├─sda5   8:5    0   953M  0 part /boot
├─sda6   8:6    0   487M  0 part [SWAP]
├─sda7   8:7    0    14G  0 part /
└─sda8   8:8    0  10.5G  0 part /home

Tôi biết rằng sda4phân vùng mở rộng bao gồm sda5, sda6, sda7, sda8phân vùng hợp lý; nhưng nếu tôi thấy đầu ra của người khác thì tôi sẽ không biết. Nếu thay vì partdisknó nói pri logextsẽ là một lựa chọn tốt, ít nhất tôi biết mối quan hệ. Nhưng vì tất cả đều part... không tốt.

sudo fdisk -l đầu ra:

Disk /dev/sda: 200.0 GB, 200049647616 bytes
255 heads, 63 sectors/track, 24321 cylinders, total 390721968 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1549f232

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   223629311   111814624+   7  HPFS/NTFS/exFAT
/dev/sda2       225724416   336437306    55356445+   7  HPFS/NTFS/exFAT
/dev/sda3       223629312   225724415     1047552   82  Linux swap / Solaris
/dev/sda4       336439294   390721535    27141121    5  Extended
/dev/sda5       336439296   338391039      975872   83  Linux
/dev/sda6       338393088   339390463      498688   82  Linux swap / Solaris
/dev/sda7       339392512   368687103    14647296   83  Linux
/dev/sda8       368689152   390721535    11016192   83  Linux

Partition table entries are not in disk order

Câu trả lời:


5

Nếu tất cả những gì bạn muốn là một lsblkphân vùng hiển thị cho bạn các phân vùng chính / logic, bạn sẽ có thể thực hiện việc này với sự kết hợp fdiskvà phân tích cú pháp. fdisk -lnếu chạy dưới dạng root sẽ liệt kê tất cả các phân vùng và sẽ đánh dấu các phần mở rộng bằng Ext'd:

# fdisk -l | grep dev
Disk /dev/sda: 500.1 GB, 500107862016 bytes
/dev/sda1              63       80324       40131   de  Dell Utility
/dev/sda2   *       81920    30801919    15360000    7  HPFS/NTFS/exFAT
/dev/sda3        30801920   194643539    81920810    7  HPFS/NTFS/exFAT
/dev/sda4       194643601   976773119   391064759+   f  W95 Ext'd (LBA)
/dev/sda5       194643603   198836504     2096451    c  W95 FAT32 (LBA)
/dev/sda6       342951936   960387071   308717568   83  Linux
/dev/sda7       198840320   342949887    72054784   83  Linux
/dev/sda8       960389120   976773119     8192000   82  Linux swap / Solaris

Sau đó, bạn có thể kết hợp điều đó với một chút phân tích cú pháp để có được đầu ra bạn muốn:

$ lsblk -a | perl -lpe 'BEGIN{open(A,"sudo fdisk -l |");
                      while(<A>){next unless /Ext/; 
                                 $k{$1}++ if /^.*?(...\d)\s/; }} 
                      @a=split(/\s+/);
                      $a[0]=~s/\W+//;
                      s/$a[5]/Extended/ if defined($k{$a[0]});'
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
├─sda1   8:1    0  39.2M  0 part 
├─sda2   8:2    0  14.7G  0 part 
├─sda3   8:3    0  78.1G  0 part /winblows
├─sda4   8:4    0     1K  0 Extended 
├─sda5   8:5    0     2G  0 part 
├─sda6   8:6    0 294.4G  0 part /home
├─sda7   8:7    0  68.7G  0 part /
└─sda8   8:8    0   7.8G  0 part [SWAP]

Tôi nghĩ đó là điều tốt nhất bạn có thể làm vì findmntsẽ không hiển thị các phân vùng mở rộng vì chúng sẽ không bao giờ được gắn kết. Nếu không, bạn có thể phân tích nó theo cùng một cách.


5

blkid

Bạn có thể sử dụng lệnh blkidđể hiển thị một cái gì đó dọc theo các dòng đó:

$ blkid
/dev/sda1: LABEL="SYSTEM_DRV" UUID="XXXXXX" TYPE="ntfs" 
/dev/sda2: LABEL="Windows7_OS" UUID="XXXXX" TYPE="ntfs" 
/dev/sda3: LABEL="Lenovo_Recovery" UUID="XXXX" TYPE="ntfs" 
/dev/sda5: UUID="XXXX" TYPE="ext4" 
/dev/sda6: UUID="XXXX" TYPE="LVM2_member" 
/dev/mapper/vg_grinchy-lv_root: UUID="XXXX" TYPE="ext4" 
/dev/mapper/vg_grinchy-lv_swap: UUID="XXXX" TYPE="swap" 
/dev/mapper/vg_grinchy-lv_home: UUID="XXXX" TYPE="ext4" 

Tôi đã xóa UUID từ trên xuống và thay thế chúng bằng X's. Lệnh blkidcũng có thể lấy đối số nếu bạn muốn đầu ra khác nhau.

Ví dụ:

$ blkid -o list
device                         fs_type      label         mount point                        UUID
----------------------------------------------------------------------------------------------------------------------------------
/dev/sda1                      ntfs         SYSTEM_DRV    (not mounted)                      XXXX
/dev/sda2                      ntfs         Windows7_OS   (not mounted)                      XXXX

lsblk

Một công cụ thay thế blkidlsblk. Bạn có thể sử dụng các tùy chọn sau để liệt kê tất cả các thiết bị khối:

$ lsblk -a
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0                          7:0    0         0 loop 
loop1                          7:1    0         0 loop 
loop2                          7:2    0         0 loop 
loop3                          7:3    0         0 loop 
loop4                          7:4    0         0 loop 
loop5                          7:5    0         0 loop 
loop6                          7:6    0         0 loop 
loop7                          7:7    0         0 loop 
sda                            8:0    0 465.8G  0 disk 
├─sda1                         8:1    0   500M  0 part /boot
└─sda2                         8:2    0 465.3G  0 part 
  ├─vg_totoro-lv_root (dm-0) 253:0    0 431.5G  0 lvm  /
  ├─vg_totoro-lv_swap (dm-1) 253:1    0  13.8G  0 lvm  [SWAP]
  └─vg_totoro-lv_home (dm-2) 253:2    0    20G  0 lvm  /home
sr0                           11:0    1  1024M  0 rom  

Kiểm tra sử dụng của nó, nó có các tùy chọn bổ sung.


Đáng buồn thay, nó không cho tôi thấy khối lượng mở rộng cũng như tổ chức.
Braiam

@Braiam - Tôi thấy những gì bạn đang tìm kiếm, bạn cũng muốn xem các phân vùng trong các phân vùng mở rộng. Hmm ...
slm

@Braiam - Điều đó có giúp gì không?
slm

Tôi đã nhìn vào đó sớm, không có kết quả như mong đợi. Nó cho tôi thấy các phân vùng nhưng tôi không có cách nào để phân biệt các khối logic từ chính ... mm ... dày hơn ...
Braiam

3

Bạn có thể liệt kê các loại phân vùng với parted:

$ sudo parted /dev/sda print
Model: ATA ST3320613AS (scsi)
Dysk /dev/sda: 320GB
Rozmiar sektora (logiczny/fizyczny): 512B/512B
Tablica partycji: msdos

Numer  Początek  Koniec  Rozmiar  Typ       System plików   Flaga
 1     1049kB    318GB   318GB    primary   ext4            ładowalna
 2     318GB     320GB   2145MB   extended
 5     318GB     319GB   1074MB   logical   linux-swap(v1)
 6     319GB     320GB   1071MB   logical   ext2

Không có cây nhưng nó có thể giúp ích, vì như bạn đã nói, nó sẽ là tốt để ít nhất biết mối quan hệ. Nếu bạn muốn sử dụng GUI, bạn có thể thử với GParted:

nhập mô tả hình ảnh ở đây


Tôi đã nhìn vào đó sớm, không có kết quả như mong đợi. Nó cho tôi thấy các phân vùng nhưng tôi không có cách nào để phân biệt các khối logic từ chính ... mm ... dày hơn ...
Braiam

1
@Braiam, tôi cập nhật câu trả lời của tôi. Thật không may, tôi đã không tìm thấy bất kỳ cách dòng lệnh để làm danh sách cây.
Nykakin

Có vẻ như đó sẽ là giải pháp duy nhất ... btw, sửa phân vùng NTFS đó: P
Braiam

Nó chỉ là một màn hình từ web, như bạn thấy nó khác với đầu ra dòng lệnh :)
Nykakin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.