Publié le: 2013-10-07

Resize the filesystem

Le système de fichiers de FreeBSD est particulier et nécessite quelques précautions. Contrairement à un système de fichiers classique, le système de fichiers des BSD se divise en partitions puis en sous partitions. FreeBSD utilise le modèle de partitions GPT et un framework GEOM afin de gérer ces partitions. Chaque partition GPT est composée d’un bsdlabel contenant les partitions réelles. On a ainsi le modèle suivant:

  • da0 (disque dur)
    • da0s1 (partition GPT 1)
      • da0s1a (partition BSD 1)
      • da0s1b (partition BSD 2)

Redimensionner le disque dur

Dans un environnement virtualisé on peut être amené à étendre un disque pour diverses raisons. Dans un premier temps, agrandissez le disque systèmevia votre système de virtualisation favori. Ensuite, démarrez sur un CD d’installation de FreeBSD et passez en mode shell.

Agrandir les slices GPT

La première étape consiste à agrandir vos slices GPT. Si vous n’avez qu’un slice, cela se fait simplement (autrement il faudra utiliser un second disque où placer les slices qui suivent celui que vous voulez agrandir). Tout d’abord vérifions les disques et slices GPT présents:

# gpart show
=>      63  31457217  da0  GPT  (50G)
        63  31455207    1  freebsd  [active]  (15G)
  31455270      73402330   - free -  (35G)

=>       0  31455207  da0s1  BSD  (15G)
         0  30055207      1  freebsd-ufs  (14G)
  30055207   1400000      2  freebsd-swap  (683M)

La partition swap va nous ennuyer. On la supprime:

# gpart delete -i 2 da0s1

Maintenant redimensionnons la partition GPT afin d’utiliser l’ensemble du disque

# gpart resize -i 1 da0
# gpart show
=>       63  104857537  da0  MBR  (50G)
         63  104857515    1  freebsd  [active]  (50G)
  104857578         22       - free -  (11k)

Agrandir le filesystem est plus délicat. Dans un premier temps on agrandit le slice à la taille stipulée dans la MBR

# growfs da0s1
# gpart show
=>       63  104857537  da0  MBR  (50G)
         63  104857515    1  freebsd  [active]  (50G)
  104857578         22       - free -  (11k))

=>       0  104857515  da0s1  BSD  (15G)
         0  30055207      1  freebsd-ufs  (14G)
  30055207   74802308        - free -  (35G)

Ensuite on termine en agrandissant de le filesystem UFS

# gpart resize -i 1 da0s1
# gpart show
=>       63  104857537  da0  MBR  (50G)
         63  104857515    1  freebsd  [active]  (50G)
  104857578         22       - free -  (11k)

=>       0  104857515  da0s1  BSD  (50G)
         0  104857515      1  freebsd-ufs  (50G)