Bir SSD'yi boşaltmanın önerilen yolu nedir?


53

Eski SSD öldüğünden beri yeni SSD'mi yeni aldım. Bu Intel 320 SSD, TRIM'i destekler. Test amacıyla bayim üzerine Windows koydu, ama bundan kurtulmak ve Kubuntu'yu kurmak istiyorum.

Bir "güvenli silme" olması gerekmez, sadece diski en sağlıklı şekilde boşaltmaya ihtiyacım var. dd if=/dev/zero of=/dev/sdaSadece blokları sıfırla doldurduğuna ve böylece başka bir yazı aldığına inanıyorum (yanılıyorsam düzelt beni).

Cevabını gördüm TRIM nasıl etkinleştirilir , ancak boş blokları silmek için uygun, diski silmek için uygun görünmüyor.

hdparmbunu yapmak için program gibi görünüyor, ancak diski temizleyip temizlemediğini veya boş blokları temizlediğinden emin değilim. Manuel sayfasından:

  --trim-sector-ranges
          For  Solid State Drives (SSDs).  EXCEPTIONALLY DANGEROUS. DO NOT
          USE THIS OPTION!!  Tells the drive firmware to discard  unneeded
          data  sectors,  destroying  any  data that may have been present
          within them.  This makes those sectors available  for  immediate
          use  by  the firmware's garbage collection mechanism, to improve
          scheduling for wear-leveling of the flash  media.   This  option
          expects  one  or  more  sector range pairs immediately after the
          option: an LBA starting address, a colon, and  a  sector  count,
          with no intervening spaces.  EXCEPTIONALLY DANGEROUS. DO NOT USE
          THIS OPTION!!
          E.g.  hdparm --trim-sector-ranges 1000:4 7894:16 /dev/sdz

TRIM kullanarak tüm blokların boş görünmesini nasıl sağlayabilirim?


Güzel soru, belki de sadece NTFS dosya sistemini silmek yeterlidir?
htorque

1
Dolayısıyla bu sadece bir yorum. ;) Ancak, önce bu bölümdeki bazı sektörleri kontrol edebilir sudo dd if=/dev/sda iflag=direct bs=512 skip=<some_sectors> count=32 | hexdump -C, daha sonra yeni Gparted sürümünü kullanarak NTFS bölümünü silebilir ve aynı komutla tekrar kontrol edebilirsiniz - eğer veriler silinirse, sadece sıfır görürsünüz.
htorque

1
@htorque: Daha yeni test ettim ancak çalışmıyor, kullandım hexdump -C /sda1ve hexdump -C /sda1başlangıç ​​bloğunu belirlemek için kullandım . Yine de güzel bir fikir.
Lekensteyn

1
@Lekensteyn - Yanağında hafifçe dili kastettim ve aşağıda sizin için uygun bir cevap attı. Jeff'in makalesinde de biraz performans var, bu yüzden başarısızlık oranına rağmen bunları kullanıyor :-)
Rory Alsop

3
Neden onu silmeye ihtiyaç duyduğunu hala anlamıyorum ... neden sadece Ext4 ya da her neyse yeniden biçimlendiremiyorsunuz?
Nathan Osman,

Yanıtlar:


52

ATA Güvenli Silme

Sürücünün güvenlik silme özelliğini kullanmalısınız.

  1. Güvenlik sürücüsünün donmadığından emin olun . Öyleyse, bilgisayarı askıya almak ve devam ettirmek için yardımcı olabilir.

    $ sudo hdparm -I /dev/sdX | grep frozen
           not     frozen 
    

    (Filtre uygulanmış) komutu çıkışı, bu sürücünün “donmamış” olduğu anlamına gelir ve devam edebilirsiniz.

  2. Bir Kullanıcı Parolası Belirleyin (bu parola da silinmiştir, kesin seçim önemli değildir).

    sudo hdparm --user-master u --security-set-pass Eins /dev/sdX
    
  3. ATA Güvenli Silme komutunu verin

    sudo hdparm --user-master u --security-erase Eins /dev/sdX
    

Not:

  • /dev/sdX SSD, silmek istediğiniz blok cihaz olarak kullanılır.
  • Eins bu örnekte seçilen paroladır.

Bkz ATA Güvenli Silme Linux çekirdeği wiki makaleyi sorun giderme de dahil olmak üzere tüm talimatlar için.


Bağlantı için teşekkürler, onu destekleyen bir BIOS'u olanlara iyi görünüyor, ancak benimki desteklemiyor gibi görünüyor. (dondurulmuş)
Lekensteyn

Yaşa! Makaleyi tekrar okuduktan sonra, "Sistemimi" uyku "(Clevo M865TU notebook) 'a yerleştirmek de işe yaradı --- okudum ve bu, diğer sürücüleri de" donmamış "duruma getirebilir. ve benimki aslen Clevo’dan olduğu için bunu denedim (fakat BTO inşa etti). Çalışıyor, şimdi "donmamış" görüyorum. ... ancak 3. adım "ERASE_PREPARE: Kötü adres" ile başarısız oldu, çünkü sudo komutunu hazırlamak yerine zamanla değiştirdim !
Lekensteyn

1
Omg çalıştı ve sadece 19 saniye sürdü! Çok teşekkürler! Keşke seni on kez
oylayabilseydim

Sadece yukarıda kabul edilen cevabın bağlantısının kopuk olduğunu bildirmek istedim. Söylenen bağlantı olmadan oldukça işe yaramazsa, o bağlantının ne söylediğinin bir özetini göndermek isteyen var mı?
Ashimema

@Ashimema: Bağlantı şu anda kopuk, çünkü kernel.org hacklendi ve bakım nedeniyle kapatıldı. Google Önbelleği boş, ancak bu blog kopyaladı: peter.membrey.hk/2011/09/11/…
Lekensteyn

30

util-linux 2.23, blkdiscardverileri güvenli bir şekilde silmeden, bunları atar. Test ettim: SATA ve mmcblk üzerinden çalışıyor ancak USB ile çalışmıyor.

Kullanım kılavuzundan bir alıntı blkdiscard(8):

ADI

blkdiscard - bir cihazdaki sektörleri at

ÖZET

blkdiscard [-o offset] [-l length] [-s] [-v] device

AÇIKLAMA

blkdiscard, cihaz sektörlerini atmak için kullanılır. Bu, katı hal sürücüleri (SSD'ler) ve ince hazırlanmış depolama için kullanışlıdır. Fstrim'den (8) farklı olarak, bu komut doğrudan blok aygıtında kullanılır.

Blkdiscard varsayılan olarak cihazdaki tüm blokları atar. Seçenekler, aşağıda açıklandığı şekilde menzile veya boyuta göre bu davranışı değiştirmek için kullanılabilir.

Cihaz argümanı blok cihazın yol ismidir.

UYARI: Cihazdaki atılan bölgedeki tüm veriler kaybolacak!

Komut, Ubuntu 15.04 ve OpenSUSE 13.1'den beri var (evet OpenSUSE Ubuntu'dan 2 yıl ileride).


Bu eski yazıya bilgi eklemek için teşekkürler ve askubuntu'ya hoş geldiniz.
mondjunge

Arch Linux zaten bu pakete sahiptir. Util-linux 2.23 25 Nisan 2013 tarihinde piyasaya sürülmüştür.
Lekensteyn

4
Hoşgeldin için teşekkürler. Eski posta? Eski, ancak eski değil, Google arama sonucunun 1. sayfasında göründüğü sürece, buraya gelen aynı cevabı arayan her zaman yeni çocuklar var. Bana göre sadece daha iyi sayfalar ilk google sonuç sayfasından çıkarıldığında eskidir.
Tankman,

3
Arasındaki farkı merak ediyorsanız blkdiscardve hdparmkomut, cevaplanır burada : "Eğer blkdiscard kullandığınızda, SSD (SATA SSD varsayılarak), bir ATA TRIM komutu alacaktır oysa hdparm --security-silme bir ATA GÜVENLİK ERASE yayınlayacak UNIT komutu. Sürücünün gerçekte yaptığı şey, o belirli SSD'nin donanım yazılımının uygulama detaylarına bağlı. ”
Lekensteyn

2
Aslında yok kullanmak istiyorum blkdiscard. Birincisi, bunun belirli kısımları sürücüyü bilgilendirmek amaçlanmaktadır edebilir şeyi silmek için değil, dışarı atılmasına. Sürücü verileri gerçekten silebilir veya silmeyebilir. Güvenli silme komutu gerekir anda erişilemez sürücünün yerlerinde herhangi veriler dahil olmak üzere tüm verileri siler. Düzenleme: sadece soruyu yeniden okuyun ve silmeyi gerektirmediğini anlayın, ancak yine de dikkate değer.
psusi

5

Güvenli bir temizleme işlemine ihtiyaç duymuyorsanız, neden sadece 'diskin tamamını kullanma' seçeneklerini ve 'hızlı format'ın eşdeğerini kullanma' seçeneklerini kullanarak kubuntu'yu yüklemiyorsunuz (şu an tam terminolojiyi hatırlayamıyorum)

Bu şekilde, dosya ayırma tablasını çıkarırsınız ve sürücü üzerine yazmak için etkin bir şekilde boşaltılır. Aslında onu boşaltmanıza gerek yok.


2
Bkz anandtech.com/show/2865/2 . Bloğu silmek, silmek ve boş olarak işaretlemekle aynı değildir.
Lekensteyn

@Lekensteyn Silme, bir blok aygıtı için bir anlam ifade etmiyor. Yükleyici mkfs.ext4'ü arayacak ve tüm cihazı silecektir; bu, her iki durumda da SSD bellenimine güvendiğiniz anlamına gelen bir "güvenli silme" kadar güvenlidir.
Tobu

1
@ Tobu Doğru, bu bir noktada değişti. mkfs.ext4(8)diyor ki: at - Mkfs zamanında blokları atma girişimi (blokları atmak, başlangıçta katı hal aygıtları ve seyrek / ince hazır depolamada faydalıdır). Aygıt, atma işlemini ayrıca veriyi sıfırladığında (atıldıktan sonra ve okumadan önce sıfırlamadan sonra okunan herhangi bir yazı), ardından henüz sıfırlanmamış tüm inode tablolarını sıfırlanmış olarak işaretler. Bu, dosya sistemi başlatmayı önemli ölçüde hızlandırır. Bu varsayılan olarak ayarlanmıştır.
Lekensteyn

@Tobu Kullanım durumumda, "Güvenli silme", ​​flash çiplerinden verileri gerçekten silmek zorunda kalmadı, yalnızca kullanımda bazı blokların bulunmasından kaynaklanan olumsuz performans etkilerinin olmamasını sağlamalıdır.
Lekensteyn

1

Sürücünün üzerinde Linux filistem varsa, kullanabilirsiniz fstrim. Varsayılan olarak, en son Ubuntu fstrimaşağıdaki satıcılardan gelen sürücülerde çalışır :

    if [ -z "$NO_MODEL_CHECK" ]; then
        if ! contains "$HDPARM" "Intel" && \
           ! contains "$HDPARM" "INTEL" && \
           ! contains "$HDPARM" "Samsung" && \
           ! contains "$HDPARM" "SAMSUNG" && \
           ! contains "$HDPARM" "OCZ" && \
           ! contains "$HDPARM" "SanDisk" && \
           ! contains "$HDPARM" "Patriot"; then
            #echo "device $DEV is not a drive that is known-safe for trimming"
            continue

Haftada bir.

Sorunuza bir cevap sistemi başlatmak ve bir hafta beklemek!


1
Bu blkdiscard yazısında fstrim'dan bahsedilir , ayrıca bunu manüel olarak da çağırabilirsiniz sudo fstrim /( seçeneği /destekleyen bir dosya sisteminin bağlama noktasıdırdiscard ).
Lekensteyn

-4

Sadece bölümü kaldırın, diskin tamamını silmek zorunda değilsiniz, başka bir şey için depolama gerektiğinde eski verilerin üzerine yazılır.

TRIM’i etkinleştirmek için:

gksudo gedit /etc/fstab

"Ext4 errors = remount-ro 0" ifadesini "ext4 atma, error = remount-ro 0" olarak değiştirin. (Atma ekle)

Kaydet ve yeniden başlat, TRIM şimdi etkin olmalı.

TRIM'in etkin olup olmadığını kontrol edin:

sudo -i
dd if=/dev/urandom of=tempfile count=100 bs=512k oflag=direct
hdparm --fibmap tempfile

İlk begin_LBA adresini kullanın.

hdparm --read-sector [begin_LBA] /dev/sda

Şimdi sayı ve karakter döndürmelidir. Dosyayı kaldırın ve senkronize edin.

rm tempfile
sync

Şimdi, aşağıdaki komutu tekrar çalıştırın. Sıfırlarsa TRIM etkindir.

hdparm --read-sector [begin_LBA] /dev/sda

2
Her silme bloğuna yazacağı, daha fazla aşınma ve yıpranma ve her silme bloğunun dolu kalması nedeniyle bir SSD'yi sıfırlarla doldurmak istemezsiniz. Ayrıca pek çok sürücü kesilmiş bölgeleri hemen sıfırlamaz.
psusi

Elbette, birçok yazma gerektirir, ancak diske zarar vermez. Bir Corsair F120'yi 10-11 aydır kullanıyorum ve sık sık sıfırlarla doldurdum. (Her kriterden önce yapıyor) Yani 30-35 kez sonra performans hala aynı. (~ 285MB okuma, 275MB / yazma) SMART diyor ki: Disk sağlıklı
Alex

9
Alex, bir SSD'ye yazdıkları her yazı hafifçe zarar veriyor. Her bir silme bloğuna yazma, kullanımda işaretlenmelerine neden olur, bu da sürücünün GC'sinin düzgün çalışmasını önler ve performans zarar görür. Bunu UNTRIM'in bir sürücüsü olarak düşünebilirsiniz.
psusi
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.