fdisk를 사용하여 디스크 공간을 표시합니다.
sudo fdisk -l /dev/sda
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: ST500DM002-1BD14
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 0C7DCAA1-CBD0-4A33-B210-F8D027B84A09
Device Start End Sectors Size Type
/dev/sda1 2048 390819839 390817792 186.4G Linux filesystem
/dev/sda2 390819840 422070271 31250432 14.9G Linux swap
/dev/sda3 422070272 423120895 1050624 513M EFI System
/dev/sda4 423120896 423153663 32768 16M Microsoft reserved
/dev/sda5 423153664 628613119 205459456 98G Microsoft basic data
사용되지 않은 여유 공간은 대략 다음과 같습니다.
total space for dev/sda - space for /dev/sda1,/dev/sda2,/dev/sda3,/dev/sda4,/dev/sda5
= 465.8G - 186.4G - 14.9G - 513M - 16M - 98G
= 166G
명령을 통해 직접 번호를 얻는 방법은 무엇입니까?
이 접근 방식을 사용하지 않는 것이 좋습니다. 모든 숫자를 구문 분석하여 fdisk
계산 표현식으로 결합합니다 465.8 - 186.4 - 14.9 - (513+16/1000) - 98
.
답변1
sfdisk -F /dev/sdX
사용 가능한 총 공간과 여유 공간 영역 목록이 인쇄됩니다.
# sfdisk -F /dev/sde
Unpartitioned space /dev/sde: 477.77 MiB, 500973568 bytes, 978464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Start End Sectors Size
22528 32527 10000 4.9M
53248 69391 16144 7.9M
71680 479231 407552 199M
479232 1023999 544768 266M
따라서 합계에만 관심이 있는 경우 첫 번째 줄에서 구문 분석할 수 있습니다.
# sfdisk -F /dev/sde | head -1 | cut -d":" -f2 | cut -d"," -f1
477.77 MiB
이와 같이 여유 공간을 계산하는 것은 까다롭습니다. 여기에는 478MiB의 여유 공간이 있지만 이것이 모두 사용할 수 있다는 의미는 아닙니다. 처음 두 개의 여유 공간을 사용할 수 없게 만들고(사용하기에는 너무 작음) 마지막 공간을 확보하는 방식으로 분할했습니다. 디스크는 연속된 여유 공간이 아닙니다. 이것은 과장된 예이지만 이보다 더 나쁜 분할을 본 적이 있습니다. :-)
"파티션에 사용할 수 있는 최대 여유 연속 공간"을 얻으려면 시작과 끝, 파티션 유형 등을 확인해야 합니다. 이는 bash 출력에서 구문 분석하기 어렵습니다. 라이브러리를 사용해야 할 수도 있습니다(예:libfdisk또는libblockdev) 정확한 정보를 얻으려면(C 또는 Python으로 프로그래밍하는 것을 의미함)
답변2
Freddy의 접근 방식에서 제가 가장 좋아하는 점은 모든 출력에 제가 찾고 있는 정보가 포함되어 있어 이를 얻기 위해 새로운 도구를 검색할 필요가 없다는 것입니다. 저와 같은 초보자를 위해 한 가지 더 말씀드리겠습니다.
Freddy는 올바른 생각을 가지고 있지만 숫자는 약간 잘못되었습니다. 중고 섹터를 얻으십시오.
사용된 모든 섹터를 나열합니다.
sudo fdisk -l /dev/sda |tail -n 5
/dev/sda1 2048 390819839 390817792 186.4G Linux filesystem
/dev/sda2 390819840 422070271 31250432 14.9G Linux swap
/dev/sda3 422070272 423120895 1050624 513M EFI System
/dev/sda4 423120896 423153663 32768 16M Microsoft reserved
/dev/sda5 423153664 628613119 205459456 98G Microsoft basic data
네 번째 열에서 사용된 모든 섹터를 계산합니다.
sudo fdisk -l /dev/sda |tail -n 5 | awk '{count=count+$4}END{print count}'
628611072
628613120이 아니라 628611072입니다.
Free sectors = total sectors - used sectors
= 976773168 - 628611072
= 348162096
섹터에는 512바이트가 포함되며 사용 가능한 공간은 다음과 같습니다.
(976773168 - 628611072)*512/(1024*1024*1024)
=166G
아이디어를 주신 Freddie에게 감사드립니다.