Làm thế nào để liệt kê phân vùng chưa đếm của ổ cứng và gắn kết chúng?


31

Làm thế nào để liệt kê phân vùng đĩa khi chúng không được đếm? Và làm thế nào để gắn kết chúng thông qua thiết bị đầu cuối?

Câu trả lời:


43

Liệt kê phân vùng không đếm được

Để giải quyết việc niêm yết của các phân vùng phần chưa lắp ráp, có một số cách - lsblk, fdisk, parted, blkid.

$ lsblk
NAME                             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                8:0    0 111.8G  0 disk 
└─sda1                             8:1    0 111.8G  0 part /
sdb                                8:16   0 232.9G  0 disk 
├─sdb1                             8:17   0   1.5G  0 part 
├─sdb2                             8:18   0 138.6G  0 part /media/WINDOWS
├─sdb3                             8:19   0   8.1G  0 part 
├─sdb4                             8:20   0     1K  0 part 
├─sdb5                             8:21   0  68.5G  0 part 
└─sdb6                             8:22   0   5.8G  0 part 
loop0                              7:0    0   100G  0 loop 
└─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   
loop1                              7:1    0     2G  0 loop 
└─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   
$ sudo fdisk -l
[sudo] password for xieerqi: 

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 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: 0x000b5321

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   234440703   117219328   83  Linux

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 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: 0x96360d50

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     3074047     1536000   27  Hidden NTFS WinRE
/dev/sdb2         3074048   293617502   145271727+   7  HPFS/NTFS/exFAT
/dev/sdb3       471437312   488396799     8479744   17  Hidden HPFS/NTFS
/dev/sdb4       293617662   471437311    88909825    5  Extended
/dev/sdb5       315830272   459382783    71776256   83  Linux
/dev/sdb6       459384832   471437311     6026240   82  Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/mapper/docker-8:1-1589297-pool: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/docker-8:1-1589297-pool doesn't contain a valid partition table
$ sudo parted -l                                                               
[sudo] password for xieerqi: 
Model: ATA Radeon R7 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  120GB  120GB  primary  ext4         boot


Model: ATA TOSHIBA MK2555GS (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1574MB  1573MB  primary   ntfs            boot, diag
 2      1574MB  150GB   149GB   primary   ntfs
 4      150GB   241GB   91.0GB  extended
 5      162GB   235GB   73.5GB  logical   ext4
 6      235GB   241GB   6171MB  logical   linux-swap(v1)
 3      241GB   250GB   8683MB  primary   ntfs            hidden


Model: Linux device-mapper (thin-pool) (dm)
Disk /dev/mapper/docker-8:1-1589297-pool: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0.00B  107GB  107GB  ext4


$ sudo blkid
[sudo] password for xieerqi: 
/dev/sda1: UUID="86df21bf-d95f-435c-9292-273bdbcba056" TYPE="ext4" 
/dev/sdb1: LABEL="System" UUID="F4F688B2F68876A0" TYPE="ntfs" 
/dev/sdb2: LABEL="TI105866W0A" UUID="4EBAAE53BAAE36FD" TYPE="ntfs" 
/dev/sdb3: LABEL="HDDRECOVERY" UUID="BC4ED40D4ED3BDF8" TYPE="ntfs" 
/dev/sdb5: UUID="0ca7543a-5463-4a07-8bbe-233a7b0bd625" TYPE="ext4" 
/dev/sdb6: UUID="3a6e2270-19a2-49d7-aab3-5efb92d3b3d0" TYPE="swap" 
/dev/loop0: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" 
/dev/mapper/docker-8:1-1589297-pool: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" 
$ 

Người ta có thể sử dụng một chút AWKphép thuật để phân tích đầu ra lsblkđể liệt kê tất cả các phân vùng chưa được đếm:

$ lsblk  --noheadings --raw | awk '$1~/s.*[[:digit:]]/ && $7==""'              
sdb1 8:17 0 1.5G 0 part 
sdb3 8:19 0 8.1G 0 part 
sdb4 8:20 0 1K 0 part 
sdb5 8:21 0 68.5G 0 part 
sdb6 8:22 0 5.8G 0 part

Hay cách khác:

$ lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk '$1~/[[:digit:]]/ && $2 == ""'                                       
sdb1 
sdb2 
sdb3 
sdb4 
sdb5 

Chính xác những gì đang xảy ra là chúng tôi liệt kê tất cả

dòng có cột đầu tiên bắt đầu bằng chữ cái s (vì đó là cách các ổ thường được đặt tên) và kết thúc bằng một số (đại diện cho các phân vùng). Trong đầu ra trước đây của tôi, bạn có thể thấy rằng tôi có các hệ thống tập tin khác, chẳng hạn như cho docker, vì vậy trong lệnh trên, chúng tôi sẽ loại bỏ tất cả những thứ không cần thiết.

Phân vùng gắn kết

Tôi thấy rằng mountcó thể kén chọn, nó cần biết chính xác hệ thống tập tin, nó cần được chạy dưới quyền root, v.v. udisksctl mount -b /dev/sXYlà một lệnh tốt hơn nhiều, có thể được chạy như người dùng thông thường và tự động gắn vào /media/$USER/thư mục. Ví dụ,

$ udisksctl mount -b /dev/sdb5 
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625.

2

sudo blkid -o list

sẽ liệt kê tất cả các phân vùng được gắn và không đếm được. Ngoài ra, bạn có thể sử dụng mountdfđể xem tất cả các điểm gắn kết.

mount -t type device destination_dir

có thể được sử dụng để gắn thiết bị / phân vùng của bạn.


Danh sách này chỉ gắn kết phân vùng. Những người không đếm được không bao gồm.
Suncat2000

2

Để trả lời câu hỏi đầu tiên của bạn, hãy chạy:

sudo parted -l

Nếu chúng được gắn bình thường, chỉ cần chạy:

mount -a

Từ trang mount man: Lệnh

gắn kết -a [-t loại] [-O optlist]

(thường được đưa ra trong một bootcript) làm cho tất cả các hệ thống tập tin được đề cập trong fstab (thuộc loại thích hợp và / hoặc có hoặc không có các tùy chọn phù hợp) được gắn kết như đã chỉ ra, ngoại trừ những hệ thống có dòng từ khóa noauto.

Nếu chúng không được gắn kết bình thường, bạn phải cung cấp các tùy chọn để gắn kết.


và để rõ ràng, mountlệnh cũng cần phải được thực hiện sudo mount <options>, nếu chạy như khác với root hoặc bạn nhận được: mount: chỉ root mới có thể làm điều đó
JimLohse

Tôi quá mới để bình luận trực tiếp về câu trả lời của @ Serg nhưng nó khá toàn diện, ít nhất là tôi có thể nâng cao nó! Hãy chắc chắn nhìn vào câu trả lời của anh ấy, đặc biệt là udisksctl mount -b /dev/sXYlệnh có thể được chạy bởi một người dùng trung bình, rất tuyệt.
JimLohse

2

Đây là những gì tôi đã phát triển để liệt kê khối lượng chưa từng có:

lsblk  --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'

1
Bạn có thể mở rộng câu trả lời của bạn với các ví dụ về cách nó được sử dụng?
WinEunuuchs2Unix

0

Bạn cũng có thể dùng,

blkid -c /dev/nul | awk -F: '{print $1}'

để lấy danh sách của tất cả các phân vùng được gắn kết, và sau đó sử dụng Lsblkđể kiểm tra những gì không có trong danh sách được gắn kết.

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.