मेरे पास कंटेनरों के साथ बहुत उच्च घनत्व वर्चुअलाइज्ड वातावरण है, इसलिए मैं प्रत्येक कंटेनर को वास्तव में छोटा बनाने की कोशिश कर रहा हूं। पैकेज प्रबंधक की अनुकूलता को तोड़े बिना "उबई छोटा" का अर्थ है आधार उबंटू 14.04 (भरोसेमंद तहर) पर 87 एमबी ।
इसलिए मैं अपने कंटेनरों के लिए एलवीएम को बैकिंग स्टोरेज के रूप में उपयोग करता हूं और हाल ही में मुझे बहुत अजीब संख्या मिली। वे यहाँ हैं।
आइए एक 100 MiB (हाँ, 2 की शक्ति) तार्किक मात्रा बनाएं।
sudo lvcreate -L100M -n test1 /dev/purgatory
मैं आकार की जांच करना चाहता हूं, इसलिए मैं जारी करता हूं sudo lvs --units k
test1 purgatory -wi-a---- 102400.00k
मीठा, यह वास्तव में 100 MiB है।
अब एक ext4 फाइल सिस्टम बनाते हैं । और हां, हमें -m 0
पैरामीटर याद है, जो अंतरिक्ष अपशिष्ट को रोकता है।
sudo mkfs.ext4 -m 0 /dev/purgatory/test1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
मीठा और साफ। ब्लॉक आकार को ध्यान में रखें - हमारी तार्किक मात्रा छोटी है, इसलिए mkfs.ext4 ने 1 KiB आकार का ब्लॉक बनाने का फैसला किया, न कि सामान्य 4 KiB।
अब हम इसे माउंट करेंगे।
sudo mount /dev/purgatory/test1 /mnt/test1
और df
बिना मापदंडों के कॉल करते हैं (हम 1 KiB- ब्लॉक देखना चाहेंगे)
/dev/mapper/purgatory-test1 95054 1550 91456 2% /mnt/test1
रुको, ओह शि ~
हमारे पास कुल 95054 ब्लॉक हैं। लेकिन डिवाइस में 1 KiB के 102400 ब्लॉक हैं। हमारे पास हमारे भंडारण का केवल 92.8% है। मेरे ब्लॉक कहाँ हैं, यार?
आइए इसे एक वास्तविक ब्लॉक डिवाइस पर देखें। A में 16 GiB वर्चुअल डिस्क, 1K के 16777216 ब्लॉक हैं, लेकिन केवल 15396784 ब्लॉक df आउटपुट में हैं। 91.7%, यह क्या है?
अब जांच के बाद (बिगाड़ने वाला: कोई परिणाम नहीं)
डिवाइस की शुरुआत में फाइलसिस्टम शुरू नहीं हो सका। यह अजीब है, लेकिन संभव है। सौभाग्य से, ext4 में मैजिक बाइट्स हैं, आइए उनकी उपस्थिति की जांच करें।
sudo hexdump -C / dev / purgatory / test1 | grep "53 ef"
यह सुपरब्लॉक दिखाता है:
00000430 a9 10 e7 54 01 00 ff ff 53 ef 01 00 01 00 00 00 |...T....S.......|
हेक्स 430 = दिसंबर 1072, तो कहीं पहले किलोबाइट के बाद। उचित लगता है, V4 आदि विषमताओं के लिए पहले 1024 बाइट्स को बाहर निकालता है।
- यह पत्रिका है!
नहीं ऐसा नहीं है। जर्नल डीएफ आउटपुट से उपलब्ध जगह ले।
- ओह, हमारे पास डंप 2 एफए हैं और वहां के आकारों की जांच कर सकते हैं!
... ढेर सारे ...
sudo dumpe2fs /dev/purgatory/test1 | grep "Free blocks"
आउच।
Free blocks: 93504
Free blocks: 3510-8192
Free blocks: 8451-16384
Free blocks: 16385-24576
Free blocks: 24835-32768
Free blocks: 32769-40960
Free blocks: 41219-49152
Free blocks: 53249-57344
Free blocks: 57603-65536
Free blocks: 65537-73728
Free blocks: 73987-81920
Free blocks: 81921-90112
Free blocks: 90113-98304
Free blocks: 98305-102399
और हमारे पास एक और संख्या है। 93504 निःशुल्क ब्लॉक।
सवाल यह है: क्या चल रहा है?
- ब्लॉक डिवाइस: 102400k (lvs कहते हैं)
- फ़ाइल का आकार: 95054k (df कहते हैं)
- नि: शुल्क ब्लॉक: 93504k (डंप 2 एफएस कहते हैं)
- उपलब्ध आकार: 91456k (df कहते हैं)
ext2
यहाँ उचित लग रहा है, निश्चित
ext2
छोटे विभाजन के लिए उपयोग करता हूं ।