Mounting Devices with udev¶
eSATA hot-mount drive setup¶
Note
This guide registers a BUFFALO External drive and mounts it at
/home/mnt/backup
.
The permanent logical mount point for the backup device will be
/home/mnt/backup
.Display a terminal command line on the server console, or ssh to a server command shell.
Plug in the hot-pluggable device on a USB or eSATA port.
At the command prompt, type:
dmesg | tail 20
Output similar to the following will be displayed:
... [ 5891.570018] ata6: link is slow to respond, please be patient (ready=0) [ 5893.250023] ata6: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 5893.260131] ata6.00: ATA-6: BUFFALO External HDD, CC46, max UDMA/133 [ 5893.260136] ata6.00: 1953525168 sectors, multi 0: LBA48 [ 5893.271998] ata6.00: configured for UDMA/133 [ 5893.272007] ata6: EH complete [ 5893.272117] scsi 5:0:0:0: Direct-Access ATA BUFFALO External CC46 PQ: 0 ANSI: 5 [ 5893.272339] sd 5:0:0:0: Attached scsi generic sg3 type 0 [ 5893.272669] sd 5:0:0:0: [sdc] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) [ 5893.272727] sd 5:0:0:0: [sdc] Write Protect is off [ 5893.272731] sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 5893.272762] sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn''t support DPO or FUA [ 5893.272939] sdc: sdc1 < sdc5 > [ 5893.293515] sd 5:0:0:0: [sdc] Attached SCSI disk
This shows a BUFFALO External device as sdc. Enumerate the system device information for sdc with the command:
udevadm info --name=sdc --attribute-walk
Now scroll up the output to find the BUFFALO External parent device section. Note the subsystem, model, and state:
looking at parent device '/devices/pci0000:00/0000:00:1f.2/host5/target5:0:0/5:0:0:0': KERNELS=="5:0:0:0" SUBSYSTEMS=="scsi" DRIVERS=="**sd**" ATTRS{device_blocked}=="0" ATTRS{type}=="0" ATTRS{scsi_level}=="6" ATTRS{vendor}=="ATA " ATTRS{model}=="BUFFALO External" ATTRS{rev}=="CC46" ATTRS{state}=="running" ...
Add a udev rule in directory
/etc/udev/rules.d/
to establish a mount for the device. We chose the filename:/etc/udev/rules.d/20-buffalo.rules
Edit the file and insert the rule. Our data for the command, based on the attributes above and the specified mount point, is:
KERNEL=="sd?", SUBSYSTEMS=="scsi", ATTRS{model}=="BUFFALO External", ATTRS{state}=="running", RUN+="/bin/mount /dev/%k5 /home/mnt/backup"
After saving the rule, and with the device connected, verify the rule with the command:
sudo reload udev sudo udevadm test /block/sdc
The command output should be similar to the following:
... udevadm_test: ID_ATA_SATA=1 udevadm_test: ID_ATA_SATA_SIGNAL_RATE_GEN2=1 udevadm_test: ID_ATA_SATA_SIGNAL_RATE_GEN1=1 udevadm_test: ID_SCSI_COMPAT=SATA_BUFFALO_Externa_6VPB88MX udevadm_test: ID_PATH=pci-0000:00:1f.2-scsi-2:0:0:0 udevadm_test: ID_PART_TABLE_TYPE=dos udevadm_test: UDISKS_PRESENTATION_NOPOLICY=0 udevadm_test: UDISKS_PARTITION_TABLE=1 udevadm_test: UDISKS_PARTITION_TABLE_SCHEME=mbr udevadm_test: UDISKS_PARTITION_TABLE_COUNT=2 udevadm_test: UDISKS_ATA_SMART_IS_AVAILABLE=1 udevadm_test: run: '/bin/mount /dev/sdc5 /home/mnt/backup' udevadm_test: run: '/lib/udev/hdparm' udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'
Now unplug the eSATA or USB cable, and then plug it back into the device.
Run the command mount and look for the device in the command output, as for example the following:
/dev/mapper/ddf1_aaltsys1 on / type ext4 (rw,errors=remount-ro) ... none on /var/lib/ureadahead/debugfs type debugfs (rw,relatime) /dev/mapper/ddf1_aaltsys6 on /home type ext4 (rw,usrquota,grpquota,acl) rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nfsd on /proc/fs/nfsd type nfsd (rw) /dev/sdc5 on /home/mnt/backup type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096)
The device is mounted and ready. Now it may be hot connected and disconnected, and it will auto-mount on connection.
Disconnect hot-mounted drive¶
Unmount a device before disconnecting it. In this example, the unmount command would be:
umount /home/mnt/backup
Warning
Before disconnecting a hot-mounted device it must be unmounted. Otherwise the device may become corrupted or unusable.
References¶
#. We found the following guide useful: http://cdfx.penguins-on-hudson.com/2010/01/20/automount-removable-devices-on-ubuntu-servers/. Be aware that all the udev command syntax has changed since the guide was written, as the following table shows.
Command in Penguins Guide Current Command Syntax Equivalent udevinfo -a -p /sys/block/sdb udevadm info –name=sdb –attribute-walk sudo udevcontrol reload_rules sudo reload udev udevtest /sys/block/sdb/sdb1 usb sudo udevadm test /block/sdb