Linux'ta monte edilmemiş bir bölümün boyutu nasıl bulunur?


14

Tune2fs kullanıyorum, ancak bloklar halinde veri veriyor ve bölümün toplam boyutunun tam değerini alamıyorum.

Ben de kullandım fdisk -l /dev/mmcblk0p1, ama boyutu buradan alıyorum da farklı bir değer.

Tam bölüm boyutunu nasıl bulabilirim?


8
Tune2fs olmadığını Not değil bölümün boyutunu yazdırmak, bu boyutunu yazdırır dosya sistemi . Bir dosya sistemi (bölümünde kullanılmayan boşluk varsa), bu bölüm bir şekilde kesildi durumda bir bölümü (daha büyük olabilir bir bölümü daha küçük olabilir; açıkçası dosya sistemi bu durumda bozuk ama yine de olduğu daha büyük bölüm). Ayrıca birden fazla bölüme yayılabilir, hatta "sanal" olabilir, yani bir destek cihazına bile sahip değildir (örn. Sysfs, procfs, tmpfs).
Jörg W Mittag

Yanıtlar:


22

Komut:

blockdev --getsize64 /dev/mmcblk0p1

64 bit tam sayı olarak sonucu bayt cinsinden verir. Çekirdek boyutunu gördüğünden, bir blok aygıtın bayt boyutunu sorgular .

Nedeni, neden fdisk -l /dev/mmcblk0p1işe yaramadı, bunun fdisktamamen farklı bir şey yaptığıydı: blok cihazın bölme tablosunda (= ilk sektör) okuyor ve bulduklarını yazdırıyor . Hiçbir şeyi kontrol etmez, sadece bölüm tablosunda ne olduğunu söyler.

Bölümleme tablosu zarar görmüşse bile engellemiyor veya blok cihazında bir tane yok: sağlama toplamının iyi olmadığına dair bir uyarı yazdırır, ancak değerler açıkça olmayan olsa bile yine de bulunanları yazdırır -sense.

: Bu durumda ne oldu /dev/mmcblk0p1 yoksa bir bölüm tablosunun. Cihazın adından da anlaşılacağı gibi, zaten fiziksel diskin ilk bölümüdür /dev/mmcblk0. Bu disk, bir bölüm tablosu içeriyorsa, sorguyu sormuş olsaydınız fdisk -l /dev/mmcblk0, çalışmıştı (msdos bölüm tablosu olduğu varsayılarak).


Bölüm alanım tam olarak 2gb, ancak blockdev ve fdisk her ikisi de kalan alanınkinden daha az değerler veriyor ve lütfen değerini almak için komuta söyleyin
Sarthak_Bhutani

@Sarthak_Bhutani Hangi bilgilere ihtiyacınız var fdisk -l /dev/mmcblk0? Size bir bloğun boyutunu, cihazdaki toplam blok sayısını, bölümlerin boyutunu ve ayrıca her bölümün başlangıç ​​ve bitiş bloğunu söylemelidir. Ayrıca, bu bilgilerden herhangi bir bölüme atanmamış blok aralıklarını da belirleyebilirsiniz.
BlackJack

9

Deneyin lsblk, hatta kök gerektirmez:

$ 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

-bParametre çıkışına bayt boyutunu söyler.


Bu çok güzel bir araç !!! Teşekkürler! 1!
rmbianchi

5

Bölüm çalıştırmasının toplam boyutunun tam değerini almak için:

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

2
Bence bu, sektör büyüklüğünün 512 olup olmadığına da bağlı (bugünkü vakaların büyük çoğunluğu).
peterh - Monica'yı yeniden başlat

1
@peterh Bir blok cihazının günümüzde hala 512 fiziksel sektör boyutuna sahip olması alışılmadık bir şey, ancak birçok şey (/ sys / class / block hakkında kesin bilgi bulamıyorum) 512 bayt biriminde rapor vermek üzere tasarlanmıştır. gerçek blok boyutundan bağımsız olarak.
Random832

0

Çözümüm:

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/hda2zorunlu olarak bağlanmayan bölüm nerede . tune2fsver 1.42.4 ile test edilmiştir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.