问题描述
|
我处于超出磁盘配额的情况下必须测试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。