18 Jul 2025, 00:00

Accès à des partages SMB depuis Windows 11 en tant qu'invité

La gestion des connexions SMB a changé depuis Windows 11 Pro 24H2.
Elle avait déjà changé pour les versions Education, Pro for workstations, Enterprise de Windows 10 et 11.
Elle reste similaire à avant pour Windows 11 Home.

En conséquence de ces changements, Windows exige maintenant que les connexions SMB soient signées, et la bascule sur un accès invité en cas de défaut de signature est désactivée.
Article chez MS

Dans mon cas, il s’agit de l’accès vers un serveur Samba, dont l’accès invité fonctionne correctement et nativement depuis un poste Windows 10.
Avec Windows 11 Pro 24H2, je suis confronté aux 2 problèmes : la signature de la connexion SMB, et l’accès en tant qu’invité.

À noter que la solution ne semble pas fonctionner pour des profils cloud, que pour les utilisateurs locaux du poste. Question de configuration ?

Accès SMB non signé

https://learn.microsoft.com/en-us/windows-server/storage/file-server/smb-signing

Par défaut, Windows 11 Pro (au moins 24H2) exige que les connexions SMB soient signées.
La fonctionnalité de signature ne fonctionne pas avec l’accès invité, il est donc indispensable de la désactiver (source chez MS).

Cela peut se vérifier par la commande Powershell
Get-SmbClientConfiguration | findstr req.*sign
qui doit nous indiquer la valeur de RequireSecuritySignature, probablement à True.

Le problème se manifeste par “Une erreur étendue s’est produite” (si accès depuis la fenêtre “Exécuter”) ou “Windows ne peut pas accéder à my-srv” (si accès depuis la barre d’adresse de l’explorateur).

Pour ceci, j’ai 3 possibilités : le registre, les stratégies locales, ou Powershell.
Ces 3 possibilités sont équivalentes : l’activation (ou désactivation) par une méthode se répercute de manière visible sur les autres méthodes (il faut toutefois fermer/rouvrir les stratégies locales pour actualiser).

Registre :
HKLM\SYSTEM\CurrectControlSet\Services\LanmanWorkstation\Parameters et définir la valeur DWORD
RequireSecuritySignature
à 0

Stratégies locales :
gpedit.msc
Config ordi -> Paramètres Windows -> Paramètres de sécurité -> Stratégies locales -> Options de sécurité
Client réseau Microsoft : communications signées numériquement (toujours)

Powershell :
Set-SmbClientConfiguration -RequireSecuritySignature $false -Force

Connexion en tant qu’invité

Sources pour cette partie :

https://memo.raphaelguetta.fr/post/server-2019-access-guest-share/
https://learn.microsoft.com/en-us/windows-server/storage/file-server/enable-insecure-guest-logons-smb2-and-smb3
https://forum.qnap.com/viewtopic.php?t=175771

Une fois la connexion non-signée autorisée, lorsque je cherche à me connecter à mon serveur, je suis accueilli par une invite d’authentification, sans possibilité de me connecter en invité (alors que mon serveur l’accepte). Ceci car l’accès à des partages sans authentification est désactivé par défaut.

On peut vérifier en lançant la commande Powershell
Get-SmbClientConfiguration | findstr /I enablei
qui nous retourne la valeur de EnableInsecureGuestLogons, probablement False.

Comme pour les signatures, on peut contrôler ce paramètre par le registre, Powershell, ou les stratégies locales.
La stratégie locale a toutefois priorité ! Si elle est est configurée (activée ou désactivée), alors la valeur de l’entrée de registre n’aura aucun impact.
En ce cas, le résultat de Get-SmbClientConfiguration affichera la configuration effective, indépendamment de la valeur de registre.
Set-SmbClientConfiguration continuera de modifier la valeur de registre, mais n’aura pas d’impact sur la stratégie locale.

Registre/Powershell

On peut au choix ouvrir l’éditeur de registre, ouvrir la clé
HKLM\SYSTEM\CurrectControlSet\Services\LanmanWorkstation\Parameters
et ajouter/éditer la valeur DWORD AllowInsecureGuestAuth en la passant à 1.
Il est également possible de lancer la commande Powershell
Set-SmbClientConfiguration -EnableInsecureGuestLogons $true -Force
qui aura pour résultat de créer/modifier cette même valeur registre.

Stratégies locales

gpedit.msc
Configuration ordinateur -> Modèles d'administration -> Réseau -> Station de travail LANMAN
Activer les ouvertures de session invité non sécurisées -> Activé

18 Jul 2025, 00:00

RDP sur un poste avec un compte Microsoft

Poste joint à AzureAD

Le compte est de la forme nom.prenom@domain.com.
Un whoami sur le poste cible renvoie azuread\nomprenom .

Si le paramètre NLA est activé, seul un poste Windows pourra y accéder ; freerdp ne semble pas gérer l’authenfication Kerberos pour le moment ? Voir cette issue.
Pour se connecter depuis Windows, lancer mstsc.exe, aller dans l’onglet Avancé puis Cocher “Utiliser un compte web pour vous connecter à l’ordinateur distant”. On peut laisser le mot de passe vide.
Une fenêtre de connexion web va s’ouvrir.
La connexion reste ensuite établie, et ne demande plus le mot de passe.

On peut également désactiver NLA (sur le poste cible, paramètres avancés du système -> Utilisation à distance).
En ce cas on peut se connecter depuis FreeRDP avec
xfreerdp /v:10.0.10.100 /d:AzureAD /u:nomprenom /p:mypassword /sec:tls
ou encore
xfreerdp /v:10.0.10.100 /u:"AzureAD\nomprenom" /p:mypassword /sec:tls
ou encore
xfreerdp /v:10.0.10.100 /u:AzureAD\\nomprenom /p:mypassword /sec:tls

Compte perso ?

“MicrosoftAccount\nomprenom” ??

18 Jul 2025, 00:00

Windows LAPS & Intune

Ne pas confondre Microsoft LAPS (=legacy LAPS), ancienne génération pour le on-prem, et Windows LAPS pour le cloud (entra joined et hybrid-joined)

Présentation

LAPS, Local Admin Password Solution, permet de centraliser la gestion des mots de passe des admins locaux sur les postes.

Entra

https://learn.microsoft.com/en-us/entra/identity/devices/howto-manage-local-admin-passwords

Windows LAPS est inclus dans Entra Free, mais des fonctionnalités en + nécessitent d’autres licences (administrative units, custom roles, Conditional Access, and Intune)

Pour l’activer, aller dans
Entra -> Devices -> Overview -> Device settings
et l’activer

Intune

https://learn.microsoft.com/en-us/intune/intune-service/protect/windows-laps-overview

16 Jul 2025, 00:00

Configs Intune pour Office

Configurations

Il y’a plusieurs moyens de configurer les applications Office :

  • par des paramètres de configuration lors de l’installation (dans le fichier XML ou dans le configurateur)

    • permet de définir des clés de registre HKCU, dans chaque session, qui paramètrent le profil Outlook (lors de sa création uniquement)
    • si le profil Outlook existe déjà, ces clés n’ont aucun effet
    • laisse la possibilité à l’utilisateur final de changer les paramètres
  • par la configuration des appareils par Intune

    • peut s’appliquer à des utilisateurs ou des appareils (mais certains paramètres de configuration ne fonctionnent qu’avec un seul type d’affectation)
  • par le menu Intune -> Applications -> Gérez les applications -> Stratégies pour les applications Microsoft 365

    • s’applique uniquement à des utilisateurs
    • ne permet PAS la modification par l’utilisateur final
    • me semble particulièrement lent à être déployé
  • par des entrées de registre écrites manuellement (script ou autre)

Selon les cas, on préfèrera l’une ou l’autre de ces possibilités.

Installation

Dans Intune -> Applications , si on choisit “Créer”, dans “Type d’application” on trouve “Applications Microsoft 365 pour Windows 10 et versions ultérieures”.
On peut choisir entre un configurateur, ou bien l’édition d’un fichier XML.

Dans mon expérience, si on passe par le configurateur, à chaque ouverture de session, il y’a une bonne utilisation CPU/disque liée à Office Click2Run, comme si la suite se réinstallait à chaque démarrage.
Ce problème ne semble pas se produite avec la version XML, qui de + permet + de souplesse dans l’installation et la configuration.

Fichier XML

https://learn.microsoft.com/fr-fr/microsoft-365-apps/deploy/office-deployment-tool-configuration-options

Un assistant est dispo ici pour en créer un :
https://config.office.com/deploymentsettings

Pour un ordi partagé :

<Property Name="SharedComputerLicensing" Value="1"/>

Voir les implications d’un ordi partagé ici :
https://learn.microsoft.com/en-us/microsoft-365-apps/licensing-activation/overview-licensing-activation-microsoft-365-apps
https://learn.microsoft.com/fr-fr/microsoft-365-apps/licensing-activation/overview-shared-computer-activation
Il faut notamment que chaque utilisateur ait une licence d’utilisation partagée, qui n’est inclus que dans Business Premium.

Quelques options pratiques :

<AppSettings>

<Setup Name="Company" Value="Ma Super Entreprise"/>

<User Key="software\microsoft\office\16.0\outlook\cached mode" Name="downloadsharedfolders" Value="0" Type="REG_DWORD" App="outlk16" Id="L_Downloadsharednonmailfolders"/>

<User Key="software\microsoft\office\16.0\excel\options" Name="defaultformat" Value="51" Type="REG_DWORD" App="excel16" Id="L_SaveExcelfilesas"/>
<User Key="software\microsoft\office\16.0\powerpoint\options" Name="defaultformat" Value="27" Type="REG_DWORD" App="ppt16" Id="L_SavePowerPointfilesas"/>
<User Key="software\microsoft\office\16.0\word\options" Name="defaultformat" Value="" Type="REG_SZ" App="word16" Id="L_SaveWordfilesas"/>

<User Key="software\microsoft\office\16.0\outlook\autodiscover" Name="zeroconfigexchange" Value="1" Type="REG_DWORD" App="outlk16" Id="L_AutomaticallyConfigureProfileBasedOnActive"/>

   <User Key="software\microsoft\office\16.0\outlook\cached mode" Name="syncwindowsetting" Value="0" Type="REG_DWORD" App="outlk16" Id="L_CachedExchangeModeSyncSlider" />
    <User Key="software\microsoft\office\16.0\outlook\cached mode" Name="syncwindowsettingdays" Value="14" Type="REG_DWORD" App="outlk16" Id="L_CachedExchangeModeSyncSlider" />

</AppSettings>

Chaque bloc permet respectivement :

  • de définir le nom de l’entreprise
  • de préconfigurer le non-télechargement des dossiers mails partagés
  • de définir le format de fichier Office par défaut
  • d’inscrire automatiquement l’adresse mail de login dans Outlook
  • de définir l’intervalle de mise en cache par défaut (syncwindowsetting définit le nombre de mois, syncwindowsettingdays définit le nombre de jours)

Exemple complet de fichier XML (configuration ordi partagé, 1 mois de cache par défaut) :

<Configuration ID="c7f365bb-45f6-44a4-825f-751611bba3f5">
  <Info Description="Pas de New Outlook&#xA;Ordi partag�&#xA;D�sinstalle les applis MSI" />
  <Add OfficeClientEdition="64" Channel="SemiAnnual">
    <Product ID="O365BusinessRetail">
      <Language ID="fr-fr" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="Lync" />
      <ExcludeApp ID="OutlookForWindows" />
    </Product>
  </Add>
  <Property Name="SharedComputerLicensing" Value="1" />
  <Updates Enabled="TRUE" />
  <RemoveMSI />
  <AppSettings>
    <Setup Name="Company" Value="Ma Super Entreprise" />

    <User Key="software\microsoft\office\16.0\excel\options" Name="defaultformat" Value="51" Type="REG_DWORD" App="excel16" Id="L_SaveExcelfilesas" />
    <User Key="software\microsoft\office\16.0\powerpoint\options" Name="defaultformat" Value="27" Type="REG_DWORD" App="ppt16" Id="L_SavePowerPointfilesas" />
    <User Key="software\microsoft\office\16.0\word\options" Name="defaultformat" Value="" Type="REG_SZ" App="word16" Id="L_SaveWordfilesas" />

    <User Key="software\microsoft\office\16.0\outlook\cached mode" Name="downloadsharedfolders" Value="0" Type="REG_DWORD" App="outlk16" Id="L_Downloadshardnonmailfolders" />

   <User Key="software\microsoft\office\16.0\outlook\cached mode" Name="syncwindowsetting" Value="1" Type="REG_DWORD" App="outlk16" Id="L_CachedExchangeModeSyncSlider" />
    <User Key="software\microsoft\office\16.0\outlook\cached mode" Name="syncwindowsettingdays" Value="0" Type="REG_DWORD" App="outlk16" Id="L_CachedExchangeModeSyncSlider" />

    <User Key="software\microsoft\office\16.0\outlook\autodiscover" Name="zeroconfigexchange" Value="1" Type="REG_DWORD" App="outlk16" Id="L_AutomaticallyConfigureProfileBasedOnActive"/>

  </AppSettings>
  <Display Level="None" AcceptEULA="TRUE" />
</Configuration>

Activation automatique

En Europe, l’activation automatique d’Office est désactivée en raison du Digital Market Act. Il est obligatoire de s’identifier manuellement pour que la licence soit reconnue.
Si on lance directement une appli Office, il faut entrer mail/pass à la main.
Si on lance edge, on peut établir la connexion juste en validant une fenêtre, et la connexion sera répercutée sur Office.

Pour forcer la connexion automatique, on peut soit modifier un fichier système comme indiqué dans ce lien :
https://call4cloud.nl/continue-to-sign-in-prompt-sso-dma/

soit désactiver la fonctionnalité de vérification de la zone géographique comme indiqué sur ce lien :
https://call4cloud.nl/fix-continue-to-sign-in-prompt-dma-sso-compliance/
Il suffit d’ajouter le script Remediatesso-2.ps1 dans les scripts de plateforme (PAS dans le contexte utilisateur).
J’ai mirroré ici le script et l’outil ViveTool utilisé dans ce tuto.

Script en question, copié-collé du site call4cloud.nl :

$downloadUrl = "https://github.com/thebookisclosed/ViVe/releases/download/v0.3.3/ViVeTool-v0.3.3.zip"  # URL to download ViVe tool
$tempPath = "C:\Windows\Temp"
$viveToolZip = "$tempPath\ViVeTool.zip"
$viveToolDir = "$tempPath\ViVeTool"
New-Item -Path $viveToolDir -ItemType Directory -Force | Out-Null

$viveToolExe = "$viveToolDir\ViVeTool.exe"
$featureIds = @(47557358, 45317806)


# Ensure ViVeTool exists
if (-not (Test-Path $viveToolExe)) {
    Invoke-WebRequest -Uri $downloadUrl -OutFile "$tempPath\ViVeTool.zip"
    Expand-Archive -Path "$tempPath\ViVeTool.zip" -DestinationPath $viveToolDir -Force
    Write-host "Downloaded and extracted ViVeTool."
} else {
    Write-host "ViVeTool already exists."
}
# disable features
foreach ($featureId in $featureIds) {
    Write-host "Disabling feature with ID $featureId."
& "$viveToolDir\ViveTool.exe" /disable /id:$featureId
}
 
# Query status of features
foreach ($featureId in $featureIds) {  
$queryresult = & "$viveToolDir\ViveTool.exe" /query /id:$featureId  
Write-host $queryresult  
}

Outlook

Téléchargement des dossiers partagés

Le but est de contrôler le paramètre
Fichiers de données -> choisir -> Paramètres -> Avancé -> Télécharger les dossiers partagés

Via install

On peut contrôler ce paramètre lors de l’install, via le fichier XML de déploiement d’Office :

<AppSettings>
<User Key="software\microsoft\office\16.0\outlook\cached mode" Name="downloadsharedfolders" Value="0" Type="REG_DWORD" App="outlk16" Id="L_Downloadshardnonmailfolders" />
</AppSettings>

Ceci permet de créer la clé de registre sous HKCU. Si celle-ci est présente lors de la création du profil Outlook, l’option “Télécharger les dossiers partagés” ne sera pas activée.
Toutefois, cette clé n’a aucun effet si le profil existe déjà.

Le paramétrage reste modifiable par l’utilisateur final.

Stratégies MS365

Télécharger les dossiers partagés extérieurs à la messagerie
-> Désactivé

Ceci forcera la fonctionnalité à être désactivée dans Outlook, et ne sera PAS réactivable par l’utilisateur final.
Si on supprime l’utilisateur de la liste d’inclusion, il devrait finir par retrouver le contrôle de ce paramètre, mais cela peut prendre plusieurs heures.

Attention, le paramètre Désactiver la mise en cache des dossiers de courrier partagés semble gérer autre chose, il n’a pas d’effet pour ce besoin précis.

Configuration de l’appareil

Microsoft Outlook 2016 -> Paramètres du compte -> Exchange -> Mode Exchange mis en cache -> Download shared non-mail folders

Période de mise en cache

Stratégies MS 365 -> Paramètres de synchronisation du mode Exchange mis en cache

Empêche l’utilisateur final de changer la durée.

Connexion automatique à Outlook

Par défaut, au lancement d’Outlook, il faut valider manuellement l’adresse pour ajouter le compte.
On peut paramétrer Outlook pour qu’il ajoute automatiquement l’adresse du compte utilisateur.

2 options existent :

  • config auto de chaque profil créé avec l’adresse mail
  • config auto uniquement du 1e profil créé ; les suivants proposeront d’entrer une adresse mail

La 2e option me semble + souple, je présente donc celle-là.

Par la config de l’appareil

Automatically configure only the first profile based on Active Directory primary SMTP address

19 May 2025, 00:00

Configurations Intune

Propriétaire

Le propriétaire d’un appareil a certaines possibilités en +, comme gérer les applications dans le Portail d’entreprise.

On peut modifier ou supprimer ce propriétaire :
Intune -> Appareils -> Tous les appareils -> choisir l'appareil -> Propriétés -> Changer (ou Supprimer) l'utilisateur principal

Si aucun propriétaire n’est affecté à un ordi, il sera considéré comme un ordi partagé.

Office

intune-configs-office.html

Installation d’applications

Installs MSI

https://www.it-connect.fr/intune-comment-deployer-une-application-au-format-msi/

Télécharger le fichier MSI.
Identifier le paramètre d’installation silencieuse en lançant my-installer.msi /?.
Par exemple, pour 7zip, c’est /quiet.

Aller sur le portail Intune -> Applications -> Windows puis Créer.
Type : application métier
Choisir le fichier MSI précédemment téléchargé
Renseigner un “Nom de l’éditeur” (par exemple 7-zip)
Choisir un contexte d’installation (uniquement la session de l’utilisateur, ou bien au niveau de la machine) ; parfois cette option n’est pas dispo
“Ignorer la version de l’application” permet d’installer les applications qui se mettront à jour toutes seules (ex : Firefox, Chrome…)
On place le flag silencieux dans “Arguments de ligne de commande”

Dans l’écran suivant, on choisit les affectations souhaitées.
“Obligatoire” signifie que l’appli sera forcément installée.
“Disponible” signifie que l’appli est disponible dans le “Portail d’entreprise” pour que les utilisateurs qui le désirent puissent l’installer.
“Désinstaller” sert à forcer la sésinstallation de l’appli.

Quelques (dizaines de) minutes après la validation, l’appli devrait se retrouver sur les postes.

Win32 apps

Permet de déployer tout type de programme personnalisé, notamment des .exe et des scripts.
Doit être packagé en un fichier .intunewin. Ceci se fait avec IntuneWinAppUtil.

Création du fichier .intunewin

On met tous les fichiers nécessaires dans un dossier, par exemple .\0-Input.
Il faut spécifier un fichier, qui est celui qui sera exécuté, c’est le “setup file”.
On spécifie un dossier de sortie qui stockera le fichier résultant.

\IntuneWinAppUtil.exe -c <setup_folder> -s <setup_file> -o <output_folder>

typiquement
\IntuneWinAppUtil.exe -c .\0-Input -s .\Install.ps1 -o .\1-Output

Création du déploiement

Dans le centre d’admin Intune, aller dans Apps -> Windows -> Create -> Windows apps (Win32)
Définir un nom, une description, un éditeur.

Il faut alors définir la commande à lancer. Ici, on lance un script Powershell, donc on met :
%windir%\sysnative\WindowsPowerShell\v1.0\powershell.exe -Executionpolicy Bypass .\MyScript.ps1

En commande désinstallation, on met
%windir%\sysnative\WindowsPowerShell\v1.0\powershell.exe -Executionpolicy Bypass .\Uninstall.ps1

Les règles de détection permettent au système de savoir que l’application a été installée.
Il est obligatoire d’en préciser au moins une.
En ce cas, comme on modifie le registre, on vérifie l’existence d’une ruche.
On définit le chemin à rechercher (par exemple HKEY_CURRENT_USER\SOFTWARE\0_TEST).

Scripts

Remediations

https://learn.microsoft.com/fr-fr/intune/intune-service/fundamentals/remediations

Nécessite une licence Windows Enterprise (standalone, ou incluse dans Microsoft 365 F3, E3 ou E5)

Définition automatique du domaine de connexion

Permet de n’avoir besoin de taper que “user” sur l’écran de connexion Windows, plutôt que “user@mondomaine.com”.
Note : taper uniquement “user” semble fonctionner si le profil a déjà été créé.
Mais pour une première ouverture, il faut taper l’UPN complet.

Pour éviter ça, on peut définir un domaine par défaut, qui sera appelé si on ne tape pas de “@mondomaine.com”.

Intune -> Appareils -> Configuration -> Créer -> Nouvelle stratégie
Win 10 et ultérieurs -> Modèle -> Restrictions d’appareil
Nommer la configuration
Section “Mot de passe” -> “Domaine de locataire Microsoft Entra préféré”
entrer mondomaine.com

Affecter les postes souhaités.
On peut laisser vide “Régles d’applicabilité”.

Une fois appliqué, on verra (entre autres) la clé de registre HKLM\SOFTWARE\Policies\Microsoft\AzureAdAccount et la valeur PrefferedTenantDomainName.

Si on souhaite se connecter sur le poste avec un utilisateur local, on peut utiliser la syntaxe
.\admin

RDP

Si on essaye d’accéder en RDP à un poste qui n’est pas joint à Entra, et qui n’a qu’un utilisateur local (par exemple admin), le domaine de connexion sera automatiquement ajouté au username entré, soit admin@mondomaine.com, ce qui ne fonctionnera pas. Pour éviter ceci, on peut utiliser la syntaxe
remotecomputer\admin
Mais ceci nécessite de connaître et taper le hostname du poste distant, ce qui n’est pas commode. Essayer en ce cas la syntaxe
local\admin
(voir si ça fonctionne ?)

Suppression

Selon mes tests, il suffit d’arrêter d’appliquer la stratégie, et le paramétrage finit par disparaître du poste.
Mais ce post indique quelques entrées de registre si ceci ne suffisait pas :
https://community.spiceworks.com/t/removing-preferred-aad-tenant-domain-name/933841/2

Config de Windows Hello

Windows Hello Entreprise -> Utiliser Windows Hello for business (utilisateurs)

Windows Hello Entreprise -> Utiliser Windows Hello pour les entreprises (appareils)

Windows Hello peut aussi être complètement désactivée au niveau du tenant

Afficher une liste d’utilisateurs sur l’écran de connexion

Devices -> Configuration profile
Settings Catalog
Chercher
“Enumerate local users on domain-joined computers”
L’appliquer au niveau du poste.

Map drives

Définition du label

https://www.reddit.com/r/PowerShell/comments/44rzzb/cannot_label_mapped_network_drive_with_newpsdrive/

$Letter = "H"
$Label = "Compta"
$objShell = New-Object -ComObject 'Shell.Application'
$objShell.NameSpace("$($Letter):").Self.Name = "$Label"

PC partagé

PC partagé ->

LAPS

https://learn.microsoft.com/en-us/intune/intune-service/protect/windows-laps-overview
https://learn.microsoft.com/en-us/intune/intune-service/protect/windows-laps-policy

https://www.it-connect.fr/tuto-intune-configuration-windows-laps/

Autoriser scripts Powershell

https://www.dmtt.blog/post/set-the-powershell-execution-policy-using-an-intune-configuration-profile

Appareils -> Configuration -> Nouvel élément
Modèles d’administration -> Composants Windows -> Windows Powershell -> Turn On script execution (existe aussi en version user)

19 May 2025, 00:00

Intune

Présentation

MDM = Mobile Device Management = GPM = Gestion des Périphériques Mobiles
-> administration centralisée des appareils (façon GPO)

Centre d’administration :
https://intune.microsoft.com

https://learn.microsoft.com/en-us/windows/configuration/provisioning-packages/how-it-pros-can-use-configuration-service-providers

Choix du MDM

Plusieurs possibilités pour la gestion des appareils :

  • Intune (requiert licence Intune)
  • Basic Mobility and Security (capacité d’aministration + restreintes,mais permet d’administrer les appareils dont les users n’ont que des licences Basic ou Standard)
  • 3d party tools je suppose

Ce MDM se définit au niveau du tenant.
On peut voir le MDM actuel dans le centre d’admin Intune -> Administration de locataire -> Détails du locataire -> Autorité MDM
S’il est sur “Office 365 Mobile”, il faut le définir sur Intune.

On peut définir son MDM ici :
https://intune.microsoft.com/#view/Microsoft_Intune_Enrollment/ChooseMDMAuthorityBlade

Il apparaît alors comme Autorité MDM “Microsoft Intune”

https://learn.microsoft.com/en-us/intune/intune-service/fundamentals/mdm-authority-set

Pour que les appareils appliquent les stratégies paramétrées sur Intune, ils doivent impérativement avoir “Intune” défini en MDM !

Basic Mobility and security

Si on souhaite juste utiliser la gestion gratuite

Il faut commencer par activer la gestion des appareils :
https://learn.microsoft.com/en-US/microsoft-365/admin/basic-mobility-security/set-up?view=o365-worldwide#activatemdm

Activate Basic Mobility and Security
https://compliance.microsoft.com/basicmobilityandsecurity

Dans Entra -> Appareils, on verra le MDM défini à “Office 365 Mobile”

Licences

Nécessaires pour utiliser Intune.
Licence incluse dans les abonnements E3, 365 Business Premium (PAS Standard), entre autres.
Possible de prendre une licence autonome (Microsoft Intune Plan 1, à 7.50€/mois)

https://learn.microsoft.com/en-us/mem/intune/fundamentals/licenses

Embarquement (enrollment) des appareils

https://learn.microsoft.com/fr-fr/windows/client-management/mdm-enrollment-of-windows-devices
https://www.toutwindows.com/blogtoutwindows/intune-details-dun-enrolement-windows/

Le rôle des manipulations suivantes est de faire gérer un appareil par Intune.

Pour s’assurer qu’un appareil est bien géré par Intune, on peut vérifier que :

  • il apparaît bien dans Entra, section Appareils
  • il est mentionné avec “Intune” comme GPM
  • il apparaît dans le centre de gestion Intune

Si une des ces conditions n’est pas remplie, les configurations Intune ne s’appliqueront pas.

Comme d’hab, prévoir de patienter quelques (dizaines de) minutes pour que les changements soient reflétés sur la console d’admin web MS.

Inscription automatique

Nécessite une licence Entra ID P1 au minimum.
Contenue dans Business Premium.

https://learn.microsoft.com/fr-fr/intune/intune-service/enrollment/windows-enroll

Elle se configure soit dans Entra soit dans Intune.
Elle est définie selon les utilisateurs, et non les appareils.

Entra admin center -> Identité -> Paramètres -> Mobilité
De là, sélectionner “Intune”, et activer “Étendue de l’utilisateur Gestion des données de référence” (permet de sélectionner les utilisateurs pour lesquels sera activé l’inscription automatique Intune)
Par défaut c’est Aucun, mais on peut choisir “Tout le monde”, ou bien Partiel (une sélection de users/groupes)

C’est l’utilisateur qui fait la jonction initiale à Entra qui va définir l’enrollement automatique ou non.
Si on joint Entra avec un user SANS enrollment, puis qu’on se connecte avec un utilisateur AVEC enrollment, le poste ne sera pas joint à Intune pour autant. Il faut défaire la jonction (dsregcmd /debug /leave) puis la refaire en utilisant un utilisateur AVEC enrollment automatique.

Une fois l’enrollment réalisé, le poste reste connu d’Intune, même si les utilisateurs suivants n’ont pas d’enrollment automatique, ni même pas de licence Intune (mais en ce cas, les configurations ne seront pas appliquées).

Inscription manuelle

Pour embarquer manuellement un appareil Windows, il faut l’appli Company Portal (Portail d’Entreprise) télechargeable depuis le Store.

Il est nécessaire d’ajouter de 2 CNAME dans le DNS (enterpriseenrollment.company.com et enterpriseregistration.company.com ) pour permettre la découverte automatique des points de connexion
https://learn.microsoft.com/fr-fr/intune/intune-service/enrollment/windows-enrollment-create-cname

https://learn.microsoft.com/en-us/mem/intune/apps/store-apps-company-portal-app

Pour l’embarquement des appareils, il faudra ajouter le “Compte Professionnel ou scolaire” (ce qui ajoute l’appareil dans Entra), mais également le “Configurer pour une utilisation professionnelle”.
Une fois cette 2e étape réalisée, l’appareil sera mentionné avec le GPM “Office 365 Mobile” et apparaîtra dans Intune.
De plus, dans “Paramètres -> Comptes -> Accès Professionnel et scolaire”, il sera mentionné comme “Connecté à (nom de l’organisation)” (avec icône de serviette de travail).

Vérification/synchro

https://learn.microsoft.com/fr-fr/mem/intune/user-help/sync-your-device-manually-windows#next-steps

C’est un peu l’équivalent de “gpupdate /force”
Sous Win 10, aller dans Paramètres -> Comptes -> Accès Professionnel et Scolaire
Cliquer sur le GPM (icône de la mallette) puis Informations. On peut alors Synchroniser ou “Créer un rapport”

Sur la console d’admin intune, on peut aller dans Appareils -> Tous les appareils -> choisir le poste -> Configuration de l’appareil.
On y voit les différentes stratégies qui sont appliquées (avec succès ou erreur) sur l’appareil en question.

https://techcommunity.microsoft.com/t5/microsoft-intune/is-it-really-impossible-to-force-an-intune-sync-from-the-command/m-p/3818315

ADMX

Il est possible d’importer des fichiers .admx pour avoir leurs réglages disponibles dans Intune.

Il faut commencer par récupérer (ou créer) les fichier .admx en question.

Intune -> Appareils -> Gestion des appareils -> Configuration puis onglet Importer ADMX
Puis clic sur “+ Importer”
Choisir l’admx et l’adml

Il est possible que l’import échoue, notamment s’il fait référence à un autre admx absent. Par exemple, “Windows.admx” semble parfois nécessaire (notamment pour ajouter drivemapping.admx )

Une fois l’import réalisé, le fichier admw est disponible dans le même onglet “Import ADMX” , et en cliquant sur les 3 petis points au bout de la ligne, on peut le supprimer.

Utilisation

Appareils -> Stratégies -> Créer -> Nouvelle stratégie -> Modèle -> Modèles d’administration importés

Scripts

Sysnative

Windows intègre un mécanisme de redirection transparent qui fait que lorsqu’une application 32 bits demande à accéder à C:\Windows\System32, le système va en réalité écrire dans C:\Windows\SysWOW64. De même avec Program Files et Program Files (x86).
Ça permet un cloisonnement des architectures, mais ça pose un souci lorsque l’on veut qu’une application 32 bits accède au vrai répertoire System32 (typiquement pour installer un pilote).

Pour contourner ce problème, une autre redirection est mise en place : celle de C:\Windows\Sysnative vers le vrai C:\Windows\System32 .

Attention, ce lien Sysnative n’est visible que par les applications 32b ! Les applis 64b (dont l’explorer) ne le voient pas et ne peuvent pas y accéder.

Comme les scripts Intune sont exécutés dans un contexte 32b, si on souhaite accéder à System32 via ces scripts, il faut donc leur indiquer le chemin Sysnative.

https://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm
https://call4cloud.nl/sysnative-64-bit-ime-intune-syswow64-wow6432node/

Lecteurs réseau

Intune n’a, à ma connaissance, pas d’outils intégrés pour mapper automatiquement des lecteurs.

Pour pouvoir le faire, il faut passer par des fichiers admx.

Apps

https://learn.microsoft.com/en-us/intune/intune-service/fundamentals/deployment-plan-protect-apps

19 May 2025, 00:00

Sharepoint et Onedrive

Sharepoint Admin Center

Dans l’admin M365, il y a “All admin centers” dans la colonne de gauche.
Parmi ceux-ci, on trouve celui de Sharepoint.
Ça devrait être https://mycompany-admin.sharepoint.com

Powershell

Il semble y avoir plusieurs modules PS pour SPO, pas tous compatibles avec les mêmes versions de Powershell.

Module PnP.Powershell

Semble fournir plein de commandes pour gérer O365.
Nécessite Powershell 7, installable côte-à-côte de Powershell 5.1. Pour l’installer :
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
puis
Install-Module -Name PnP.PowerShell
Load-Module PnP.PowerShell

Module Microsoft.Online.SharePoint.PowerShell

https://www.sharepointdiary.com/2019/02/the-term-connect-sposervice-is-not-recognized-as-the-name-of-a-cmdlet-function-script-file-or-operable-program.html

Nécessite Powershell 5.
C’est lui qui fournit les commandes Connect-SPOService, Set-SPOSite etc.

Install-Module Microsoft.Online.SharePoint.PowerShell
Import-Module Microsoft.Online.SharePoint.PowerShell

Pour l’utiliser dans PS7 :
Import-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell

Sites

Toutes les ressources d’un site sont accessibles par tous les membres de l’équipe.
(ou pas avec des permissions sur les biblios ? )

Format d’une adresse de site SPO :
https://mycompany.sharepoint.com/sites/my-site

Modifier informations

Aller sur le site -> Engrenage en haut à droite -> Site Information
On peut y changer le nom et la description.

Attention, changer le nom ne change pas l’URL ! Pour la changer, il faut aller dans le centre d’admin -> Active sites
https://learn.microsoft.com/en-us/sharepoint/change-site-address

Sharepoint Designer

Permet de modifier le contenu et les réglages des sites Sharepoint.
Fonctionne avec SharePoint Online si on fait quelques réglages sur SPO.

https://answers.microsoft.com/fr-fr/msoffice/forum/all/sharepoint-designer-et-sharepoint-on-line/8df94e29-8a8c-4593-a9a6-ffc8f13b042b
https://www.sharepointdiary.com/2018/09/sharepoint-online-enable-sharepoint-designer-using-powershell.html

Télécharger Sharepoint Designer :
https://www.microsoft.com/fr-fr/download/details.aspx?id=35491
et le SP1 :
https://www.microsoft.com/fr-fr/download/details.aspx?id=42009
Installer les 2.

Il faut activer la modification de SPO par Sharepoint Designer (c’est-à-dire les scripts customs). On peut le faire par l’interface, mais cela peut mettre jusqu’à 24h à être pris en compte, et c’est pour l’ensemble des sites.
On eut aussi le faire en Powershell, c’est instantané et avec une granularité par site. Pour ceci :

$tenantname = "mycompany"
$sitename = "my-site"
$AdminSiteURL="https://$tenantname-admin.sharepoint.com"
$SiteURL="https://$tenantname.sharepoint.com/sites/$sitename"
$cred = Get-Credential

#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL -Credential ($cred)

#Enable SharePoint Designer for the site collection
Set-SPOSite -Identity $SiteURL -DenyAddAndCustomizePages $False

Après cette manip, si on va sur le site -> Settings -> Site information -> View all site settings
est apparu
Site collection Administration -> SharePoint Designer Settings
Si on l’ouvre, on peut cocher “Enable Sharepoint Designer”.

Dans Sharepoint Designer, on fait “Open site” et on entre l’URL du site (company.sharepoint.com/sites/mysite).
Après identification, ça devrait être ok.

Bibliothèques (Library)

Les bibliothèques peuvent avoir plusieurs noms d’affichage, dépendant de la langue ! Sharepoint a en effet un système de “traduction” depuis la langue principale.

Pour connaître la langue principale d’un site, il faut ouvrir le site puis
Settings -> Site information -> View all site settings -> Language settings.

Pour changer le nom d’affichage d’une bibliothèque, il faut l’ouvrir dans la langue souhaitée (par exemple avec l’extension “Language Switch”) puis :
ouvrir biblio -> Settings (engrenage) -> Library settings -> List name, description and navigation
Ainsi, le nom de cette bibliothèque aura changé uniquement dans la langue en question.

Ce paramétrage ne change pas l’URL. Sa valeur équivaut au “InternalName”, et elle ne peut être changée que par Powershell ou Sharepoint Designer.

Changer l’URL par SP Designer

Connecter SP Designer comme indiqué ci-dessus.
Aller dans “All Files” (et PAS dans “Lists and Libraries”)
puis faire un clic-droit sur la biblio et “Rename”
Ceci changera son chemin d’accès (mais pas son nom d’affichage)

À noter que lors de l’affichage de “All Files”, la biblio a un attribut “Title” qui correspond à son nom d’affichage dans la langue principale.
Si on change le nom d’affichage dans la langue principale, l’attribut “Title” sera mis à jour en conséquence.

Si on ouvre Lists and Libraries, on voit apparaître la biblio sous son nom anglais (car SPD est en anglais je suppose).
Si on ouvre les propriétés de la biblio, on peut changer le “Name”, mais ceci ne changera que le nom d’affichage en anglais !

Stockage

stockage : 1To inclus + 10Go/user
20cts/Go supplémentaire

https://learn.microsoft.com/en-us/microsoft-365/commerce/add-storage-space

Office 365 Extra File Storage

Pour voir l’espace disponible/utilisé, aller dans Sharepoint Admin -> Active sites.

https://learn.microsoft.com/en-us/troubleshoot/sharepoint/administration/out-of-storage

Changer URL sharepoint

Si on veut changer le nom de domaine sharepoint

https://learn.microsoft.com/en-us/sharepoint/change-your-sharepoint-domain-name

Voir dans l’explorateur

https://learn.microsoft.com/en-us/sharepoint/sharepoint-view-in-edge

Connect-SPOService -Url https://contoso-admin.sharepoint.com  
Set-SPOTenant -ViewInFileExplorerEnabled $True

Migration

SPO admin center -> Migration

Onedrive

Pour synchroniser une biblio Sharepoint avec Onedrive, il y a 2 possibilités :

  • “sync”
  • ajouter un raccourci dans son Onedrive perso

Pour différentes raisons, l’option de placer un raccourci vers la biblio est aujourd’hui sensiblement + conseillée que l’option de Sync.
Elle doit toutefois être réalisée individuellement par chaque personne qui doit accéder à la biblio ; elle ne peut pas être déployée automatiquement.

https://learn.microsoft.com/en-us/sharepoint/sync-health?tabs=windows

Config de Onedrive par GPO

https://learn.microsoft.com/en-us/sharepoint/use-group-policy

Auto sync avec Sharepoint

https://learn.microsoft.com/en-us/sharepoint/use-group-policy#configure-team-site-libraries-to-sync-automatically

La valeur à déployer est de la forme :
tenantId=xxx&siteId=xxx&webId=xxx&listId=xxx&webUrl=httpsxxx&version=1

Nécessite de trouver l’ID de la bibliothèque à synchroniser automatiquement.
Pour ça, aller sur le site (pas l’admin), ouvrir la biblio, clic syr le bouton “Sync” puis “Copy library ID”.
On peut ensuite directement coller cette URL dans la valeur de la GPO.

Attention, ce paramétrage peut mettre jusqu’à 8h pour se déclencher.
Possible de forcer avec
TimerAutomount

Gestion de l’espace

https://betterlicenses.com/blog/sharepoint-online-storage-quota-problem-fixing-it
https://learn.microsoft.com/en-us/sharepoint/trim-versions

Limitations

https://support.microsoft.com/en-au/office/restrictions-and-limitations-in-onedrive-and-sharepoint-64883a5d-228e-48f5-b3d2-eb39e07630fa

Dossier perso

http://mycompany-my.sharepoint.com/
renvoie sur son dossier Onedrive personnel (lié au compte pro, pas un vrai onedrive perso)

14 May 2025, 00:00

W11 et comptes MS

Compte créé en tant que compte local

Supposons que le compte utilisé soit un compte local, que l’on appellera “admin”.
En ce cas :

  • whoami donner hostname\admin

Les paramètres mentionneront “Compte local” en haut à gauche.
L’appareil apparaît dans la liste des appareils sur :
https://account.microsoft.com/devices

Si on va dans Paramètres -> Comptes, des infos sur le stockage cloud etc. sont affichées
Si on va dans Paramètres -> Comptes -> E-mail et comptes, on voit le compte mentionné comme “Compte Microsoft” et on ne peut pas le supprimer, on ne peut que le “Gérer” (ce qui ouvre le site web de MS)

Les applis MS sont connectées automatiquement

Compte créé via un compte MS perso

Si dès la création du compte, on se connecte avec un compte MS
Le username est hostname\abcde avec abcde qui sont les 5 premières lettres du mail associé au compte MS

Les paramètres mentionnent l’adresse mail en haut à gauche.

Déconnexion

Compte perso

Aller dans les Paramètres -> Comptes -> Vos informations
et choisir “Se connecter plutôt avec un compte local”

Une fois déconnecté, le compte Windows devient effectivement un compte local, mais les informations de connexion sont toujours enregistrées. Ainsi, même après déconnexion de Teams, il suffit de sélectionner le compte dans la liste pour l’ouvrir à nouveau, sans besoin de taper le mot de passe.

Ceci est dû au fait qu’après suppression du compte MS, le compte reste dans les Paramètres -> Comptes -> E-mail et comptes
Mais en déroulant ses infos, on peut ici le supprimer. Ainsi, toute re-connexion à ce compte nécessitera le mot de passe.

Compte pro/scolaire

Paramètres -> Comptes -> Accès professionnel ou scolaire

14 Apr 2025, 00:00

Tester les I/O sous Linux avec fio

sudo apt install fio

Liens :
https://fio.readthedocs.io/en/latest/fio_doc.html
https://linux.die.net/man/1/fio
https://askubuntu.com/questions/87035/how-to-check-hard-disk-performance
https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/
https://www.virtono.com/community/tutorial-how-to/fio-basics/

Paramètres obligatoires :
--name : le nom du job
--size : la taille du fichier s’il n’existe pas déjà

Par défaut, c’est un test en lecture seule sur un fichier de 4G.

Autres paramètres :

--filename : le fichier (ou bloc ! ) sur lequel sera réalisé le test ; par défaut, c’est ./${jobname} (la valeur de –name) si un seul job, ou jobname.jobnumber.filenumber si plusieurs jobs
--filename_format : permet de personnaliser la génération de filename

--readonly pour de la lecture seule
--readwrite (ou –rw) : définit le type d’opération : read (séquentiel) , write (séquentiel) , randread (aléatoire) , randwrite (aléatoire) , rw (50/50 séquentiel) , randrw (50/50 aléatoire)
--opendir : ouvre séquentiellement tous les fichiers sous le répertoire passé en argument

--io_size : définit la quantité de données à traiter avant d’arrêter fio. Par défaut c’est équivalent à size, mais peut être différent (par exemple pour lire uniquement 5G de données malgré une taille de fichier de 20G, ou à l’inverse lire un total de 10G malgré une taile de fichier de 500m)
--blocksize : par défaut 4096
--ioengine : le moteur d’I/O à utiliser ; par défaut psync ; voir les descriptions ; beaucoup d’exemples semblent utiliser libaio
--fsync= : pour forcer une sync (écriture réelle sur le périphérique) après X écritures
--end_fsync=1 : pour que le timer continue jusqu’à ce que l’OS rapporte que les écritures ont réellement été réalisées
--direct : force la non-utilisation d’un buffer disque ; recommandé de toujours mettre 1 (true)
–refill-buffers : pour forcer le renouvellement des données aléatoires utilisées pour le test (

--gtod_reduce=1 : semble réduire les requêtes pour connaître l’heure et améliorer les perfs
--eta-newline : force l’affichage d’une nouvelle ligne après X secondes

En cas de lecture seule, le fichier de test doit être au moins aussi gros que la taille de blocs par défaut (soit 4K).

Job files

Syntaxe

; -- start job file --
[global]
rw=randread
size=128m

[job1]

[job2]

; -- end job file --

Chaque jobfile peut contenir 1 ou plusieurs jobs. Si plusieurs présents, il sont parallélisés.
On peut éviter cette parallélisation avec l’option stonewall (ou wait_for_previous) : un job qui possède cette option attendra la fin du/des jobs précédents avant de démarrer. Ce job (et les suivants) feront aussi partie d’un nouveau groupe de rapport.

Chaque job peut également paralléliser des IO (via iodepth ou numjobs).
On peut également fournir plusieurs jobfiles en ligne de commandes, et ils seront exécutés à la suite.

–section
possible de mettre des variables

Utilisation

Pour tester un disque en tant que bloc :
fio --filename=/dev/sdX ./jobfile.txt
Pour écrire le log dans un fichier :
fio --filename=/dev/sdX --output=mydisk.log ./jobfile.txt

Output

https://fio.readthedocs.io/en/latest/fio_doc.html#interpreting-the-output

Au début, le nom de tous les jobs qui seront lancés, avec leurs options.

seqread: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
randread: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1
randwrite: (g=1): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1

g= : leur groupe d’appartenance (je suppose) ; (R) (W) (T) : read write trim

Pendant le test, Une ligne de type :
Jobs: 1 (f=1): [_(1),r(1),P(1)][45.4%][r=20.9MiB/s][r=5350 IOPS][eta 00m:53s]
Jobs: 1 (f=1) : le nombre jobs en cours dans le groupe (f=nombre de fichiers ouverts)
[_(1),r(1),P(1)] : l’état de l’ensemble des jobs prévus ; voir table dans la doc pour + de détails ;
les principaux états : _ = correctement fini ; rwmdRWMD : read/write/mixed/trim (MAJ=seq,min=rand) ;
P = job planifié pour plus tard ; X = erreurs ; K = interrompu
Puis pour chaque test (ou groupe si group_reporting) :

  • des infos test1: (groupid=0, jobs=1): err= 0: pid=1519610: Sun Feb 25 11:25:53 2024
  • des valeurs de latences (slat = submission latency, clat = completion latency, lat = total latency)
  • des valeurs de bande passante et d’IOPS
  • statistiques sur la latence, les IOPS, la bande passante etc

14 Apr 2025, 00:00

ZFS

https://arstechnica.com/information-technology/2020/05/zfs-101-understanding-zfs-storage-and-performance/
https://unixdigest.com/articles/battle-testing-zfs-btrfs-and-mdadm-dm.html
https://openzfs.org/wiki/Newcomers
https://openzfs.github.io/openzfs-docs/Project%20and%20Community/FAQ.html

Généralités

ZFS est une architecture qui combine des fonctionnalités de gestion de volumes, et de système de fichiers.

Recommandé de conserver au moins ~10% d’espace libre (ou 500Go, le + petit des 2 devrait être ok) dans le pool pour éviter de sérieusement dégrader les performances.

Architecture

Le plus gros ensemble sous ZFS s’appelle un zpool. Il est constitué de 1 ou plusieurs vdevs, chaque vdev étant constitué d'1 ou plusieurs périphérique (disque physique, ou éventuellement fichier).

Une fois crée, le zpool peut directement être monté en tant que système de fichier, mais il est aussi possible d’y créer des dataset, qui peuvent eux-même être montés.
On peut aussi créer un dataset enfant sous un dataset parent, avec la possibilité d’hériter des propriétés du parent.

On peut également créer des volumes au sein d’un zpool, qui pourra être accédé comme un périphérique bloc : il sera possible de le formater avec un autre FS (par exemple ext4).

zpool

C’est un ensemble logique complet pouvant être utilisé avec ZFS. Il est constitué de 1 ou plusieurs vdev.
Au sein d’un zpool, les données sont réparties entre les différents vdev de stockage (ou de support).

Il n’y a pas de redondance au sein d’un zpool : si un seul vdev vient à manquer, l’ensemble du zpool est perdu !

C’est au sein de chaque vdev que l’on va s’assurer d’une redondance si nécessaire.

Le zpool contient directement un dataset, qui peut être monté. Il est aussi possible d’y créer des dataset enfants et sous-enfants.
Il y a un héritage des propriétés (qui peut être modifié).

vdev

Un vdev représente une unité de stockage, au sein du zpool.
Il y’a plusieurs types de vdev, etre autres :

  • ceux de stockage, qui peuvent être en simple disque, en mirror (équivalent RAID1), en RAIDZ (équivalent RAID5-6)
  • ceux de support :
  • CACHE
  • LOG
  • SPECIAL

device

dataset

snapshot

clone

Install

Recommandé de l’installer depuis les backports Besoin de la section contrib

sudo apt install -t stable-backports zfsutils-linux zfs-dkms

Commande zpool

Permet de gérér les pools et les vdev.
Les vdev sans chemin absolu sont cherchés dans /dev/

Création d’une pool

man zpool create

De la forme

poolname = "myzpool"
sudo zpool create -m mountpoint $poolname dev1 dev2 [redundancy] dev3 dev4 [redundancy] dev5 dev6 dev7

On peut spécifier une nature de redondance pour chaque vdev, puis on spécifie les devices (ou fichiers) qui entreront dans ce vdev.
Dans le cas ci-dessus, nous aurons 4 vdev : dev1, dev2, une redondance entre dev3 et dev4, et une redondance entre dev5 et dev6.
Nous aurons probalement un message d’erreur nous informant que la redondance n’est pas régulière entre les différents vdev.

La redondance peut prendre entre autres ce valeurs : mirror raidz1 raidz2, raidz3.

Cas simple : un seul périphérique :
sudo zpool create $poolname /dev/disk/by-id/ata-XXX

Note il est conseillé de choisir une méthode + fiable que /dev/sdX pour définir les vdev, car en cas de changement de lettre, il faudra supprimer le fichier /etc/zfs/zpool.cache (ou exporter la pool) puis réimporter la pool.

ashift

Lister les pools

zpool status
Les chiffres READ WRITE et CKSUM comptent le nombre d’erreurs de chaque catégorie sur chaque vdev.

Sortir les données en json :
zpool status -j | jq
donne beaucoup d’infos détaillés sur chaque composant.

man zpool status
Beaucoup d’options intéressantes
-s : pour identifier les vdev lents

zpool list -v -P
Permet de voir l’usage disque de chaque pool et même de chaque vdev.

Santé et remplacement d’un RAIDZ-2

Dans cet exemple, j’ai un pool constitué d’un seul vdev, lui-même constitué de 8 fichiers en RAIDZ-2 (+ facile pour tester).
J’ai volontairement corrompu ce vdev en supprimant 2 fichiers.

Lorsque l’on liste les pools et les vdev, le pool ainsi que le vdev se trouvent dans l’état DEGRADED. Chacun des 2 devices (en l’occurence fichiers) se trouve dans l’état FAULTED.
FAULTED signifie que le device sous-jacent est toujours pris en compte dans le vdev, mais inaccessible ou défectueux (par exemple disque en panne, ou débranché, ou fichier supprimé).

Il y a aussi l’état OFFLINE, qui signifie que le device sous-jacent a été sorti du vdev, qui est en attente d’un remplacement pour ce device.
On peut volontairement passer un device en OFFLINE avec la commande :
sudo zpool offline $poolname device

Lorsqu’un device est sain (“ONLINE”), son nom/chemin est indiqué dans la sortie de zpool status ou zpool list -v -P.
Lorsqu’un device est absent (FAULTED ou OFFLINE), ce sera son GUID qui sera indiqué.
On peut obtenir les GUID de tous les device, même les sains, avec zpool list -v -P -g.

Pour remplacer une disque/fichier offline ou faulted :

sudo zpool replace $poolname $oldGUID /dev/sdX
sudo zpool replace $poolname $oldGUID ./file.dat

Ça devrait automatiquement lancer un resilvering. Pendant ce temps, un device replacing-1 apparaît dans le vdev, qui a lui-même son propre GUID et est composé de l’ancien et du nouveau device.

Il peut y avoir l’erreur cannot replace OLD_GUID with sdX: sdX is busy
J’ai eu ça en essayant de réajouter un disque qui avait déjà fait partie du pool. Même après wipefs -af sur les partitions puis sur la table de partition, le disque restait “busy”.
J’ai résolu l’erreur en réinitialisant le SSD comme ceci
Je suppose qu’en écrivant l’ensemble du SSD avec des 0 ça peut foncitonner aussi.

zpool attach / detach

zpool attach $poolname device new_device
permet d’ajouter un disque/fichier à un device.
S’il s’agit d’un miroir ou directement d’un disque, le disque sera ajouté en tant que miroir.

S’il s’agit d’un RAIDZ, le RAIDZ est agrandi en prenant en compte le nouveau disque, et en conservant son niveau fonctionnel (un raidz2 reste un raidz2, mais avec 1 disque en plus.
Pour ça, l’ensemble des données est réécrite sur le raidz

sudo zpool detach $poolname device

Permet de supprimer un disque d’un miroir ou d’un “replacing-X”.

Pool suspendu

Si un vdev vient à manquer, le pool est suspendu.
S’il est encore disponible (par exemple un disque qui a été déconnecté mais qui fonctionne correctement), il devrait de le rebrancher, puis d’entrer la commande
sudo zpool clean $poolname
ça devrait “resynchroniser” le pool, et remettre le compteur d’erreurs à 0 partout.

Dans mon expérience, même en déconnectant un disque en plein milieu d’une copie de fichier vers le pool, si on le reconnecte et que l’on cleane, le transfert se finit correctement et le fichier ne sera pas corrompu.
À condition que le chemin du device soit le même que précédemment ! D’où l’intérêt d’utiliser des chemins fixes (by-id).

Si le vdev est définitivement perdu, il ne sera pas possible de récupérer les données du pool.

Lister les propriétés d’une pool

zpool get all $poolname
ou plus finement
zpool get property1,property2 $poolname

Ajouter un vdev à une pool

zpool add $poolname device

Détacher une pool

sudo zpool export $poolname

Trouver et importer des pools inactives

sudo zpool import
va lister les pools détectés
Par défaut, ça va chercher sur les périphériques dispos dans /dev/. Les informations concernant l’appartenance à un pool sont trouvées dans la table de partition du périphérique.

On peut spécifier un dossier ou device à chercher avec l’option -d. Nécessaire pour importer un pool créé sur des fichiers.

sudo zpool import $poolname [newpoolname]
Permet de la rendre disponible, éventuellement en changeant son nom.

Commande zfs

Monter un dataset

zfs mount $poolname
va monter dans le chemin défini dans la propriété mountpoint

Lister les montages ZFS

zfs mount

Lister les propriétés des datasets

zfs get all [mydataset]
ou + finement
zfs get property1,property2 [mydataset]

Les propriétés dont la source est “default” sont définies à la volée, selon les valeurs par défaut (par exemple, le mountpoint sera /datasetname).
Les propriétés définies explicitement sur le dataset auront comme source “local”, et font partie intégrante du dataset, mêem si celui-ci est branché sur une autre machine.

zfs list
man zfs list
zfs list -t all -r

Définir des propriétés des datasets

sudo zfs set property=value mydataset

ARC

RAIDZ

Le RAIDZ est un système de parité analogue au RAID (bien que fonctionnant différemment).
Le RAIDZ-1 contient 1 disque de parité (analogue au RAID5). Le RAIDZ-2 contient 2 disques de parité (analogue au RAID6).
Il existe aussi le RAIDS-3 avec 3 disque de parité.

ZFS peut aussi fonctionner en mode miroir (analogue au RAID1), mais il ne me semble pas que cette fonctionnalité soit appelée “RAIDZ”.

Deduplication

Permet d’économiser de l’espace de stockage lorsque l’on stocke plusieurs fois des blocs de données identiques.
Nécessiter beaucoup de ressources : beaucoup de RAM, et il est conseillé d’avoir des SSD dédiés pour stocker la table de dédup (DDT).
Globalement il n’est pas conseillé de l’activer, sauf cas spécifiquement adapté.

scrub :

Gérer Mémoire mac allouée : AFS peut être gourmand en RAM

CoW et VMs Le CoW crée une légère baisse de perf, qui peut vraiment s’amplifier pour des fichiers avec des écritures fréquentes, comme les VMs ou les BDD voir pour désacitver CoW pour certains fihiers/dossiers/volumes ?