Memusatkan drive SSD

18

Kami meng-host VPS untuk pelanggan. Setiap VPS pelanggan diberikan LVM LV pada hard disk spindle standar. Jika pelanggan ingin pergi, kami nolkan LV ini untuk memastikan bahwa data mereka tidak bocor ke pelanggan lain.

Kami berpikir untuk menggunakan SSD untuk bisnis hosting kami. Mengingat bahwa SSD memiliki teknologi "wear leveling", apakah itu membuat zeroing pointless? Apakah ini membuat ide SSD ini menjadi tidak mungkin, mengingat kami tidak dapat membiarkan data pelanggan bocor ke pelanggan lain?

lihat
sumber

Jawaban:

23

Dengan asumsi bahwa apa yang ingin Anda cegah adalah pelanggan berikutnya yang membaca disk untuk melihat data pelanggan lama, maka menulis semua nol sebenarnya akan tetap berfungsi. Menulis nol ke sektor 'n' berarti bahwa ketika sektor 'n' dibaca, itu akan mengembalikan semua nol. Sekarang faktanya, data aktual yang mendasarinya mungkin masih ada di chip flash, tetapi karena Anda tidak dapat melakukan bacaan normal untuk mendapatkannya, itu bukan masalah untuk situasi Anda.

Ini masalah jika seseorang dapat secara fisik mendapatkan disk dan membukanya (karena mereka dapat langsung membaca chip flash), tetapi jika satu-satunya akses yang mereka miliki adalah bus SATA, maka tulis semua nol untuk keseluruhan disk akan baik-baik saja.

Michael Kohne
sumber
1
Tepat jawaban yang saya cari, dan ketika saya memikirkannya, saya sampai pada kesimpulan yang sama :)
jtnire
2
Saya akan membayangkan (tetapi tidak tahu pasti, dan tentu saja itu akan tergantung pada chipset controller yang digunakan dalam SSD) bahwa menulis sektor nol untuk SSD bahkan tidak akan mencapai chip flash yang sebenarnya. Kontroler harus memperhatikan bahwa semuanya nol dan cukup tandai sektor itu sebagai "zeroed out" (atau arahkan saja ke sektor yang berisi semua nol). Menulis sektor nol adalah hal yang cukup umum untuk dilakukan, dan casing khusus itu akan menjadi cara yang murah dan mudah untuk mengurangi keausan pada flash, jadi saya akan terkejut jika setidaknya Intel dan Sandforce tidak melakukannya.
kindall
20

Jangan pernah mengisi nol SSD. Minimal, ini akan aus beberapa umur tulis SSD untuk sedikit atau tanpa manfaat. Dalam skenario kasus terburuk yang ekstrem, Anda dapat menempatkan pengontrol SSD ke kondisi kinerja yang (sementara) berkurang .

Dari sumber ini :

Menimpa seluruh disk berulang kali dengan beberapa pengulangan berhasil menghancurkan data, tetapi karena Lapisan Penerjemahan Firmware (FTL), ini jauh lebih rumit dan memakan waktu daripada pada hard disk drive tradisional. Berdasarkan hasil mereka, itu adalah pilihan yang tidak menarik

Opsi terbaik Anda, hapus aman melalui enkripsi disk lengkap:

Beberapa SSD modern dapat menggunakan enkripsi disk lengkap - contohnya adalah 320 drive baru Intel dan beberapa drive seri Sandforce 2200. Drive ini dapat dihapus dengan aman dengan cara yang sederhana dan cepat, tanpa memakai drive apa pun. Drive menggunakan enkripsi AES untuk semua data yang ditulis, jadi penghapusan yang aman berarti menghapus kunci AES yang lama, dan menggantinya dengan yang baru. Ini secara efektif membuat semua data 'lama' pada drive tidak dapat dipulihkan.

Namun, penghapusan aman Intel tidak mudah untuk diotomatisasi. AFAIK harus dilakukan dari aplikasi Windows GUI Intel, hanya dapat dijalankan pada drive non-boot kosong dan sebagainya. Lihat halaman 21 dan seterusnya dalam Intels docs.

Opsi Anda yang lain, hapus aman ATA:

Pilihan lain adalah mengeluarkan perintah ATA Secure Erase via fx HDPARM di Linux. Ini akan jauh lebih mudah untuk diotomatisasi melalui skrip.

Asalkan drive mengimplementasikan ATA Secure Erase dengan cara yang 'baik', orang harus mengharapkannya untuk setidaknya menghapus "lapisan terjemahan flash" (FTL). Tabel FTL menampung pemetaan antara sektor logis (yang dilihat 'sistem operasi'), dan halaman fisik NVRAM pada drive itu sendiri. Dengan hancurnya tabel pemetaan ini, akan sangat sulit - tetapi mungkin bukan tidak mungkin - untuk memulihkan data dari drive.

Namun, saya tidak mengetahui adanya penelitian yang menunjukkan bahwa ATA Secure Erase secara konsisten dan diterapkan dengan baik pada semua drive pabrikan, jadi saya ragu untuk mengatakan itu akan selalu bekerja - Anda harus membaca dokumentasi teknis pabrikan.

Untuk satu partisi:

Ketika saya membaca komentar untuk jawaban lain, sepertinya OP hanya ingin menghapus partisi tunggal dengan aman. Salah satu cara yang baik untuk melakukannya adalah dengan hanya membuat volume terenkripsi , fx menggunakan LUKS atau TrueCrypt . Dengan cara itu Anda dapat dengan aman menghapus volume dengan membuang kunci enkripsi, mirip dengan apa yang dilakukan skema enkripsi disk penuh pada drive.

Kesimpulan:

Jika Anda benar-benar ingin tahu, maka bacalah makalah yang ditautkan dari blog Sophos, dan bacalah catatan teknis produsen drive tentang penghapusan aman. Namun, jika Anda ingin menghapus aman 'baik', maka SSD dengan enkripsi disk penuh dan penghapusan & penggantian kunci enkripsi yang aman mungkin merupakan pilihan terbaik Anda. Sebagai alternatif, gunakan enkripsi level sistem operasi, dan buang kunci ketika Anda ingin data terhapus dengan aman.

Jesper M
sumber
1
Perhatian baik, tapi saya tidak yakin bahwa mengutip pemberitahuan 2 tahun pada bug pengontrol yang hanya muncul dalam beban kerja sangat artifisial di SSD tertentu yang telah lama diperbaiki harus diberi banyak bobot.
Daniel Lawson
1
@Daniel Lawson: Titik adil. :-) Saya mengulangi bagian itu dan mengubahnya menjadi penurunan kinerja sementara - dan mengubah tautan ke ulasan tentang drive M4 / C400 Crucial (drive pengiriman saat ini) yang menunjukkan perlambatan besar setelah operasi penulisan yang berat.
Jesper M
6

Leveling aus tidak ada hubungannya dengan data zeroing out.

Anda nol data untuk menghentikan orang lain / aplikasi membaca data itu. SSD 'memakai tingkat' data mereka untuk memastikan bahwa mereka tetap dapat digunakan lebih lama karena 'kerusakan' yang dilakukan penulisan terhadap SSD. Disk biasanya melakukan ini ketika mereka tidak sibuk, dalam situasi server waktu tenang tidak selalu tersedia sehingga pekerjaan ini sering tidak selesai.

Apakah Anda menagih pelanggan Anda untuk operasi IO mereka? Jika tidak, apa yang menghentikan mereka pada dasarnya membunuh bagian mereka dari SSD dalam jam / hari hanya dengan terus-menerus menulis sepanjang waktu? SSD agak sedikit lebih mudah untuk dibunuh daripada yang dipikirkan kebanyakan orang , terutama di lingkungan yang berat.

Chopper3
sumber
Saya sedang berbicara tentang 'apakah itu membuat zeroing pointless', Chris, itu adalah dua hal yang berbeda
Chopper3
1
if (time < 9am) chriss_try_again()
Chris S
haha - jangan khawatir Bung :)
Chopper3
Meskipun benar tentang data, kurang benar tentang pembunuhan. "Enterprise Flash Drives" memiliki umur yang agak lebih baik serta ukuran daripada SSD konsumen, tetapi sama seperti HDD perusahaan Anda membayar premi untuk kinerja. Menurut seagate, "Pulsar" ESD mereka memiliki umur 5 tahun, yang berjumlah sekitar 6 petabytes tulisan. anandtech.com/show/2739/2 - Di Pulsar Drive virtualgeek.typepad.com/virtual_geek/2009/02/… - Pada EFD
Daniel B.
3
Saya tahu Daniel, saya membeli banyak SSD perusahaan yang saya masukkan ke dalam lingkungan baca 99% tetapi ketika kami mengujinya, ternyata masih mudah untuk 'membunuh' mereka, misalnya kami menempatkan dua HP sebagai pasangan cermin sebagai disk log untuk kotak Oracle 10 yang cukup sibuk dan semuanya mulai beres dalam 4 minggu. Sekarang ini ~ 10 bulan yang lalu jadi bukan versi HP rebadged dari drive Pulsar. 6PB setara dengan ~ 38MB / dtk lebih dari 5 tahun atau ~ 180MB / dtk dalam satu tahun - jadi Anda tidak bisa menggunakan Pulsar untuk menangkap satu saluran video HD tanpa putus di bawah satu tahun.
Chopper3
3

Jadi ada baiknya membaca artikel seperti ini . Jika seseorang memiliki akses fisik ke disk, maka mengambil informasi lebih mudah. Sudahkah Anda mempertimbangkan untuk mengenkripsi data pada SSD dan kemudian yang perlu Anda lakukan adalah melupakan kunci privat yang seharusnya menjadi masalah yang lebih mudah. Saya dapat melihat SSD menjadi kemenangan besar di vps karena kinerja akses acak yang jauh lebih baik.

James
sumber
2

Anda pasti tidak ingin menggunakan metode tradisional untuk menghapus SSD, seperti menggunakan dddata nol, atau metode lain yang menulis data acak ke disk. Metode-metode itu lebih cocok untuk disk berbasis platter. Ini efektif dalam menghapus SSD, tetapi juga tidak perlu menghabiskan banyak operasi penulisan SSD yang terbatas, sehingga mengurangi masa pakai SSD yang diharapkan. Itu akan cepat mahal. Itu juga dapat menurunkan kinerja SSD seiring waktu.

SSD memiliki metode berbeda untuk menghapus aman. Saya akan mengatakan bahwa itu tampaknya sangat rumit untuk dilakukan, karena Anda biasanya memerlukan jenis pengontrol SATA tertentu yang dapat melakukan emulasi IDE, dan prosedurnya bisa rumit. Beberapa produsen menyediakan alat untuk menghapus SSD mereka sendiri, tetapi Anda juga dapat melakukannya dengan hdparm di Linux: https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase . Tetapi Anda akan melihat dalam instruksi tersebut bahwa Anda harus memastikan drive tidak "beku" sebelum Anda dapat melanjutkan. Ini adalah salah satu langkah yang lebih sulit karena membutuhkan menemukan motherboard & pengontrol SATA yang akan memungkinkan Anda "mencairkan" drive saat sistem di-boot, yang biasanya melibatkan mencabutnya dari kabel SATA-nya, kemudian memasangnya kembali.

Bagaimanapun, rekomendasi saya adalah melakukan riset Anda & memilih SSD yang dilengkapi dengan utilitas hapus aman yang dapat digunakan pada sistem yang nyaman bagi Anda.

churnd
sumber
Menggunakan dd untuk menghilangkan disk, selama Anda menggunakan ukuran blok besar yang sesuai dan bukan default 512 byte, tidak akan menghabiskan banyak siklus menulis / hapus sama sekali. Ini akan menggunakan sekitar 1. Saya katakan kira-kira karena saya mengakui bahwa jika penyelarasan sistem file Anda salah, Anda mungkin berakhir menulis ke blok flash yang sama dua kali dalam beberapa kasus. Penggunaan dd bs=1Makan menghasilkan keausan minimal.
Daniel Lawson
2

Meskipun satu jawaban sudah diterima, saya pikir perintah blkdiscard /dev/sdXitu masih layak disebutkan di sini.

Menurut Arch Wiki: SSD , blkdiscardperintah akan membuang semua blok dan semua data akan hilang. Dianjurkan untuk digunakan sebelum "Anda ingin menjual SSD Anda".

Saya tidak terbiasa dengan cara TRIM bekerja, jadi saya tidak tahu apakah ada jaminan bahwa data akan dihapus. Tetapi saya pikir itu lebih baik daripada tidak melakukan apa-apa.

BTW, saya takut bahwa perintah ini hanya berfungsi pada seluruh perangkat, bukan untuk satu partisi.

Semoga ini membantu. :)

mksegv
sumber
blkdiscardtampaknya tidak aman dalam semua kasus, karena TRIMitu sendiri hanya permintaan dan tidak semua pengontrol SSD menghormatinya. Anda dapat membaca lebih lanjut tentang ini di sini dan di sini . Tetapi seperti yang dijelaskan di sana, kernel Linux mempertahankan daftar putih perangkat mana yang dikenal untuk menghormati TRIM.
nh2
Jadi kalau hdparm -I /dev/theSSDberisi Deterministic read ZEROs after TRIM, blkdiscardharus cepat dan dijamin nol dibaca setelahnya. Kalau tidak, Secure Erase sepertinya solusi yang lebih baik. Namun, mengingat bahwa pertanyaannya adalah tentang keamanan pelanggan, Secure Erase mungkin merupakan solusi yang lebih baik karena tampaknya dirancang untuk kasus penggunaan seperti itu.
nh2
1

Cara terbaik untuk menghapus data dari gambar mesin virtual adalah dengan menggunakan fitur TRIM. Banyak sistem operasi yang lebih baru mendukung hal ini. Hampir semua SSD saat ini mendukungnya juga.

Dan, yang membuat opsi ini lebih baik adalah bahwa SAN pun juga mendukung fitur ini dengan nama SCSI-nya UNMAP . Ini adalah perintah yang bagus untuk SAN yang menerapkan penyediaan jarang, yang merupakan fitur hebat untuk mesin virtual, terutama bila dikombinasikan dengan blok de-duplikasi.

Ketika perintah TRIM diberikan kepada SSD, firmware akan segera menandai blok-blok itu gratis untuk digunakan kembali. Beberapa SSD akan selalu mengembalikan nol untuk blok TRIM . Drive lain akan mengembalikan data yang ditentukan implementasi (yaitu, acak).

Pada sistem operasi yang mendukung TRIM, penghapusan file yang sederhana akan menandai blok untuk TRIM. Operasi TRIM yang sebenarnya dapat terjadi segera atau mungkin ditumpuk untuk dilakukan kemudian. Terkadang ada alat yang akan memaksa-TRIM file atau memindai partisi untuk semua blok yang tidak digunakan.

Kinerja TRIM di Linux masih sedikit, jadi jika Anda menggunakannya Anda ingin menyelidiki opsi Anda. Di Windows sepertinya cukup solid.

Zan Lynx
sumber
Maaf tapi ini tidak masuk akal sama sekali. Sejauh yang saya ketahui, TRIM tidak ada hubungannya dengan provisi tipis, ini hanya memberitahu SSD untuk tidak mengganggu sektor level-pakai yang tidak diketahui telah dihapus oleh sistem file, itu juga sangat khusus tidak blok nol.
Chopper3
@ Chopper3: Anda tidak dapat melihat bahwa ATA TRIM dan SCSI UNMAP adalah perintah yang sama? UNMAP jelas digunakan dalam provisi tipis. TRIM melakukan zero out block pada setidaknya beberapa drive SSD. Setelah TRIM data hilang : tidak ada metode yang didukung untuk mengambilnya, drive mungkin juga mengembalikan nol dan beberapa melakukannya.
Zan Lynx
"drive mungkin juga mengembalikan nol" dan "data tidak dapat dipulihkan" adalah dua hal yang sangat berbeda. Bagaimanapun, pengguna sebenarnya tidak ingin menghapus SSD sama sekali, ia hanya tidak ingin pelanggan berikutnya bisa mendapatkan data pelanggan lama, yang juga bukan hal yang sama.
Chris S
0

Anda memerlukan "SSD Secure Erase Utility". Jika Anda menggunakan sesuatu seperti ddleveling keausan mungkin muncul dan Anda akan berakhir dengan sektor cadangan yang masih berisi data klien lama. Utilitas penghapusan aman akan menghapus semua sektor pada perangkat (tidak hanya yang disajikan sebagai disk ke OS).

Beberapa utilitas ini khusus untuk pabrikan tertentu, tanyakan pabrikan drive Anda untuk rekomendasinya, mereka akan tahu lebih baik daripada kami.

Chris S
sumber
Maaf ini bukan yang saya cari, karena saya tidak ingin menghapus seluruh disk. Saya tidak khawatir tentang data klien yang masih tersedia pada disk SDD fisik - Saya hanya tidak ingin pelanggan lain dapat mengaksesnya melalui kebocoran data ke LV mereka.
jtnire
0

Saya tidak berpikir bahwa menulis 0s akan membantu Anda mencegah pelanggan lain membaca disk.

Dalam SSD, ketika Anda menulis sesuatu, prosesnya sangat berbeda dari Hard Disk normal.

Bayangkan situasi berikut ini: sel memori "kosong" dalam drive SSD semuanya diisi dengan 1s. Ketika Anda menulis sesuatu padanya, tulis 0s dan biarkan 1s tidak berubah.

Setelah, ketika Anda ingin menyimpan sesuatu yang berbeda, konten sebelumnya dan yang baru dibandingkan. Jika yang sebelumnya dapat menjadi yang baru dengan menuliskan beberapa angka 0, ok. Jika itu tidak mungkin dilakukan, sel memori lain digunakan.

"clear": 11111111 simpan pertama: 11011011

data baru: 00110011 tidak ada cara untuk membuat 11011011 menjadi 00110011 (perhatikan bahwa perlu untuk mengubah satu 0 ke 1, dan tidak mungkin untuk melakukannya dalam SSD). Jadi, sel memori lain akan digunakan.

Saat Anda TRIM drive, Anda mengatur ulang semua sel memori yang tidak digunakan ke 1. Jadi, mereka akan jelas untuk digunakan lagi. Dan data yang disimpan disimpan.

Untuk melakukan apa yang Anda inginkan: pertama, hapus (hapus) file tersebut. Sel-sel memori untuk file-file itu akan ditandai sebagai gratis. Kemudian lakukan TRIM: semua sel memori itu akan menjadi 1, tanpa ada tanda data.

woliveirajr
sumber
0

Mudah dijawab: Gunakan Linux untuk memformat ulang partisi sebagai EXT4, yang memberi tahu SSD semua blok untuk siap dihapus, seperti melakukan trim pada semua sektor partisi. Efek samping adalah sejumlah kecil tulisan (struktur EXT4).

Lupakan ˋddˋ dengan acak, itu akan mengurangi banyak kehidupan SSD. Beberapa SSD cerdas dan jika mereka melihat sektor penuh diisi dengan nol mereka tidak menulis, mereka menandainya untuk dihapus.

Karena Anda tidak dapat mengetahui internal pada firmware, opsi terbaik Anda adalah memformat ulang partisi sebagai ext4 (tanpa format ulang penuh, hanya yang cepat, hanya struktur) pada kernel linux modern, ia akan melakukan trim pada seluruh partisi sebelum memformatnya.

Untuk semua yang berbicara tentang penghapusan aman, yaitu untuk seluruh SSD sekaligus, yang ditanyakan hanyalah satu partisi dari SSD dan TANPA kehilangan sisa info yang tersimpan di dalamnya (level partisi, bukan level SSD).

Kesimpulan: memformat ulang sebagai Ext4, maka jika Anda membutuhkan format lain, format ulang lagi pada format lain tersebut.

Laura
sumber