Saat memindahkan file dalam satu drive, file tersebut tidak disalin dan dihapus. Tabel yang merujuk ke file baru saja diperbarui. Dan sejauh yang saya tahu, itu tidak terjadi pada 2 drive pada HDD. Tetapi SSD berbeda, tidak ada ruang fisik yang didedikasikan untuk setiap drive. ( sumber )
Jadi pertanyaan saya adalah apa yang terjadi ketika sebuah file dipindahkan dari satu drive ke drive lain pada SSD yang sama, apakah byte disalin dan yang asli dihapus, atau beberapa tabel diperbarui, sehingga meremukkan SSD lebih sedikit?
Sudah ada pertanyaan rangkap di sini . Namun keduanya menjawab:
setiap partisi akan memiliki area fisik drive itu sendiri
dan
Mempartisi hard drive sebenarnya menunjuk wilayah fisik untuk setiap partisi. [dan dalam komentar:] SSD masih merupakan hard drive, hanya saja tidak memiliki disk.
Sejauh yang saya tahu itu salah. Lihat di sini .
Jadi, akankah seseorang yang tahu lebih banyak tentang SSD, tolong beri tahu saya jika mereka benar dalam penilaian meskipun ada kesalahan?
sumber
mv
harus bekerja sama, mencampur lapisan abstraksi sangat.mv
sebenarnya perlu melakukan lebih sedikit daripada yang saat ini dilakukan, saya curiga. (Yaitu, OS hanya perlu memastikan bahwa cross-filesystem rename () berhasil alih-alih gagal seperti yang terjadi saat ini.)Change Drive Letter and Paths
ketika merujuk ke partisi / volume.Jawaban:
Deskripsi yang dikutip setengah benar, setengah salah. Tapi itu juga setengah salah untuk HDD juga.
Mempartisi drive menunjuk wilayah logis untuk setiap partisi. OS sama sekali tidak peduli dengan lokasi fisik - ia hanya meminta drive untuk "membaca blok logis # 31415926" dan drive itu sendiri memutuskan di mana data berada. Ini bekerja dengan cara yang sama untuk memori magnetik dan flash.
Ini sebenarnya sama dengan HDD dari 20-25 tahun terakhir: meskipun sistem operasi awal menggunakan lokasi fisik silinder / kepala / sektor, itu sudah lama hilang sekarang. Anda tidak tahu persis di mana piring LBA # 1234 disimpan. HDD bahkan memetakan ulang sektor fisik yang buruk secara otomatis, sehingga LBA yang sama tiba-tiba dapat dibaca dari area fisik yang sama sekali berbeda - seperti halnya dengan SSD.
Jadi dengan HDD dan SSD, OS hanya memiliki kisaran LBA (mis. 0–999999) untuk membaca dan menulis data. Tujuan dari partisi adalah untuk mengalokasikan sub-rentang di dalamnya - misalnya partisi A mendapat 10-499999, partisi B mendapat 500000-999999. Setiap partisi memiliki sistem file independen, dan sistem file di dalam setiap partisi tidak dapat mereferensikan data di luarnya - mereka tidak dapat melewati batas partisi. (Misalnya, partisi A tidak dapat memiliki file yang datanya disimpan di sektor # 600000.)
Akibatnya, semua file yang bergerak dari satu ke yang lain harus disalin secara penuh.
(Yang mengatakan, secara teori OS mungkin dapat meminta disk itu sendiri untuk menggandakan data dari satu area ke area lain (mis. "Salin LBA # 1234 ke # 567890"), tanpa harus menyalinnya ke memori utama dan kemudian kembali, dan tentu saja ini akan benar-benar melewati batas partisi. Ini dapat menggunakan "lapisan terjemahan flash" SSD, misalnya. Tetapi dalam praktiknya, sejauh yang saya tahu, ini tidak dilakukan.)
sumber
Apa yang terjadi ketika data ditulis ke Solid State Disk layak untuk beberapa artikel (ringkasan yang baik di sini ), karena sangat rumit dan tergantung pada teknologi yang mendasarinya. Ceritanya adalah bahwa SSD secara umum tidak dapat menulis nol bit ke memori. Sebagai gantinya, mereka harus nol (menghapus) seluruh bagian memori, dan kemudian mereka dapat menyimpan data setelah itu dengan hanya menulis yang ke sana. Biasanya hari ini mereka menulis blok 512 byte tetapi menghapus halaman 8 blok yang 4096. Ini, dan fakta bahwa setiap siklus tulis / hapus menyebabkan beberapa keausan fisik memori dan memori akhirnya aus, membuat SSD sangat berbeda dari memutar HDD magnetik.
Selain itu, drive SATA (dan drive AFAIK SAS) tidak menerapkan perintah asli untuk menyalin data dari satu sektor ke sektor lainnya. (Atau setidaknya tidak ada dalam spesifikasi SATA atau SAS yang mengharuskannya, sehingga OS tidak dapat mengandalkan perintah yang tersedia.) Jadi salinan file melintasi partisi akan melibatkan pembacaan data dari satu sektor drive ke dalam memori host dan kemudian menulis kembali ke drive di sektor yang berbeda.
Ini karena sejauh menyangkut OS, drive adalah sekumpulan sektor logis bernomor, dan yang dapat dilakukan hanyalah membaca dari sektor dan menulis ke sektor. OS tidak dapat memberi tahu drive untuk memetakan kembali sektor.
Selanjutnya, sistem file (HFS +, NTFS, ext3, dll.) Adalah seperangkat struktur data yang memaksakan urutan pada serangkaian blok logis. Struktur data tersebut mengimplementasikan "file", "nama file", "direktori", "izin", dll. Jadi, ya, ketika Anda memindahkan file dari satu direktori ke direktori lain, itu tidak disalin; hanya data sistem file yang menunjukkan direktori mana file tersebut diperbarui.
Konsep partisi adalah bahwa ia adalah sekumpulan sektor logis pada drive yang diklaim oleh sistem file tunggal. Sebagai akibatnya adalah bahwa sistem file mungkin tidak mengakses sektor di luar partisi-nya. Sebagian besar ini adalah fitur keselamatan, tetapi juga mengalir dari fakta bahwa struktur data sistem file dibangun berdasarkan akuntansi untuk setiap sektor drive di bawah kepemilikan sistem file, dan tidak mudah untuk menambah atau menghapus sektor. untuk struktur tersebut. Inilah sebabnya mengapa Anda harus menjalankan rutinitas khusus untuk menyesuaikan ukuran partisi dan juga mengapa sistem file bersikeras untuk menjalankan sektor sektor yang bersebelahan.
Jadi tidak praktis dan berbahaya untuk mengimplementasikan salinan file hanya sebagai transfer sektor dari satu sistem file ke yang lain. Pada drive magnetik berputar, itu juga akan menjadi mimpi buruk kinerja, karena meskipun drive akan membuat pengecualian untuk bad sector, secara umum ia mengatur agar sektor-sektor yang secara fisik terletak sedemikian rupa untuk mengoptimalkan kecepatan baca dan tulis berurutan yang dinomori secara berurutan. sektor.
Selain itu, 2 sistem file mungkin tidak menyimpan data file dengan cara yang sama pada disk, artinya bertukar sektor tidak akan berfungsi meskipun itu praktis. Bahkan jika mereka adalah tipe sistem file yang persis sama, katakanlah NTFS, yang satu mungkin menggunakan enkripsi atau kompresi dan yang lainnya tidak, atau keduanya dapat mengenkripsi data, tetapi dengan kunci yang berbeda. Bukan suatu persyaratan bahwa data dalam file persis apa yang disimpan pada disk, semua yang harus disimpan adalah transformasi data yang dapat dibalik, sehingga sistem file dapat memperoleh data file dengan melakukan sesuatu dengan data pada disk. Jadi, kecuali kedua sistem file menggunakan transformasi yang sama persis, hanya menukar sektor tidak akan mencapai tujuan mentransfer data file.
Karena semua alasan ini, terlalu banyak kerja untuk keuntungan terlalu sedikit bagi penulis OS dan penulis sistem file untuk mengimplementasikan fitur yang mengoptimalkan perpindahan lintas partisi untuk SSD. Jadi setiap perpindahan lintas-partisi akan menjadi baca dan tulis.
Di dalam SSD, ceritanya sedikit berbeda. Meskipun OS tidak memberitahu drive itu menyalin data dari satu tempat ke tempat lain, menulis ke SSD sangat mahal (dan rumit) sehingga pengontrol SSD melakukan banyak pekerjaan untuk meminimalkan penulisan. Beberapa SSD melangkah lebih jauh dengan mencoba mendeteksi ketika sektor yang ditulis ke penyimpanan cocok dengan sektor yang sudah disimpan dan menandai bagian fisik dari memori yang sekarang memetakan ke 2 sektor logis yang berbeda daripada menyalinnya, melakukan pada tingkat drive internal apa yang OS tidak bisa.
Tapi jangan mengandalkan itu.
sumber