如何使磁盘配额满

| 我处于超出磁盘配额的情况下必须测试mv(1)命令的情况。 任何人都可以让我知道创建此文件的步骤。.我的意思是我该如何在普通的Unix测试机上使磁盘配额满。 谢谢。     
已邀请:
dd if=/dev/zero of=/home/usverg/test bs=1M count=1024 
其中count是必须填充的MB数:)     
您可以使用操作系统和文件系统提供的任何配额工具设置一个很小的配额,或者通过创建大文件(例如使用“ 1”)来填充文件系统,直到超出或接近配额为止。     
我也有兴趣进行“磁盘已满”测试。 (我写了一些对磁盘已满的情况很敏感的Java代码,但我需要对其进行测试。) 为了扩展Noufal Ibrahim的想法#2,我进行了一些研究,发现了所有必要的命令,以设置和拆除回路设备的安装座。这将允许您创建一个微小的临时挂载。您可以填充它并进行“磁盘已满”测试。 我的命令用于Debian Linux。您的路径可能会略有不同。 这是脚本:
#!/bin/bash

_pwd=$(pwd -P)

usage() {
  echo \"Setup or Teardown a loop device mount\"
  echo
  echo \"Normally, mount & umount require root-level access.\"
  echo \"You may need to run this script via \'sudo\'.\"
  echo
  echo \"Usage 1: $0 setup FILE SIZE DEVICE MOUNT\"
  echo \"         FILE is the virtual file system in a single file\"
  echo \"         SIZE is the size of the virtual filesystem in \'dd\' format\"
  echo \"              The minimum size appears to be 2M for ext3 file systems.\"
  echo \"         DEVICE is the loop device\"
  echo \"         MOUNT is the mount point (directory)\"
  echo
  echo \"Usage 2: $0 teardown FILE DEVICE MOUNT\"
  echo
  echo \"Example: $0 setup ./data.ext3 2M /dev/loop0 /mnt/loop0\"
  echo \"Example: $0 teardown ./data.ext3 /dev/loop0 /mnt/loop0\"
  echo
  exit 1
}

execute_command() {
  local command=\"$1\"
  echo \">>> $command\"
  eval \"$command\"
  local exit_code=$?
  if [ \"0\" != \"$exit_code\" ] ; then
    echo \">>> Command failed with exit code: $exit_code\"
    exit 1
  fi
}

execute_bad_command() {
  local command=\"$1\"
  echo \">>> $command\"
  eval \"$command\"
  local exit_code=$?
  if [ \"0\" == \"$exit_code\" ] ; then
    echo \">>> Command unexpectedly successful!\"
    exit 1
  fi
}

if [ -z \"$1\" ] ; then
  usage
fi

if [ \"setup\" = \"$1\" ] ; then

  if [ \"5\" != \"$#\" ] ; then
    usage
  fi
  VFS=$2
  SIZE=$3
  DEVICE=$4
  MOUNT=$5

  # Create a file
  execute_command \"dd if=/dev/zero of=${VFS} bs=${SIZE} count=1\"

  # Format the file with ext3 filesystem
  # We need \'yes\' here to ignore:
  #   ./data is not a block special device.
  #   Proceed anyway? (y,n)
  execute_command \"yes | /sbin/mkfs -t ext3 -m 1 -v ${VFS}\"

  if [ -d ${MOUNT} ] ; then
    execute_command \"rmdir ${MOUNT}\"
  fi

  # Create the mount point and enable read/write/execute for all users
  execute_command \"mkdir -m 0777 ${MOUNT}\"

  # Mount the file
  execute_command \"mount ${VFS} ${MOUNT} -t ext3 -o loop=${DEVICE}\"

  # Check the loopback setup
  # Example output: /dev/loop0: [0801]:17416195 (/home/kca/saveme/disk-full-test/data)
  execute_command \"/sbin/losetup ${DEVICE}\"

  # Test write
  execute_command \"echo abc > ${MOUNT}/dummy.txt\"

  # Clean-up test write
  execute_command \"rm ${MOUNT}/dummy.txt\"

  echo \"Try to fill new mount with junk data:\"

  # We expect to fail and see this error message:
  # dd: writing `/mnt/loop0/data\': No space left on device
  execute_bad_command \"dd if=/dev/zero of=${MOUNT}/junk bs=${SIZE} count=2\"

  # Clean-up junk write
  execute_command \"rm ${MOUNT}/junk\"

  echo \"Loop device mount setup and testing complete:\"
  echo \"${MOUNT}\"

elif [ \"teardown\" = \"$1\" ] ; then

  if [ \"4\" != \"$#\" ] ; then
    usage
  fi
  VFS=$2
  DEVICE=$3
  MOUNT=$4

  # Unmount the file
  execute_command \"umount ${MOUNT}\"

  # Check loop device after mount.  We expect to fail.
  # loop: can\'t get info on device /dev/loop0: No such device or address
  execute_bad_command \"/sbin/losetup ${DEVICE}\"

  execute_command \"rmdir ${MOUNT}\"

  execute_command \"rm ${VFS}\"

  echo \"Loop device mount teardown complete.\"

else
  usage
fi

exit 0
    
您可以手动将配额设置为非常低的值,然后尝试使用命令。 您可以创建一个(例如)10MB的文件,然后将其格式化为ext3分区,并使用回送接口挂载它。然后,将cd插入该安装点,最大大小为10MB。     

要回复问题请先登录注册