磁盘配额

转载 2004年10月19日 10:51:00

using System;

using DiskQuotaTypeLibrary;

namespace Ex3cut3.Libraries
{
    /// <summary>
    ///
    /// </summary>
    public class QuotaClass
    {
        private DiskQuotaControlClass _diskQuotaControl;

        //This path as to be in this format or
        //else is going to give an error of invalid path
        private const string FILESHAREVOLUME = @"//server/c$/";
        private const int MBTOBYTES = 1048576;

        public DiskQuotaControlClass DiskQuotaControl
        {
            get
            {
                if(this._diskQuotaControl == null)
                {
                    this._diskQuotaControl = new DiskQuotaControlClass();
                    //Initializes the control to the specified path
                    this._diskQuotaControl.Initialize(FILESHAREVOLUME, true);
                }
                return this._diskQuotaControl;
            }
        }

        public QuotaClass()
        {
        }

        /// <summary>
        /// Adds a user to the quota entries of the volume
        /// </summary>
        /// <PARAM name="userName">The name of the user to Add</PARAM>
        /// <PARAM name="userDomain">The domain that the user uses to logon</PARAM>
        /// <PARAM name="quotaLimit">The quota limit of this user</PARAM>
        public void Add(string userName, string userDomain, int quotaLimit)
        {
            DIDiskQuotaUser dskuser = null;
            //In some cases if you use name resolution,
            //the application will give an error.
            this.DiskQuotaControl.UserNameResolution =
              UserNameResolutionConstants.dqResolveNone;
            //Here we had the user to the Quotas Entrys of
            //the volume, we use user@domain.net the logon name of the user.
            //You can use the domain/user or just the user,
            //but in like this works faster
            dskuser = this.DiskQuotaControl.AddUser(
              user.SAMAccountName + "@" + user.Domain);
            //here we set the limit of the quota, this is
            //prepared to receive MB so i convert it to BYTES
            dskuser.QuotaLimit = (int)quotaLimit * MBTOBYTES;
            //here is the set of the warning limit
            dskuser.QuotaThreshold = (int)(quotaLimit / 1.2) * MBTOBYTES;
            dskuser = null;
        }

        /// <summary>
        /// Removes the user form the Quota Entries List
        /// </summary>
        /// <PARAM name="userName"></PARAM>
        public void Remove(string userName)
        {
            //Here we just use the user, and invoke
            //the method DeleteUser from the control
            this.DiskQuotaControl.DeleteUser(this.GetUser(userName));
        }

        /// <summary>
        /// A private function to return the user object
        /// </summary>
        /// <PARAM name="userName">The user name</PARAM>
        /// <returns>A DIDiskQuotaUser Object
        /// of the specified user</returns>
        private DIDiskQuotaUser GetUser(string userName)
        {
            //Invokes the method to find a user in a quota entry list
            return this.DiskQuotaControl.FindUser(userName);
        }

        /// <summary>
        /// Gets the quota of the user
        /// </summary>
        /// <PARAM name="userName">The user name</PARAM>
        /// <returns>A formated string of the quota
        /// limit of the user</returns>
        private string GetQuota(string userName)
        {
            //here we return the text of the quota limit
            //0.0 bytes, 0.0 Kb, 0.0 Mb etc
            return this.GetUser(userName).QuotaLimitText;
        }

        /// <summary>
        /// Gets the quota currently used by the user
        /// </summary>
        /// <PARAM name="userName">The user name </PARAM>
        /// <returns>A formated string of the quota
        /// used by the user</returns>
        private string GetQuotaUsed(string userName)
        {
            return this.GetUser(userName).QuotaUsedText;
        }

        /// <summary>
        /// Change the quota of a specified user
        /// </summary>
        /// <PARAM name="userName">The user name</PARAM>
        /// <PARAM name="quotaLimit">The new quota limit of the user</PARAM>
        private void ChangeQuota(string userName, int quotaLimit)
        {
            DIDiskQuotaUser dskuser = this.GetUser(userName);
            dskuser.QuotaLimit = quotaLimit * Support.Constants.CONVERTBTOMB;
            dskuser.QuotaThreshold = (quotaLimit / 1.2)
              * Support.Constants.CONVERTBTOMB;
        }
    }
}

Linux下磁盘配额设置

Linux是多用户多任务的操作系统,这就难免出现多个用户共享磁盘的情况,如何使多个用户公平的使用磁盘,就是磁盘配置要解决的问题。当然也可以在没创建一个用户的时候,将它的主目录建在一个单独的逻辑分区上,...
  • CHEN_JP
  • CHEN_JP
  • 2012年08月05日 16:19
  • 10246

《鸟哥的Linux私房菜》读书笔记:Linux磁盘配额命令quota详解

quota使用的前提条件: ①仅能针对整个FileSystem。 ②Linux核心必须支持quota。 ③quota的记录文件aquota.user,aquota.group。 ④仅对一般用户...
  • u011801161
  • u011801161
  • 2015年05月07日 21:24
  • 655

Hadoop 磁盘配额测试

Hadoop 磁盘配额测试
  • dai451954706
  • dai451954706
  • 2015年08月19日 11:04
  • 994

Linux入门:用户磁盘配额quota

1、如果任何用户可以随意使用磁盘空间,也是一件很可怕的事情,磁盘被写满之后,各种应用也将无法运行,甚至启动。使硬盘空间被占满有很多种方法:dd if=/dev/zero方法,或者copy大量无用文件等...
  • foryouslgme
  • foryouslgme
  • 2016年11月03日 15:25
  • 2555

容易被忽视的Linux磁盘配额设置

容易被忽视的Linux磁盘配额设置 转自http://yuan2.blog.51cto.com/446689/1695356 1.          实验需求: 1)  ...
  • laughing_cui
  • laughing_cui
  • 2015年09月18日 20:56
  • 1450

磁盘配额操作系统步骤详解

以下文档由广东省linux公共服务技术支持中心(GDLC)独家提供---周末班学员实验稿。转载请未注明出处。磁盘配额的功能:1、        使用磁盘配额,系统管理员可以对磁盘空间进行管理,对不同用...
  • angeldhp
  • angeldhp
  • 2010年11月29日 22:56
  • 789

Linux下实现磁盘配额的两种方法

http://bbs.51cto.com/thread-561048-1.html Linux下实现磁盘配额的两种方法                     用q...
  • jajavaja
  • jajavaja
  • 2015年11月13日 10:34
  • 2746

Linux的磁盘配额详解(Quota)

1. 检查内核情况 检查当前内核是否支持quota,当前内核配置文件在/boot下 如果当前内核不支持quota,需要重新编译内核将quota support编译进核心:     File sy...
  • AstrayLinux
  • AstrayLinux
  • 2011年12月03日 23:47
  • 5388

centos6上增加磁盘配额限制

建五个用户,均需要进行磁盘配额限制,每个用户的配额为 10MB (hard) 以及 8MB (soft) 0 环境 [root@localhost ~]# uname -a Linux l...
  • BeiiGang
  • BeiiGang
  • 2015年01月15日 16:37
  • 2108

Linux quota命令参数及用法详解---Linux磁盘配额限制设置和查看命令

功能说明:显示磁盘已使用的空间与限制。 语  法:quota [-quvV][用户名称...] 或 quota [-gqvV][群组名称...] 补充说明:执行quota指令,可查询磁盘空...
  • dazhi_100
  • dazhi_100
  • 2014年05月14日 13:12
  • 1031
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:磁盘配额
举报原因:
原因补充:

(最多只允许输入30个字)