文件系统和磁盘是数据存储的关键。文件系统是OS在磁盘或分区上保存文件信息的方法和数据结构,即文件在磁盘或分区上的组织方式。
Linux文件系统
超级区块(superblock)包含有关该磁盘或分区的文件系统的整体信息;
索引节点(inode),包含针对某个具体文件的几乎全部信息,但不包括文件名字信息;
数据块(data block)真正存储文件内容的位置;
目录块(directory block)包含有文件名字和文件索引节点编号。
常见的文件系统
在Linux系统中,硬盘被分区后,需要格式化才能使用,支持ext2、ext3。
采用节点(inode)来保存文件属性的,该索引节点inode记录文件的相关信息,包括所有者、权限、大小、时间戳等
在内存中的inode还维护者该节点的使用计数,打开增1,删除减1,为0时才真正删除文件。
1、Ext2文件系统 最早采用的,源于Minix,适合中小型文件管理
2、Linux Ext3文件系统相当于Linux Ext2文件系统的增强版,发展了日志功能。
3、Linux Swap文件系统是Linux专门用于交换分区的文件系统,使用这个分区作为内存页面交换空间,不易产生碎片,比
Windows效率好。
文件类型
系统文件、CONF配置文件、LOCK锁定标识文件、RPM软件包文件以及压缩文件和编程和脚本语言等。
文档压缩与归档
归档方便将一组文件存储成一个文件实现快速备份或快速传输。
1、compress
压缩命令compress,UNIX系统的压缩指令,压缩后加.Z,要将多个文件压缩必须将文件用tar工具打包
注:解压使用uncompress命令
2、gzip/zcat
gzip由GNU开发,后缀.gz,取代了compress,zcat显示其压缩文件内容,如
gzip doc1
zcat doc1.gz
解压缩用gzip -d doc1.gz
注:gzip压缩会删除原文件,需要先复制到其他地方压缩。
3、bzip2/bzcat/bunzip2
bzip2比gzip压缩率更高,对应的解压缩软件有bzcat(显示压缩文件的内容)和bunzip2等
bzip2recover
用于从bzip2文件中恢复文件
#bzip2recover File
4、tar
将文件或目录打包在一起
注: (c打包/x解包/t查看tar文件里的内容)不能同时存在
#tar -zcvf directory.tar.gz directory
文件链接
给目录创建一个链接可以快速访问该目录而不用输入一长串的目录路径。
链接指令ln,创建两种链接:软链接(Symbolic Link)和硬链接(Hard Link),默认为硬链接
1、硬链接
硬链接是通过索引节点来进行链接,所有的硬链接必须位于同一分区中,达到一个文件拥有多个有效路径名的功能,防止删除该文件。
2、软链接
相当于windows的快捷方式
软链接的文件属性为“l”,硬链接没有,当inode与被链接的文件一样。
删除文件后,软链接失效,硬链接正常。
安装文件系统
1、Windows分区
#mkdir /mnt/Win_C
#mount -t vfat /dev/sda1 /mnt/Win_C
#umount /mnt/Win_C
2、安装光驱
#mkdir /mnt/cdrom
#mount -t cd9660 /dev/cdrom /mnt/cdrom
#umount /mnt/cdrom
此时,光驱与目录脱离,可以打开光驱
3、使用fstab安装文件系统
通过编辑/etc/fstab文件来实现,比如增加C盘
#device Mountpoint FStype Options Dump Pass#
/dev/sda1 /mnt/Win_C vfat defaults 0 0
其中,1列为设备,2列为未知,3列为类型,4列为进行的操作,default默认安装,5和6列是系统程序dump和fsck是使用的标识,在根文件系统上是1,其他文件系统为0。
注:fstab文件非常重要,有错误的话,系统不能启动
磁盘管理
磁盘用来存储文件,都必须经过格式化分区才能使用
1、硬盘物理结构
硬盘由很多圆形硬盘盘片组成,只有一个盘片叫单碟硬盘,多个盘片叫多碟硬盘。
磁头对盘片进行读、写操作,磁道为盘片的一圈,所有硬盘的同一磁道组成了柱面(Cylinder),柱面是磁盘分割(partion)时的最小单位。
由圆心向外划直线,将磁道细分为一个个扇区(Sector),一般每扇区512B,是硬盘盘片上的最小存储数据的物理单元。
2、硬盘分区
对硬盘分区即是告诉OS,该磁盘可以存取数据,此时,OS才能控制磁头在该区域范围内存取数据。所以,分区就是记录每一个分区的起始与结束柱面,分区结果存放在MBR,MBR是计算机开机后利用该磁盘时读取的第一个区域,包括分区信息与开机时进行本机管理程序的入口地址都放置在MBR中,MBR在一块磁盘的第0磁道上面。
注:当一块磁盘的MBR坏掉时,硬盘相当报废
MBR最多提供四个分区的存储空间,即Primary和Extended共计4个,在Extended上可以划分逻辑分区(Logical)。
3、硬盘名称
IDE硬盘/dev/hdX 主分区为1、2、3,逻辑分区从4开始命名
SATA/SCSI硬盘/dev/sdX管理磁盘分区
Linux中,每个设备都是用/dev文件夹下的一个文件来表示,/dev表示根目录下的dev目录
1、磁盘分区指令
(1)fdisk
该命令用于显示磁盘分区信息,创建或删除磁盘分区、改变活动分区等,面向底层的系统工具。
问答式的界面管理、维护分区,允许4中不同OS的不同分区,但给定时间只有一个分区是active。Linux建议最小容量40M,
#fdisk -l (查看系统中的磁盘分区) -u(以扇区为单位,每个扇区512B)
#fdisk /dev/sdb (进行磁盘分区)
(2)parted
parted是一款基于GPL协议的硬盘分区开源软件,主要用于磁盘分区或调整分区大小,通过此工具可以创建、清除、调整、移动和复制ext2、ext3、linux-swap、FAT、FAT32和reiserfs分区;能创建、调整和移动Apple OS的HFS分区;还能检测jfs/ntfs/ufs/xfs分区。除了重新划分分区大小外,与fdisk没有区别。
执行方式有两种,命令行与交换式。不带任何参数的parted是交互式。(调整前先卸载硬盘)
#parted
(parted)select /dev/sda
(parted)print
(parted)mklabel msdos (创建一个msdos格式的分区表)
(parted)mkpartfs PRIMARY EXT2 0 25%
(parted)mkpart extended 25% 100%
(parted)mkpartfs logical EXT2 25% 100%
(parted)quit
#parted /dev/hdb
(parted)print 2
(parted)resize (调整分区大小)
Partion number? 2
Start?[494M]? 494
End?[1069M]? 544
(parted)print 2
#part /dev/hdb
(parted)print
(parted)rm 2(删除2号分区)
(parted)print
(parted)rescue 494 544 (恢复2号分区表)
(parted)print
2、磁盘格式化
分区后需要格式化才能使用,Linux支持的格式化指令mkfs、mkdosfs、mke2fs、mkfs.ext2、mkfs.ext3
(1)mkfs
注:mkfs指令本身并不执行建立文件系统的工作,而是根据-t参数指定文件系统类型去调用相关mkfs的适当版本。
#mkfs -V -t msdos -c /dev/hda2
-V 显示详细信息
-c 检查设备上是否有损坏的区块
#mkfs -t ext2 -j /dev/hda3 (用来创建ext3文件系统)
(2)mkdosfs
#mkdosfs -I /dev/sdb (在U盘上建MS-DOS文件系统)
之后就可以使用mdir等mtools系列命令管理U盘
(3)mke2fs
#mke2fs /dev/sdb (将U盘建成ext2文件系统)
#mke2fs -L Ext2-Disk /dev/sdb (卷标为Ext2-Disk)
(4)mkisofs (制作iso文件的命令行工具软件)
#mkisofs -o hhwork.iso /root/hhwork/
-o 指定映像文件名
#mkisofs -x tmp -m install.log -o demo.iso /root/demo
-x 指定的目录不会放入映像文件中
-m 指定的文件不会放入映像文件
-r 使用Rock Ridge Extentions,保留全部文件的读取权限
#mkisofs -log-file demoiso.log -publisher "Hhwork" -r -o hhwork.iso /root/hhwork
(将信息记录到demoiso.log文件中,同时指定发行人为"Hhwork")
3、加载分区
/ 根分区,用来保存系统引导到单用户模式所需要的核心系统文件
/usr 保存系统文件的分区,比如用户工具、编译器等,Linux系统源代码也保存在该分区
/var 保存变量文件的分区,包括队文件(电子邮件、打印缓存)和日志分区
/tmp 临时分区
/home 用户家目录
Swap 交换分区,类似Windows的PageFile.sys
磁盘管理命令
1、df
查看文件系统磁盘的使用情况,报告已安装文件系统上的剩余磁盘空间信息,而不报告未安装文件系统的情况。
注:当已用达到100%时,管理员仍可以登录,因为默认的配置下每个分区都留了少量空间供系统管理员使用
-i 报告索引节点inode的使用信息
-a 显示所有文件系统的使用情况
2、du
查看磁盘空间的使用情况的功能,主要是报告Linux文件系统中指定文件或目录所占用的磁盘空间使用情况,允许以此指定多个
文件或目录
注:命令得到的结果是一个文件或目录所占用的磁盘空间的大小,它与文件或目录本身的时间大小不一定相等。
-a 输出所有文件的使用情况
-b 以B为单位
-s 为每个指定目录只显示一个总和
-S或--separate-dirs 当合计父目录的大小时,不包括子目录的大小
--max-depth=1 超过指定层数的目录后忽略不计
-m 以MB为单位
#du -sSh
#du -abh *
3、fsck
文件系统的完整性检查工具
#fsck -t ext3 /dev/sdb5
4、badblocks
用来检查软件或者硬盘是否有坏道
#badblocks /dev/sdb5
5、mount和umount
主要用来加载及卸载文件目录
-o 指定设备或文件的挂载方式
loop 用来把一个文件当成硬盘分区挂接到系统上
ro 只读方式挂接设备
#fdisk -l
#more /proc/partitions (查看新插入的U盘)
#mkdir /p /mnt/usb
#mount -t vfat -o iocharset=cp936 /dev/sbb1 /mnt/usb (-o iocharset=cp936 识别汉字文件名)
#umount -r /mnt/usb (若无法卸载可以尝试以只读方式重新挂载U盘)
#umount /dev/cdrom 或者#umount /mnt/cdrom 卸载
磁盘配额管理
Linux实现了完整的磁盘空间配额管理,能够对所有用户或群组所使用的空间进行管理,并能够在合适的时机给予提醒和警告
1、磁盘限额的相关知识
磁盘限额是有多少磁盘容量限制的意思,Quota在实际运作的时候,是针对“整个分区”进行限制的,而不能针对某个分区下的具体目录,并且Linux OS核心必须支持磁盘限额模块的使用,同时,磁盘限额只是针对一般用户,对root账号无效,Ext2和Ext3格式支持限额。
2、限额中限制内容
(1) soft limit(软限制)
最低限制容量,在硬限制的限定下,用户可暂时超过软限制,但一段时间后,系统将禁止此用户账号,可以由root重新激活。
(2)hard limit(硬限制)
不得超过的磁盘使用限额
(3)Grace Period(宽限时间)
宽限时间设置决定某人使用磁盘时遵守软限制所用的时间
3、限额的相关指令
(1)edquota
#edquota -u stella
注:该命令用来编辑用户或群组的磁盘限额数值。
#adduser -g stella jackel
#edquota -p stella -u jackel
-p 将指定用户或者群组的磁盘限额配置复制过来。
(2)setquota
(3)quota
该命令用于查询磁盘空间的限制和已经使用的空间
#quota -s -u root
-s 以可读性较好的方式显示
-u 显示用户的磁盘空间限制,缺省设置
(4)quotacheck
用于检查磁盘的使用空间与限制,且只有root用户可以使用该命令
注:执行该命令,扫描载入系统的命令,并在各分区的文件系统根目录下产生quota.user和quota.group文件。为了保证系统的正确性,有必要做一个计划让quotacheck命令定期执行
#mkdir /home/stella/test
#mount -t vfat /dev/sdb1 /home/stella/test
#df
#vi /etc/fstab
增加usrquota,grpquota
#umount /dev/sdb1
#mount -a
#more /etc/mtab ;查看当前系统中进行配额限制的分区
#quatochec -avug
-a 检验/etc/mtab中记录的所以已挂载的非NFS文件系统
-v 显示命令执行过程
-u 检验用户配额
-g 检验群组配额
#ll /home/sheriff/test ;在/home/sheriff/test目录下创建了两个文件aquota.group和aquota.user
(5)quotastats
显示所有磁盘配额有关的统计信息
(6)warnquato
为超过限制的用户发送邮件
(7)repquota
用于检查和报告磁盘空间限制的状况
#repquota -a
显示所有分区中所有用户的磁盘限制状况信息
#repquota -ags
以可读性较好的方式报告所有分区中群组的磁盘限额状况信息
#repquota -ugs /home/stella/sdb1
报告文件系统“/home/stella/sdb1”的用户和群组的磁盘限额状况信息。
(8)quotaon
用于开启用户或群组的磁盘空间限制,各分区的文件系统根目录必须有quota.user和quota.group配置文件
#more /etc/mtab ;查看当前系统中进行配额限制的分区
#quotaon -av ;启动当前系统中的分区配额限制功能
(9)quotaoff
#quotaoff -av
关闭所有文件系统的配额限制,也可以指定特定的文件系统取消用户或者群组的磁盘空间的使用限制。