- Ntfs2btrfs, Microsoft NTFS dosya sistemini açık kaynak dosya sistemi Btrfs’ye yerinde dönüştüren bir araçtır; ext2 için kullanılan
btrfs-convertile benzer şekilde çalışır - Dönüştürme öncesindeki özgün imaj
image/ntfs.imgaltında reflink kopyası olarak saklanır; dönüştürme sonucunu korumak istiyorsanız alan açmak için bu imajı silebilirsiniz - Windows’ta yönetici komut isteminde
ntfs2btrfs.exe D:\ile, Linux’ta ise root yetkisiylentfs2btrfs /dev/sda1komutu çalıştırılır - Önyükleme sürücüsünde veya o anda kullanılan pagefile bulunan sürücülerde çalışmaz; WinBtrfs kullanırken
imagealt birimini silebilmek için readonly bayrağını kaldırmak gerekir - Destek kapsamına dosyalar, dizinler, sembolik bağlantılar, güvenlik tanımlayıcıları, alternatif veri akışları, NTFS geri alma ve LXSS metadata koruması dahildir; ancak şifreli dosyalar ve olağandışı küme boyutları desteklenmez
Ntfs2btrfs ne yapar?
- Ntfs2btrfs, NTFS dosya sistemini Btrfs’ye yerinde dönüştüren bir araçtır
- Özgün imaj
image/ntfs.imgaltında reflink kopyası olarak saklanır- Dönüştürme sonucunu korumak istiyorsanız alan açmak için bu dosyayı silebilirsiniz
- Araç kararlı olarak belirtilse de, sorun çıkması durumunda yazarın sorumluluk kabul etmediğine dair bir uyarı içerir
- Windows için Btrfs dosya sistemi sürücüsü olan WinBtrfs de birlikte bakılabilecek bir proje olarak bağlantılanmıştır
- Windows 10’daki “WOF compressed data”yı tersine mühendislikle inceleyen Eric Biggers’ın ntfs-3g-system-compression kodu kullanılmıştır
Kullanım yöntemi ve kısıtlar
- Windows’ta yönetici komut isteminde çalıştırılır
ntfs2btrfs.exe D:\
- Linux’ta root yetkisiyle blok aygıtı belirtilir
ntfs2btrfs /dev/sda1
- Windows’ta aşağıdaki hedefler dönüştürülemez
-
Önyükleme sürücüsü
- O anda kullanılan pagefile bulunan sürücü
- WinBtrfs kullanılıyorsa
imagealt birimini silmek için önce readonly bayrağının kaldırılması gerekir
-
Kurulum yolları
- Windows’ta Releases page üzerinden en güncel Zip dosyasını indirebilir veya Scoop kullanabilirsiniz
- Linux dağıtımlarına göre paketler sağlanır
- Diğer dağıtımlarda veya işletim sistemlerinde doğrudan derlemek gerekir
Derleme ve bağımlılıklar
- Windows’ta kaynak dizini yeni bir MSVC sürümüyle açıp
CMakeLists.txtiçinde Compile çalıştırılır - Linux’ta
cmakevemakeile derlenirmkdir buildcd buildcmake ..make
- Derleme için libfmt gerekir ve paket yöneticisiyle kurulabilir
- Sıkıştırma desteği için zlib, lzo ve zstd gerekir
- CMake seçenekleri
WITH_ZLIB,WITH_LZO,WITH_ZSTDile ilgili destek devre dışı bırakılabilir
- CMake seçenekleri
Desteklenen özellikler
- Aşağıdaki öğeler dönüştürülebilir veya korunabilir
-
Dosyalar
-
Dizinler
- Sembolik bağlantılar
- Diğer reparse point’ler
- Güvenlik tanımlayıcıları
- Alternatif veri akışları
- DOS öznitelikleri
- hidden, system vb.
- Özgün NTFS imajına geri alma
- LXSS metadata koruması
-
Desteklenmeyen öğeler
- Windows’un eski genişletilmiş öznitelikleri desteklenmez
- 16KB’yi aşan büyük alternatif veri akışları desteklenmez
- case-sensitivity bayrağının korunması desteklenmez
- 4KB olmayan olağandışı küme boyutları desteklenmez
- Şifreli dosyalar desteklenmez
Değişiklik geçmişinde görülen başlıca değişimler
- 2025-06-16 sürümü, GCC 15 derleme sorununu düzeltir
- 2024-01-15 sürümü, GCC 14’te
-Werror=incompatible-pointer-typesvarsayılan olarak etkinleştiğinde ortaya çıkan derleme sorununu düzeltir - 2023-05-01 sürümü, inline extent item sıralama sorunu ile metadata item level değeri sorununu düzeltir
- Bu iki sorunun
btrfs checkile tanılanamadığı belirtilir - Adı aşırı uzun olan ADS’lerin atlanması yönünde değişiklik yapılmıştır
- Bu iki sorunun
- 2022-08-12 sürümü;
--no-datasumseçeneği, LXSS/WSL metadata koruması, küçük harfli sürücü harflerini tanıma düzeltmesi, son 1MB alana dosya yerleştirilirken oluşan bozulma düzeltmesi gibi değişiklikler içerir - 2021-09-23 sürümü, Btrfs sıkıştırma desteği ve geri alma desteği ekler
- Sıkıştırma zlib, lzo ve zstd destekler
- Hash algoritmaları için ek olarak
xxhash,sha256,blake2desteklenir - NT4 tarzı güvenlik tanımlayıcıları da desteklenir
- Çok sayıda inode içeren birimlerin dönüştürme hızı iyileştirilmiştir
btrfs check’in yakalayamadığı dosya sistemi bozulması hatası da düzeltilmiştir
- 2021-01-05 sürümü; NTFS sıkıştırma, “WOF compressed data” ve sparse file ile ilgili sorun düzeltmelerini içerir
Windows’u Btrfs’den önyükleme durumunda
- Bu araçla dönüştürülen Btrfs üzerinden Windows’u önyüklemenin, koşullar uygunsa mümkün olduğu belirtilir
- İlgili proje olarak Quibble bağlantılanmıştır
1 yorum
Hacker News yorumları
Windows çekirdek önyükleyicisini açık ve genişletilebilir biçimde tersine mühendislikle yeniden ortaya koyan Quibble bağlantısı çok daha ilginçti: https://github.com/maharmstone/quibble
Bunu ZFS'te yapacak olsaydım, başka dosya sistemi biçimlerini okuyup ZFS blok işaretçileri sentezleyen bir katman eklerdim.
Böylece ZFS başka dosya sistemlerini okuyabilir, yazma sürecinde de tamamını yavaş yavaş yeniden yazabilirdi. ZFS'te blok işaretçisi yeniden yazma özelliği olsaydı, tamamını yeniden yazdırıp dönüşümü bitirmek mümkün olurdu; ancak daha önce açıkladığım gibi ZFS düzgün bir içerik adreslemeli depolama (CAS) dosya sistemi olmadığı için böyle bir özelliği yok ve olamaz da.
Burada BTRFS kullanan varsa, bugünlerde kararlılığı nasıl söyleyebilir mi? Eskiden çok ürkütücü örnekler görmüştüm.
Hiç sorun yaşamadım ama BTRFS'nin düşündüğü boş alan ile işletim sisteminin geri kalanının düşündüğü boş alanın her zaman uyuşmaması can sıkıcı. Yine de pratikte sorun olduğu nadirdir.
Veritabanı iş yükleri hariç, başka bir dosya sisteminin neden kullanıldığını anlayamayacak kadar Linux'un başlıca dosya sistemi olduğunu düşünüyorum.
Paralel kurulum ortamında bozuk bölüme erişip düzeltmeye çalıştım ama işe yaramadı.
2 ay önce buna ihtiyacım vardı. 10 TB'tan fazla veri içeren bir sabit diski NTFS'ten biçimlendirmek zorunda kaldım.
Harika bir proje.
LZX sıkıştırması uygulanmış dosyaları bile destekliyorsa epey şaşırırım.
Bu, Windows 2000 dönemindeki dosya sıkıştırmasından farklı bir şey ve
compact.exe /C /EXE:LZX (filename)ile etkinleştirilmesi gereken bir özellik.https://github.com/search?q=repo%3Amaharmstone%2Fntfs2btrfs%...
Eskiden denemiştim; sonuç salt okunur disk olmuştu. Umarım o zamandan beri daha iyi hale gelmiştir.
Burada görülen gözü karalık seviyesi grafikleri delip geçiyor.
Standart yöntem, eski dosya sisteminde yeni dosya sistemi üst verileri için büyük bir dosya ayırmak, sonra eski dosya sistemindeki tüm dosyaları dolaşıp
fiemap()ile mevcut veriye işaret eden yeni extent'ler oluşturmaktır. Yazma işlemi yalnızca ayrılmış alana yapılır.Süper blok en son aşamada üzerine yazılır; ondan önce eski dosya sistemi ile yeni dosya sisteminin içeriğinin aynı olduğu doğrulanabilir.
O zaman bununla uğraşırken epey kötü birkaç hatanın izini sürmüştüm; umarım şimdi daha kararlıdır.
Başkalarının söylediği gibi, ölçekli ve sistematik biçimde yapılabilir ama elbette dikkat gerektirir.
“WinBtrfs, yeni nesil Linux dosya sistemi Btrfs için bir Windows sürücüsüdür. Sıfırdan yeniden uygulanmıştır; Linux çekirdeği kodu içermez ve Windows XP'den sonraki her sürümde çalışmalıdır. Ayrıca özgür işletim sistemi ReactOS'un bir parçası olarak da yer almaktadır.”
Bu metin ntfs2btrfs bakımcısının sayfasından alınmıştır.
https://github.com/maharmstone/btrfs
Bunun farklı bir durum olduğunu biliyorum ama o veriye harcanan zaman yeni bir diskten çok daha değerli. Şahsen riske değer bulmuyorum. Veri önemli değilse ya da iyi yedeklenmişse ve hata yakalamaya katkı vermek istiyorsanız denenebilir.
Gerçekten harika, ama çoğu insan bunu muhtemelen iki yıldır ertelediği NTFS sürücüsünü biçimlendirme işini bitirdikten en az bir hafta sonra öğrenecek.