लिनक्स पर अनमाउंट विभाजन का आकार कैसे प्राप्त करें?


14

मैं धुन 2 एफ का उपयोग कर रहा हूं, लेकिन यह ब्लॉकों में डेटा देता है, और मुझे विभाजन के कुल आकार का सटीक मूल्य नहीं मिल सकता है।

मैंने भी उपयोग किया है fdisk -l /dev/mmcblk0p1, लेकिन यहां से जो आकार मिल रहा है, वह भी एक अलग मूल्य है।

मुझे सटीक विभाजन आकार कैसे मिल सकता है?


8
ध्यान दें कि tune2fs विभाजन के आकार को प्रिंट नहीं करता है , यह फाइलसिस्टम के आकार को प्रिंट करता है । एक फाइलसिस्टम विभाजन से छोटा हो सकता है (यदि विभाजन पर अप्रयुक्त स्थान है), तो यह विभाजन से बड़ा हो सकता है (यदि किसी तरह विभाजन को काट दिया गया था; जाहिर है कि फाइलसिस्टम उस मामले में दूषित है, लेकिन फिर भी यह है; की तुलना में बड़ा विभाजन)। यह कई विभाजन भी कर सकता है, या "आभासी" भी हो सकता है, यानी एक बैकिंग डिवाइस (जैसे sysfs, procfs, tmpfs) भी नहीं है।
जॉर्ग डब्ल्यू मित्तग

जवाबों:


22

आदेश है:

blockdev --getsize64 /dev/mmcblk0p1

यह 64-बिट पूर्णांक के रूप में बाइट्स में परिणाम देता है। यह एक ब्लॉक डिवाइस के बाइट के आकार पर सवाल उठाता है , क्योंकि कर्नेल अपना आकार देखता है।

कारण, fdisk -l /dev/mmcblk0p1काम क्यों नहीं किया गया, fdiskयह कुछ अलग बात करता है: यह ब्लॉक डिवाइस के विभाजन तालिका (= पहला क्षेत्र) में पढ़ता है, और जो इसे मिला उसे प्रिंट करता है । यह कुछ भी जाँच नहीं करता है, केवल कहता है कि विभाजन तालिका में क्या है।

यदि विभाजन तालिका क्षतिग्रस्त है, तो यह भी परेशान नहीं करता है, या ब्लॉक डिवाइस में एक नहीं है: यह एक चेतावनी प्रिंट करेगा कि चेकसम ठीक नहीं है, लेकिन यह अभी भी प्रिंट करता है जो कि मान है, भले ही मान स्पष्ट रूप से गैर हों -समझ।

आपके मामले में यही हुआ है: एक विभाजन तालिका /dev/mmcblk0p1 नहीं है । जैसा कि डिवाइस का नाम दिखाता है, यह पहले से ही भौतिक डिस्क का पहला विभाजन है /dev/mmcblk0। इस डिस्क में एक विभाजन तालिका है, क्या आपने इसके साथ पूछताछ की fdisk -l /dev/mmcblk0थी, इसने काम किया था (यह मानते हुए कि इसमें एक msdos विभाजन तालिका थी)।


मेरा विभाजन स्थान ठीक 2gb है, लेकिन ब्लॉकदेव और fdisk दोनों मानों को इससे कम देते हैं कि शेष स्थान कहां है और कृपया इसके मूल्य को पुनः प्राप्त करने के लिए कमांड भी बताएं
सार्थक 5:28

@Sarthak_Bhutani आपको किस जानकारी की आवश्यकता नहीं है fdisk -l /dev/mmcblk0? यह आपको एक ब्लॉक का आकार, डिवाइस पर ब्लॉक की कुल संख्या, विभाजन का आकार और प्रत्येक विभाजन का प्रारंभ और अंत ब्लॉक भी बताना चाहिए। आप ब्लॉक रेंज का भी पता लगा सकते हैं जो उस जानकारी से किसी भी विभाजन को नहीं दी गई हैं।
ब्लेक जेक

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 है (जो आज अधिकांश मामलों में भारी है)।
पेटेर -

1
@peterh यह वास्तव में ब्लॉक डिवाइस के लिए इन दिनों 512 के भौतिक क्षेत्र के आकार के लिए असामान्य है , लेकिन कई चीजें (मुझे / sys / वर्ग / ब्लॉक पर निश्चित जानकारी नहीं मिल सकती है) 512 बाइट्स की इकाइयों में रिपोर्ट करने के लिए डिज़ाइन किया गया है वास्तविक ब्लॉक आकार की परवाह किए बिना।
रैंडम 832

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विभाजन जरूरी नहीं है। इसका परीक्षण tune2fsver 1.42.4 के साथ किया जाता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.