Bir dosyayı bir SSD'deki iki sürücü arasında taşıma - kopyalanacak mı?


18

Bir sürücü içinde bir dosya taşınırken, dosya kopyalanmaz ve silinmez. Dosyalara başvuran tablo yeni güncellenmiştir. Ve bildiğim kadarıyla, bir HDD'deki 2 sürücüde durum böyle değil. Ancak SSD'ler farklıdır, her sürücüye ayrılmış fiziksel bir alan yoktur. ( kaynak )

Benim sorum, bir dosya aynı SSD'de bir sürücüden diğerine taşındığında, baytlar kopyalandığında ve orijinal silindiğinde veya bazı tablolar güncellendiğinde SSD'nin daha az kullanılmasına ne olur?

Burada zaten yinelenen bir soru var . Ancak her iki cevap da şunları iddia ediyor:

her bölüm kendi kendine sürücünün fiziksel alanına sahip olacak

ve

Bir sabit diski bölümlemek aslında her bölüm için fiziksel bölgeleri belirler. [ve bir yorumda:] SSD hala bir sabit disktir, sadece bir diski yoktur.

Bildiğim kadarıyla bu yanlış. Buraya bakın .

SSD'ler hakkında daha fazla bilgi sahibi olan biri, hatalarına rağmen değerlendirmelerinde doğru olup olmadıklarını lütfen bana söyleyecek mi?


14
Kabul edilen cevap doğrudur: her bölümün kendi bağımsız dosya sistemi vardır. Her dosya sistemi kendisine atanmış blokları nasıl kullanacağına kendisi karar verir. SSD'nin ürün yazılımını önerdiğiniz şeyi yapmak için, dosya sistemleri / sistemleri ve Linux gibi kullanıcı alanı araçları mvişbirliği yapmak zorunda kalacak ve soyutlama katmanlarını büyük ölçüde karıştıracaktır.
Kamil Maciorowski

2
@Kamil: İşletim sistemi uyguladıysa, mvaslında şu anda olduğundan daha azını yapması gerekir , sanırım. (Yani, işletim sisteminin şu anda olduğu gibi başarısız olmak yerine bir çapraz dosya sistemi yeniden
adının

16
"[Bir SSD / HDD] üzerinde 2 sürücü" - Sanırım bir SSD / HDD'de 2 dosya sistemi veya 2 bölüm demek istediniz. Her iki kısaltmadaki son "D" nin "Sürücü" olduğunu unutmayın, bu nedenle 1 sürücüde 2 sürücü söylüyorsunuz, bu mantıklı değil.
JoL

1
Örneğin Disk Yönetimi iletişim kutusunu ele alalım. Change Drive Letter and PathsBir bölüme / birime atıfta bulunurken diyor .
ispiro

4
@ispiro Bu Windows'ta mı? Kullanıcıları karıştırmanın korkunç bir yolu gibi görünüyor. Sadece uygulandıkları sürücü bölümlerinden önce "Sürücü Mektubu" terimini bulduklarını tahmin edebilirim ve daha sonra sürücü bölümlerini bağımsız "sürücüler" olarak temsil ettiler. Artık bir donanım sürücüsünün bölümlerini temsil eden birden fazla Windows "sürücüsüne" sahip olabilirsiniz ...
JoL

Yanıtlar:


38

Bildiğim kadarıyla bu yanlış

Alıntı yapılan açıklama yarı doğrudur, yarı yanlıştır. Ancak HDD'ler için de yarı yanlış.

Bir sürücüyü bölümlere ayırmak her bölüm için mantıksal bölgeleri belirler . İşletim sistemi fiziksel konumları hiç umursamıyor - sadece sürücünün " mantıksal bloğu # 31415926 okumasını" ister ve sürücünün kendisi verinin nerede bulunduğuna karar verir. Bu, manyetik ve flash bellek için aynı şekilde çalışır.

Aslında son 20-25 yıldaki HDD'lerle aynı : ilk işletim sistemleri fiziksel silindir / kafa / sektör konumları kullansa da, artık çoktan gitti. LBA # 1234 plakasının nerede saklandığını tam olarak bilmiyorsunuz. HDD'ler bile kötü fiziksel sektörleri otomatik olarak yeniden eşleştirir, böylece aynı LBA, tıpkı SSD'lerde olduğu gibi tamamen farklı bir fiziksel alandan aniden okunabilir.

Yani hem HDD'lerde hem de SSD'lerde, işletim sisteminin veri okumak ve yazmak için sadece bir dizi LBA'sı vardır (örn. 0-999999). Bölümlemenin amacı, içindeki alt aralıkları ayırmaktır - örneğin, A bölümü 10–499999, B bölümü 500000-999999 alır. Her bölümün bağımsız bir dosya sistemi vardır ve her bölümün içindeki dosya sistemleri onun dışındaki verilere başvuramaz - bölüm sınırlarını geçemez. (Örneğin, A bölümü , verileri # 600000 sektöründe tutulan bir dosyaya sahip olamaz .)

Sonuç olarak, birinden diğerine geçen tüm dosyalar tam olarak kopyalanmalıdır.

(Bununla birlikte, teorik olarak, işletim sistemi diskin kendisinden bir alandan diğerine verileri çoğaltmasını isteyebilir (örneğin, "LBA # 1234'ü # 567890" kopyalayın)) ve sonra ana belleğe kopyalamak zorunda kalmadan, ve elbette bu, bölüm sınırlarını tamamen atlayacaktır. Örneğin, SSD'nin "flash çeviri katmanından" faydalanabilir. Ancak pratikte, bildiğim kadarıyla bu yapılmaz.)


Haklı olduğunu varsayıyorum. Ancak orada olduğunu fark olduğunu başka bir seçenek. Sürücü, # 1 numaralı sürücüdeki # 001 numaralı sektörün artık # 2 numaralı sürücüdeki # 123 numaralı sektörle değişeceğine karar verebilir (örneğin # 1 numaralı sürücüdeki sektör # 001, şimdi # 123 numaralı sektör olarak adlandırılan fiziksel verilere atıfta bulunacaktır) sürücü # 2), böylece bayt kopyalamak zorunda kalmadan dosyayı taşımak . Yani verilerin bir TB hareketli olabilir prensipte yakın anlık olun.
ispiro

15
Sürücü dosyaları veya dosya sistemlerini bilmiyor ve bu nedenle bu tür kararları tek başına alamıyor. Bunun gerçekleşmesi için işletim sisteminden bir istek alması gerekir. Son paragrafta daha önce de belirttiğim gibi, kesinlikle teknik olarak mümkündür, ancak işletim sistemleri genellikle dosya sistemleri arası kopyalar için rahatsız etmez ve aynı dosya sistemi kopyaları için de yaptıklarından şüphelenirim (daha çok FS düzeyinde yapılır).
user1686

6
Bazı SSD'ler blok düzeyinde çoğaltma uygular. Örneğin, Sandforce ( en.wikipedia.org/wiki/SandForce#Technology ) bunu ilk uygulayanlardan biriydi ve kontrolörleri birden fazla SSD üreticisinin ürününe girdi. Sandforce denetleyicilerin birden fazla "yazma amplifikasyonu" faktörü vardı - bu da flash depolama birimine işletim sisteminin sürücüye gönderdiklerinden daha az veri yazdıkları anlamına geliyor. Bir karşılaştırma olarak, SSD'lerin genellikle birden fazla yazma amper faktörü vardır.
hojusaram

2
@hojusaram: Doğru, ancak yine de post-factum tekilleştirme - flaş yazmalarını azaltır, ancak veriler hala okunur, diskten OS belleğine kopyalanır ve sonra disk denetleyicisine kopyalanır. Ipiro ne demek işletim sisteminin açıkça kendi kendine performans isteyebilir "reflink" veya "yazma üzerine kopya" (örneğin cp --reflink) SSD eşdeğer olduğunu düşünüyorum.
user1686

1
APFS'nin bununla nasıl başa çıktığını keşfetmek ilginç olacaktır, çünkü bölüm sınırları artık sabit değildir, kullanıcının müdahalesi olmadan değiştirilebilir.
Tetsujin

9

Bir Katı Hal Diski'ne veri yazıldığında ne olur, burada çok karmaşık ve temel teknolojiye bağlı olduğu için birkaç makaleye layıktır ( burada iyi özet ). Kısa öykü, SSD'lerin genel olarak belleğe sıfır bit yazamamasıdır. Bunun yerine, hafızanın bütün bir bölümünü sıfırlamak (silmek) ve daha sonra bunları sadece bunları yazarak depolayabilirler. Tipik olarak bu günlerde 512 baytlık bloklar yazıyorlar , ancak 4096 olan 8 blokluk bir sayfayı siliyorlar. Bu ve her yazma / silme döngüsünün belleğin bir miktar fiziksel aşınmasına neden olması ve bellek sonunda yıpranması, SSD'leri çok farklı kılıyor manyetik sabit diskleri çevirmekten daha iyidir.

Bunu bir kenara bırakırsak, SATA sürücüleri (ve AFAIK SAS sürücüleri) bir sektörden diğerine veri kopyalamak için yerel bir komut uygulamaz. (Ya da en azından SATA veya SAS spesifikasyonundaki hiçbir şey onları gerektirmez, bu yüzden işletim sistemi böyle bir komutun mevcut olduğuna güvenemez.) Bu nedenle bir bölümdeki bir dosya kopyası, bir sürücü sektöründen ana belleğe veri okumayı ve sonra yazmayı içerir farklı bir sektördeki güce geri dönüyor.

Bunun nedeni, işletim sistemi ile ilgili olarak, bir sürücünün bir dizi numaralı mantıksal sektör olmasıdır ve yapabileceği tek şey sektörlerden okumak ve sektörlere yazmaktır. İşletim sistemi, diskleri yeniden eşleme dürtüsünü söyleyemez.

Ayrıca, dosya sistemi (HFS +, NTFS, ext3, vb.), Bir dizi mantıksal blokta düzen getiren bir veri yapıları kümesidir. Bu veri yapıları "dosyalar", "dosya adları", "dizinler", "izinler" vb. Uygular. Bu nedenle, evet, bir dosyayı bir dizinden diğerine taşıdığınızda kopyalanmaz; yalnızca dosyanın hangi dizinde bulunduğunu gösteren dosya sistemi verileri güncellenir.

Bir kavramı bölümü tek dosya sistemi tarafından talep edilen sürücüde mantıksal sektörlere bir dizi olmasıdır. Bunun sonucu, bir dosya sisteminin bölümünün dışındaki sektörlere erişemeyebilmesidir. Büyük ölçüde bu bir güvenlik özelliğidir, ancak aynı zamanda dosya sisteminin veri yapılarının, dosya sisteminin sahibi altındaki sürücünün her sektörü için hesap oluşturması ve sektör eklemesi veya kaldırması önemsiz değildir. bu yapılara. Bu nedenle, bir bölümün boyutunu ayarlamak için özel yordamlar çalıştırmanız ve ayrıca dosya sistemlerinin bitişik bir sektör kümesinde çalışmak için ısrar etmeleri gerekir.

Bu nedenle sektörleri bir dosya sisteminden diğerine aktarırken bir dosya kopyası uygulamak pratik değildir ve tehlikelidir. Dönen bir manyetik sürücüde, aynı zamanda bir performans kabusu da olacaktır, çünkü sürücü kötü sektörler için istisnalar yapsa da, genel olarak sektörlerin art arda numaralandırılmış okuma ve yazma hızını optimize edecek şekilde fiziksel olarak yerleştirilmesini düzenler. sektörler.

Buna ek olarak, 2 dosya sistemi dosya verilerini diskte aynı şekilde depolayamayabilir, yani takas sektörleri pratik olsa bile çalışmayacaktır. NTFS ile aynı dosya sistemi türleri olsalar bile, biri şifreleme veya sıkıştırma kullanıyor olabilir, diğeri veriyi şifrelemiyor olabilir veya her ikisi de verileri şifreliyor olabilir, ancak farklı anahtarlarla. Dosyadaki verilerin tam olarak diskte depolanan bir gereklilik olması gerekmez, depolanması gereken tek şey verilerin geri dönüşümlü bir dönüşümüdür, böylece dosya sistemi bir şey yaparak dosyanın verilerini alabilir diskteki veriler. Dolayısıyla, her iki dosya sistemi de tam olarak aynı dönüşümü kullanmadığı sürece, sektörleri değiştirmek sadece dosya verilerini aktarma hedefini gerçekleştiremez.

Tüm bu nedenlerden dolayı, OS yazarları ve dosya sistemi yazarları için SSD'ler için bölümler arası hareketleri optimize eden bir özellik uygulamak çok az kazanç için çok fazla iştir. Yani herhangi bir çapraz bölüm hareketi bir okuma ve bir yazma olacaktır.

SSD'nin içinde biraz farklı bir hikaye. İşletim sistemi sürücüye veriyi bir yerden başka bir yere kopyaladığını söylemese de, SSD'lere yazma işlemleri o kadar pahalıdır (ve karmaşıktır) ve SSD denetleyicileri yazma işlemlerini en aza indirmek için çok iş yapar. Bazı SSD'ler, depolamaya yazılan bir sektörün zaten depolanmış bir sektörle ne zaman eşleştiğini tespit etmeye çalışacak ve bu fiziksel bellek parçasını kopyalamak yerine 2 farklı mantıksal sektörle eşleştiriyor gibi işaretliyor, dahili sürücü seviyesinde İşletim sistemi yapılamadı.

Ama buna güvenmeyin.


1
Son paragrafınız dosya sisteminin aynı olması gerektiği anlamına gelmiyor mu? SSD'nin hangi dosya sisteminin üstte çalıştığını bilmediğini varsayıyorum. Örneğin, bir bölüm sıkıştırma kullanıyor ve diğeri kullanmıyorsa, SSD'nin bir kopyası dosyayı bozabilir.
blablabla

@blablabla Her iki dosya sisteminin de gerçek dosya içeriğini diskte değişiklik yapmadan sakladığı varsayılan son paragraf. Bunu şimdi açıkladım.
Old Pro
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.