Các phân vùng không được chồng lấp ... nhưng những gì bạn thực sự có ở đây là " Phân vùng mở rộng ". Với các phân vùng mở rộng, bạn tạo một phân vùng " cha " chứa các phân vùng khác, cho phép bạn có nhiều hơn 4 phân vùng được MBR hỗ trợ .
Để tận dụng không gian thừa của bạn, bạn cần xóa cẩn thận và tạo lại các phân vùng ...
Ví dụ của tôi sử dụng tệp 100 MB mà tôi đã phân vùng, đặt hệ thống tệp vào.
$ fdisk disk.dd <<<"p"
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): Disk disk.dd: 100 MiB, 104857600 bytes, 204800 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
Disklabel type: dos
Disk identifier: 0xcff1f22d
Device Boot Start End Sectors Size Id Type
disk.dd1 2048 43007 40960 20M 83 Linux
disk.dd2 43008 204799 161792 79M 5 Extended
disk.dd5 45056 204799 159744 78M 83 Linux
Sau đó tôi mở rộng tệp (điều này có tác dụng rất giống với những gì bạn đã làm):
$ truncate -s 200M disk.dd
Bây giờ, chúng ta phải xóa tất cả các phân vùng có trong phân vùng mở rộng và sau đó là phân vùng mở rộng:
$ fdisk disk.dd
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
Partition number (1,2,5, default 5): 5
Partition 5 has been deleted.
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
Command (m for help): p
Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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
Disklabel type: dos
Disk identifier: 0xcff1f22d
Device Boot Start End Sectors Size Id Type
disk.dd1 2048 43007 40960 20M 83 Linux
Sau đó, chúng tôi phải tạo lại các phân vùng, đảm bảo rằng các thành phần Bắt đầu khớp chính xác với bản gốc (cái này sử dụng số của tôi, không phải của bạn). Sau đó viết các thay đổi.
Ở đây tôi đang sử dụng các giá trị mặc định (chỉ cần nhấn các phân vùng được tạo lại bắt đầu sớm và làm cho chúng lớn nhất có thể) ... Bạn có thể đưa ra các giá trị nếu bạn muốn giữ một khoảng trống cho các phân vùng khác.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2):
First sector (43008-409599, default 43008): 43008
Last sector, +sectors or +size{K,M,G,T,P} (43008-409599, default 409599):
Created a new partition 2 of type 'Extended' and of size 179 MiB.
Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 5
First sector (45056-409599, default 45056):
Last sector, +sectors or +size{K,M,G,T,P} (45056-409599, default 409599):
Created a new partition 5 of type 'Linux' and of size 178 MiB.
Command (m for help): p
Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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
Disklabel type: dos
Disk identifier: 0xcff1f22d
Device Boot Start End Sectors Size Id Type
disk.dd1 2048 43007 40960 20M 83 Linux
disk.dd2 43008 409599 366592 179M 5 Extended
disk.dd5 45056 409599 364544 178M 83 Linux
Command (m for help): w
The partition table has been altered.
Synching disks.
Đừng quên duy trì loại phân vùng. Trong trường hợp ví dụ, mặc định ( 83
) là tốt, nhưng bạn sẽ muốn sử dụng t
để đặt loại trở lại 8e
.
Bây giờ, bạn có thể cần chạy partprobe
, đưa thiết bị của bạn (ví dụ /dev/sda
:). Điều này sẽ nhận được hệ thống để tải lại bảng phân vùng. Sử dụng lsblk
để kiểm tra xem kích thước phân vùng có chính xác không.
Cuối cùng, thay đổi kích thước hệ thống tập tin. Điều này có thể được thực hiện trong khi nó trực tuyến (gắn kết). Nếu nó không được gắn kết, thì có lẽ bạn sẽ được hứa sẽ thực hiện " kiểm tra và sửa chữa " đầy đủ trước:
$ e2fsck -f /dev/loop1
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop1: 12/20000 files (0.0% non-contiguous), 8180/79872 blocks
$ resize2fs /dev/loop1
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/loop1 to 182272 (1k) blocks.
The filesystem on /dev/loop1 is now 182272 (1k) blocks long.
Bây giờ, khi hệ thống tập tin được kết nối lại, bạn sẽ thấy không gian thêm mà bạn đang theo dõi:
$ mount /dev/loop1 ./mnt
$ df -h mnt
Filesystem Size Used Avail Use% Mounted on
/dev/loop1 169M 1.6M 155M 1% /home/attie/box/so/mnt
$ cat mnt/test
hello world
Bạn đã chỉ ra (trong một bình luận) rằng bạn không thể đặt phần bắt đầu của phân vùng 5 ở nơi cần có - fdisk
đang đưa ra một phạm vi không tương thích.
Để khắc phục điều này, bạn sẽ cần tạo phân vùng 5 như bình thường ... nhưng sử dụng giá trị bắt đầu mặc định không chính xác, một vài cung lớn hơn giá trị mong muốn của bạn. Khi phân vùng đã được tạo, bạn có thể vào chế độ Expert ( x
) và đặt bắt đầu thủ công hơn. Sau đó quay trở lại chế độ bình thường ( r
) và in lại bảng ... nếu các số có vẻ tốt, sau đó viết nó ( w
).
Trong ví dụ dưới đây, tôi đã tạo phân vùng và sử dụng giá trị mặc định fdisk
được cung cấp (45056) ... Sau đó, tôi sử dụng chế độ chuyên gia để đặt giá trị " chính xác " (43010) nếu không nằm ngoài phạm vi.
Command (m for help): p
Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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
Disklabel type: dos
Disk identifier: 0xa11ae080
Device Boot Start End Sectors Size Id Type
disk.dd1 2048 43007 40960 20M 83 Linux
disk.dd2 43008 409599 366592 179M 5 Extended
disk.dd5 45056 409599 364544 178M 83 Linux
Command (m for help): x
Expert command (m for help): b
Partition number (1,2,5, default 5): 5
New beginning of data (43009-409599, default 45056): 43010
Expert command (m for help): r
Command (m for help): p
Disk disk.dd: 200 MiB, 209715200 bytes, 409600 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
Disklabel type: dos
Disk identifier: 0xa11ae080
Device Boot Start End Sectors Size Id Type
disk.dd1 2048 43007 40960 20M 83 Linux
disk.dd2 43008 409599 366592 179M 5 Extended
disk.dd5 43010 409599 366590 179M 83 Linux
Tôi đã có một chút lục lọi trong các fdisk
nguồn, nhưng không thể thấy rõ lý do tại sao nó lại thêm bộ đệm ~ 1 MB này ... Vì đĩa của bạn đã được thiết lập mà không có nó, mọi thứ sẽ ổn.
sdx5
trở lên (nếu có) là các phân vùng logic bên trong một phân vùng mở rộng.