ext4: Dosya sistemi alanı nasıl hesaplanır?


16

Son zamanlarda ntfs ext4 ile değiştirmek amacıyla 1.5 TB sürücü biçimlendirdim.

Sonra kaydettiğim dosyaların yeni bölüme sığmadığını fark ettim.

df:

ext4 (ext3 & ext2 show the same behavior)
Filesystem      1K-blocks   Used  Available Use% Mounted on
/dev/sdb1      1442146364   71160 1442075204    1% /media/Seagate

ntfs (similar to all other options that gparted offers):
/dev/sdb1      1465137148  110700 1465026448    1% /media/Seagate

Bu 1K-blok farkı, göze çarpan 22 GiB daha az kullanılabilir alan anlamına gelir.

Çoktan infaz ettim

tune2fs -O \^has_journal
tune2fs -r 0
tune2fs -m 0

Şaşırtıcı olmayan bir şekilde, sadece orada olmayan blokları etkilemediği için hiçbir etkisi yoktur.

Yine de fdisk, ext4 bölümünün tüm diski kapsadığını bildiriyor.

fdisk -l /dev/sdb:

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  2930277167  1465138583+  ee  GPT

Ve böylece resize2fs "Yapacak bir şey yok!"

dumpe2fs -h /dev/sdb1:
dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          d6fc8971-89bd-4c03-a7cd-abdb945d2173
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              91578368
Block count:              366284288
Reserved block count:     0
Free blocks:              360518801
Free inodes:              91578357
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      936
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Sat May 21 17:12:04 2011
Last mount time:          Sat May 21 17:15:30 2011
Last write time:          Sat May 21 17:24:32 2011
Mount count:              1
Maximum mount count:      32
Last checked:             Sat May 21 17:12:04 2011
Check interval:           15552000 (6 months)
Next check after:         Thu Nov 17 16:12:04 2011
Lifetime writes:          1372 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Default directory hash:   half_md4
Directory Hash Seed:      c334e6ef-b060-45d2-b65d-4ac94167cb09
Journal backup:           inode blocks

O eksik alanı ne kullanıyor?

Yanıtlar:


21

Bakalım. Cihaz boyutu 1.465.138.583½ kB = 1.500.301.909.504 B'dir. Dosya sistemi her biri 4096 B olan 366.284.288 bloktan oluşur, bu da 1.500.300.443.648 B'dir (süper bloğun ek kopyaları) Önyükleyici için başlangıçta birkaç kB alan olduğunu biliyorum.).

Dosya sistemi, 23.444.062.208 B (yaklaşık 22 GB, ipucu, ipucu) alan her biri 256 bayt olan 91.578.368 inot içerir. Sonra dosya içeriği için 1.442.146.364 kB = 1.476.757.876.736 B vardır. Bu 23.444.062.208 B + 1.476.757.876.736 B = 1.500.201.938.944 B'dir. Kalan boyut 98.504.704 B = 24.029 bloktur ve bu da dergi boyutu olarak doğru aralıktadır.

Gördüğünüz gibi, her şey açıklanır. (Tamam, neredeyse her şey, ama gigabaytlardan değil megabayttan bahsediyoruz.)


1
Teşekkürler, kesinlikle öyle. (Sunma şekliniz de oldukça açık - biraz daha fazla düşünmüş olmalıydım.) Bu yüzden "mkfs.ext4 -m 0 -O sparse_super -T largefile4" ile bölümü yeniden yarattım, çünkü sadece bin tane daha büyük tutması gerekiyordu dosyaları, şimdi 357728 inodes vs. 1464880364 blokları mevcuttur.
misc

13

Her şeyden önce, gördüğünüz kullanılabilir alandaki fark, hiç yer "israf" olduğu anlamına gelmez; israf edilmez, çünkü dosya sisteminin çalışması büyük önem taşır. Ext4 ve NTFS'yi, dosya sistemleri arasındaki tüm tasarım ve yapısal farklılıkları ve ayrıca her uygulamanın özelliklerini (ör. Her sürücünün VFS katmanına nasıl boş alan bildirdiği) belirtmeden çok büyük bir "ancak" olmadan bu şekilde karşılaştırmamalısınız.

Bölümü, sahip olduğunuz herhangi bir veri parçasını koyabileceğiniz devasa bir alan olarak düşünün. Bölümle aynı boyutta tek bir veri parçanız varsa, bölümün başlangıcından başlayarak yazabilir ve onunla serin kalabilirsiniz. Ama bilmiyorsun. Bunun yerine binlerce küçük dosyanız olabilir ve tüm bu dosyalar farklı şekillerde gruplandırılmış olabilir ve her bir dosya diğer birçok küçük veri parçasıyla (ad, tarih / saat ve izinler) vb. İlişkilendirilmiş olabilir. Böylece tüm bu veri parçalarına hızlı ve verimli bir şekilde ulaşabilirsiniz. Ayrıca, yeni veri parçalarının nasıl yazılacağı ve eski veri parçalarının nasıl verimli bir şekilde atılacağı ile ilgilenmelisiniz. Veri yapılarına ihtiyacınız var .

Ve bir çok veri yapısı var . Bazıları çok aptal, diğerleri daha yavaş yazma pahasına daha hızlı veri almanıza izin verirken, diğerleri okuma pahasına daha hızlı yazmanıza izin verir, bazıları hem okuma hem de yazmada çok iyi olabilir, ancak uzun duraklamalar gerektirir ve verileri yeniden düzenlerken boşta ek yük, vb.

Kesinlikle aşağıdakileri yapan bir sistem istiyorsunuz:

  1. Hakkında bilgi yazmak çok hızlı;
  2. Ondan bilgi almak çok hızlı;
  3. İçinde depolanan bilgileri düzenleme ve yönetmede iyidir;
  4. Dosya sisteminin depolandığı alanı (bölümü) iyi kullanır;
  5. Donanım sorunlarına karşı dayanıklıdır, böylece bilgilerinizin çoğunu veya tamamını kısmi sistem arızalarında geri alabilirsiniz;
  6. Yazılım sorunlarına karşı dirençlidir, böylece bir uygulamadaki bir hata veya yüklü bir kötü amaçlı uygulama verilerinizi kalıcı olarak yok etmez;
  7. İnsan hatalarına karşı dayanıklıdır, bu nedenle sistemi yanlışlıkla yapmamanız gereken bir şeyi (çöp kutusu / geri dönüşüm kutusu) silmeniz için sipariş ettiğinizde sizi affeder.

Yüksek performanslı dosya sistemleri, biraz alan pahasına çok hızlı okuma ve yazma olanağı sağlar. Karma tablolar ve B-ağaçlar gibi dosya sistemlerinde kullanılan en hızlı veri yapılarından bazıları çok karmaşıktır ve çok hızlı erişime izin vermek için gerçekte kullanımda olduğundan daha fazla yer ayırırlar.

Ext4 başka önemli özelliklere sahiptir. Dosya sisteminde tek bir hata noktası yoktur. Kritik verilerin çok sayıda bölümü yayılırken, bazı dosya sistemleri (NTFS için söyleyemem) doğru noktada bir hata oluşursa tüm verilerinizi okunamaz hale getirebilir. Ayrıca, Ext4, dosya sistemi oluşturma aşamasında verileriniz için çok fazla alan ayırırken, NTFS verilerinizle birlikte büyür.


1
Teşekkürler, bu son bölüm çok önemli. Ext4'ün ntfs'nin işlem sırasında yaptığı oluşturma zamanında (karşılaştırmalı olarak) çok fazla iş yaptığını bilmiyordum.
misc

1
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! 
The util fdisk doesn't support GPT. Use GNU Parted.

Bu ileti, diskin GPT stili bölümleme kullandığını gösterir ve bu fdiskaraç yalnızca eski MBR stilini anlar.

GPT bölümlenmiş diskler eski GPT uyumlu olmayan sistemlere takılırsa, yanlışlıkla yeniden biçimlendirmeleri önlemek için GPT bölümleme şeması bir "koruyucu MBR" içerir: temel olarak bu diskin size tamamen bir bölüm türü tarafından kullanıldığını söyleyen tamamen sahte bir bölüm tablosu yalnızca MBR bölümlemesini anlayan herhangi bir işletim sistemi veya araç hakkında hiçbir şey bilmiyorum.

Alanınızın bölüm tablosunun tam olarak görüntülenmesini sağlamak için şunu /dev/sdbkullanın:

parted /dev/sdb print
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.