Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:freebsd_-_festplatten

Dies ist eine alte Version des Dokuments!


FreeBSD - Festplatten

siehe auch:

Seit FreeBSD 6.3 wurde das menügeführte Plattenpartitionsprogramm sade (sysadmins disk editor) eingeführt.

ACHTUNG: Mit FreeBSD 9.0 wurde sysinstall entfernt und als Ersatz wurde in FreeBSD 9.0 bsdinstall eingeführt.

Disk Device Codes

Code Bezeichnung
ad ATAPI (IDE) disk / SATA
da SCSI direct access disk
acd ATAPI (IDE) CDROM
cd SCSI CDROM
fd Floppy disk

USB-Stick

Festplatten im System ermitteln

Normalerweise verwendet man unter Linux für diese Aufgabe das Kommando fdisk -l, in FreeBSD kennt "fdisk" den Parameter "-l" nicht.

GEOM-Namen

braucht man die Übersetzung von GEOM-Namen zu Gerätenamen, dann kann das glabel

> glabel list

> glabel status
       diskid/DISK-7JJK1DBC     N/A  ada0
       diskid/DISK-ZA28ER52     N/A  ada1
       diskid/DISK-1SHNABYZ     N/A  ada2
       diskid/DISK-7JJKANEC     N/A  ada3
diskid/DISK-WD-WMC6M0H02SPU     N/A  ada4
diskid/DISK-WD-WXB1HB4H9AHF     N/A  ada5
diskid/DISK-WD-WMC6N0H1T7LJ     N/A  ada6
diskid/DISK-WD-WX21D7453SY1     N/A  ada7

sysctl

alle Festplatten, die der Kernel kennt:

> sysctl kern.disks
kern.disks: ada8 ada7 ada6 ada5 ada4 ada3 ada2 ada1 ada0 cd0

dmesg

alle Festplatten, die beim Boot-Vorgang gefunden wurden:

# dmesg | egrep '^ad|^da|^cd'
acd0: DVDROM  at ata0-slave UDMA33
ad4: 239372MB  at ata2-master SATA150
ad6: 239372MB  at ata3-master SATA150

oder

# dmesg | egrep ' at | Serial Number' | fgrep -B1 'Serial Number'
ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: Serial Number WD-WCAW31974189
ada1 at ahcich1 bus 0 scbus1 target 0 lun 0
ada1: Serial Number PL2331LA1G908J
ada2 at ahcich9 bus 0 scbus9 target 0 lun 0
ada2: Serial Number WD-WCAZA1451286
ada3 at ahcich10 bus 0 scbus10 target 0 lun 0
ada3: Serial Number WD-WCC131401387
ada4 at ahcich11 bus 0 scbus11 target 0 lun 0
ada4: Serial Number PL1331LA1G7G8H
ada5 at ahcich13 bus 0 scbus13 target 0 lun 0
ada5: Serial Number WD-WCAW31095888
ada6 at ahcich14 bus 0 scbus14 target 0 lun 0
ada6: Serial Number WD-WCC131651187
ada7 at ahcich15 bus 0 scbus15 target 0 lun 0
ada7: Serial Number WD-WX21D1453S81
ada8 at siisch2 bus 0 scbus20 target 0 lun 0
ada8: Serial Number WD-WCAZA1478182
ada9 at siisch3 bus 0 scbus21 target 0 lun 0
ada9: Serial Number WD-WX31D147KC8Z
pass2 at ahcich7 bus 0 scbus7 target 0 lun 0
pass2: Serial Number HKDP2211168L

bei zuviel Ausgaben in den system message buffer hilft dieser kleine Umweg; hier werden die dmesg-Meldungen vom letzten Boot-Vorgang in der Datei /var/log/dmesg.boot gespeichert und man kann sie immerwieder einsehen, auch wenn der Puffer schon voll ist und die ersten Meldungen bereits raus sind:

echo '/sbin/dmesg > /var/log/dmesg.boot 2>&1' >> /etc/rc.local
reboot
egrep ' at | Serial Number' /var/log/dmesg.boot | fgrep -B1 'Serial Number'

/dev

seit FreeBSD 5 (dynamisches /dev) geht auch ein "ls":

# ls -l /dev/ad* /dev/da* /dev/cd*
lrwxr-xr-x  1 root  wheel            4 Oct  2 10:16 /dev/ad10 -> ada2
lrwxr-xr-x  1 root  wheel            4 Oct  2 10:16 /dev/ad6 -> ada0
lrwxr-xr-x  1 root  wheel            4 Oct  2 10:16 /dev/ad8 -> ada1
lrwxr-xr-x  1 root  wheel            5 Oct  2 10:16 /dev/ad8a -> ada1a
crw-r-----  1 root  operator    0,  99 Oct  2 10:16 /dev/ada0
crw-r-----  1 root  operator    0, 101 Oct  2 10:16 /dev/ada1
crw-r-----  1 root  operator    0, 105 Oct  2 12:16 /dev/ada1a
crw-r-----  1 root  operator    0, 103 Oct  2 10:16 /dev/ada2
crw-r-----  1 root  operator    0,  97 Oct  2 10:16 /dev/cd0
crw-r-----  1 root  operator    0,  98 Oct  2 10:16 /dev/cd1
crw-r-----  1 root  operator    0, 122 Oct  2 10:16 /dev/da0
crw-r-----  1 root  operator    0, 130 Oct  2 10:16 /dev/da1
crw-r-----  1 root  operator    0, 141 Oct  2 12:16 /dev/da2
crw-r-----  1 root  operator    0, 144 Oct  2 12:16 /dev/da3
crw-r-----  1 root  operator    0, 146 Oct  2 12:16 /dev/da4
crw-r-----  1 root  operator    0, 148 Oct  2 12:16 /dev/da5

ext4 mounten (FreeBSD 11)

den Namen der Gerätedatei (hier ist es ada10) ermitteln, von einer Festplatte, die frisch angesteckt wurde:

> dmesg | tail
load_dn_sched dn_sched FQ_CODEL loaded
load_dn_sched dn_sched FQ_PIE loaded
load_dn_aqm dn_aqm CODEL loaded
load_dn_aqm dn_aqm PIE loaded
ada10 at ahcich8 bus 0 scbus8 target 0 lun 0
ada10: <WDC WD2503ABYX-01WERA1 01.01S02> ATA8-ACS SATA 2.x device
ada10: Serial Number WD-WMAYP4845471
ada10: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada10: Command Queueing enabled
ada10: 239429MB (490350672 512 byte sectors)

von ada10 die Partitionsnummer ermitteln:

> ls -1 /dev/ada10s*
/dev/ada10s1

von ada10 den Dateisystem-Typ ermitteln:

> fdisk /dev/ada10 | fgrep sysid
sysid 131 (0x83),(Linux native)

da es sich hier um ein natives Linux-Dateisystem handelt (ext2, ext3 oder ext4), werden wir den entsprechenden Treiber installieren:

> pkg install sysutils/fusefs-ext4fuse

die erste Partition mit ext4 mounten:

> ext4fuse /dev/ada10s1 /250GB

ATA

früher:

# atacontrol list

heute:

# camcontrol devlist

SCSI/USB/S-ATA

Man kann allerdings SCSI-, USB- und SATA-Gerät auch so anzeigen:

# camcontrol devlist
<PLEXTOR DVDR   PX-820SA 1.00>     at scbus0 target 0 lun 0 (pass0,cd0)
<ST31500341AS CC1H>                at scbus1 target 0 lun 0 (ada0,pass1)
<OCZ-ONYX 1.6>                     at scbus2 target 0 lun 0 (ada1,pass2)
<ST31500341AS CC1H>                at scbus3 target 0 lun 0 (ada2,pass3)
<OPTIARC DVD-ROM DDU1681S 1.04>    at scbus4 target 0 lun 0 (pass4,cd1)
<WD My Book 1130 1012>             at scbus6 target 0 lun 0 (da0,pass5)
<WD SES Device 1012>               at scbus6 target 0 lun 1 (pass6,ses0)
<WD My Book 1130 1012>             at scbus7 target 0 lun 0 (da1,pass7)
<WD SES Device 1012>               at scbus7 target 0 lun 1 (pass8,ses1)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 0 (da2,pass9)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 1 (da3,pass10)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 2 (da4,pass11)
<Generic STORAGE DEVICE 9317>      at scbus8 target 0 lun 3 (da5,pass12)

Gerätename vom DVD-Laufwerk finden:

> camcontrol devlist | fgrep DVD | awk '{print $NF}' | tr -s '[(,)]' '\n' | grep -Ev '^$|pass[0-9]'
cd0
cd1

Informationen zu einem Gerät anzeigen

# diskinfo -v ada0
ada0
        512             # sectorsize
        10000831348736  # mediasize in bytes (9.1T)
        19532873728     # mediasize in sectors
        4096            # stripesize
        0               # stripeoffset
        19377850        # Cylinders according to firmware.
        16              # Heads according to firmware.
        63              # Sectors according to firmware.
        WDC WD101KRYZ-01JPDB1   # Disk descr.
        78JKLNEC        # Disk ident.
        No              # TRIM/UNMAP support
        7200            # Rotation rate in RPM
        Not_Zoned       # Zone Mode

eine CD/DVD kopieren:

> dd if=/dev/cd0 of=cd.iso bs=2048

gpart

Eigentlich ist gpart ein Partitionswerkzeug für GEOM, aber ich konnte damit auch meine SD-Carte sehen, auf die ich sonst nicht zugreifen konnte.

# gpart show -l
# gpart show -lp
# gpart show
=>       0  62533296  ada1  BSD  (29G)
         0  60817408     1  freebsd-ufs  (29G)
  60817408   1715888        - free -  (837M)

=>     63  3913665  da4  MBR  (1.9G)
       63       66       - free -  (33k)
      129  3913535    1  !6  (1.9G)
  3913664       64       - free -  (32k)

=>      0  3913535  da4s1  EBR  (1.9G)
        0  3913535         - free -  (1.9G)

so sieht eine Festplatte aus, auf der FreeBSD 10 mit ZFS als root-Dateisystem installiert wurde:

> gpart show
=>        34  1953525101  ada0  GPT  (932G)
          34        1024     1  freebsd-boot  (512K)
        1058    16777216     2  freebsd-swap  (8.0G)
    16778274  1936746861     3  freebsd-zfs  (924G)

> gpart show -r
=>        34  1953525101  ada0  GPT  (932G)
          34        1024     1  83bd6b9d-7f41-11dc-be0b-001560b84f0f  (512K)
        1058    16777216     2  516e7cb5-6ecf-11d6-8ff8-00022d09712b  (8.0G)
    16778274  1936746861     3  516e7cba-6ecf-11d6-8ff8-00022d09712b  (924G)

> gpart list

> gpart list ada0
Geom name: ada0
modified: false
state: OK
fwheads: 16
fwsectors: 63
last: 1953525134
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: ada0p1
   Mediasize: 524288 (512K)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: 3f4ed14d-14c4-11e4-bc13-bcaec58cba70
   rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
   label: gptboot1
   length: 524288
   offset: 17408
   type: freebsd-boot
   index: 1
   end: 1057
   start: 34
2. Name: ada0p2
   Mediasize: 8589934592 (8.0G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 541696
   Mode: r1w1e1
   rawuuid: 3f621fef-14c4-11e4-bc13-bcaec58cba70
   rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b
   label: swap1
   length: 8589934592
   offset: 541696
   type: freebsd-swap
   index: 2
   end: 16778273
   start: 1058
3. Name: ada0p3
   Mediasize: 991614392832 (924G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 541696
   Mode: r1w1e2
   rawuuid: 3f737947-14c4-11e4-bc13-bcaec58cba70
   rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
   label: zfs1
   length: 991614392832
   offset: 8590476288
   type: freebsd-zfs
   index: 3
   end: 1953525134
   start: 16778274
Consumers:
1. Name: ada0
   Mediasize: 1000204886016 (932G)
   Sectorsize: 512
   Mode: r2w2e5

Informationen einer Festplatte anzeigen

hier befindet sich keine SD-Karte im Slot des Card-Readers:

# bsdlabel da3
bsdlabel: unable to get correct path for da3: Device not configured

hier befindet sich eine SD-Karte im Slot des Card-Readers, auf mir leider der Zugriff verwehrt bleibt:

# bsdlabel da4
# bsdlabel -A da4
bsdlabel: /dev/da4: no valid label found
                                      Name  Status  Components
                              gpt/gptboot1     N/A  ada0p1
gptid/3f4ed14d-14c4-11e4-bc13-bcaec58cba70     N/A  ada0p1
                                 gpt/swap1     N/A  ada0p2
gptid/3f737947-14c4-11e4-bc13-bcaec58cba70     N/A  ada0p3
               diskid/DISK-WD-WX21D7453SY1     N/A  ada2
                      diskid/DISK-7JJKANEC     N/A  ada5
                                 gpt/swap0     N/A  ada3p2
gptid/3d5a4e6c-14c4-11e4-bc13-bcaec58cba70     N/A  ada3p3
                diskid/DISK-PL1331LAGG7GKH     N/A  ada6
                  diskid/DISK-03EF039300A9     N/A  da0
                              ntfs/Freecom     N/A  da0s1
                              gpt/gptboot0     N/A  ada3p1
gptid/3cde3f3e-14c4-11e4-bc13-bcaec58cba70     N/A  ada3p1

mit glabel geht es auch prima:

> glabel status

> glabel status | fgrep -v 'Name  Status  Components' | awk '{print $NF"\t"$1}'
ada0p1  gpt/gptboot1
ada0p1  gptid/3f4ed14d-14c4-11e4-bc13-bcaec58cba70
ada0p2  gpt/swap1
ada0p3  gptid/3f737947-14c4-11e4-bc13-bcaec58cba70
ada2    diskid/DISK-WD-WX21D7453SY1
ada5    diskid/DISK-7JJKANEC
ada3p2  gpt/swap0
ada3p3  gptid/3d5a4e6c-14c4-11e4-bc13-bcaec58cba70
ada6    diskid/DISK-PL1331LAGG7GKH
da0     diskid/DISK-03EF039300A9
da0s1   ntfs/Freecom
ada3p1  gpt/gptboot0
ada3p1  gptid/3cde3f3e-14c4-11e4-bc13-bcaec58cba70

eine kompatible Partition auf einen Austauschdatenträger anlegen

In diesem Beispiel werde ich eine kleine (2,5") 160GB-USB-Platte partitionieren und mit FAT32 formatieren, damit sie als Austauschdatenträger dienen kann:

> dmesg
...
da0 at umass-sim0 bus 0 scbus6 target 0 lun 0
da0: <ST916031 4AS 0009> Fixed Direct Access SCSI-0 device 
da0: 40.000MB/s transfers
da0: 152627MB (312581804 512 byte sectors: 255H 63S/T 19457C)
...
> dd if=/dev/zero of=/dev/da0 bs=512 count=4
> fdisk -i /dev/da0
> newfs_msdos -F 32 -L HDMediaBox /dev/da0s1
/dev/da0s1: 312500288 sectors in 4882817 FAT32 clusters (32768 bytes/cluster)
BytesPerSec=512 SecPerClust=64 ResSectors=32 FATs=2 Media=0xf0 SecPerTrack=63 Heads=255 HiddenSecs=0 HugeSectors=312576642 FATsecs=38148 RootCluster=2 FSInfo=1 Backup=2
> mount -t msdosfs -o large /dev/da0s1 /mnt/
> df -h /mnt/
Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/da0s1    149G     96k    149G     0%    /mnt

Status aller Festplatten anzeigen

#!/usr/bin/env bash


VERSION="v2016010500"


SKRIPTNAME="$(basename ${0})"
SKRIPTVERZEICHNIS="$(dirname ${0})"

#------------------------------------------------------------------------------#
### pkg install smartmontools-6.2_2
### echo 'smartd_enable="YES"' >> /etc/rc.conf
#------------------------------------------------------------------------------#

if [ "$(id -u)" != "0" ] ; then
        echo "Sie muessen root sein!"
        exit 1
fi


#------------------------------------------------------------------------------#

if [ "$(uname -o)" == "FreeBSD" ] ; then
        ### FreeBSD
        SMARTOPT="-a"
elif [ "$(uname -o)" == "GNU/Linux" ] ; then
        ### Linux
        SMARTOPT="-H"
else
        ### Windows
        SMARTOPT="-h"
fi

#------------------------------------------------------------------------------#

LAUFWERKE="$(grep -F ' Serial Number ' /var/log/dmesg.boot | awk -F':' '/: /{print $1}')"
#echo "LAUFWERKE='${LAUFWERKE}'"

#------------------------------------------------------------------------------#

SERIAL_SLOT="$(for i in ${LAUFWERKE}
do
        cat /var/log/dmesg.boot | sed -ne "/^${i} /,/ Serial Number /p"
done)"
#echo "SERIAL_SLOT='${SERIAL_SLOT}'"

#exit
#------------------------------------------------------------------------------#

(
for PLATTE in ${LAUFWERKE}
do
        echo "================================================================="
        echo "${SERIAL_SLOT}" | egrep "^${PLATTE}[:]* "
        echo

        #smartctl ${SMARTOPT} /dev/${PLATTE} | grep -F Serial
        smartctl ${SMARTOPT} /dev/${PLATTE} | grep -Ei 'Serial|Error'

        ### bei Linux auch moeglich
        #hdparm -i /dev/${PLATTE}
        echo "-----------------------------------------------------------------"
done
) 2>&1 | tee /var/log/${SKRIPTNAME}.log

ls -lha /var/log/${SKRIPTNAME}.log

#------------------------------------------------------------------------------#

Handyuhr "Burg 12"

als Massenspeicher

steckt man die Uhr an den USB-Port, dann kann man das hier in DMESG sehen:

> dmesg
...
ugen2.3: <MediaTek Inc> at usbus2
umass0: <6225--Storage> on usbus2
umass0:  SCSI over Bulk-Only; quirks = 0x4000
umass0:7:0:-1: Attached to scbus7
da0 at umass-sim0 bus 0 scbus7 target 0 lun 0
da0: <MEDIATEK FLASH DISK 6225> Removable Direct Access SCSI-0 device 
da0: 1.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present
da1 at umass-sim0 bus 0 scbus7 target 0 lun 1
da1: <MEDIATEK FLASH DISK 6225> Removable Direct Access SCSI-0 device 
da1: 1.000MB/s transfers
da1: 1MB (2048 512 byte sectors: 64H 32S/T 1C)

zieht man die Uhr vom USB-Port wieder ab, dann kann man das hier in DMESG sehen:

> dmesg
...
ugen2.3: <MediaTek Inc> at usbus2 (disconnected)
umass0: at uhub2, port 2, addr 3 (disconnected)
(da0:umass-sim0:0:0:0): lost device - 0 outstanding, 1 refs
(da1:umass-sim0:0:0:1): lost device - 0 outstanding, 1 refs
(pass4:umass-sim0:0:0:0): passdevgonecb: devfs entry is gone
(pass5:umass-sim0:0:0:1): passdevgonecb: devfs entry is gone
(da0:umass-sim0:0:0:0): removing device entry
(da1:umass-sim0:0:0:1): removing device entry
> mount -t msdosfs /dev/da1 /mnt
> find /mnt
/mnt
/mnt/@mms
/mnt/sat
/mnt/phb_video.dat
/mnt/Settings
/mnt/Download
/mnt/SMSSimCust

als USB-Modem (COM-Port)

> dmesg
...
ugen2.3: <MediaTek Inc> at usbus2
umodem0: <6225  COMcommif> on usbus2
umodem0: data interface 0, has CM over data, has break
/home/http/wiki/data/attic/freebsd/freebsd_-_festplatten.1708782634.txt · Zuletzt geändert: von manfred