Soru EXT4 “Aygıtta yer kalmadı (28)” yanlış


İnode kullanımı, montaj sorunları ve diğer konularla ilgili diğer soruları / cevapları inceledim ama bu soruların hiçbiri geçerli değil ...

df -h

................................................................................................

df -ih

................................................................................................

Temel olarak, bir EXT4 biçimlendirilmiş 1TB sürücü boyutu var ve bir dizinde 12 milyon (12201106) dosya yazıyor. EXT4 için dosya başına dizin sınırında herhangi bir belge bulamıyorum, ancak dosya sistemi boşluk bırakılmadığını bildiriyor.

Tuhaf olarak, hala sürücü ve hedef klasörde yeni dosyalar oluşturabilirim ancak büyük bir cp / rsync yaparken, mkstemp ve rename Cihazda boş alan kalmadığını bildir.

rsync: mkstemp "/media/teradisk/files/f.xml.No79k5" başarısız oldu: Cihazda boş alan yok (28)

rsync: rename "/media/teradisk/files/f.xml.No79k5" -> "files / f.xml": Aygıtta boş alan yok (28)

Bu dizinin bir dizinde saklanmasının bir ton nedenlerden dolayı tavsiye edilmediğini biliyorum, ancak yardımcı olamadığım sürece bunları bölmek istemiyorum.

Tmpfs için inode ve alan kullanımı, cihaz ve her şey iyi görünüyor. Sebep hakkında bir fikrin var mı?


6
2018-04-30 13:56


Menşei


Neden bir dizinde 12M dosyasına ihtiyacınız var? - rvs
@rvs, bazen sen seçmiyorsun. - poige
@rvs - Yaptığım şeyle sınırlıyım. Teoride dosyaları bölebilirdim, ancak dizin listeleme ya da dosyaların indekslenmesini yapmıyorum. Onları bir direk içinde tutabilirsem hayatımı daha basit hale getirir. - Aiden Bell
Peki, neyin peşindesin? ) - poige
XFS kullanıldı, sorun çözüldü. - Aiden Bell


Cevaplar:


XFS dosya sistemi ................................................................................................ Büyük dosya sayısı dizinleri XFS için sorun değil. Tabii ki, uygulama düzeyinde bunu düzeltmek de yararlı olacaktır ...


2
2018-04-30 14:29



serverfault.com/questions/384541/... - poige
Her iki dosya sisteminin de daha iyi başa çıktığını ve uygulama seviyesinde iyileştirmelerin yapılabileceğini fark etsem de, bu cevap ext4'teki sorunun nedenini "başka bir FS kullan" demekten başka bir şey değil ... ext4 ve XFS'nin benim açımdan farklı olduğunu gösterme Özel sorun daha yararlı olurdu. - Aiden Bell
Bu soruyu reddetmekle birlikte (ve benim düşüşüm hala geçerli) XFS ile devam ettim. - Aiden Bell
@AidenBell Tabii ki sen yaptın. - ewwhite
Gömülü uygulamamda, XFS, ne yazık ki, benim için bir seçenek değil. Sorun çözülmedi. : '( - James T Snell


Görünüşe göre dizin sınırına ulaşıyorsun. Dizin kendisi, içindeki tüm dosyaların adlarını (+ inode sayıları ve muhtemelen başka bir meta veri) içeren bir tür özel dosyadır. Ve 2G'den daha büyük olamaz.

Neyse, tek bir dilde binlerce dosyadan daha fazlasına sahip olmak iyi bir fikir değildir: dosya isimlerine göre yapılan aramalar çok yavaş olur ve ls, rm ve diğerleri gibi standart araçlarla ilgili çok fazla sorunla karşılaşırsınız.

Güncelleştirme:

Aha!

http://old.nabble.com/re:The-maximum-number-of-files-under-a-folder-td16033098.html

................................................................................................

Bir klasördeki dosya sayısı için sınır yoktur.     dizinin kendisi 2GB'den büyük olamaz ve     tüm dosya sisteminin kullanabileceği inode sayısı. Of     Tabii, dizin indeksleme açık değilse, olmayabilir     dizin aramalarının performansı gibi, ama bu bir     farklı hikaye.

Mevcut ext3 htree kodunda sadece 2 olacak bir limit var.   derin seviyeleri. 2GB sınırıyla birlikte 15 milyon civarında sorun yaşayabilirsiniz   dosya isimlerinin uzunluğuna bağlı olarak dosyalar.


5
2018-04-30 14:32



Nedeni tanımlamaya çalışmak için +1. Bağlantınız EXT3'ten bahsediyor ve bu sınırların ext4'te değişmeden kaldığını öğrenmeye çalışıyor. - Aiden Bell
@AidenBell, sanırım Reiser3'te böyle bir şey yok. ;) - poige
@poige, ReiserFS takımının bir kült başlatması mı? Avukatlığın ... güçlü. - Aiden Bell
@AidenBell, benim deneyim  olduğu Başta. - poige
XFS'ye geçtiğinde, veri kümeleri vb. Geçirirken, bir dizinde 15 milyonu aşkın dosya depolamakta sorun yaşamadan çalıştı. - Aiden Bell


ext4 kesinlikle sizin için gerekli mi? Bu günlerde XFS, bir aksama olmadan böyle bir durumu ele almalıdır.


1
2018-04-30 14:26



Bunu söylemezdim. En azından "delaylog" desteğine ihtiyacınız var ve OP'nin durumunda eksik bir değişiklik olabileceğinden. - poige
Son zamanlarda XFS'i denediniz mi? İyi donanım OPs sorunu ile sorun olmamalıdır. - Janne Pikkarainen
Bu OP sorun hakkında değildi. ext4 oldukça iyi bir seçimdir ve XFS'in bir dizindeki milyonlarca dosyayla ilgilenmeye gerçekten yardımcı olacağını düşünmüyorum. - rvs
@JannePikkarainen, aslında (ve bir kez değil). İşte bu yüzden, XFS içeriğini kopyalamaktan daha hızlı kopyalamak için daha hızlı olduğunu belirten bir not yazdım. poige.livejournal.com/471842.html ) - poige
Yine, benim sorum "bir dizindeki milyonlarca dosya için Ext4 veya XFS" değil, "ext4'te X'le karşılaşıyorum, doğrudan neden olabilir." "EXT4 kullanıyorsunuz" cevabı "neden nedir?" - Aiden Bell


Bu problemi yaşadım. Benim çözümüm:

mkfs.ext4 -i 1024 -b 1024 /dev/blah


1
2018-02-20 13:22



Bu bölümün yeniden biçimlendirilmesini gerektiriyor, değil mi? Bunun gerçekten ona yardımcı olup olmadığından emin değil, bunu yapamayabilir. - slm
Ext4, varsayılan olarak 256 bayt i-düğümleri oluşturur. İ-düğümleriniz sadece 1024 bayt -i 1024 argüman, diskinizin% 20'si i-düğümlerine adanacaktır. Dosya sisteminiz en az 1 blok depolama alanına sahip dosyalarla doluysa, bu mantıklıdır. Ancak bu son derece nadirdir ve çoğu insan bu aşırı ayarları kullanmak istemeyecektir. - Chris S
Evet, gentoo portage dizini ile ext4 test ediyordum. Bu hatayı yeniden üretmek için sadece gentoo portage dizinini varsayılan mkfs.ext4 seçenekleri ile oluşturulan bir geridöngü dosyasına rsync deneyin. - Dan Brough


Görünüşe göre i-düğümler tükeniyor. Çıkışını göster df -iht ext4.

Aynı zamanda, ~ 1 milyon dosya (Linux çekirdeği 3.0, IIRC) içeren EXT4'te bir dizinin kaldırılmasıyla ilgili bir sorun yaşadım. Durumunuzdaki çekirdek sürümü nedir?

Son olarak, Reiser3 kullanmayı öneririm - format zamanı i-node sınırları yoktur ve daha önce bahsedilen durumda problemi de çözmüş görünüyordu.

UPD.: Reiser3'ün desteklenmediğini merak edenler için:

cd linux-stable/fs/reiserfs && git log --pretty='format:%aD %s' . | head -n20

Tue, 10 Jan 2012 15:110:11 -0800 reiserfs: don't lock root inode searching
Tue, 10 Jan 2012 15:11:09 -0800 reiserfs: don't lock journal_init()
Tue, 10 Jan 2012 15:11:07 -0800 reiserfs: delay reiserfs lock until journal initialization
Tue, 10 Jan 2012 15:11:05 -0800 reiserfs: delete comments referring to the BKL
Mon, 9 Jan 2012 12:51:21 -0800 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Wed, 21 Dec 2011 21:18:43 +0100 reiserfs: Force inode evictions before umount to avoid crash
Wed, 21 Dec 2011 17:35:34 +0100 reiserfs: Fix quota mount option parsing
Wed, 21 Dec 2011 20:17:10 +0100 reiserfs: Properly display mount options in /proc/mounts
Wed, 7 Dec 2011 18:16:57 -0500 vfs: prefer ->dentry->d_sb to ->mnt->mnt_sb
Tue, 26 Jul 2011 02:50:53 -0400 reiserfs: propagate umode_t
Tue, 26 Jul 2011 01:52:52 -0400 switch ->mknod() to umode_t
Tue, 26 Jul 2011 01:42:34 -0400 switch ->create() to umode_t
Tue, 26 Jul 2011 01:41:39 -0400 switch vfs_mkdir() and ->mkdir() to umode_t
Mon, 12 Dec 2011 15:51:45 -0500 vfs: fix the stupidity with i_dentry in inode destructors
Fri, 9 Dec 2011 08:06:57 -0500 vfs: mnt_drop_write_file()
Wed, 23 Nov 2011 11:57:51 -0500 switch a bunch of places to mnt_want_write_file()
Fri, 28 Oct 2011 14:13:29 +0200 filesystems: add set_nlink()
Fri, 28 Oct 2011 14:13:28 +0200 filesystems: add missing nlink wrappers
Tue, 25 Oct 2011 12:11:02 +0200 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
Thu, 15 Sep 2011 15:08:05 +0200 Merge branch 'master' into for-next

-4
2018-04-30 14:05



Reiser topluluğunun, "lider ahbap karısı" olayından, EXT4'e gerçekten bir üretim alternatifi olarak düşünülen şeyden yeterince kurtarıldığı oldu mu? - MDMarra
@MDMarra, aptal olma. Reiser3'ten değil, Reiser'den bahsediyorum. - poige
@poige Reiser4 oldukça gelişmiş, önceki enkarnasyonlardan dersler almış. Sürüm 4 şimdi evi yakıyor ve hoocides'ten sonra arabayı gölün içine atıyor. - Dan
@Dan, denedin mi? En azından ben yaptım. O_DIRECT, yeniden boyutlandırma yok ve çok kararlı değil. Bu nedenle, Reiser FS'nin tek iyi seçim sürümü 3'tür. - poige
@poige Şaka yapıyordum, ancak ciddi bir notta, Reiser'i geliştirmek için kullanılan şirket, geri dönme umuduyla resmen askıya alındı. Artık üretimde kullanmaya başlamak için "ileriye giden yol" gibi görünmüyor. - Dan