Notizen: Hyper-V mit Partitionen > 2TB ; Partition-Alignment

Wenn man Partitionen groesser als 2TB enlegen moechte, muss man GPT Label vergeben. Dazu hatte ich vor einiger Zeit schonmal was geschrieben. Kurzzusammenfassung:

parted /dev/DEVICE
mklabel gpt
quit

Wenn das Device an einer mit Hyper-V virtualisierten VM haengt und man ext4 als Dateisystem verwenden moechte darf dieses aber _nicht_ aus parted heraus erstellt werden, sondern man muss es mit der Option -E nodiscard erstellen (link):

mkfs.ext4 -E nodiscard /dev/DEVICE

Ausserdem gibt es beim Erzeugen von Partitionen mit parted manchmal die folgende Fehlermeldung:

Warning: The resulting partition is not properly aligned for best performance.

Abhilfe schafft wenn man sich da anschaut wo die Partition am besten beginnen soll, ich zitiere hier nun einfach dreist aus dem Blog „Rainbow Chard“ und dem Artikel „How to align partitions for best performance using parted„:

  • Get the alignment parameters for your array (remember to replace sdb with the name of your device as seen by the kernel).
    # cat /sys/block/sdb/queue/optimal_io_size
    1048576
    # cat /sys/block/sdb/queue/minimum_io_size
    262144
    # cat /sys/block/sdb/alignment_offset
    0
    # cat /sys/block/sdb/queue/physical_block_size
    512
  • Add optimal_io_size to alignment_offset and divide the result by physical_block_size. In my case this was (1048576 + 0) / 512 = 2048.
  • This number is the sector at which the partition should start. Your new parted command should look like
    mkpart primary 2048s 100%

    The trailing ‘s’ is important: it tells parted that you’re talking about sectors, not bytes or megabytes.

  • If all went well, the partition will have been created with no warnings. You can check the alignment thusly (replacing ’1′ with the partition number if necessary):
    (parted) align-check optimal 1 
    1 aligned

Linux: Create Partition larger than 2TB

Die Zeiten kleiner Festplatten ist schon lange vorbei, schon vor einiger Zeit schrieb ich darueber, aber finde es nicht so recht im eigenen Blog wieder, deswegen nochmal ein eigener Post dazu. Wichtig ist, dass man mit parted und nicht mit fdisk arbeitet, weil man GPT benoetigt und fdisk das nich kann. Deswegen erstmal parted installieren wenn es noch nicht geschehen ist:

root@desktop:~# aptitude install parted

und dann die Partition anlegen:

root@desktop:~# parted /dev/vda
GNU Parted 2.2
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/vda will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? yes
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 5369GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
 
Number  Start  End  Size  File system  Name  Flags
(parted) unit TB
(parted) mkpart primary 0.00TB 5.37TB
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 5.37TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
 
Number  Start   End     Size    File system  Name     Flags
1      0.00TB  5.37TB  5.37TB  ext4         primary
(parted) quit
Information: You may need to update /etc/fstab.
 
root@desktop:~#

zum Schluss Dateisystem erzeugen und fstab anpassen…

Zum festhalten: parted, LVM, virsh

Um Partitionen groesser als 2TB zu erstellen muss man GPT labels benutzen. fdisk und Konsorten koennen damit nicht umgehen, deswegen nimmt man dafuer parted. Mit den folgenden Befehlen stellt man den Partitionstabellentyp auf gpt um, und erstellt eine Partition ueber die komplette Platte und formatiert diese mit xfs:

  • parted /dev/sdX -> mklabel gpt -> quit
  • parted -s — /dev/sdX mkpart primary 0 -1
  • mkfs.xfs /dev/sdX

Noch kurz die grundlegenden wichtigsten Befehle zum erstellen eines LVM:

  • /dev/sdX als physikalisches Volume initialisieren: pvcreate /dev/sdX
  • erstellen eine Volume Group mit dem Namen VG-NAME: vgcreate VG-NAME /dev/sdX
  • Ansehen kann man sich das dann mit vgscan oder vgs
  • Erstellen eines neuen Volumes mit dem Namen VOLNAME: lvcreate -n VOLNAME –size 10GB VG-NAME
  • Formatieren, mounten, angucken:
    mkfs.ext3 /dev/VG-NAME/VOLNAME
    mkdir /mnt/VOLNAME
    mount /dev/VG-NAME/VOLNAME /mnt/VOLNAME
  • Anzeigen von Logischen Volumes: lvdisplay
  • Vergroessern/Verkleinern eines Volumes:
    lvextend -L+10G /dev/VG-NAME/VOLNAME
    lvreduce -L-10GB /dev/VG-NAME/VOLNAME
    e2fsck -f /dev/VG-NAME/VOLNAME
    resize2fs /dev/VG-NAME/VOLNAME
  • Loeschen von Volumes: lvremove /dev/VG-NAME/VOLNAME

Abschliessend sei noch gesagt, dass virsh echt cool ist. Dabei ist eben festzuhalten, dass das Speichern u Wiederherstellen aller vms (z.B. vor oder nach einem reboot) einfach geht z.B. mit:

  • for i in `virsh list | grep running | awk {‚print $2‘}` ; do virsh save $i /vms/$i ; done
  • for i in `ls /vms` ; do virsh restore /vms/$i ; done

Wenn man mit virsh console VM auf eine Maschine moechte, duerfen dafuer auf dem Gast in der /etc/inittab die Zeilen mit T0 und T1 nicht auskommentiert sein.

Die Infos hier sind von da und da und dem.