parted
có thể in không gian trống. Ví dụ (Tôi đã chọn một mục đích phức tạp):
# parted /dev/sda unit s print free
[...]
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 4196351s 4194304s primary fat32 lba
4196352s 4198399s 2048s Free Space
2 4198400s 6295551s 2097152s primary ext2 boot
6295552s 6297599s 2048s Free Space
3 6297600s 27269119s 20971520s primary ext2
27269120s 27271167s 2048s Free Space
4 27271168s 31115263s 3844096s extended lba
5 27273216s 29192191s 1918976s logical ext2
6 29194240s 31115263s 1921024s logical ext2
31115264s 31116287s 1024s Free Space
Như bạn có thể thấy điều này cung cấp cho bạn trực tiếp vị trí và kích thước của phân vùng mà bạn có thể tạo, tức là dòng cuối cùng nói Free Space
. Bạn có thể tạo một phân vùng bắt đầu từ 31115264 và kết thúc vào lúc 31116287.
Nếu không có gì đáng tiếc thì phân vùng mở rộng không đủ lớn!
Nhưng có lẽ bạn đã sử dụng GPT khi bạn không gặp phải các biến chứng như vậy.
Lấy số phải đủ dễ dàng.
function make_partition
{
parted -s "$1" unit s mkpart primary "$2" "$3"
}
make_partition /dev/sda `parted /dev/sda unit s print free | grep 'Free Space' | tail -n 1`
Hoặc một cái gì đó tương tự. (Đương nhiên, bạn muốn thực hiện thêm một số kiểm tra về sự tỉnh táo ở đây.)
@swisscheese đã đưa ra một nhận xét tốt trong câu trả lời khác, tôi không biết parted
cung cấp đầu ra thân thiện với phân tích cú pháp. Bạn có thể chọn sử dụng thay thế. Ví dụ để lấy miễn phí lớn nhất cuối cùng:
# parted -m /dev/sda unit s print free | grep 'free;' | sort -t : -k 4n -k 2n | tail -n 1
1:27269120s:27271167s:2048s:free;
Cho dù điều đó có thể áp dụng cho tình huống của bạn hay không (trong ví dụ của tôi, bạn cũng không thể tạo một phân vùng ở đó, nó đã thực sự đầy đủ) là điều bạn phải tự mình tìm ra. :)