DD'nin bulunduğu sürücüye sıfırlar çıkarsam ne olur?


10

Bu komut: dd if=/dev/zero of=/dev/sda bs=1Mdd komutu aslen / dev / sda'daysa başarılı olur mu? Dd o anda bellekte olduğu için bu tamamlanacak mı?

Yanıtlar:


40

Olabilecek üç şey var:

  1. Komut başlar, tamamlanana kadar çalışır ve bir isteme geri dönersiniz. Disk etkili bir şekilde silindiğinden, bundan sonra çok fazla şey yapamazsınız, ancak bazı kabuk yerleşik komutları ile şanslı olabilirsiniz.
  2. Komut başlar. Bir noktada hafıza basıncı nedeniyle sayfalara ayrılır. Normalde bu bir sorun değildir, çünkü parçaları sadece takastan diskten (değişmemiş veriler) yeniden yüklenebilir. Ancak bunları sildiyseniz, diski doldururken dd komutu kısmen başarısız olur.
  3. Üçüncü seçenek BSD'lerden bir şeydir. Takılı bir diskteki MBR'nin üzerine yazma koruması. Komutu root olarak çalıştırsanız bile. Hepsi biraz farklı olan düzinelerce Linux dağıtımı var. Bazılarının bunu taklit etmesi oldukça mümkündür.


Teori için şimdiye kadar. Şimdi pratik bir test için.

Bir VM'ye yeni bir Ubuntu 12.10 yükledim. (Win7-x64 üzerinde VMware iş istasyonu, varsayılan seçenekleri ve 10 GB sanal diski kullanarak).

Dd komutu başarıyla tamamlandı ve ben bir çalışma istemi gibi görünüyordu geri düştü. Belli nedenlerden dolayı başarısız olsalar da yeni komutlar girebilirim.

Diski sildikten sonra Ubuntu VM'nin ekran görüntüsü


9
Pratik test için büyük +1!
Doug Harris

10
Görüyorum Segmentation faultve başarıyla tamamlandığını iddia ediyorsun ...?
Alvin Wong

1
Evet. Diski okunamaz hale getirdi. Bence hedef buydu. Güvenli silme işlemleri için başka bir şey denemeniz gerekir (güvenli silme komutu gibi).
Hennes

aldığım en iyi cevaplardan biri. Teşekkürler!
agz

6

Damn Small Linux kullanan bir sanal makinede yapılan hızlı bir deneme, dd komutunun beklendiği gibi tamamlandığını gösterir; program başlangıçta çalıştırmak için belleğe yüklenir ve işlem sırasında yürütülebilir dosyayı tekrar tekrar yüklemek çok az mantıklıdır. Sonunda, dd çıkacak ve 'cihazda boş alan kalmayacağını' bildirecektir.

Daha sonra, işletim sistemi ilk bakışta normal çalışıyor gibi görünüyor, ancak ilk komuttan sonra askıda kalıyor, artık açık nedenlerle çalışamıyor ve yanıt vermiyor. Sabit sürücü içeriğinin kısa bir incelemesi, bölümün gerçekten sıfırlandığını gösterir.


4

Gönderen mmapLinux üzerinde sayfa:

MAP_SHARED Share this mapping.  Updates to the mapping are visible to other processes that map this  file,
           and  are  carried  through  to the underlying file.  The file may not actually be updated until
           msync(2) or munmap() is called.


MAP_PRIVATE
           Create a private copy-on-write mapping.  Updates to the mapping are not visible to other  pro‐
           cesses  mapping  the  same  file,  and  are  not carried through to the underlying file.  It is
           unspecified whether changes made to the file after the mmap() call are visible  in    mapped
           region.

Yürütülebilir dosyalar mmapişleve dahili bir çağrı yoluyla çekirdek tarafından belleğe eşlenir . Bir MAP_PRIVATEtür eşleme istenir ( fs/binfmt_elf.cçekirdek kaynak ağacına bakın).

Bu nedenle şu davranışa mmapdayanır: dosyadaki değişikliklerin mi yoksa o dosyanın başvurulduğu temeldeki blok cihazının mı, eşleştirilen ve mevcut olan eşleme sayfalarına geri yayılıp yayılmadığı.

Bu sayfa çekirdek davranışı yerine API standartlarına dayanmaktadır, dolayısıyla "belirtilmemiş". Gerçek davranış, dosyadaki değişikliklerin zaten mevcut olan sayfalara geri yayılmamasıdır. Tabii ki, program aniden sayfalanmamış bir kod sayfasına atlarsa ve silme zaten yapılmışsa, tüm sıfırların bir sayfasını alır.

Ancak, büyük olasılıkla, ddkendini sildiğinde, silme döngüsüne devam etmek için gereken tüm kod sayfalarında sayfalandı. Döngü sona erdiğinde, mevcut olmayan bir sayfada bulunan bir koda çarpma olasılığı vardır: örneğin, bir işlevin sayfa sınırına yayıldığını varsayalım, bu nedenle iade talimatına ulaşmak için bir sayfa getirilmelidir.

Ancak bu sayfa önceki bir ddçağrıdan da önbelleğe alınabilir .


1

Evet. Tabii ki, aynı zamanda dosya sisteminizin çoğuna mal olacak, ancak muhtemelen biliyorsunuz ki ...


0

Geçenlerde bir hata yaptım. SD Kart üzerine 2 GB img dd amaçladı, ama yanlışlıkla sda yaptı dd if=rasberrypi.img of=/dev/sda. Hatamı fark ettim ve dd'yi iptal ettiler, ancak o zamana kadar ~ 600MB (~ 500GB kullanılan bir diskte) yazmıştı. Bölme tablosu yıkıldı.

Masaüstü (10 GB bellek ve haftalarca), hiçbir şey olmadıkça birkaç saat çalışmaya devam etti. Son zamanlarda önemli dosyaları dropbox'a almak için yönetilir, normalde kromda göz atılır. Aslında ben aslında istediği gibi iyi çalıştı, SD kart için dd çalıştırabilirsiniz.

Birkaç saat sonra dosya sistemim salt okunur moda geçti ve rastgele programlar ölmeye başladı. Diğer birçok sisteme sshed oldum, bu oturumları kullanmaya devam edebilirdim, ancak yeni oturum yapmak ssh programını bulamıyor hata verdi. Şu anda açık sekmeleri kromda değiştirebilirim, ancak sekmelerin içeriği "asılı" görünüyor. Yenilersem sonsuza dek beyaz ekran alıyorum. rsyslogd nedense% 100 cpu (1 çekirdekli) alıyordu, muhtemelen günlükleri diske akıtamıyor olabilirdi ... belki.

VLC'de 350 MB açılmış (ve duraklatılmış) bir videom vardı, yine de oynatabilirim ve videonun herhangi bir bölümüne atlayabilirim. Muhtemelen onun son bir indirme beri.

GUI kullanarak sistemi normalde kapatabilirim, hata yok.

Yani bu tam olarak sorunuzu cevaplamıyor, ancak diskin başlangıcını silerseniz ne olacağını söyler ..

Diskteki şeylerin çoğu hala kurtarılabilir olabilir, ancak umarım her şey yedeklendiğinden (umarım) rahatsız olmaz.


-1

Büyük olasılıkla tamamlanmayacaktır, çünkü başka bir yürütme bileşeni eksik olan bir dosyayı isteyecek ve çekirdeği panikleyecektir. diski gerçekten sıfırlamak istiyorsanız, canlı bir CD kullanın; aksi halde sonucu asla garanti edemezsiniz.


2
Eksik bir dosya istendiğinde çekirdek paniğe kapılmayacaktır. Eğer öyleyse, sadece bir güvenilir olmayan diske sahip olsaydı makineler çökecektir.
David Schwartz

@ David Schwartz, durum böyleyse, #rm -rf / dosya sisteminin tamamını siler. Deneylerden biliyorum ki durum böyle değil. standart olmayan bir tür ramdisk teknolojisi uygulanmadıkça sistem tamamen ram'dan uzun süre çalışamaz.
Frank Thomas

@FrankThomas: Çekirdek panikledi mi?
David Schwartz

evet, siyah ekran kapanması.
Frank Thomas
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.