Saya memiliki lingkungan tervirtualisasi dengan wadah yang sangat tinggi, jadi saya mencoba membuat setiap wadah sangat kecil. "Sangat kecil" berarti 87 MB di pangkalan Ubuntu 14.04 (Trusty Tahr) tanpa memutus kompatibilitas manajer paket.
Jadi saya menggunakan LVM sebagai penyimpanan dukungan untuk wadah saya dan baru-baru ini saya menemukan angka yang sangat aneh. Di sini mereka.
Mari kita buat volume logis 100 MiB (yeah, kekuatan 2).
sudo lvcreate -L100M -n test1 /dev/purgatory
Saya ingin memeriksa ukuran, jadi saya masalah sudo lvs --units k
test1 purgatory -wi-a---- 102400.00k
Manis, ini benar-benar 100 MiB.
Sekarang mari kita membuat sistem file ext4 . Dan tentu saja, kita ingat -m 0
parameter, yang mencegah pemborosan ruang.
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
Manis dan bersih Pikirkan ukuran blok - volume logis kami kecil, jadi mkfs.ext4 memutuskan untuk membuat blok berukuran 1 KiB, bukan yang biasanya 4 KiB.
Sekarang kita akan memasangnya.
sudo mount /dev/purgatory/test1 /mnt/test1
Dan mari kita panggil df
tanpa parameter (kami ingin melihat 1 blok KiB)
/dev/mapper/purgatory-test1 95054 1550 91456 2% /mnt/test1
Tunggu, oh shi ~
Kami memiliki total 95054 blok. Tetapi perangkat itu sendiri memiliki 102400 blok 1 KiB. Kami hanya memiliki 92,8% dari penyimpanan kami. Di mana blok saya, teman?
Mari kita melihatnya pada perangkat blok nyata. A memiliki disk virtual 16 GiB, 16777216 blok 1K, tetapi hanya 15396784 blok dalam output df. 91,7%, apa itu?
Sekarang ikuti investigasi (spoiler: tidak ada hasil)
Filesystem bisa dimulai bukan di awal perangkat. Ini aneh, tetapi mungkin. Untungnya, ext4 memiliki byte ajaib, mari kita periksa keberadaan mereka.
sudo hexdump -C / dev / purgatory / test1 | grep "53 ef"
Ini menunjukkan superblock:
00000430 a9 10 e7 54 01 00 ff ff 53 ef 01 00 01 00 00 00 |...T....S.......|
Hex 430 = Des 1072, jadi di suatu tempat setelah kilobyte pertama. Terlihat masuk akal, ext4 melompati 1024 byte pertama untuk keanehan seperti VBR, dll.
- Ini jurnal!
Tidak, bukan. Jurnal mengambil ruang dari Tersedia jika output df.
- Oh, kami punya dump2fs dan dapat memeriksa ukuran di sana!
... banyak greps ...
sudo dumpe2fs /dev/purgatory/test1 | grep "Free blocks"
Aduh.
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
Dan kami memiliki nomor lain. 93504 blok gratis.
Pertanyaannya adalah: apa yang terjadi?
- Blokir perangkat: 102400k (kata lvs)
- Ukuran sistem file: 95054k (kata df)
- Blok gratis: 93504k (kata dumpe2fs)
- Ukuran yang tersedia: 91456k (kata df)
ext2
terlihat masuk akal di sini, tentu saja
ext2
untuk partisi kecil.