Wyłączanie zewnętrznego dysku twardego, dysku flash itp. Za pomocą wiersza polecenia w systemie Linux

8

Zawsze myślałem, że aby bezpiecznie usunąć urządzenie, które zostało zamontowane, należy użyć umountpolecenia i do niedawna, kiedy przełączyłem się na Ubuntu 12.04 LTS, zauważyłem, że istnieje możliwość bezpiecznego usunięcia urządzenia, które wzbudziło moją ciekawość.

Wykopałem kilka postów i okazało się, że umountnajwyraźniej nie oznacza to, że mogę bezpiecznie usunąć urządzenie, ponieważ nie powoduje ono wyłączenia zasilania. Wiem, że jest taka opcja eject. Teraz to rozumiem po przeszukaniu Internetu. Referencje obejmują:

Potem natknąłem się na artykuł, ale proces okazał się skomplikowany i myślę, że w końcu trafiłem na płatne pieniądze, kiedy natknąłem się na polecenie, udisksnpudisks --unmount /dev/sdb1 && udisks --detach /dev/sdb

To, co mnie dezorientuje (poza tym, czy umountfaktycznie oznacza, że ​​można bezpiecznie usunąć urządzenie bez utraty danych i czy muszę użyć polecenia syncprzed nim, a także czy urządzenie wyłączyło się, co wydaje się bezpieczne), jest powodem, dla którego Muszę użyć, /dev/sdba następnie --detachw przeciwieństwie do/dev/sdb1

PeanutsMonkey
źródło

Odpowiedzi:

6

/dev/sdbto całe urządzenie. /dev/sdb1to jedna partycja na tym urządzeniu.

Chociaż możesz użyć dysku bez partycjonowania, jest to raczej niezwykłe (poza konfiguracjami RAID, ale następnie tworzysz systemy plików na węzłach urządzeń raidowych, a nie fizycznych).
Naprawdę nie ma sensu próbować odłączyć (fizycznie usunąć) pojedynczej partycji - chcesz usunąć całe urządzenie (które może zawierać wiele partycji), a nie tylko jedną partycję tego urządzenia.

Odmontowanie partycji spowoduje zsynchronizowanie systemu plików, więc wywołanie syncwcześniej unmountnie jest konieczne.
Wywołanie udisks --detachurządzenia sprawdza, czy nie ma zainstalowanych systemów plików na tym urządzeniu (powinieneś upewnić się, że to połączenie rzeczywiście się powiedzie) i wykona „uporządkowane zamknięcie”, które zawsze jest lepsze niż podejście „wyciągnij wtyczkę”, niezależnie od tego tego, czy to konkretne urządzenie robi coś specjalnego.

Mata
źródło
Nie miałem pojęcia, że ​​po prostu / dev / sdb reprezentuje całe urządzenie, które, jak zakładam, reprezentuje wszystkie partycje. Czy to jest poprawne? Więc mógłbym po prostu uruchomić polecenie tak udisks --unmount /dev/sdb && udisks --detach /dev/sdb, jakbym chciał odmontować wszystkie partycje? Sensowne jest po prostu odmontowanie jednej partycji, jeśli istnieje wiele partycji.
PeanutsMonkey
Jak się upewnić, że połączenie udisks --detachsię powiedzie?
PeanutsMonkey
Nie, odmontowanie /dev/sdbnie zadziała. Musisz odmontować każdą zamontowaną partycję i przejrzeć / przeanalizować dane wyjściowe poleceń.
Mat
Niestety, nie do końca rozumiesz, co masz na myśli, patrząc lub analizując dane wyjściowe poleceń? Czy nie powinienem odmontowywać każdej partycji, a następnie uruchomić polecenie udisks --detach /dev/sdb?
PeanutsMonkey