Wiem o programie e2label i znajomych do dołączania etykiety do partycji dysku np
e2label /dev/sda1 bla
Chcę zrobić coś innego: chcę utworzyć etykietę dla dysku twardego, czyli dla / dev / sda, a nie dla partycji.
Czy to możliwe, a jeśli tak, to w jaki sposób?
EDYCJA: Tło: W przypadku wielu kieszeni HD chciałbym umieścić (papierowe) etykiety na drzwiach wnęki fizycznej i logicznie umieścić tę samą etykietę na dysku, który tam włożyłem.
EDIT2: Chodzi o serwer Ubuntu Linux 12.04.
EDYCJA 3: Na partycjach GPT jest także partlabel, który można ustawić np. Za pomocą parted. Zobacz /server//q/681088/76442
Odpowiedzi:
Twoje początkowe pytanie ma już kilka dobrych odpowiedzi, więc skupię się na tle twojego pytania, na etykietach dysków.
Używam numeru seryjnego napędu do drukowania etykiet dla wnęk typu hot swap - to najlepszy sposób na jednoznaczną i konsekwentną identyfikację napędu. Nie zmieni się niezależnie od tego, do której wnęki lub do którego kontrolera jest podłączony.
Nie wspominasz, czy używasz Linuksa, czy innego Uniksa, ale w Linuksie możesz uzyskać listę dysków (i partycji, które chcemy wykluczyć) z ich marką, modelem i numerem seryjnym, patrząc w / katalog dev / disk / by-id /. Uważam, że przydatny jest następujący alias bash:
(pasujące do
scsi-*
znalezienia wszystkich „podobnych do SCSI” dysków, w tym dysków SATA i SAS. w systemach z tylko dyskami SATA, równieżata-*
by działały)np. na jednym z moich serwerów ZFS, generuje dane wyjściowe w następujący sposób:
Jak widać, lista / dev / disk / by-id zawiera markę i numer modelu każdego dysku, a także numer seryjny. Wszystkie są dyskami SATA podłączonymi do portów SATA lub SAS w kontrolerze LSI SAS-2008.
Gdybym miał podłączoną drukarkę etykiet, łatwo byłoby wydrukować etykiety na podstawie wyników
list_disks
. Zamiast tego użyłem starej ręcznej pisarki etykiet, ponieważ to właśnie miałem. Wydrukowane etykiety zawierają tylko numer seryjny bez marki / modelu (to wystarczy, aby zidentyfikować dysk, gdy zajdzie taka potrzeba). Etykiety przydają się w przypadku awarii dysku i wymagają wymiany.źródło
alias list_disks='find /dev/disk/by-id/ -iname scsi-* -o -iname usb-* | grep -v -- -part | while read disk ; do echo $(basename $(readlink $disk)) $(basename $disk); done | sed -re "s/(usb|scsi)-// ; s/(SATA|Generic)_//" | sort'
. znajduje również dyski USB i pozbywa się obcych danych na wyjściu.Jeśli mówimy o Linuksie, myślę, że możesz osiągnąć to, czego chcesz,
udev
aby utworzyć dowiązanie symboliczne do swoich urządzeń. Jeśli spojrzysz/etc/udev/rules.d
, istnieje plik o nazwie70-persistent-cd.rules
o treści zawierającej takie wiersze jak:W ten sposób tworzy dowiązanie symboliczne
/dev/cdrom
do urządzenia identyfikowanego przez jego adres magistrali PCI. Powinieneś być w stanie osiągnąć to, co chcesz, identyfikując dysk twardy za pomocą jego numeru (numer zatoki? Przepraszam, nie ma doświadczenia) i stosując podobną składnię do powyższej, aby/dev/bay1
na przykład dodać dowiązanie symboliczne .udev
Pomocny może być następujący artykuł o zasadach pisania :Pisanie reguł udev
Uwaga
Dzięki odpowiedzi SLM, proszę zauważyć, że to rozwiązanie sprawia, że etykiety są specyficzne dla wnęk na dyski twarde, a nie znajdujące się w nich dyski. Dlatego jeśli użyjesz etykiet
/dev/bay1
i/dev/bay2
masz dysk twardy A we wnęce 1 i dysk twardy B we wnęce 2, wówczas/dev/bay1
odnosi się do dysku A i/dev/bay2
odnosi się do dysku B. Jeśli z jakiegoś powodu zamienisz dyski A i B, Ci/dev/bay1
powołując się na dysku B, a/dev/bay2
odnoszące się do dysku A. Z twojego pytania, uważam, że to jest twój zamiar. Proszę popraw mnie jeżeli się mylę.źródło
Nie tworzysz partycji e2label, tylko systemy plików e2label. Te systemy plików mogą znajdować się na partycjach plików, na całych dyskach, na blokach sieciowych ... to nie ma znaczenia.
Tak więc, jeśli bezpośrednio jest system plików ext2 / 3/4
/dev/sda
, możesz oznaczyć go tak samo, jak ten, który byłby włączony/dev/sda1
.Teraz, jeśli nie ma bezpośrednio systemu plików,
/dev/sda
ale na przykład/dev/sda
jest podzielony na partycje (przy użyciu GPT, MBR, LVM ...) na kilka partycji, to oczywiście nie możesz tego użyće2label /dev/sda
.W partycjonowaniu GPT możesz nadawać nazwy partycjom, abyś mógł utworzyć dużą partycję z jednym sektorem o nazwie ułatwiającej identyfikację dysku. Możesz to zrobić za pomocą
c
polecenia wgdisk
.źródło
Aby odpowiedzieć na pytanie, czy możliwe jest oznaczenie dysku zamiast partycji, odpowiedź brzmi „nie”. Nie znam żadnej metody, aby to zrobić.
Możesz użyć metody opisanej przez @JosephR, ale zdaj sobie sprawę, że ta konfiguracja jest zależna od systemu, więc jeśli chcesz przenieść ten dysk twardy do innego systemu, zaproponowane przez niego „etykietowanie” zostanie utracone. Nie jest powiązany z dyskiem w żaden znaczący sposób.
Nawiasem mówiąc, możesz zobaczyć etykiety i zestaw UUID dla różnych dysków za pomocą
blkid
polecenia.Przykład
źródło
blkid
wydaje się tylko wyświetlać listę partycji, a nie urządzeń, co nie jest tym, czym interesuje się OP./dev/disk/by-id
i możesz to zrobić,udev
jak pokazano w tej odpowiedzi .Zakładam, że twoim głównym celem jest jednoznaczna identyfikacja dysku fizycznego. Niestety nie wierzę, że istnieje standardowy sposób oznaczania dysku w taki sam sposób, jak można oznaczyć system plików.
Jednym ze sposobów jest użycie modelu dysku i numeru seryjnego. W systemie Linux możesz pobrać te identyfikatory za pomocą
hdparm -i /dev/sdX
. Zaletą numeru seryjnego jest to, że może być już wydrukowany na naklejce producenta. (Zakładam, że najbardziej interesujesz się Linuksem, ponieważ wspomniałeśe2label
w swoim pytaniu. Jeśli tak, edytuj swoje pytanie i dodaj tag linux ).Jeśli używasz sprzętowego kontrolera RAID,
hdparm
może nie działać, w takim przypadku musisz skonsultować się z narzędziami wiersza polecenia kontrolera RAID.Jeśli chcesz zidentyfikować go przez coś w zawartości dysku, możesz użyć identyfikatora GUID dysku, który jest zapisany w nagłówku tablicy partycji GPT ( bajty 56-71 LBA 1 ). Jest to dowolny losowy ciąg, a nie wybrana etykieta, ale jest podobny do etykiety, ponieważ jest trwały, dopóki nie zdecydujesz się zablokować tablicy partycji. W systemie Linux można wyświetlić identyfikator GUID dysku
gdisk -l /dev/sdX
.źródło
Na podstawie odpowiedzi, które otrzymałem (Dzięki chłopaki!), Wydaje się, że nie ma sposobu na etykietowanie dysków, a jedynie partycje. Więc odpowiedź prawdopodobnie brzmi „NIE”.
Przejdę do sugestii zaproponowanych przez @cas i @ 200_success: nakleję numery seryjne dysków naklejką na drzwiach wnęki.
Utworzenie małej partycji na każdym dysku, aby móc nadać jej nazwę (zgodnie z sugestią @Stephane Chazelas) jest również opcją, ale myślę, że byłoby to zbyt mylące dla kogoś, kto mógłby później utrzymywać system .
źródło
Utwórz
udev
regułę, korzystając z gwarantowanego unikalnego WWN dysku (jeśli taki istnieje), w przeciwnym razie używając połączonego identyfikatora dostawcy i numeru seryjnego:Uzyskaj wymagane wartości:
Masuj te wartości,
udev
rules
takie jak:udevadm trigger
Aby automatycznie nazwać dowiązanie symboliczne przy użyciu wartości podanych przez
udevadm info -q all /dev/<YOUR-DEVICE>
, możesz użyć:Możliwe jest również tworzenie
ENV
zmiennych zATTRS
wartości, aby uzyskać krótszy unikalny identyfikator.źródło
Jeśli
ls /dev/disk-by-path/pci*
...Na pewno zobaczysz ścieżkę PCI dla każdej wnęki napędu. Wystarczy użyć 1 znanego dysku, aby mieć pewność, że etykiety są prawidłowe.
Użyj,
blkid /dev/disk-by-path/pci*
aby zobaczyć, które partycje dysku znajdują się na ścieżce PCI.Możesz zamontować również przy użyciu tej ścieżki.
źródło
Lubię rozwiązanie @cas, ale oto moje 2 ¢
źródło
Dysk jest już oznaczony jako
sda
,sdb
,sdc
... Przegrody są następnie znakowane na przykład nasda
:sda1
,sda2
...Możesz wyświetlić listę wszystkich etykiet dysków i partycji
ls /dev/sd*
źródło