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.

  • Sito Web predefinito di Server 2012 Essentials - sicuro per rimuovere / modificare la port
  • Windows Server 2012 R2 Deduped 356GB a 1,32 GB
  • L'installazione di funzionalità di Windows non è rioutput con "I file di origine non sono stati trovati"
  • Cosa serve il mio account di servizio per aggirare l'errore "Gestione dell'auditing di diritto di controllo" in robocopy?
  • Synology HA performance e failover attivo-passivi
  • Ottieni il voto corrente del disco tramite PowerShell
  • 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

    ?

  • linux + crea un semplice process di cane da guardia nello script di shell
  • Server DHCP solo ricordando una locazione
  • VMXNET3 riceve il dimensionamento del buffer e l'utilizzo della memory
  • Quale tecnologia consente l'archiviazione condivisa per i cluster con letture e scritture locali preferite?
  • Perché la mia HyperV VM sta casualmente perdendo la connettività?
  • Come funziona la cache CSV nel carico di memory?
  • 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.