Smart mount af Linux USB enheder

Jeg vil gerne lige dele et smart trick, som jeg har lært at Bryan Østergaard fra SSLUG. Når jeg sidder med en Linux-maskine og indsætter et par USB-diske/memory-sticks så får jeg /dev/sda, /dev/sdb osv i den rækkefølge diskene sættes i. Det er en god strategi, men voldsomt irriterende hvis en af enhederne er en backup harddisk, som SKAL genkendes på samme måde - hver gang.

Tricket består i at man kan mounte USB diske på to måder i /etc/fstab:

/dev/sda1 /storage auto rw,user 0 0

Alternativt kan man mounte disken via dens unikke identifier UUID

UID=7aecd834-db48-4d0d-ba98-8d44d8e21d60 /storage auto rw,user 0 0

Med den sidste notation bliver disken automatisk mountet på "/storage".
Herefter er det oplagte spørgmål. Hvordan finder jeg mit UUID på en given enhed?

Den nemmeste måde er at køre en ls således

**$ ls -al /dev/disk/by-***
/dev/disk/by-id:
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH -> ../../hda
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH-part1 -> ../../hda1
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH-part2 -> ../../hda2
ata-Hitachi_HTS541660J9AT00_SB0B4DCLH6RAKH-part5 -> ../../hda5
usb-WD_My_Book_57442D574341534A30323937333830-0:0 -> ../../sda
usb-WD_My_Book_57442D574341534A30323937333830-0:0-part1 -> ../../sda1

/dev/disk/by-path:
pci-0000:00:0f.2-ide-0:0 -> ../../hda
pci-0000:00:0f.2-ide-0:0-part1 -> ../../hda1
pci-0000:00:0f.2-ide-0:0-part2 -> ../../hda2
pci-0000:00:0f.2-ide-0:0-part5 -> ../../hda5
pci-0000:00:0f.5-usb-0:3:1.0-scsi-0:0:0:0 -> ../../sda
pci-0000:00:0f.5-usb-0:3:1.0-scsi-0:0:0:0-part1 -> ../../sda1

/dev/disk/by-uuid:
7aecd834-db48-4d0d-ba98-8d44d8e21d60 -> ../../sda1
a0448746-7976-487b-8bff-bab4aa73420c -> ../../hda1

Jeg har klippet datostempler væk i ovenstående, da det ellers bliver meget bredt.
I mit eksempel ses to diske /dev/hda og /dev/sda - og vi kan edda se 3 under-partitioner på /dev/hda og en enkelt partition på den anden disk /dev/sda1.
Som det kan ses er UUID=7aecd834-db48-4d0d-ba98-8d44d8e21d60 og det passer fint, at den er detekteret som "usb-WD_My_Book". Det er netop en Western Digital backup disk doneret af Fri Software.

/pto

Kommentarer (16)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Christian Nobel

Hvis nu man ikke vil bruge UUID, men have en fælles betegnelse for en række diske man skifter ud (daglig backup på 5 forskellige diske, en til hver dag - give and take, fordi folk nogen gange glemmer at skifte dem ud, så at give diske ugedag som label duttter ikke), hvad så?

Altså i praksis en USB disk der bruges til daglig backup, men som udskiftes - i dag sidder den som sdb, uagtet hvilken en det er, men det er jo bøvlet hvis man skal til at mounte disken efter et unikt navn.

Endvidere er det irriterende at den primære disk, som systemet fint booter fra, bliver til sdb, og usb disken til sda hvis usb disken sidder i under boot - så hvordan tvinger man den primære disk til altid at være sda?

/Christian

Jon Bendtsen

Endvidere er det irriterende at den primære disk, som systemet fint booter fra, bliver til sdb, og usb disken til sda hvis usb disken sidder i under boot - så hvordan tvinger man den primære disk til altid at være sda?

Hav USB som et modul du først loader efter du har loadet driveren til den interne disk controller?

Hvis nu man ikke vil bruge UUID, men have en fælles betegnelse for en række diske man skifter ud (daglig backup på 5 forskellige diske, en til hver dag - give and take, fordi folk nogen gange glemmer at skifte dem ud, så at give diske ugedag som label duttter ikke), hvad så?

Hvorfor vil du det?

Ole Wolf

Christian: Hvis du ikke har for mange diske, så kan du måske lave en "dum" løsning i dit script, der finder den rigtige sti a la:

if [[ -d "/media/usb/backup2" && ! -L "/media/usb/backup2" ]]; then
EXTBACKUPDIR="/media/usb/backup2"
fi
if [[ -d "/media/usb/backup1" && ! -L "/media/usb/backup1" ]]; then
EXTBACKUPDIR="/media/usb/backup1"
fi

if [ "$EXTBACKUPDIR" != "" ]; then
osv.

Christian Nobel

Hav USB som et modul du først loader efter du har loadet driveren til den interne disk controller?

Nu skal jeg jo selvfølgelig være besværlig, så hvis nu jeg har to usb diske tilsluttet, så er deres rækkefølge heller ikke underodnet.

Hvorfor vil du det?

Nu svarede du et spørgsmål med et spørgsmål, så jeg tabte lige tråden der.

/Christian

Jon Bendtsen

Nu skal jeg jo selvfølgelig være besværlig, så hvis nu jeg har to usb diske tilsluttet, så er deres rækkefølge heller ikke underodnet.

Typisk ;-)

Det med rækkefølgen af USB diske bliver vel lige gyldigt hvis du bruger LABEL eller UUID. Måske også hvis du bruger /dev/disk-by-id, eller disk-by-path.

Nu svarede du et spørgsmål med et spørgsmål, så jeg tabte lige tråden der.

Hvorfor vil du ikke bruge UUID til at styre hvilken backup der skal tages?

Lars Althof

Den letteste metode er den, der blev foreslået ovenfor: Giv hver disk en label.
Under Fedora bliver disken så automatisk mounted i et directory med samme navn som den label der er på disken, jeg ved ikke, hvordan andre distributioner opfører sig.
Hvis dine 5 diske skal mountes samme sted, så giv dem samme label...

Christian Nobel

Det med rækkefølgen af USB diske bliver vel lige gyldigt hvis du bruger LABEL eller UUID. Måske også hvis du bruger /dev/disk-by-id, eller disk-by-path.

Ja du har ret, sålænge serveren selv kan holde styr på om hoveddisken er sda eller sdb/sdc, så er jeg sådan set ligeglad.

Så metoden med label ser ud til at være holdbar.

Et simpelt problem, med en simpel løsning, hvor det at formulere spørgsmålet, så man kan få et forståeligt svar kan være tricky.

Tak for hjælpen

/Christian

Søren Lund

Jeg har skiftet Ubuntu/Gnome ud med Arch/Fluxbox. Det betyder bl.a. at USB-enheder ikke automatisk bliver genkendt mere.

I stedet bruger jeg pmount / pumount, der er wrappers til mount / umount.

Jeg er stadig nødt til selv at holde øje med hvilken /dev/sdX disken sidder på (dmesg), men ellers er det blot at skrive f.eks.

pmount /dev/sdb2 ipod

så dukker disken op under /media (i eksemplet under /media/ipod).

Man skal ikke selv oprette mount points eller rette i fstab. Og når disken skal ud igen:

pumount ipod

Det passer meget godt til mit behov/temperament, og så skal man ikke være root for at kører kommandoerne (dvs. der er et lille suid-sikkerheds-problem).

Man kan også automatisere dette med udev, se f.eks.

http://www.monperrus.net/martin/automounting+usb+flash+drives+on+linux+w...

Dette har jeg dog ikke prøvet.

Christian Nobel

Liver lige denne tråd op igen, i håb om der er nogen der kan komme med et smart input.

Scenarie:

Jeg har to maskiner, personlig og server.

På den personlige maskine hedder min bruger cn og har gruppen cn (out of the box).

På serveren oprettes brugeren også som cn:cn, men her har jeg så tilknyttet brugeren til en til gruppe, lad os kalde den adm.

Hvis jeg er logget ind på en terminal på serveren og laver newgrp adm, så vil mine filer blive gemt som cn:adm - hvilket betyder at andre medlemmer af adm kan læse dem.
Det svarer til den måde man kan få Samba til at opføre sig.

Nu er problemet bare at jeg ville gerne lave sshfs mount af min server på min personlige maskine, men sådan at mine filer kan deles med adm gruppen.

Uagtet hvad jeg prøver, så er det sådan at de filer jeg laver på sshfs mountet altid gemmes med cn:cn på serveren, og dermed ikke kan tilgås af andre i gruppen adm.

Og det gør ikke nogen forskel at lege med uid og gid, det påvirker som jeg kan se det kun den personlige maskine.

Så forslag modtages med kyshånd.

/Christian

Log ind eller Opret konto for at kommentere