linux的文件系统管理是重点也是难点,知识点很多。大概分成4个部分进行讲解:linux文件系统的构成、设备挂载、分区与格式化原理、磁盘配额。
一、文件系统构成
文件系统构成首先应该掌握linux有哪些目录,这些目录有些什么用
在大概了解了一些重要的目录情况之后,接着介绍几个文件系统命令:
(1)df 查看分区使用情况
df -h 以M单位显示内容
(2)du 查看文件目录大小
du -h 以M单位显示大小
du -sh 查看目录大小要加上s(
statistics)
(3)fsck 文件系统检测修复命令file system check
fsck -p 自动修复
fsck -y 回答yes的修复
(4)file 判断文件类型命令
file 文件
二、设备挂载
首先要知道设备一般分两种,一种是块(block)设备,一种是字符设备(char)。通过下图ls查看的第一个字母可知。
(1)光驱挂载
通常建议在mnt目录下创建目录进行挂载,因为mnt是文件系统的临时挂载点。
光盘卸载使用 umount 挂载点 有时候会提示忙,因为你的当前目录可能在挂载点中,所以可以用eject弹出光盘。
(2)U盘挂载
三、添加硬盘分区并格式化 首先在设置里给虚拟机添加一块硬盘
然后重启或者开机,开机以后通过
dmesg | grep sdb查看下关于新硬盘的信息就知道成功识别了没有。从提示信息的unkonwn partition table 可知没有分区表。接下来就是进行分区。分区要使用的命令就是fdisk
(1)fdisk 硬盘分区
fdisk -l /dev/sda 查看第一个硬盘的分区信息及
其他硬盘相信信息 直接输入fdisk /dev/sdb 即开始对sdb即第二个硬盘进行分区并进入分区程序命令行。输入m可以得到帮助如下:
看到上面的帮助,p为显示分区表。n添加新的分区。那么我们输入n,然后就会提示你新添加的分区是主分区p还是拓展分区e,先输入p表示我们创建的是主分区然后要你输入分区号(1-4),我们输入1。然后接着要你输入该分区起始和终止的柱面,起始用默认1就可以了,但是终止如果只分一个区,那么默认的也可以。但我们不只分一个区,所以我们需要计算该分区终止柱面以便给下一个分区留出空间。
但是填写柱面数,我们很难计算柱面与大小的对应关系。根据提示知道,可以使用+sizmM或+sizeK的方式设置第一个分区大小。那我们给2G,输入+2048M回车即可。然后通过p查看可知第一个分区已经出现。另外主分区和扩展分区有什么区别?
接着把剩下的大小也分一个主分区就可以了。(当然想分几个自己看着办)默认新添加分区的类型根据linu
x版本不同而不同,centOS5.5默认是ext3。那如果我们想更改这个文件系统的类型应该使用t。如果对已分区的不满意可以用d删除分区。如果已经满意的,输入w保
存退出,q是不保存退出。
(2)mkfs 格式化部署文件系统(mkfs.ext3)
mkfs.ext3 /dev/sdb1 就可以直接格式化sdb1这个分区了
(3)硬盘挂载
在创建分区和格式化分区以后,接着就要挂载硬盘并使用了。首先创建两个目录,用来对应这两个分区。我创建/bak和/web,然后通过mount命令进行挂载。
mount /dev/sdb1 /web以及mount /dev/sdb2 /bak
但是通过mount命令挂载的在重启以后就会失效,那么让它永久有效呢?这就要用到/etc/fstab这个配置文件了。用vi打开配置文件如下:
格式是---物理分区名(卷标) 挂载点 文件系统类型 缺省设置 是否在引导时进行数据检测 检测顺序
检测顺序就是设置的数据检测的顺序,一般有3个值分别是0、1、2,0表示不检测,1表示优先检测,2表示正常检测。缺省设置是指定的挂载时候使用的挂载设置,大部分使用的default默认设置。下面我们把自己刚刚添加的硬盘添加进去。
/dev/sdb1 /web ext3 defaults 1 2
当然除了用物理分区名还可以使用卷标,首先使用e2label /dev/sdb2查看卷标名,如果为空说明没有卷标。那么通过
e2label /dev/sdb2 datebak 来设置进卷标。
LABEL=datebak /bak ext3 defaults 1 2
(4)swap分区拓展
当你觉得swap分区的不够用时,可以通过拓展swap分区来满足要求。那如何拓展swap分区呢?首先要介绍一条指令叫做dd
1.dd
dd是一条拷贝指令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd if=input of=output 格式就是这样,表示从if指定的input把信息拷贝到of指定的output中。
我们在做swap拷贝时,用dd if=/dev/zero of=/var/swap/file.swap bs=1024K count=64 从zero设备里面拷内容到file.swap文件中,以1M(1024k)为块单位,一共拷贝64块,及64M。这里需要说的是/dev/zero这个设备,其实这是一个伪设备,作用是不停的往外输出0。与/dev/null这个伪设备相反,/dev/null就是不停的可以把垃圾信息往里面输入,然后就没有了(像黑洞一样)。这样就创建了一个64M大小内容全是0的file.swap文件。
然后通过mkswap /var/swap/file.swap 当然如果你不想永久的让文件成为交换区而是根据需要动态开关,就不要修改配置文件,而是通过把该文件设置成交换区的一部分。然后在/etc/fastab的配置文件中修改配置文件加一行:/var/swap/file.swap swap swap defults 0 0 这样系统开机就会自动加载这个swap文件,就使得该文件成功永久变成了swap分区的一部分。当然如果不想这个文件永久成为swap分区的一部分,而是想动态的根据需求来添加swap分区,可以使用swapon /var/swap/file.swap 或swapoff来对文件进行开关。
四、磁盘配额
试想,如果一个用户的宿主目录和系统目录是在一个分区中,那么用户在自己的宿主目录通
过dd /dev/zero zerofile bs=1024k count=102400 的命令创建一个100G的文件,那么很有可
能就会把系统目录分区胀满,这样许多临时文件都没法创建了,导致重新引导失败。得知后果其
实是很严重的,那么其中一个解决这个问题的方法就是给用户的分区进行磁盘配额限制。
(1)开启分区磁盘配额功能
开启的方法是在/etc/fstab文件中,在挂载属性上加上标志usrquota(用户配额),当然要记得重启修改的配置才生效!
(2)建立配额数据库
使用quotacheck -cvuga 命令会自动生成aquita.user和aquita.group两个文件(这是用于对该分区进行配额管理的文件)。
1.quotacheck
-c 创建 ,-v 创建过程显示信息,-u表示创建用户配额文件,-g表示创建组配额文件,-a表示检
测所有的系统分区
如果不是检测所有的系统区就把-a去掉加上需要检测的分区 quotacheck -cvu /web
(3)启用配额功能
1.quotaon 分区名称 开启
2.quotaoff 分区名称 关闭
(4)编辑用户配额信息
使用edquota 用户名 就可以进入来编辑该用户的配额信息。edquota mysileng可以看到因为我们开启了一个分区的配额功能所以配置文件里面有了一行。
这就是mysileng用户的配额分配页,因为我们只开启了一个配额分区功能,那么就只有一行信息。filessystem就是分区,blocks是块单位是1k,soft是软性限制,hard是硬性限制。软性限制是在超出限制后会给出警告,并在7天之内删除超出的部分。硬性限制是在超出时候给予错误的提示。inode与blocks类似,只是限制inode节点数而不是大小。
我们把block的hard改成100M即102400即可。保存退出就可以了。然后通过repquota -a可以查看所有用户的配额信息,repquota 分区可以查看该分区配额信息。quota 用户名查看用户配额信息。edquota -t 设置soft的宽限期。 edquota -p 模板用户 复制用户1 复制用户2 就可以把模板用户的配额信息复制给复制用户。