4.7 KiB
4.7 KiB
Fonctionnalité: Gestion des Disques et Partitions
Vue d'ensemble
Une nouvelle fonctionnalité de monitoring des disques et partitions a été ajoutée au projet. Elle utilise la commande lsblk --json pour récupérer les informations sur les disques et affiche visuellement le taux de remplissage avec des barres de progression en couleur.
Modifications apportées
Backend (FastAPI)
1. Service système - backend/app/services/system.py
Ajouts:
- Imports:
json,subprocess,Optional,Dict,Any - Classe
BlockDevicePartition: Représente une partition avec ses informations - Classe
BlockDevice: Représente un disque avec ses partitions - Classe
BlockDevicesInfo: Contient la liste complète des disques et les stats globales - Méthode
format_bytes(): Convertit les bytes en format lisible (B, KB, MB, GB, TB, PB) - Méthode
get_block_devices():- Exécute
lsblk --json --bytes - Parse la sortie JSON
- Récupère les informations d'utilisation via
psutil.disk_usage() - Retourne une structure complète avec disques, partitions et statistiques
- Exécute
2. Endpoint API - backend/app/api/endpoints/system.py
Ajouts:
- Import de
BlockDevicesInfo - Route GET
/system/disks(avec authentification)- Retourne les informations complètes des disques et partitions
- Utilise le service
SystemService.get_block_devices()
Frontend (Vue.js)
1. Nouvelle vue - frontend/src/views/DisksView.vue
Fonctionnalités:
-
Section des statistiques globales:
- Taille totale de tous les disques
- Espace total utilisé
- Espace total disponible
-
Affichage par disque:
- Nom du disque (/dev/xxx)
- Type (disk, loop, etc.)
- Taille totale
- Point de montage (si applicable)
- Barre de progression avec dégradé de couleur:
- Vert (< 50%)
- Jaune (50-75%)
- Orange (75-90%)
- Rouge (≥ 90%)
-
Affichage des partitions:
- Liste des partitions pour chaque disque
- Point de montage de chaque partition
- Barres de progression individuelles
- Espace utilisé et disponible pour chaque partition
-
Auto-rafraîchissement: Les données se rafraîchissent automatiquement toutes les 30 secondes
2. Mise à jour du routeur - frontend/src/router/index.js
- Import de
DisksView - Ajout de la route
/disks(avec authentification requise)
3. Mise à jour de la navigation - frontend/src/App.vue
- Ajout d'un lien dans la sidebar vers la nouvelle page "Disques et Partitions"
- Icône: 💾
- Surlignage actif de la page courante
Structure des données retournées
{
"devices": [
{
"name": "sda",
"type": "disk",
"size": "477.53 GB",
"used": "250.15 GB",
"available": "227.38 GB",
"percent_used": 52.4,
"mountpoint": null,
"partitions": [
{
"name": "sda1",
"type": "part",
"size": "477.53 GB",
"used": "250.15 GB",
"available": "227.38 GB",
"percent_used": 52.4,
"mountpoint": "/"
}
]
}
],
"total_size": "477.53 GB",
"total_used": "250.15 GB",
"total_available": "227.38 GB"
}
Utilisation
- Accès à la page: Connectez-vous et cliquez sur "💾 Disques et Partitions" dans le menu latéral
- Interprétation des barres:
- La couleur indique le taux d'utilisation
- La longueur de la barre représente le pourcentage d'utilisation
- Auto-rafraîchissement: Les données sont automatiquement mises à jour toutes les 30 secondes
Dépendances
Backend
psutil: Récupération des statistiques d'utilisationsubprocess: Exécution de la commandelsblkjson: Parsing de la sortie JSON
Frontend
- Vue Router: Navigation
- Pinia (auth store): Gestion de l'authentification
Considérations de sécurité
- La route
/system/disksrequiert une authentification - La commande
lsblkest exécutée avec un timeout de 10 secondes - Gestion des erreurs: Si
lsblkéchoue, une liste vide est retournée - Les permissions de disque sont respectées via
psutil
Gestion des erreurs
- Si
lsblkn'est pas disponible: retour d'une liste vide - Si le parsing JSON échoue: retour d'une liste vide
- Si
psutil.disk_usage()échoue: les stats restent à 0 - Les partitions inaccessibles sont ignorées avec un message du système
Améliorations futures possibles
- Graphiques d'historique de l'utilisation
- Alertes si l'utilisation dépasse un certain seuil
- Détails supplémentaires (filesystem type, UUID, etc.)
- Gestion des snapshots LVM
- Support pour les systèmes sans
lsblk(fallback surfdiskouparted) - Export des données en CSV/JSON
- Tri et filtrage des disques/partitions