<!--
     The FreeBSD Documentation Project

     $FreeBSD$
-->

<chapter id="quotas">
  <title>Cuotas de disco</title>
  
  <para><emphasis>Contribuido por &a.mpp;.  26 Febrero
      1996</emphasis></para>
      
  <para>Las cuotas constituyen una prestaci&oacute;n del sistema operativo que 
  le permite limitar la cantidad de espacio en disco y/o el n&uacute;mero de 
  archivos de que un usuario puede disponer en un determinado sistema de archivos. 
  Habitualmente se utiliza en sistemas multiusuario en los que resulta deseable 
  limitar la cantidad de recursos de que puede disponer cada usuario o grupo de 
  usuarios. De este modo se impide que un usuario agote todo el espacio disponible 
  en un disco.</para>
  
  <sect1>
    <title>Configurando su sistema para habilitar las cuotas de disco</title>
    
    <para>Antes de intentar usar las cuotas de disco es necesario asegurarse de que 
    se encuentran habilitadas en el n&uacute;cleo del sistema operativo. Esto se 
    consigue a&ntilde;adiendo la siguiente l&iacute;nea al archivo de configuraci&oacute;n 
    del n&uacute;cleo:</para>

    <programlisting>
options QUOTA</programlisting>

    <para>El n&uacute;cleo que se incluye de serie (<filename>GENERIC</filename>) no 
    tiene esta funci&oacute;n activada por defecto, por lo que tendr&aacute; que 
    configurar, crear e instalar un n&uacute;cleo a medida para utilizar las cuotas 
    de disco. Puede acudir a la secci&oacute;n <link linkend="kernelconfig">Configurando 
    el n&uacute;cleo de FreeBSD</link>, donde encontrar&aacute; m&aacute;s informaci&oacute;n 
    acerca de la configuraci&oacute;n del n&uacute;cleo.</para>
	
    <para>A continuaci&oacute;n, necesitar&aacute; habilitar las cuotas de disco en 
    <filename>/etc/sysconfig</filename>. Esto se hace cambiando la l&iacute;nea:
	  
      <programlisting>
quotas=NO</programlisting>

      por:
	  
      <programlisting>
quotas=YES</programlisting></para>
	
    <para>Si est&aacute; utilizando FreeBSD 2.2.2 o posterior, el archivo de 
    configuraci&oacute;n ser&aacute; <filename>/etc/rc.conf</filename> y el nombre de 
    la variable habr&aacute; cambiado a:</para>
	  
    <programlisting>
check_quotas=YES</programlisting>
	
    <para>Finalmente, necesitar&aacute; editar <filename>/etc/fstab</filename> para 
    habilitar las cuotas de disco de forma individualizada para cada sistema de archivos. 
    Es aqu&iacute; donde puede habilitar cuotas para usuarios, grupos o ambos y para 
    todos sus sistemas de archivos.</para>
	
    <para>Para habilitar las cuotas de disco para un determinado usuario en un sistema 
    de archivos, a&ntilde;ada la opci&oacute;n <literal>userquota</literal> en el archivo 
    <filename>/etc/fstab</filename>, en el campo de opciones del registro correspondiente 
    al sistema de archivos para el cual quiere habilitar las cuotas.  Por ejemplo:</para>

    <programlisting>
/dev/da1s2g   /home    ufs rw,userquota 1 2</programlisting>
	
    <para>Análogamente, para habilitar las cuotas para grupos emplee la opci&oacute;n 
    <literal>groupquota</literal> en lugar de <literal>userquota</literal>. Para 
    habilitar ambas, cuotas de usuario y de grupo, cambie el registro del siguiente modo:
    </para>

    <programlisting>
/dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2</programlisting>
	
    <para>Por defecto, los archivos relacionados con las cuotas se almacenan en el 
    directorio ra&iacute;z del sistema de archivos con los nombres 
    <filename>quota.user</filename> y <filename>quota.group</filename>, para las cuotas 
    de usuarios y de grupos, respectivamente. Consulte <command>man fstab</command> para 
    m&aacute;s informaci&oacute;n. Aunque esa p&aacute;gina man afirma que se puede 
    especificar un emplazamiento alternativo para los archivos relacionados con las 
    cuotas, esto no es recomendable ya que las diversas utilidades de las cuotas no 
    parecen adaptarse convenientemente a este cambio.</para>
	
    <para>En este momento deber&iacute;a reiniciar su sistema con el nuevo n&uacute;cleo. 
    <filename>/etc/rc</filename> ejecutar&aacute; autom&aacute;ticamente los comandos 
    apropiados para crear los archivos iniciales de las cuotas para todas las cuotas que 
    haya activado en <filename>/etc/fstab</filename>, por lo que no hace falta crear 
    manualmente ning&uacute;n archivo de cuotas de logitud cero.</para>
	
    <para>Durante el funcionamiento normal del sistema, no debería ser necesario ejecutar 
    manualmente los comandos <command>quotacheck</command>, <command>quotaon</command>, 
    o <command>quotaoff</command>. Sin embargo, puede interesarle leer sus p&aacute;ginas 
    man para familiarizarse con su funcionamiento.</para>
  </sect1>
      
  <sect1>
    <title>Fijando los l&iacute;mites de las cuotas</title>
    
    <para>Una vez haya configurado su sistema para habilitar las cuotas, compruebe que 
    realmente han sido habilitadas. Una forma de hacerlo f&aacute;cilmente es ejecutar</para>

    <screen>&prompt.root; <userinput>quota -v</userinput></screen>
	  
    <para>Deber&iacute;a aparecer una l&iacute;nea describiendo la utilizaci&oacute;n de 
    los discos y los l&iacute;mites actuales de cuotas para cada sistema de archivos en 
    el que est&eacute;n activadas las cuotas.</para>
	
    <para>Ya est&aacute; listo para comenzar a asignar l&iacute;mites de cuota con el 
    mandato <command>edquota</command>.</para>
	
    <para>Tiene varias opciones acerca de c&oacute;mo aplicar l&iacute;mites a la cantidad 
    de espacio en disco de que un usuario o grupo puede disponer y la cantidad de archivos 
    que pueden crear. Puede limitar la cantidad de disco utilizada en funci&oacute;n del 
    espacio f&iacute;sico usado (cuotas de bloque), en funci&oacute;n de los archivos 
    (cuotas de inode) o en funci&oacute;n de una combinaci&oacute;n de ambos. Cada uno de 
    estos l&iacute;mites se divide en dos categor&iacute;as: l&iacute;mites flexibles y 
    r&iacute;gidos.</para>
	
    <para>Los l&iacute;mites r&iacute;gidos no pueden ser sobrepasados. Cuando un usuario 
    alcanza su l&iacute;mite r&iacute;gido, ya no puede disponer de m&aacute;s espacio en 
    el sistema de archivos en cuesti&oacute;n. Por ejemplo, si el usuario tiene un 
    l&iacute;mite r&iacute;gido de 500 bloques en un determinado sistema de archivos y 
    ya est&aacute; utilizando 490 bloques, el usuario s&oacute;lo puede asignar 10 bloques 
    adicionales. Cualquier intento de asignar 11 bloques fracasar&aacute;.</para>
	
    <para>Por otra parte, los l&iacute;mites flexibles pueden ser sobrepasados por un 
    periodo de tiempo limitado. Este periodo de tiempo se conoce como el periodo de gracia, 
    que dura una semana por defecto. Si un usuario permanece por encima de su l&iacute;mite 
    flexible m&aacute;s all&aacute; del periodo de gracia, el l&iacute;mite flexible se 
    convertir&aacute; en un l&iacute;mite r&iacute;gido y no se permitir&aacute; realizar 
    nuevas asignaciones. Cuando el usuario se vuelva a situar por debajo del l&iacute;mite 
    flexible, el periodo de gracia se reiniciar&aacute;.</para>
	
    <para>A continuaci&oacute;n se muestra un ejemplo de lo que podr&aacute; ver cuando 
    ejecute el comando <command>edquota</command>. Cuando se invoca el comando 
    <command>edquota</command>, se inicia el editor espeficado en la variable de entorno 
    <envar>EDITOR</envar>, o el editor <command>vi</command> en caso de que la variable 
    <envar>EDITOR</envar> no se encuentre definida, permiti&eacute;ndole editar los 
    l&iacute;mites de las cuotas de disco.</para>
	  
    <screen>&prompt.root; <userinput>edquota -u test</userinput></screen>
	  
    <programlisting>
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
        inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
        inodes in use: 0, limits (soft = 50, hard = 60)</programlisting>

    <para>Normalmente ver&aacute; dos l&iacute;neas por cada sistema de archivos que 
    tenga activadas las cuotas de disco. Una l&iacute;nea para los l&iacute;mites de 
    bloques y otra para los l&iacute;mites de inodes. Para modificar los l&iacute;mites 
    de las cuotas, simplemente cambie el valor que quiere actualizar. Por ejemplo, para 
    elevar el l&iacute;mite de bloques de este usuario de un l&iacute;mite flexible de 
    50 y un l&iacute;mite r&iacute;gido de 75 a un l&iacute;mite flexible de 500 y a un 
    l&iacute;mite r&iacute;gido de 600, cambie:

    <programlisting> /usr: blocks in use: 65, limits (soft = 50, hard = 75)</programlisting> 
    por: <programlisting> /usr: blocks in use: 65, limits (soft = 500, hard = 600)
    </programlisting></para>

    <para>Los nuevos l&iacute;mites estar&aacute;n vigentes cuando salga del editor.</para>
	
    <para>En ocasiones resulta deseable imponer l&iacute;mites en las cuotas de disco 
    a un intervalo de UIDs (n&uacute;mero de identificaci&oacute;n de usuario). Esto 
    se puede hacer empleando la opci&oacute;n <option>-p</option> del comando 
    <command>edquota</command>. En primer lugar, asigne el l&iacute;mite deseado al 
    usuario y luego ejecute <command>edquota -p protouser UID_inicial-UID_final</command>. 
    Por ejemplo, si el usuario <username>test</username> est&aacute; sujeto a l&iacute;mites 
    en la cuota de disco, el siguiente comando puede ser empleado para duplicar esos 
    l&iacute;mites para los UIDs comprendidos entre 10000 y 19999:</para>
	  
    <screen>&prompt.root; <userinput>edquota -p test 10000-19999</userinput></screen>
	  
    <para>La capacidad de especificar intervalos de UIDs se a&ntilde;adi&oacute; al 
    sistema despu&eacute;s de que la versi&oacute;n 2.1 fuese distribuida. Si necesita 
    esta funci&oacute;n en un sistema 2.1, deber&aacute; conseguir una copia m&aacute;s 
    reciente de edquota.</para>
	
    <para>Consulte <command>man edquota</command>, donde encontrar&aacute; informaci&oacute;n 
    m&aacute;s detallada.</para>
  </sect1>
      
  <sect1>
    <title>Comprobando los l&iacute;mites en las cuotas y la utilizaci&oacute;n de 
    los discos</title>
    
    <para>Puede utilizar el comando <command>quota</command>, o bien el comando 
    <command>repquota</command> para comprobar los l&iacute;mites en las cuotas y la 
    utilizaci&oacute;n de los discos. El comando <command>quota</command> puede ser 
    empleado para comprobar cuotas individuales y de grupo, as&iacute; como la 
    utilizaci&oacute;n de los discos. S&oacute;lo el administrador del sistema puede 
    examinar las cuotas y la utilizaci&oacute;n de los discos por otros usuarios o por 
    grupos de los que no es miembro. El comando <command>repquota</command> puede ser 
    empleado para obtener un resumen de todas las cuotas y la utilizaci&oacute;n de los 
    discos para sistemas de archivos que tengan las cuotas habilitadas.</para>
	
    <para>A continuaci&oacute;n se muestra un ejemplo de la salida del comando 
    <command>quota -v</command> para un usuario que est&aacute; sujeto a l&iacute;mites 
    en la cuota de disco en dos sistemas de archivos.</para>
	
	
    <programlisting>
Disk quotas for user test (uid 1002):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
           /usr      65*     50      75   5days       7      50      60
       /usr/var       0      50      75               0      50      60</programlisting>

    <para>En el ejemplo anterior, en el sistema de archivos <filename>/usr</filename> el 
    usuario ya ha sobrepasado en 15 bloques su l&iacute;mite flexible (fijado en 50 bloques) 
    y a&uacute;n dispone de 5 d&iacute;as del periodo de gracia. Observe la presencia de un 
    asterisco <literal>*</literal>, lo cual indica que el usuario ha sobrepasado su 
    l&iacute;mite en la cuota de disco.</para>
	
    <para>Normalmente, aquellos sistemas de archivos en los que el usuario no est&eacute; 
    utilizando espacio no figurar&aacute;n en la salida del comando <command>quota</command>, 
    aunque el usuario tenga asignado un l&iacute;mite en la cuota de disco para esos 
    sistemas de archivos. La opci&oacute;n <option>-v</option> mostrar&aacute; esos 
    sistemas de archivos, como ha sucedido con <filename>/usr/var</filename> en el ejemplo 
    anterior.</para>
  </sect1>
      
  <sect1>
    <title>* Cuotas a trav&eacute;s de NFS</title>
    
    <para>Esta secci&oacute;n se encuentra en desarrollo.</para>
  </sect1>
</chapter>

<!-- 
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../handbook.sgml" "part" "chapter")
     End:
-->

