Aggiunta di una condivisione in un cluster di failover con quote triggerste richiede 10 minuti

Ho il cluster di File Service in cui una delle risorse del file server ospita circa 50.000 directory di home user. Le directory di origine hanno un model di quota assegnato tramite il FSRM .

Quando si tenta di aggiungere una nuova condivisione utilizzando la procedura guidata "Aggiungi file condivisione" del gestore di cluster di failover, inizia a recuperare tutti i contingenti su tutte le cartelle condivise su tutte le risorse del cluster del server di file. Che sta prendendo ~ 10 minuti in questo ambiente.

  • Utilizzo del certificato CA per Connessione desktop remoto
  • Migrazione DC di Windows Server 2003 DC a 2 x 2012 R2 DCs - Errore DCDiag = Pubblicità: IL SERVER NON È RESPONDENTE o NON È CONSIDERATO ADATTO
  • Uccidere sessioni utente inattive in un server terminal di Windows Server 2012 R2
  • Come posso rimuovere un computer da Windows Server 2012 R2 Essentials?
  • Come faccio a configurare Windows per i certificati dual, ECDSA con RSA fallback?
  • Il quorum dinamico con i cluster di Windows Server 2012 rende i tipi di configuration del quorum irrilevanti?
  • Come potrei

    • velocizzare il process di enumerazione delle quote
    • limitare il process di enumerazione di quote a una sola risorsa di cluster di server di file
    • disabilitare completamente l'enumerazione quota per la Creazione guidata nuova condivisione

    ?

  • C'è un modo per impedire a Storage Spaces Direct di aggiungere automaticamente i dischi?
  • Memorizzazione di dischi profilo utente sul cluster di file server (SOFS o normale)
  • Perché la mia HyperV VM sta casualmente perdendo la connettività?
  • Come posso verificare se un cluster di Windows è stato precedentemente validationto?
  • Creazione di un cluster di failover Hyper-V a due nodes con una SAN
  • Utilizzare un vhdx condiviso come unità condivisa
  • One Solution collect form web for “Aggiunta di una condivisione in un cluster di failover con quote triggerste richiede 10 minuti”

    Ho finalmente lavorato intorno al problema sollevando il requisito di utilizzare la GUI per la creazione della condivisione di file interamente. Invece, ho documentato l'utilizzo di New-SmbShare come procedura di creazione di azioni. L'aggiunta di azioni in questo modo elimina tutti i controlli di configuration precedenti che esegue la procedura guidata GUI, inclusa l'enumerazione quota.

    New-SmbShare -Name <ShareName> -ScopeName "<CAPName>" -Path "<LocalDirectoryToBeShared>" -FullAccess "Everyone" -Description "<Comment>" 

    Il cmdlet New-SmbShare è stato introdotto con Server 2012 R2 / Windows 8.1. Per i cluster precedenti (2012, 2008R2, 2008) di File Server, è ansible prendere in prestito la class NativeMethods con la quale viene importta la function NetShareAdd da Netapi32.dll da uno script pubblicato insieme a un post di blog di MSDN sulle azioni in ambiti di Fileover Cluster .

    La mia versione abbreviata in modo simile è simile a questa:

     #Using Win32 API NetShareAdd via p/invoke to be able to specify the scope in SHARE_INFO_503 $signature = @" using System; using System.Runtime.InteropServices; using System.Collections; public class NativeMethods { [DllImport("Netapi32.dll")] public static extern uint NetShareAdd([MarshalAs(UnmanagedType.LPWStr)] string strServer, Int32 dwLevel, ref SHARE_INFO_503 buf, out uint parm_err); [StructLayoutAttribute(LayoutKind.Sequential)] struct SECURITY_DESCRIPTOR { public byte revision; public byte size; public short control; public IntPtr owner; public IntPtr group; public IntPtr sacl; public IntPtr dacl; } public enum SHARE_TYPE : uint { STYPE_DISKTREE = 0, STYPE_PRINTQ = 1, STYPE_DEVICE = 2, STYPE_IPC = 3, STYPE_SPECIAL = 0x80000000 }; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct SHARE_INFO_503 { public string shi503_netname; [MarshalAs(UnmanagedType.U4)] public SHARE_TYPE shi503_type; public string shi503_remark; [MarshalAs(UnmanagedType.U4)] public int shi503_permissions; [MarshalAs(UnmanagedType.U4)] public int shi503_max_uses; [MarshalAs(UnmanagedType.U4)] public int shi503_current_uses; public string shi503_path; public string shi503_passwd; public string shi503_servername; [MarshalAs(UnmanagedType.U4)] public int shi503_reserved; public IntPtr shi503_security_descriptor; } public static uint ShareFolder(string servername, string sharename, string path, string remark) { SHARE_INFO_503 shInfo = new SHARE_INFO_503(); shInfo.shi503_netname = sharename; shInfo.shi503_type = SHARE_TYPE.STYPE_DISKTREE; shInfo.shi503_remark = remark; shInfo.shi503_permissions = 0; shInfo.shi503_max_uses = -1; shInfo.shi503_current_uses = 0; shInfo.shi503_path = path; shInfo.shi503_passwd = null; shInfo.shi503_servername = servername; shInfo.shi503_reserved = 0; shInfo.shi503_security_descriptor = IntPtr.Zero; uint nRetValue = 0; uint param_err = 0; nRetValue = NetShareAdd(servername, 503, ref shInfo, out param_err); //Console.WriteLine("Sharing " + path + " on " + servername + " as " + sharename + " returned " + nRetValue + " (" + param_err+ ")"); return nRetValue; } } "@ #Import the FailoverClusters PowerShell module if it is not already imported Import-Module FailoverClusters #Add the function type that will be used to share the folder in the defined scope Add-Type -TypeDefinition $signature 

    L'utilizzo è banale:

     [NativeMethods]::ShareFolder("<CAPname>", "<ShareName>", "<LocalDirectoryToBeShared>", "<Comment>") 

    La function ShareFolder restituisce 0 all'esecuzione successiva e termina istantaneamente, anche con quote abilitate. Per essere eseguito su uno dei nodes di cluster che ospitano la risorsa CAP / file server. Potrebbe essere necessario risolvere gli ACL di condivisione in seguito, poiché l'ACL di creazione condivisa di default è solo Everyone:Read e non è ansible specificare con questo metodo.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.