Linux에서 마운트 해제 된 파티션의 크기를 찾는 방법은 무엇입니까?


14

tune2fs를 사용하고 있지만 데이터를 블록 단위로 제공하므로 파티션의 총 크기에 대한 정확한 값을 얻을 수 없습니다.

나는 또한 사용 fdisk -l /dev/mmcblk0p1했지만 여기에서 오는 크기는 다른 값입니다.

정확한 파티션 크기를 어떻게 찾을 수 있습니까?


8
tune2fs는 파티션의 크기를 인쇄 하지 않고 파일 시스템 의 크기를 인쇄합니다 . 파일 시스템은 (파티션에 사용되지 않은 공간이있는 경우),이 파티션이 어떻게 든 잘 렸습니다 경우 파티션 (보다 클 수 있습니다 파티션보다 작을 수있다, 분명히 파일 시스템이이 경우에 손상하지만 여전히 그것은 이다 보다 큰 파티션). 또한 여러 파티션에 걸쳐 있거나 "가상"일 수도 있습니다. 즉, 백업 장치 (예 : sysfs, procfs, tmpfs)도 없습니다.
Jörg W Mittag

답변:


22

명령은 다음과 같습니다.

blockdev --getsize64 /dev/mmcblk0p1

64 비트 정수로 결과를 바이트 단위로 제공합니다. 커널이 크기를 볼 때 블록 장치바이트 크기 를 쿼리합니다 .

fdisk -l /dev/mmcblk0p1작동하지 않는 이유 는 fdisk완전히 다른 것을 수행 했기 때문입니다. 블록 장치의 파티션 테이블 (= 첫 번째 섹터)을 읽고 찾은 것을 인쇄합니다 . 아무것도 점검하지 않고 파티션 테이블에있는 내용 만 표시합니다.

파티션 테이블이 손상되거나 블록 장치에없는 경우에도 신경 쓰지 않습니다. 체크섬이 양호하지 않다는 경고를 인쇄하지만 값이 명확하지 않은 경우에도 찾은 내용을 인쇄합니다 -감각.

이것은 당신의 경우에 일어난 일입니다 : 파티션 테이블 /dev/mmcblk0p1 이 없습니다 . 장치 이름에서 알 수 있듯이 장치는 이미 물리 디스크의 첫 번째 파티션입니다 /dev/mmcblk0. 이 디스크에는 파티션 테이블이 포함되어 있습니다.이 디스크를 쿼리 한 경우 fdisk -l /dev/mmcblk0작동했습니다 (msdos 파티션 테이블이 있다고 가정).


내 파티션 공간은 정확히 2GB이지만 blockdev와 fdisk는 남은 공간보다 적은 값을 제공하며 값을 검색하는 명령을 알려주세요
Sarthak_Bhutani

@Sarthak_Bhutani 어떤 정보가 인쇄되지 fdisk -l /dev/mmcblk0않습니까? 한 블록의 크기, 장치의 총 블록 수, 파티션 크기 및 각 파티션의 시작 및 끝 블록을 알려줍니다. 해당 정보에서 파티션에 할당되지 않은 블록 범위를 알아낼 수도 있습니다.
BlackJack

9

시도해보십시오 lsblk. 루트도 필요하지 않습니다.

$ lsblk -b
NAME    MAJ:MIN RM        SIZE RO TYPE MOUNTPOINT
xvda    202:0    0 34359738368  0 disk 
├─xvda1 202:1    0  1676673024  0 part [SWAP]
└─xvda2 202:2    0 32682016768  0 part /var/spool

-b매개 변수는 크기를 바이트 단위로 출력하도록 지시합니다.


이것은 매우 좋은 도구입니다 !!! 감사! +1!
rmbianchi

5

파티션 실행의 전체 크기에 대한 정확한 값을 얻으려면 :

awk '{print $1*512}' /sys/class/block/mmcblk0p1/size

2
섹터 크기가 512인지 여부에 따라 달라집니다 (오늘날 대다수의 경우).
peterh-Reinstate Monica

1
@peterh 오늘날 블록 장치가 여전히 물리 섹터 크기가 512 것은 드문 일이지만 많은 것들 (/ sys / class / block에 대한 명확한 정보를 찾을 수 없음)은 512 바이트 단위로보고되도록 설계되었습니다 실제 블록 크기에 관계없이
Random832

0

내 해결책 :

part_dev='/dev/hda2'

total_block=`tune2fs -l $part_dev | awk '/Block count/ {print $3}'`
block_size=`tune2fs -l $part_dev | awk '/Block size/ {print $3}'`

total_size=$(($total_block* $block_size))

echo $total_size

/dev/hda2반드시 마운트되지 않은 파티션은 어디에 있습니까 ? tune2fs버전 1.42.4 로 테스트되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.