====== FreeBSD - Festplatten ====== siehe auch: * [[::Festplatten]] * [[::Festplatten partitionieren]] * [[::Freebsd:FreeBSD - Festplatten]] * [[::FreeBSD:ZFS]] * [[::FreeBSD:ZFS#Boot-Pool]] * [[::Festplatten partitionieren#zusätzliches Laufwerk für FreeBSD 12 einrichten]] * [[::Festplatten partitionieren#Boot-Laufwerk für FreeBSD 12 partitionieren]] 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. > camcontrol devlist ===== Disk Device Codes ===== * [[http://www.freebsd.org/doc/en/books/handbook/disk-organization.html#BASICS-DEV-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 ===== siehe auch: [[::Dateisystem-Images#Image auf einen USB-Stick schreiben]] > dmesg ... usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device SanDisk SanDisk 3.2 Gen1 (0x0781:0x55b1) usb_msc_auto_quirk: UQ_MSC_NO_PREVENT_ALLOW set for USB mass storage device SanDisk SanDisk 3.2 Gen1 (0x0781:0x55b1) ugen0.4: at usbus0 umass0 on uhub0 umass0: on usbus0 umass0: SCSI over Bulk-Only; quirks = 0x8100 umass0:20:0: Attached to scbus20 da0 at umass-sim0 bus 0 scbus20 target 0 lun 0 da0: Removable Direct Access SPC-4 SCSI device da0: Serial Number A2003B84B6F17838 da0: 400.000MB/s transfers da0: 238728MB (488914944 512 byte sectors) da0: quirks=0x2 > glabel status Name Status Components ... diskid/DISK-A200888888888888 N/A da0 > ls -lha /dev/da0* crw-r----- 1 root operator 0xf1 Feb 24 14:18 /dev/da0 crw-r----- 1 root operator 0xf3 Feb 24 14:49 /dev/da0s1 > mount -t msdosfs /dev/da0s1 /mnt/ mount_msdosfs: /dev/da0s1: Invalid argument > gpart show da0 => 63 488914881 da0 MBR (233G) 63 7489 - free - (3.7M) 7552 488907392 1 ntfs (233G) > pkg info sysutils/fusefs-ntfs > mount -t ntfs-3g /dev/da0s1 /mnt/ mount: /dev/da0s1: Invalid fstype: Invalid argument //[[https://supportportal.juniper.net/s/article/Junos-How-to-mount-a-USB-drive-on-EX-SRX-MX-QFX-Series-platforms-to-import-export-files?language=en_US|Use another USB device with the FAT16 or FAT32 format. Newer USB 3.0 devices with large capacity use the exFAT format, and might not support the FAT32 format. Try using USB 2.0 devices with smaller capacity.]] - Diese Fehler treten auf, wenn das USB-Laufwerk zu grß ist; FreeBSD unterstützt nur die kleineren USB2.0-Laufwerke.// ===== 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: 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: * [[http://www.freebsd.org/doc/de/books/handbook/usb-disks.html]] * [[http://www.freebsd.org/cgi/man.cgi?query=umass&sektion=4]] * [[http://www.freebsd.org/cgi/man.cgi?query=camcontrol&sektion=8]] # camcontrol devlist at scbus0 target 0 lun 0 (pass0,cd0) at scbus1 target 0 lun 0 (ada0,pass1) at scbus2 target 0 lun 0 (ada1,pass2) at scbus3 target 0 lun 0 (ada2,pass3) at scbus4 target 0 lun 0 (pass4,cd1) at scbus6 target 0 lun 0 (da0,pass5) at scbus6 target 0 lun 1 (pass6,ses0) at scbus7 target 0 lun 0 (da1,pass7) at scbus7 target 0 lun 1 (pass8,ses1) at scbus8 target 0 lun 0 (da2,pass9) at scbus8 target 0 lun 1 (da3,pass10) at scbus8 target 0 lun 2 (da4,pass11) 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: 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: 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: 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: 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: 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: at usbus2 umodem0: <6225 COMcommif> on usbus2 umodem0: data interface 0, has CM over data, has break