Ben uzun süredir bu sorunu hemen hemen tüm dağıtımlarda gördüm. Sanırım Linux Kernel in sorunu bu. USB diske dosya kopyaladığımda dosyanın kopyalanması bitti gözüküyor fakat sonrasında tamamen yazılmamış oluyor ve hata oluşuyor. Bu sorunun kaynağını çözemedim. Aksine bu işlem windowz işletim sisteminde yapıldığında her hangi bir sorun çıkmıyor. Bunun sebebi nedir? Acaba bilen var mı?
Aslında bu bir sorun değil. Linux’un çalışma şekli diyebiliriz. Sen dosyayı HDD’den USB’ye kopyaladığında önce RAM’e önbellekliyor sonra USB’ye yazıyor. RAM’in okuma/yazma hızı flash bellekten kat be kat hızlı olduğu için önbellekleme bittiğinde dosya yöneticisi kopyalamanın bittiğini zannediyor. Ama arkaplanda RAM’den USB ye kopyalama devam ediyor. Sen o esnada flash belleği ayır dediğinde “bitmeyen işlem var bitmesini bekle” diyor. Bunu iş yoğunluğuna göre arkada kendi ayarlayıp hedef diskde ki diğer işlemler için sıkışıklık yaratmasın diye yapıyor.
Windows da ise önbellekleme yapmadan direkt usb ye yazdığı için kopyalama işlemini gösteren ilerleme çubuğuyla senkronize görünüyor.
Aslında belki en iyisi, öntanımlı ayarlar ile yetinip USB aygıtlarının bağlantısını mutlaka sistem tepsisinden sonlandırarak artık güvenle çıkarılabileceği bilgisini beklemek.
Fakat öntanımlı dirty-ratio ayarlarını değiştirmek istenirse, mevcut RAM ve sabit disk bilgilerini vererek güvenilir bir Yapay Zeka tavsiyesine göre hareket etmek daha uygun olabilir.
Örneğin, yazma işlemlerinde RAM belleğin kullanımını minimize etmenin risklerini de arttıran vm.dirty_ratio=1 yerine, çoğu Linux dağıtımlarındaki öntanımlı vm.dirty_ratio=20 ve vm.dirty_background_ratio=10 değerlerini sadece yarı yarıya düşürerek 10 ve 5 yapılabilir.
Daha önce başıma şöyle bir durum geldi. Birkaç yüz MB’lik bir rar dosyasını karşı tarafa göndermem gerekiyordu. Bunu bilgisayarımdan flaşbelleğe aktardım. Sistem işlemin bittiğini söyledi. Yani XFCE-Thunar’ın kopyalamayı gösteren processbar’ı tamamlandı ve pencere kapandı. Ardından flaşı güvenli ayırdım ve sistem bana bir uyarı vermedi. Flaşı karşı tarafa gönderdim, dosyanın bozuk olduğunu söyledi. Flaş içindeki dosyayı bir de ben kontrol edince bozuk olduğunu doğruladım. Sebebini araştırmak üzere yeniden kopyalama yaparak durumu inceledim. Kopyalama bittikten sonra bilgi balonu bu defa göründü, ayırmayın dedi. O esnada flaşın ışığı titriyordu.
Peki ışıksız flaşbelleklerde ne olacak? Bilgi balonu bir sebeple görünmezse ya da kullanıcının dikkatinden kaçarsa birçok kullanıcı mağdur olacak. Buyrun konuyu açan kullanıcı.
Risklerin ne olduğunu gerçekten bilmiyorum ama, en azından processbar erken tamamlanmamalı. İşlem bitmeden yüzde yüze erişiyor ve kullanıcının hata yapmasına neden oluyor. Bu bir Bug’dır. Ya dirty ratio’yu 1’e çekeceğiz, ya da birileri copying processbar işlevini düzeltecek. Başka yolu yok.
Hele GNOME tarafında daha da beter. Processbar yok. Sağ üst köşede bit kadar bir pasta grafiği var, bitti mi bitmedi mi hiç belli değil. Geliştiricilerin bunları dikkate almaları gerekiyor.
Dosya yöneticisinin işi bittiği halde kopyalanan dosyanın henüz sistem tarafından geçici bellekten USB’ye yazdırılması henüz bitmediyse, “güvenli ayırma” işlemi yapılabiliyorsa, bu XFCE tarafında büyük bir HATA olduğunu gösterir.
Dosya yöneticisinden kendisinden çıktıktan sonrasını da takip edip hedefe gerçekten yazılıp yazılmadığını da denetlemesi belki ideal çözüm olur, bilmiyorum.
Fakat RAM’in bu işlemlerde aracı olarak kullanımının neredeyse sıfırlamanın dezavantajlarını ve risklerini YZ bir bir sıralıyor. Doğrusu pek bildiğim bir konu değil, fakat mantıklı geldiğinden, YZ’den kopya çekiyorum.
YZ iyidir YZ’ye laf yok.
Aman YZ’den kopyala yapmayın, aman YZ’den kopyala yapmayın, diye diye korkuttular milleti, her YZ’ye soran açıklama yapmak zorunda kalıyor tepki gelecek diye. YZ’yi kullanın, ama her dediğini yapmayın.
O zaman Thunar için bir araç geliştireyim. Tampon belleği sıfırlamayalım, ama işlem bitimini daha bir net belirtsin, “dur bekle arka planda sürüyor” desin. ~/.config/Thunar/ içine bir uca.xml düzenlemesi yaparız olmazsa. Şimdi uğraşamam sonra bakacağım listeye aldım.