Inhaltsverzeichnis

Festplatten partitionieren

siehe auch:

FreeBSD

> ls -lha /dev/ada10*
crw-r-----  1 root  operator   0xd6 Feb 21 01:07 /dev/ada10
crw-r-----  1 root  operator   0xdd Feb 21 01:07 /dev/ada10p1
crw-r-----  1 root  operator   0xdf Feb 21 01:07 /dev/ada10p9
> fdisk /dev/ada10
******* Working on device /dev/ada10 *******
parameters extracted from in-core disklabel are:
cylinders=5814021 heads=16 sectors/track=63 (1008 blks/cyl)

Figures below won't work with BIOS for partitions not in cyl 1
parameters to be used for BIOS calculations are:
cylinders=5814021 heads=16 sectors/track=63 (1008 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 238 (0xee),(EFI GPT)
    start 1, size 4294967295 (2097151 Meg), flag 0
        beg: cyl 1023/ head 255/ sector 63;
        end: cyl 1023/ head 255/ sector 63
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>

zusätzliches Laufwerk für FreeBSD 12 einrichten

# gpart show -l
# gpart show -lp

Laufwerk mit Gerätenamen ansprechen

Dieses ist die älteste methode, die garantiert immer funktioniert. Wenn man aber recht viele Platten im System hat, ist eine Identifikation recht schwierig. Man wird sich also etwas anstrengen müssen, wenn man eine defekte Platte hat und die richtige tauschen will.

Ziel:
Auf einer großen neuen Festplatte sollen zwei Partitionen angelegt werden. Eine für den Pool "Filme" und eine für den Pool "Serien". Hierbei ist darauf zu achen, dass die Größe passt! Die neuen Partitionen dürfen auf garkeinen Fall zu klein sein, weil sie sonst nicht in den Pool eingebunden werden können.

evtl. vorhandene GPT-Partitionen werden entfernt:

gpart destroy -F /dev/ada8
gpart show -l ada8

jetzt wird die Partitionstabelle angelegt:

gpart create -s gpt ada8
gpart show -l ada8

die ersten 4GB verwenden wir für die Partition für die Filme

gpart add -t freebsd-zfs -l filme -s 4G -b 40 ada8

die zweite Partition bekommt den Rest für die Serien:

gpart add -t freebsd-zfs -l serien ada8
gpart show -l ada8

hier werden die Partitionen an die jeweiligen Pools angeheftet:

zpool attach filme ada7 ada8p1
zpool attach serien ada4 ada8p2
zpool list

Laufwerk mit seiner Seriennummer ansprechen

Dieses ist (meiner Meinung nach) die eleganteste. Jede Festplatte hat eine eindeutige Seriennummer, die man auch für die Replamation benötigt. Sie steht i.d.R. auch gut sichtbar auf einer Seite der Platte, wodurch man diese auch im eingebauten Zustand gut ablesen kann. Wenn also eine Platte defekt ist und ausgetauscht werden muss, merkt man sich nur die letzten 4 Stellen der Gerätebezeichnung im System und sucht dann auf den Platten nach dieser Zeichenfolge. Das ist sehr praktisch und erspart einem, zeitaufwendige Detektivarbeit.

Auf einer großen neuen Festplatte sollen zwei Partitionen angelegt werden. Eine für den Pool "Filme" und eine für den Pool "Serien". Hierbei ist darauf zu achen, dass die Größe passt! Die neuen Partitionen dürfen auf garkeinen Fall zu klein sein, weil sie sonst nicht in den Pool eingebunden werden können.

evtl. vorhandene GPT-Partitionen werden entfernt:

gpart destroy -F /dev/diskid/DISK-WD-WXB1HB4H9AHF
gpart show -l diskid/DISK-WD-WXB1HB4H9AHF

jetzt wird die Partitionstabelle angelegt:

gpart create -s gpt diskid/DISK-WD-WXB1HB4H9AHF
gpart show -l diskid/DISK-WD-WXB1HB4H9AHF

die ersten 4GB verwenden wir für die Partition für die Filme

gpart add -t freebsd-zfs -l filme -s 4G -b 40 diskid/DISK-WD-WXB1HB4H9AHF

die zweite Partition bekommt den Rest für die Serien:

gpart add -t freebsd-zfs -l serien diskid/DISK-WD-WXB1HB4H9AHF
gpart show -l diskid/DISK-WD-WXB1HB4H9AHF

hier werden die Partitionen an die jeweiligen Pools angeheftet:

zpool attach filme diskid/DISK-PL1331LAGG7GKH diskid/DISK-WD-WXB1HB4H9AHFp1
zpool attach serien diskid/DISK-1SHNABYZ diskid/DISK-WD-WXB1HB4H9AHFp2
zpool list

alle Eigenschaften eines Pools ansehen

> zfs get all filme
NAME      PROPERTY              VALUE                   SOURCE
filme  type                  filesystem              -
filme  creation              Mo. Sep. 25 22:43 2017  -
filme  used                  3,37T                   -
filme  available             143G                    -
filme  referenced            3,37T                   -
filme  compressratio         1.00x                   -
filme  mounted               yes                     -
filme  quota                 none                    default
filme  reservation           none                    default
filme  recordsize            128K                    default
filme  mountpoint            /extern02               default
filme  sharenfs              off                     default
filme  checksum              on                      default
filme  compression           off                     default
filme  atime                 on                      default
filme  devices               on                      default
filme  exec                  on                      default
filme  setuid                on                      default
filme  readonly              off                     default
filme  jailed                off                     default
filme  snapdir               hidden                  default
filme  aclmode               discard                 default
filme  aclinherit            restricted              default
filme  createtxg             1                       -
filme  canmount              on                      default
filme  xattr                 off                     temporary
filme  copies                1                       default
filme  version               5                       -
filme  utf8only              off                     -
filme  normalization         none                    -
filme  casesensitivity       sensitive               -
filme  vscan                 off                     default
filme  nbmand                off                     default
filme  sharesmb              off                     default
filme  refquota              none                    default
filme  refreservation        none                    default
filme  guid                  1632609755814299787     -
filme  primarycache          all                     default
filme  secondarycache        all                     default
filme  usedbysnapshots       0                       -
filme  usedbydataset         3,37T                   -
filme  usedbychildren        5,32M                   -
filme  usedbyrefreservation  0                       -
filme  logbias               latency                 default
filme  dedup                 off                     default
filme  mlslabel                                      -
filme  sync                  standard                default
filme  dnodesize             legacy                  default
filme  refcompressratio      1.00x                   -
filme  written               3,37T                   -
filme  logicalused           3,37T                   -
filme  logicalreferenced     3,37T                   -
filme  volmode               default                 default
filme  filesystem_limit      none                    default
filme  snapshot_limit        none                    default
filme  filesystem_count      none                    default
filme  snapshot_count        none                    default
filme  redundant_metadata    all                     default

Boot-Laufwerk für FreeBSD 12 partitionieren

Die Einzelschritte können auch aus der Datei /var/log/bsdinstall_log ab dem Schlagwort "zfs_create_boot" abgelesen werden.

Festplatte säubern

# gpart destroy -F "ada0"
ada0 destroyed

# graid delete "ada0"
graid: Array 'ada0' not found.

# zpool labelclear -f "/dev/ada0"

# gpart create -s gpt "ada0"
ada0 created

# gpart destroy -F "ada0"

GPT-Partitionierung von dem verbliebenen Laufwerk kopieren

gpart backup ada1 > /tmp/g.txt
vi /tmp/g.txt
cat /tmp/g.txt | gpart restore ada0

Es sollten hier die Partitionsnamen geändert werden, beispielsweise so:
gptboot0 → gptboot2
swap0 → swap2
zfs0 → zfs2

Dann kann man z.B. hier auch die Unterschiede erkennen:

# ls -lha /dev/gpt/swap*
crw-r-----  1 root  operator   0x94  3 Feb. 15:12 /dev/gpt/swap0
crw-r-----  1 root  operator   0xf8  4 Feb. 18:12 /dev/gpt/swap2

# swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/gpt/swap0    8388608    48864  8339744     1%
/dev/gpt/swap2    8388608    10304  8378304     0%
Total            16777216    59168 16718048     0%

eine frische GPT-Partitionierung vornehmen

In diesem Beispiel wird eine WD 1003FBYX (WD Re) aus dem Jahre 2013 partitioniert.

GPT-Tabelle anlegen
  > gpart create -s gpt ada0

Boot-Partition anlegen
  > gpart add -t freebsd-boot -l gptboot0 -b 40 -s 512K ada0

Boot-Kode schreiben
  > gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

SWAP-Partition anlegen
  > gpart add -t freebsd-swap -l swap0 -s 8G ada0

FreeBSD-ZFS-Partition anlegen
  > gpart add -t freebsd-zfs -l zfs0 ada0

Ergebnis zeigen
  > gpart show -l ada0
  
  > gpart backup ada0
  GPT 128
  1   freebsd-boot         40       1024 gptboot0
  2   freebsd-swap       1064   16777216 swap0
  3    freebsd-zfs   16778280 1936746848 zfs0

in das System und den ZFS-Pool einbinden

alle drei Partitionen auf dem ROOT-Laufwerk, müssen separat betrachtet werden:

# ls -lha /dev/ada10*
crw-r-----  1 root  operator   0xe6  4 Feb. 10:23 /dev/ada0
crw-r-----  1 root  operator   0xf5  4 Feb. 18:19 /dev/ada0p1   - BootCode            (ungespiegelt)
crw-r-----  1 root  operator   0xf4  4 Feb. 18:12 /dev/ada0p2   - SWAP                (ungespiegelt)
crw-r-----  1 root  operator   0xf6  4 Feb. 18:12 /dev/ada0p3   - ZFS-Pool für das BS (gespiegelt)
# echo "/dev/gpt/swap3          none            swap    sw              0       0" >> /etc/fstab
# swapon /dev/gpt/swap3
# swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/gpt/swap0    8388608    50040  8338568     1%
/dev/gpt/swap3    8388608    11848  8376760     0%
Total            16777216    61888 16715328     0%


# zpool attach zroot gptid/3d5a4e6c-14c4-11e4-bc13-bcaec58cba70 ada0p3
# zpool status zroot
  pool: zroot
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Mon Feb  4 18:18:05 2019
        304G scanned at 467M/s, 1,28G issued at 36,4M/s, 304G total
        1,27G resilvered, 0,42% done, 0 days 02:22:07 to go
config:

        NAME                                            STATE     READ WRITE CKSUM
        zroot                                           ONLINE       0     0     0
          mirror-0                                      ONLINE       0     0     0
            gptid/3d5a4e6c-14c4-11e4-bc13-bcaec58cba70  ONLINE       0     0     1
            diskid/DISK-WD-WMC6M0H02SPU                 ONLINE       0     0     0
            ada0p3                                      ONLINE       0     0     0


# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
partcode written to ada0p1
bootcode written to ada0

Linux

große Datenträger partitionieren

das Programm "partprobe" installieren:

> apt install parted

Partitionstabelle neu einlesen:

> partprobe

auf einer Fabrikneuen Festplatte ein GPT-Label anlegen:

> parted /dev/sdb
(parted) mklabel gpt
(parted) unit %
(parted) mkpart primary 0% 100%
(parted) print
(parted) quit
> mkfs -t ext4 -m 0 -L mysql /dev/sdb1
> mkdir -p /var/lib/mysql
> echo "/dev/sdb1       /var/lib/mysql  ext4    defaults        2 2" >> /etc/fstab
> mount /var/lib/mysql
> df -h

oder so:

parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb unit mib mkpart primary 1 100%
parted /dev/sdb print
mkfs -t ext4 -m 0 -L LW-NAME /dev/sdb1
echo "LABEL=LW-NAME /MPNAME ext4 defaults 0 0" >> /etc/fstab

siehe auch: Partitionen größer als 2TB anlegen

vergrößern:

apt install parted

parted /dev/vda
  (parted) unit GB
  (parted) p
  (parted) resizepart NUMBER END

resize2fs -p /dev/vda1

SD-Karte partitionieren

das Programm "partprobe" installieren:

> apt install parted

Partitionstabelle neu einlesen:

> partprobe

auf einer Fabrikneuen Festplatte ein GPT-Label anlegen:

> parted /dev/sdb
(parted) p
(parted) rm 1
(parted) p
(parted) unit %
(parted) mkpart primary 0% 100%
(parted) p
(parted) q

SD-Karte formatieren

bei kleineren SD-Karten:

mkdosfs /dev/sdb1 -F16

oder bei größeren SD-Karten:

mkdosfs /dev/sdb1 -F32

Eine GPT-Partition vergrößern

per Skript partitionieren

sfdisk

> aptitude install util-linux

Platten-Größe ausgeben (in Sektoren):

> sfdisk -s /dev/sda
41943040

Partitionstabelle ausgeben (kann auch gesichert werden):

> sfdisk -d /dev/sda

Zum partitionieren, muss man die Partitionsdaten zeilenweise eingeben.
Jede Zeile generiert dabei eine Partition.
die Spalten sind durch Komma getrennt und haben folgende Bedeutungen:

  1. Spalte: Startwert in Zylinder
  2. Spalte: Größe in Zylinder
  3. Spalte: Partitionstyp
    1. L → Linux-Partition von Typ 83
    2. S → Swap-Partition von Typ 82
    3. E → erweiterete DOS-Partition von Typ 5
    4. X → erweiterete Linux-Partition von Typ 85
  4. Spalte: Boot-Flag
    1. * → bootfähig
    2. - → nicht bootfähig

diese 40GB-Platte wird mit drei Partitionen versehen:

> sfdisk -s /dev/sda
41943040

> echo -e "0,3000,L,*\n3000,2000,L,-\n5000,200,S,-\n" | sfdisk /dev/sda

> sfdisk -d /dev/sda
# partition table of /dev/sda
unit: sectors

/dev/sda1 : start=        1, size= 48194999, Id=83, bootable
/dev/sda2 : start= 48195000, size= 32130000, Id=83
/dev/sda3 : start= 80325000, size=  3213000, Id=82
/dev/sda4 : start=        0, size=        0, Id= 0

sgdisk

Programm installieren

> aptitude install gdisk

Partitions-Typen anzeigen (wird mit "-t" übergeben):

> sgdisk -L
0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
4100 PowerPC PReP boot     4200 Windows LDM data      4201 Windows LDM metadata
7501 IBM GPFS              7f00 ChromeOS kernel       7f01 ChromeOS root       
7f02 ChromeOS reserved     8200 Linux swap            8300 Linux filesystem    
8301 Linux reserved        8302 Linux /home           8400 Intel Rapid Start   
8e00 Linux LVM             a500 FreeBSD disklabel     a501 FreeBSD boot        
a502 FreeBSD swap          a503 FreeBSD UFS           a504 FreeBSD ZFS         
a505 FreeBSD Vinum/RAID    a580 Midnight BSD data     a581 Midnight BSD boot   
a582 Midnight BSD swap     a583 Midnight BSD UFS      a584 Midnight BSD ZFS    
a585 Midnight BSD Vinum    a800 Apple UFS             a901 NetBSD swap         
a902 NetBSD FFS            a903 NetBSD LFS            a904 NetBSD concatenated 
a905 NetBSD encrypted      a906 NetBSD RAID           ab00 Apple boot          
af00 Apple HFS/HFS+        af01 Apple RAID            af02 Apple RAID offline  
af03 Apple label           af04 AppleTV recovery      af05 Apple Core Storage  
be00 Solaris boot          bf00 Solaris root          bf01 Solaris /usr & Mac Z
bf02 Solaris swap          bf03 Solaris backup        bf04 Solaris /var        
bf05 Solaris /home         bf06 Solaris alternate se  bf07 Solaris Reserved 1  
bf08 Solaris Reserved 2    bf09 Solaris Reserved 3    bf0a Solaris Reserved 4  
bf0b Solaris Reserved 5    c001 HP-UX data            c002 HP-UX service       
ea00 Freedesktop $BOOT     eb00 Haiku BFS             ed00 Sony system partitio
ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition 
fb00 VMWare VMFS           fb01 VMWare reserved       fc00 VMWare kcore crash p
fd00 Linux RAID            

GPT, MBR und alle Partitionen löschen:

> sgdisk -Z /dev/sda

eine Partition auf dem gesammten freien Platz der /dev/sda anlegen:

> sgdisk -n 0:0:+ /dev/sda

der ersten Partition einen Namen geben bzw. den Namen ändern (der Name darf max. nur 23 Zeichen lang sein):

> sgdisk -c 1:"der komplette HDD-Platz" /dev/sda

Partitionstabelle anzeigen

> sgdisk -p /dev/sda
Disk /tmp/test.img: 83886080 sectors, 40.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): BA40255D-D425-4598-ADA3-8187CF621D1A
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 83886046
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        83886046   40.0 GiB    8300  der komplette HDD-Platz

alle Partitionen löschen:

> sgdisk -o /dev/sda

eine Partition (1GB) auf /dev/sda anlegen:

> sgdisk -n 0:0:+1G /dev/sda

nocheine Partition (3GB) auf /dev/sda anlegen:

> sgdisk -n 0:0:+3G /dev/sda

nocheine Partition (9GB) auf /dev/sda anlegen:

> sgdisk -n 0:0:+9G /dev/sda

nocheine Partition (Rest) auf /dev/sda anlegen:

> sgdisk -n 0:0:+26G /dev/sda

Partitionstabelle anzeigen:

> sgdisk -p /dev/sda
...
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  
   2         2099200         8390655   3.0 GiB     8300  
   3         8390656        27265023   9.0 GiB     8300  
   4        27265024        81790975   26.0 GiB    8300  

Partitionen einzeln löschen:

> sgdisk -d 1 /dev/sda
> sgdisk -d 2 /dev/sda
> sgdisk -d 3 /dev/sda
> sgdisk -d 4 /dev/sda

1. Partition (1GB) auf /dev/sda anlegen:

> sgdisk -n 1:0:+1G /dev/sda

2. Partition (3GB) auf /dev/sda anlegen:

> sgdisk -n 2:0:+3G /dev/sda

3. Partition (9GB) auf /dev/sda anlegen:

> sgdisk -n 3:0:+9G /dev/sda

4. Partition (Rest) mit Namen auf /dev/sda anlegen:

> sgdisk -n 4:0:+ -c 4:"der restliche Platz" /dev/sda

Partitionstabelle anzeigen:

> sgdisk -p /dev/sda
...
Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  
   2         2099200         8390655   3.0 GiB     8300  
   3         8390656        27265023   9.0 GiB     8300  
   4        27265024        83886046   27.0 GiB    8300  der restliche Platz

Infos zur 1. Partition anzeigen:

> sgdisk -i 1 /dev/sda
Partition GUID code: 0FC63DAF-8483-4772-8E79-3D69D8477DE4 (Linux filesystem)
Partition unique GUID: 3DF69C8A-20C0-4C6C-9EC6-FDB680B37118
First sector: 2048 (at 1024.0 KiB)
Last sector: 2099199 (at 1.0 GiB)
Partition size: 2097152 sectors (1024.0 MiB)
Attribute flags: 0000000000000000
Partition name: ''

Display current sector alignment value

> sgdisk -D /dev/sda
2048

Convert an MBR or BSD disklabel disk to a GPT disk (MBR → GPT):

> sgdisk -g /dev/sda

Convert disk from GPT to MBR form (GPT → MBR):

> sgdisk -m /dev/sda