:: Home / Informationen / Linux / SAN / Tips und Tricks
Home
Informationen
Linux
Mac OS X
Sun Solaris
Dienstleistungen
Jobs & Karriere
Download
Sitemap
Impressum

Platten scriptgesteuert partionieren mit fdisk


Wenn viele Platten partioniert werden sollen, dann ist es relativ mühsam das Programm fdisk interaktiv zu verwenden. Hier bietet es sich an diese Aufgabe einem Script zu überlassen.

Im ersten Schritt gilt es rauszufinden wie groß die Platte ist, dies kann sehr einfach mit fdisk -l <device> gemacht werden. Die interessante Zahl ist die Anzahl der Zylinder, diese Information findet man in der zweiten Zeile der Ausgabe:
fdisk -l /dev/sda
Disk /dev/sda: 21.4 GB, 21475491840 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System

In diesem Beispiel also 20480 Zylinder. Mit Hilfe einer kleinen Steuerdatei können wir fdisk die notwendigen Eingaben übergeben. Diese Steuerdatei kann mit folgendem Kommando gefüllt werden:
printf "n\np\n1\n1\n" >> /tmp/disk
echo "20480" >> /tmp/disk
echo "w" >> /tmp/disk

Die Steuerdatei hat dann folgenden Inhalt:
n          # neue Partition anlegen
p          # primäre Partition erzeugen
1          # 1. Partition
1          # starten bei Zylinder 1
20480  # enden bei Zylinder 20480
w          # schreiben der Partitionstabelle und beenden von fdisk

Jetzt wird die Steuerdatei an fdisk übergeben mit:
fdisk /dev/sda < /tmp/disk

Ein anschließendens Überpüfen zeigt das alles geklappt hat:
fdisk -l /dev/sda
Disk /dev/sda: 21.4 GB, 21475491840 bytes
64 heads, 32 sectors/track, 20480 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       20480    20971504   83  Linux

Wenn man mehrere Platten zu partionieren hat, dann läßt sich der oben beschriebene Prozess leicht skripten. Im nachfolgenden Beispiel verwenden wir das Skript part_all_disk, zu finden unter Download, um 12 bereitgestellte LUNs zu partionieren. Diese LUNs erscheinen als SCSI-Disks sda bis sdl, wir betrachten hier nur den primären Pfad. Alle LUNs sollen mit einer Linux-Partition vom Typ 83 (Linux), die sich über die gesamte Größe der Platte erstreckt, partioniert werden.
part_all_disk a l    # a ist die erste Platte, l ist die letzte Platte

erledigt diese Aufgabe ohne weiteren Eingriff durch den Administrator.

Software RAID vergrößern


Werden z. B. im Rahmen einer SAN-Migration Daten auf größere Luns migriert, oder defekte Platten durch größere ersetzt, so muß nachträglich die Größe des Software RAIDS angepaßt werden wenn der zusätzliche Speicherplatz genutzt werden soll.

Hierfür sind in Abhängigkeit von der vorhandenen Konfiguration zwei bzw. drei Schritte notwendig.

  1. Software RAID vergrößern
  2. Volume Manager anpassen
  3. Dateisystem vergrößern

Beispiel:

Ausgangssituation mit einem Software RAID /dev/md1 mit 16.1 GB (Lun Größe 21.4 GB)
mdadm -D /dev/md1
/dev/md1:
        Version : 00.90.01
  Creation Time : Tue Apr  1 15:13:13 2008
     Raid Level : raid1
     Array Size : 15727488 (15.00 GiB 16.10 GB)
    Device Size : 15727488 (15.00 GiB 16.10 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Tue May 27 04:02:39 2008
          State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
  Spare Devices : 0

           UUID : fcc0ed77:1c565834:d907d9a0:d0f6a6dc
         Events : 0.1838

    Number   Major   Minor   RaidDevice State
       0     253       11        0      active sync   /dev/dm-11
       1     253       13        1      active sync   /dev/dm-13


Vergrößern des Software RAID auf die maximal verfügbare Größe:

mdadm -G /dev/md1 -z max


Resultat:
mdadm -D /dev/md1
/dev/md1:
        Version : 00.90.01
  Creation Time : Tue Apr  1 15:13:13 2008
     Raid Level : raid1
     Array Size : 20971392 (20.00 GiB 21.47 GB)
    Device Size : 20971392 (20.00 GiB 21.47 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Tue May 27 11:11:32 2008
          State : clean, resyncing
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

 Rebuild Status : 76% complete

           UUID : fcc0ed77:1c565834:d907d9a0:d0f6a6dc
         Events : 0.1838

    Number   Major   Minor   RaidDevice State
       0     253       11        0      active sync   /dev/dm-11
       1     253       13        1      active sync   /dev/dm-13

Im nächsten Schritt wird die Größe der Volumegroup angepaßt und das Logical Volume vergrößert.

vgdisplay sanvg
  --- Volume group ---
  VG Name               sanvg
  System ID             myserver1207056129
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  17
  VG Access             read/write
  VG Status             resizable
  MAX LV                256
  Cur LV                1
  Open LV               1
  Max PV                256
  Cur PV                1
  Act PV                1
  VG Size               14.94 GB
  PE Size               32.00 MB
  Total PE              478
  Alloc PE / Size       318 / 9.94 GB
  Free  PE / Size       160 / 5.00 GB
  VG UUID               pZKlMY-zfDv-8rsY-dFwP-UY5r-dJj4-05M7xY


zeigt das die Volume Group noch die alte Größe des Software RAID verwendet. Mit Hilfe von pvresize teilen wir dem Volume Manager mit das sich die Größe geändert hat.

pvresize /dev/md1
  Physical volume "/dev/md1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Ein erneuter Blick auf die Volume Group sanvg zeigt das die Änderung unmittelbar erfolgt ist.

vgdisplay sanvg
  --- Volume group ---
  VG Name               sanvg
  System ID             myserver1207056129
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  18
  VG Access             read/write
  VG Status             resizable
  MAX LV                256
  Cur LV                1
  Open LV               1
  Max PV                256
  Cur PV                1
  Act PV                1
  VG Size               19.94 GB
  PE Size               32.00 MB
  Total PE              638
  Alloc PE / Size       318 / 9.94 GB
  Free  PE / Size       320 / 10.00 GB
  VG UUID               pZKlMY-zfDv-8rsY-dFwP-UY5r-dJj4-05M7xY

Jetzt muss noch die Größe der Logical Volume angepasst werden.

lvresize -l +320 /dev/sanvg/sanlv
  Extending logical volume sanlv to 19.94 GB
  Logical volume sanlv successfully resized

Und als letzter Schritt das Dateisystem vergrößert werden, dies wird mit Hilfe des ext2online Befehles gemacht. Kommt es dabei zu einer Fehlermeldung wie dieser
ext2online /dev/sanvg/sanlv
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
ext2online: group 0, block 2 not reserved

ext2online: unable to resize /dev/mapper/sanvg-sanlv

dann muß das Dateisystem umounted werden und die Vergrößerung mit Hilfe von resize2fs durchgeführt werden.

umount /dev/sanvg/sanlv

e2fsck -f /dev/sanvg/sanlv
e2fsck 1.35 (28-Feb-2004)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sanvg/sanlv: 20/2084864 files (5.0% non-contiguous), 2393867/4194304 blocks

resize2fs /dev/sanvg/sanlv
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/sanvg/sanlv to 5226496 (4k) blocks.
The filesystem on /dev/sanvg/sanlv is now 5226496 blocks long.

mount /dev/sanvg/sanlv

Jetzt steht der maximale Speicherplatz zur Verfügung.

Login
Suchen
Links
Last update:27.05.2008 12:20