Keluarkan / hapus dengan aman vs umount

44

Saya menggunakan Ubuntu 12.04, dan ketika saya klik pada ikon flash drive saya (di bilah kiri Unity) saya mendapatkan dua opsi yang membuat saya bingung: keluarkan dan hapus dengan aman .
Semakin dekat saya mendapat jawaban adalah utas forum ini , yang menyimpulkan bahwa (untuk flash drive) keduanya sama dan juga setara untuk menggunakan umountperintah. Namun, pernyataan terakhir ini tampaknya salah.
Jika saya menggunakan umountdari konsol untuk meng-unmount flash dive saya, dan kemudian saya menggunakan perintah lsblk, saya masih melihat perangkat saya (dengan tidak ada di bawah MOUNTPOINT, tentu saja). Di sisi lain, jika saya mengeluarkan atau menghapus flash drive saya dengan aman , lsblktidak mencantumkannya lagi.

Jadi, pertanyaan saya adalah, apa yang akan menjadi perintah konsol / perintah yang benar-benar akan mereproduksi perilaku eject dan menghapus dengan aman ?

LGenzelis
sumber
3
Anda mungkin dapat menemukan file .desktop untuk ikon di bawah /usr/share/applications/atau sesuatu seperti itu. Jika Anda membukanya di editor teks, bidang Exec = ... sesuai dengan perintah yang dijalankan saat Anda mengkliknya.
spelufo

Jawaban:

65

Jika Anda menggunakan systemdmaka gunakan udisksctlutilitas dengan power-offopsi:

matikan

Mengatur agar drive dilepas dan dimatikan dengan aman. Di sisi OS, ini termasuk memastikan bahwa tidak ada proses yang menggunakan drive, kemudian meminta buffer dan cache dalam penerbangan berkomitmen untuk penyimpanan yang stabil.

Saya akan merekomendasikan pertama untuk meng-unmount semua sistem file pada usb itu. Ini bisa dilakukan juga dengan udisksctl, jadi langkahnya adalah:

udisksctl unmount -b /dev/sda1
udisksctl power-off -b /dev/sda

Jika Anda tidak menggunakan systemdmaka barang lama udisksharus bekerja:

udisks --unmount /dev/sda1
udisks --detach /dev/sda
jimmij
sumber
Oh man - saya baru sekarang menyadari pertanyaannya adalah bagaimana melakukan ini dari command-line - bukan apa perbedaan antara satu hal dan lainnya. saya tidak akan menghapus jawaban saya karena saya pikir ia menawarkan beberapa perspektif - tetapi Anda adalah jawaban yang tepat untuk sistem linux, saya pikir (bahkan tidak tahu apakah ini adalah pertanyaan yang relevan bsd ...) .
mikeserv
4
udisksctl power-offtampaknya tidak setara dengan "hapus aman" dalam kasus saya. Dengan kartu micro-SD di pembaca kartu internal saya, perangkat /dev/sdd, tidak ada sistem file yang terpasang, ketika saya menggunakan perintah udisksctl power-off -b /dev/sdd, LED pembaca mati, tetapi kemudian seluruh perangkat menjadi tidak dapat dioperasikan, saya kira karena, yah, benar-benar dimatikan sepenuhnya. Saya harus mem-boot ulang sistem agar dapat digunakan lagi.
ack
1
Untuk @ack: Anda dapat menonaktifkan / mengaktifkan hub (mungkin internal) tempat pembaca terhubung. Karena itu adalah hub, ia juga akan jatuh dan kemudian menghitung ulang semuanya, termasuk perangkat yang hilang. Semoga Anda dapat membaca contoh ini: udisksctl power-off -b /dev/mmcblk0mmc0: kartu aaaa dihapus usb 3-1.8: Putus USB, nomor perangkat 41 cd /sys/bus/usb/devices/usb3/3-1 echo 0 > authorized echo 1 > authorizedhub 3-1: 1.0: Hub USB ditemukan usb 3-1: diotorisasi untuk menghubungkan usb 3-1.8: Perangkat USB baru ditemukan , idVendor = 0bda, idProduct = 0129 mmc0: kartu SDH50 SDH50 berkecepatan sangat tinggi baru di alamat aaaa
AB
14

umountsangat aman untuk disk. Setelah selesai, Anda telah berhasil melepas sistem berkas dan Anda tidak perlu khawatir. Perbedaan utama antara mengeluarkan dan umounttidak menyangkut disk sama sekali - lebih tepatnya tentang output daya 5v port USB.

Setelah umountAnda masih dapat melihat disk Anda terdaftar lsblkkarena masih dinyalakan dan terpasang. umountsistem file hard disk internal dan Anda akan melihat perilaku yang sama untuk alasan yang sama. Tetapi ketika Anda mengeluarkan perangkat USB, Anda mematikannya dan berhenti menggambar 5v itu biasanya - saya pikir itu menetes ke .5v tetapi kelas itu terjadi sejak lama.

lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
NAME   FSTYPE LABEL   UUID                                 MOUNTPOINT
sdd                                                        
├─sdd1 vfat   USBESP  3AD6-C7CC                            
└─sdd2 ext4   USBROOT 5afbfe93-6955-44ec-8c4f-cf381f8ef174 

Berikut adalah jalur bus usb-nya ...

cat /sys/bus/usb/devices/5-3/manufacturer 
SanDisk

Meskipun saya hampir tidak pernah me-mount itu, sudah terpasang dan berkedip untuk waktu yang lama, saya kira ...

cat /sys/bus/usb/devices/5-3/power/{level,connected_duration}
on
1777877440

Saya harus melakukan sesuatu tentang itu:

echo 1 | sudo tee /sys/bus/usb/devices/5-3/remove                                      

Sekarang saya akan melihatnya lagi ...

cat /sys/bus/usb/devices/5-3/power/level                            
cat: /sys/bus/usb/devices/5-3/power/level: No such file or directory

Hmmm...

lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
lsblk: /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0: not a block device
mikeserv
sumber
1
Terima kasih. Setelah umounthdd eksternal, apakah aman untuk menghapus hdd eksternal dari komputer?
Tim
1
Saya tidak berpikir umountitu setara dengan "menghapus dengan aman", dan tidak ada udisksctl power-off, silakan lihat komentar saya pada jawaban yang lain. Bandingkan dengan perilaku di Windows misalnya. Dugaan saya adalah bahwa Windows melakukan sedikit lebih dari sekadar 'melepas' sistem file pada perangkat. Saya telah mengamati itu memutar hard drive eksternal, mematikan LED pada pembaca kartu ( tanpa kemudian membuat perangkat tidak dapat digunakan kecuali dipasang kembali atau sistem reboot), dll.
ack
2
@ack - apa hubungannya Windows dengan ini? dan mengapa kamu menebak? dan Anda tidak perlu me-reboot agar dapat digunakan lagi. kamu umountitu. maka Anda mematikannya. dan saya tidak pernah menyarankan apapun tentang udiskctlsatu atau lain cara.
mikeserv
1
@ mikeserv "Safely remove hardware" adalah ekspresi yang digunakan di Windows. Sangat mungkin bahwa sistem lain menyalin frasa itu karena keakraban pengguna. Sangat penting untuk membedakannya dari hanya sistem file yang tidak dilepas. Contoh di mana ini sangat penting adalah ketika OS tidak yakin tentang cache tulis perangkat penyimpanan. Saya pribadi mengalami kehilangan data yang cukup signifikan (superblock rusak dan file) setelah hanya melepas dan mencabut hard disk eksternal. Saya kemudian menemukan bahwa Linux telah memperingatkan tentang ini: "Tidak ada halaman mode Caching ditemukan", "Mengasumsikan cache drive: tulis melalui".
ack
1
@ack - tidak, itu tidak penting. masalah Anda mungkin adalah acpi Anda. itu tidak ada hubungannya dengan sistem operasi persis - hanya saja produsen papan Anda hanya menulis driver untuk satu os. perangkat multicard kecil itu memerlukan akses tingkat rendah ke target kartu - mereka harus dapat melakukan hal-hal seperti eye-fi. mereka tidak memblokir perangkat - mereka adalah perangkat karakter. mereka sama sekali tidak seperti disk usb. board-rom harus menanganinya secara terpisah, dan jika vendor Anda mendukungnya dengan buruk (tidak biasa - coba booting dari salah satu) Anda tidak beruntung. tapi itu bukan masalah linux.
mikeserv