linux创建一个目录并限制其大小
假设生成100MB的磁盘镜像 ,块大小为1024B
[root@AMH ~]# dd if=/dev/zero of=/root/disk.img bs=1024 count=102400
记录了102400+0 的读入
记录了102400+0 的写出
104857600字节(105 MB)已复制,0.944818 秒,111 MB/秒
关联磁盘镜像与块设备(loop0到loop7均可使用)
[root@AMH ~]# losetup /dev/loop0 /root/disk.img
格式化
[root@AMH ~]# mkfs.ext4 /dev/loop0
mke2fs 1.41.12 (17-May-2010)
Discarding device blocks: 完成
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
创建目录,并挂载
[root@AMH ~]# mkdir -p /mnt/area0
[root@AMH ~]# mount /dev/loop0 /mnt/area0/
检查创建目录的大小
[root@AMH ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 28G 12G 15G 44% /
tmpfs 301M 16K 301M 1% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
/dev/loop0 97M 5.6M 87M 7% /mnt/area0
拷一个大于100MB的文件
[root@AMH opt]# ll -h web.tar.gz
-rw-r–r– 1 root root 251M 3月 14 2016 web.tar.gz
[root@AMH opt]# cp web.tar.gz /mnt/area0/
cp: 正在写入”/mnt/area0/web.tar.gz”: 设备上没有空间
[root@AMH opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 28G 12G 15G 44% /
tmpfs 301M 16K 301M 1% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
/dev/loop0 97M 95M 0 100% /mnt/area0
拷一个小于100M的文件
[root@AMH opt]# cp cloud.sql /mnt/area0
[root@AMH opt]# ll /mnt/area0/cloud.sql
-rw-r–r– 1 root root 5610502 4月 1 10:43 /mnt/area0/cloud.sql
[root@AMH opt]# ll -h /mnt/area0/cloud.sql
-rw-r–r– 1 root root 5.4M 4月 1 10:43 /mnt/area0/cloud.sql
系统重启后,目录的内容会丢失,需要重新关联镜像和循环设备,并挂载到原路径,
挂载不需要指定磁盘格式,因为之前已经格式化过.
[root@AMH ~]# cd /mnt/area0
[root@AMH area0]# ls
[root@AMH area0]# cd ..
[root@AMH mnt]# mount /dev/loop0 /mnt/area0
mount: you must specify the filesystem type
[root@AMH mnt]# mount -t ext4 /dev/loop0 /mnt/area0
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error
(could this be the IDE device where you in fact use
ide-scsi so that sr0 or sda or so is needed?)
In some cases useful info is found in syslog – try
dmesg | tail or so
[root@AMH mnt]# mount /dev/loop0 /mnt/area0
mount: you must specify the filesystem type
[root@AMH mnt]# losetup /dev/loop0 /root/disk.img
[root@AMH mnt]# mount /dev/loop0 /mnt/area0
[root@AMH mnt]# cd /mnt/area0
[root@AMH area0]# ls
cloud.sql lost+found
[root@AMH area0]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 28G 12G 15G 44% /
tmpfs 301M 16K 301M 1% /dev/shm
/dev/sda1 485M 35M 426M 8% /boot
/dev/loop0 97M 11M 81M 12% /mnt/area0
开机自动挂载
vim /bin/mount_fs.sh
#!/bin/bash
losetup /dev/loop0 /root/disk.img
mount /dev/loop0 /mnt/area0
chmod +x /bin/mount_fs.sh
vim /etc/rc.local
/bin/mount_fs.sh
若有多个设备需要挂载到不同目录汇总,都可以写入mout_fs.sh中
还有一种方法是通过 磁盘配额实现, 没有该方法简单.
但该方法在开始创建目录时就占用了一定空间.