Yeni Ext4 Satır İçi Veri özelliği nasıl kullanılır? (verileri doğrudan inode'da depolamak)


9

Ext4 belgelerini doğru bir şekilde okursam, Linux 3.8'den başlayarak çok küçük bir dosyanın vazosu içindeki verileri doğrudan inode içinde saklamak mümkün olmalıdır.

Böyle bir dosyanın 0 blok büyüklüğünde olmasını bekliyordum, ama durum böyle değil.

#creating a small file
printf "abcde" > small_file

#checking size of file in bytes
stat --printf='%s\n' small_file
5

#number of blocks used by files
stat --printf='%b\n' small_file
8

Buradaki son sayının 0 olmasını beklerdim. Bir şey eksik mi?


1
Dosya sistemini daha sonraki bir zamanda eski bir çekirdeğe bağlarsanız sorunları önlemek için, dosya sisteminin oluşturulması sırasında etkinleştirilmesi gereken bir dosya sistemi seçeneğidir.
wurtel

Yanıtlar:


7

Satır içi verileri etkinleştirmek ext4için, e2fsprogs1.43 veya daha yenisini kullanmanız gerekir . Sıralı veriye desteği için Mart 2014'te eklenmiştir depo ama sadece Mayıs 2016 yılında serbest bırakıldı.git

Bunu elde ettikten sonra mke2fs -O inline_data, satır içi veri desteği ile yeni bir dosya sistemi oluşturmak için uygun bir cihazda çalışabilirsiniz ; bu tüm verilerinizi silecektir . Görünüşe göre mevcut bir dosya sistemindeki satır içi verileri etkinleştirmek henüz mümkün değil (en azından tune2fsdesteklemiyor).

Şimdi küçük bir dosya oluşturun debugfsve dosya sisteminde çalıştırın . cduygun dizine gidin ve çalıştırın stat smallfile; gibi bir şey alacaksın

Inode: 32770   Type: regular    Mode:  0644   Flags: 0x10000000
Generation: 2302340561    Version: 0x00000000:00000001
User:  1000   Group:  1000   Size: 6
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 0
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
 atime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
 mtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
crtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
Size of extra inode fields: 28
Extended attributes:
  system.data (0)
Size of inline data: 60

Gördüğünüz gibi veriler yerinde saklandı. Bu aynı zamanda df; dosyayı oluşturmadan önce:

% df -i /mnt/new 
Filesystem                           Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline  65536    12 65524    1% /mnt/new
% df /mnt/new 
Filesystem                           1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline   1032088  1280    978380   1% /mnt/new

Dosyayı oluşturduktan sonra:

% echo Hello >| smallfile
% ls -l
total 1
-rw-r--r-- 1 steve steve 6 Apr 22 07:35 smallfile
% df -i /mnt/new
Filesystem                           Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline  65536    13 65523    1% /mnt/new
% df /mnt/new
Filesystem                           1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline   1032088  1280    978380   1% /mnt/new

Dosya orada, bir inode kullanıyor ancak kullanılabilir depolama alanı değişmedi.


4

Senin Eğer e2fsprogssürümü çok eski ya da dosya sistemi zaten oluşturulur, kullandığınız özellik bayrağı ayarlayabilirsiniz debugfsoysa, bayrak 2012 yılından bu yana desteklenmektedir ( mke2fsdiğer araçları 2014+ üzerine desteği eklendi ve birçok dağılımları hala 2016 yılında onları gemi yok ve , Ubuntu Xenial dahil).

Bunu yapmak için bölümü okuma-yazma modunda açın:

debugfs -w /dev/sdxx

Sonra bayrağı ekleyin:

feature inline_data

(veya feature -inline_datakapatmak için, ancak zaten satır içi dosyalar varsa bu gerçekten kötü bir fikir!)

Bununla birlikte, sisteminiz e2fsprogseskiyse, yardımcı programlar ( debugfskendisi de dahil ) bayrağı ayarladıktan sonra böyle bir dosya sistemine dokunmayı reddedeceğinden , kendinizi bir köşeye sürdüğünüzü unutmayın .

Ayrıca geçerli GRUB(2.02) 'nin bunu desteklemediğini unutmayın , bu nedenle önyükleme bölümünde ayarlanması sistemi önyüklenemez hale getirecektir. Birleştirilmemiş yama varDestek eklemek .

Bu yazının yazıldığı tarih itibariyle, en fazla dosya ve dizinler inode_size-128satır içine alınabilir, böylece varsayılan 256 baytlık düğümler için 128 bayt kullanılabilir. Daha fazla satır içi çizgi istiyorsanız daha büyük inode kullanabilirsiniz.

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.