fallocate başarısız oldu: İşlem desteklenmiyor


10

Koşarken,

fallocate -l 10G /path/to/file

Aşağıdaki hatayı döndürdüm:

fallocate: file: fallocate failed: Operation not supported

Dd (if = / dev / zero veya = / dev / urandom) kullanarak dosya oluşturma işe yarar, ancak onlarca GB boyutunda büyük dosyalar oluşturmaya çalışıyorsam, tamamlanması birkaç saat sürer.

Ubuntu 14.04 çalışıyor. Bir ext4 bölümü kullanıldığında, dosya türünü belirtmek sonucu değiştirmez.

Ubuntu'da değil, CentOS6 makinelerimde iyi çalışıyor.


hangi dosya sistemini kullanıyorsunuz?
g_p

Ayrıca, oluşturduğunuz dosya türünü de güncelleyin.
vembutech

Ext4 kullanıldığında dosya türü önemli görünmüyor. Boş bir dosya, bir .txt, bir .img oluştursam da, aynı hatayı alıyorum.
John J Johnson

Yanıtlar:


11

Seyrek dosyalar sizin için uygunsa (örneğin, bir dosya sistemiyle doldurmak için bir görüntü oluşturmak istiyorsanız), hiçbir zaman oluşturulmaz

100 GB 3 milisaniye sürer:

# time dd if=/dev/zero of=tmptst.dat bs=1G seek=100 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0,00037726 s, 0,0 kB/s

real    0m0.003s
user    0m0.000s
sys 0m0.002s

Ortaya çıkan dosya:

# ls -lh tmptst.dat
-rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

Şu andaki gerçek boyutu: 0 Bayt

# ls -lsh tmptst.dat
0 -rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

Bu, / dev / urandom kullanarak bir kap oluşturmanın / dev / zero ile bir kap oluşturmanın ve yavaş yavaş verilerle doldurulmasından daha güvenli olacağı varsayımı altında çalışan bir dm-crypt / LUKS kapsayıcısının oluşturulmasıyla ilgiliydi. Yavaş hızın / dev / urandom'un pRNG'sinin ne kadar hızlı çalıştığının bir sınırlaması olduğu için, fallocate'i kullanarak öğrendiğimi sorunumdan çözemezdim, ama yine de fallocate'in neden çalışmayı reddettiğine dair hiçbir fikrim yok. Yine de cevap için şerefe, tüm bu zamandan sonra hayal ediyorum kabul bu haha ​​alacağım en iyi yanıt.
John J Johnson

Acaba fallocate aynı şeyi yapmak için geri dönüş olamaz mı? Bu bana mantıklı geliyor.
unfa

3

İçeriği umursamıyorsanız, ancak bazı verilere ihtiyacınız varsa,

İlk önce,

dd if=/dev/urandom of=tmp.txt bs=1M count=1

Yaratacak,

-rw-r--r-- 1 root root 1.0M Oct 17 00:30 tmp1.txt.

Ardından, bir 10M dosyası oluşturmak istiyorsanız, yukarıda oluşturulan dosyayı tekrar tekrar eklemek için kullanın,

for i in {1..10}; do dd if=tmp.txt of=tmp1.txt bs=1M oflag=append conv=notrunc; done;

2

Ben de bu problemle karşılaştım.

Sorun, dizin yolundaki sembolik bir bağ gibi görünüyor. / tmp üzerinde aynı komutu deneyin ve çalışması gerekir.

Fallocate komutuna '-x' ekleyerek sorunu çözebildim. Bu zorunlu 'posix modu' ve daha uzun sürmesi gerekiyordu.

Dosya sistemi ext4 olmasına rağmen sembolik bağlantı 'bu dosya sisteminde desteklenmiyor' hatasına neden oluyordu. Aslında (herhangi bir sembolik bağlantı olmadan) doğrudan dizin adına gidersem, fallocate () çağrısı işe yaradı.

A1: Oluşturduğunuz dosyanın tam yol adında hiçbir yerde sembolik bağlara sahip olmayın.

A2: '-x' kullanın, daha uzun sürse de.

B \ 375

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.