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中

还有一种方法是通过 磁盘配额实现, 没有该方法简单.

但该方法在开始创建目录时就占用了一定空间.

Leave a Reply