Las cuotas en los sistemas de archivos ZFS se pueden configurar y visualizar mediante los comandos zfs set y zfs get. En el ejemplo siguiente, una cuota de 10 GB se establece en tank/home/bonwick:
# zfs set quota=10G tank/home/bonwick # zfs get quota tank/home/bonwick NAME PROPERTY VALUE SOURCE tank/home/bonwick quota 10.0G local |
Las cuotas también influyen en la salida de los comandos zfs list y df. Por ejemplo:
# zfs list NAME USED AVAIL REFER MOUNTPOINT tank/home 16.5K 33.5G 8.50K /export/home tank/home/bonwick 15.0K 10.0G 8.50K /export/home/bonwick tank/home/bonwick/ws 6.50K 10.0G 8.50K /export/home/bonwick/ws # df -h /export/home/bonwick Filesystem size used avail capacity Mounted on tank/home/bonwick 10G 8K 10G 1% /export/home/bonwick |
Aunque tank/home tenga un espacio disponible en disco de 33,5 GB, tank/home/bonwick y tank/home/bonwick/ws sólo disponen cada uno de 10 GB disponibles en disco debido a la cuota en tank/home/bonwick.
No puede configurar una cuota con una cantidad inferior a la que esté usando un conjunto de datos. Por ejemplo:
# zfs set quota=10K tank/home/bonwick cannot set quota for 'tank/home/bonwick': size is less than current used or reserved space |
Puede establecer un valor de refquota en un conjunto de datos que limite la cantidad de espacio en el disco que puede consumir el conjunto de datos. Este límite fijo no incluye el espacio en el disco consumido por descendientes. Por ejemplo:
# zfs set refquota=10g students/studentA # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 106K 33.2G 18K /profs students 57.7M 33.2G 19K /students students/studentA 57.5M 9.94G 57.5M /students/studentA # zfs snapshot students/studentA@today # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 106K 33.2G 18K /profs students 57.7M 33.2G 19K /students students/studentA 57.5M 9.94G 57.5M /students/studentA students/studentA@today 0 - 57.5M - |
Para mayor comodidad, puede establecer otra cuota en un conjunto de datos para administrar mejor el espacio que consumen las instantáneas. Por ejemplo:
# zfs set quota=20g students/studentA # zfs list NAME USED AVAIL REFER MOUNTPOINT profs 106K 33.2G 18K /profs students 57.7M 33.2G 19K /students students/studentA 57.5M 9.94G 57.5M /students/studentA students/studentA@today 0 - 57.5M - |
En esta situación hipotética, studentA puede entrar en conflicto con el límite físico de refquota (10 GB), pero studentA puede eliminar archivos que recuperar aunque haya instantáneas.
En el ejemplo anterior, la menor de las dos cuotas (10 GB si se compara con 20 GB) aparece en la salida zfs list. Para ver el valor de las dos cuotas, use el comando zfs get. Por ejemplo:
# zfs get refquota,quota students/studentA NAME PROPERTY VALUE SOURCE students/studentA refquota 10G local students/studentA quota 20G local |
Puede definir la cuota de un grupo o un usuario mediante el uso de los comandos zfs userquota y zfs groupquota, respectivamente. Por ejemplo:
# zfs create students/compsci # zfs set userquota@student1=10G students/compsci # zfs create students/labstaff # zfs set groupquota@staff=20GB students/labstaff |
Visualice la cuota del grupo o la del usuario actual como se indica a continuación:
# zfs get userquota@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userquota@student1 10G local # zfs get groupquota@staff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupquota@staff 20G local |
Puede mostrar el uso general del espacio en el disco del usuario o grupo mediante la consulta de las propiedades siguientes:
# zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 227M none POSIX User student1 455M 10G # zfs groupspace students/labstaff TYPE NAME USED QUOTA POSIX Group root 217M none POSIX Group staff 217M 20G |
Para identificar el uso individual del espacio en el disco de un usuario o grupo, consulte las propiedades siguientes:
# zfs get userused@student1 students/compsci NAME PROPERTY VALUE SOURCE students/compsci userused@student1 455M local # zfs get groupused@staff students/labstaff NAME PROPERTY VALUE SOURCE students/labstaff groupused@staff 217M local |
Las propiedades de cuotas de grupos y usuarios no se muestran si utiliza el comando zfs get all del conjunto de datos, que muestra una lista de todas las propiedades del sistema de archivos.
Puede eliminar la cuota de un grupo o usuario como se indica a continuación:
# zfs set userquota@user1=none students/compsci # zfs set groupquota@staff=none students/labstaff |
Las cuotas de usuarios o grupos en sistemas de archivos ZFS proporcionan las siguientes funciones:
La cuota de un usuario o grupo que se define en un sistema de archivos superior no la hereda automáticamente un sistema de archivos descendiente.
Sin embargo, la cuota del grupo o usuario se aplica cuando se crea una instantánea o un clon a partir de un sistema de archivos que tiene una cuota de grupo o usuario. Del mismo modo, se incluye una cuota de usuario o grupo en el sistema de archivos cuando se crea una secuencia mediante el comando zfs send, incluso sin opción -R.
Los usuarios sin privilegios sólo pueden acceder al uso de su propio espacio en el disco. El usuario raíz o el usuario al que se le haya concedido el privilegio userused o groupused, puede acceder a la información de cálculo de espacio de grupos o usuarios de todos.
Las propiedades userquota y groupquota no se pueden establecer en volúmenes de ZFS, en un sistema de archivos anteriores a la versión 4, o en una agrupación anterior a la versión 15.
La aplicación de cuotas de usuario o grupo puede retrasarse en varios segundos. Este retraso significa que los usuarios pueden exceder su cuota antes de que el sistema perciba que se ha sobrepasado la cuota y que rechace escrituras adicionales con el mensaje de error EDQUOT.
Puede utilizar el comando quota heredado para revisar las cuotas del usuario en un entorno NFS; por ejemplo, donde se haya montado un sistema de archivos ZFS. Sin ninguna opción, el comando quota sólo muestra la salida si se ha superado la cuota del usuario. Por ejemplo:
# zfs set userquota@student1=10m students/compsci # zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 227M none POSIX User student1 455M 10M # quota student1 Block limit reached on /students/compsci |
Si reinicia la cuota de usuario y el límite de cuota ya no se supera, podrá utilizar el comando quota -v para revisar la cuota del usuario. Por ejemplo:
# zfs set userquota@student1=10GB students/compsci # zfs userspace students/compsci TYPE NAME USED QUOTA POSIX User root 227M none POSIX User student1 455M 10G # quota student1 # quota -v student1 Disk quotas for student1 (uid 201): Filesystem usage quota limit timeleft files quota limit timeleft /students/compsci 466029 10485760 10485760 |