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.
mv
harus bekerja sama, mencampur lapisan abstraksi sangat.