下面介绍一下系统主要的目录用途:
/bin /sbin :os自身运行要用到的程序
/usr/{bin,sbin}:os管理工具
/usr/local/{bin,sbin}:第三方程序可执行程序
库目录/lib[64]:公共功能模块
/usr/lib
/usr/local/lib
/etc:系统配置文件
/usr/local/etc
/tmp
/var/log
/var/cache:为多个程序提供缓存
/dev:设备文件
/proc:伪文件系统,可定制内核特性, 启动后传递参数给内核(grub也可以:启动时传递参数给内核)
/home:用户家目录
/sys: 伪文件系统,硬件信息,在这里可以改硬件属性
/boot:引导目录;放置内核
磁盘类型及文件名
Ide\ata接口的第一块盘为/dev/hda,第一个分区为hda1 第二块盘为/dev/hdb,依此类推
Sata\usb\scsi(有智能芯,稳定度高,寿命长)\sas接口的第一块盘为/dev/sda,,第一个分区为sda1 第二块盘为 /dev/sdb,依此类推###udev可以配置个性化的硬件名称如/dev/usb1
文件分区(文件系统)建立步骤:格式化分区(即高级格式化),挂载即可
低级格式化:创建磁道和划分扇区,低格会大大影响磁盘寿命。
划分分区一般以柱面来划分(一块磁盘有10000个磁道就有10000个柱面,同心圆,由外向里划分)
一块磁盘上的0磁道,0扇区为MBR,不属于任何文件系统
MBR:446bytes(bootloader)
64bytes(分区表,每16bytes一个分区,因此最多4个主分区)
2bytes(标识此硬盘是否为可引导的,可引导的值为5A)
查看分区信息: fdisk -l /dev/sda1
创建、删除、修改磁盘上的分区:fdisk /dev/sda
RHEL5.X使内核在读取硬盘分区表#partprobe /dev/sda
RHEL6.X使内核在读取硬盘分区表#partx -a /dev/sda1 /dev/sda
查看内核硬盘分区表#cat /proc/partitions
格式化分区:mkfs -t ext3 /dev/sda1
显示块设备属性(文件系统类型、uuid、卷标):blkid /dev/sda3
显示文件系统属性(块大小):#tune2fs -l /dev/sda3|grep “Block Size”
示例#mke2fs -t ext4 -b 2048 -L MYDATA /dev/sda3
注:在/etc/fstab文件中使用卷标挂载比使用设备文件名挂载要有效得多,不容易出错。
文件系统预留空间(一般预留给管理员,修复系统使用)
tune2fs -l /dev/sda3|grep “Reserved”
调整预留空间
1)创建文件系统时:mke2fs -m 3 /dev/sda1
2) 调整已有文件系统:tune2fs -m 3 /dev/sda1(调整为3%)
tune2fs命令常用选项:
-o:设定挂载默认选项
-O:设定文件系统默认特性
-r #:调整预留给管理员使用的块个数
-m #:调整预留给管理员使用的文件系统空间的百分比
-E:调整文件系统的扩展属性
-l:显示文件系统超级块信息
E2label命令(显示或设定文件系统卷标)
例:#e2label /dev/sda3
#e2label /dev/sda3 MYDATA
Mount [-t fstype] [-o option] DEVICE MOUNT_POINT
-n 挂载文件系统时,不更新/etc/mtab文件
-v 挂载时显示详细信息
-r 相当于-o ro(只读挂载)
注:挂载点下的原有文件在挂载后会被隐藏起来无法被访问。因此千万不要挂载到系统常用目录上。
格式中:DEVICE可用UUID=XXX或者LABEL=XXX代替
直接输mount命令可以显示/etc/mtab中的内容
Mount –a 命令可以自动挂载/etc/fstab中允许自动挂载的分区
Mount命令 的 option(-o用于指定挂载选项,以下列出挂载选项的参数,注:用-o指定挂载选项时默认会使用defaults选项,其他的指定选项可以覆盖defaults选项中的某些选项)
Ro只读
Rw读写
Atime默认的,每次访问文件都会更新文件访问时间戳
Noatime:与上面相反,这个选项可以减轻IO负担,优化系统性能
Auto:是否可以由Mount –a 命令可以自动挂载
Defaults:使用了一堆选项的集合,rw, suid,dev, exec, auto, nouser, async, and relatime.
Dev:是否允许在此文件系统上启用设备文件*设备文件非常关键,一旦它所属的文件系统被卸载,其他设备将无法访问它。
Nodev:与上面相反
Diratime:同上面
Nodiratime: 同上面
Exec:是否允许执行此文件系统上的文件(例如:U盘上的可执行文件比较危险)
Noexec: 与上面相反
Relatime:atime改变时改变ctime
Norelatime:与上面相反
Remount:将某文件系统以新的挂载选项重新挂载,注意,重新挂载时不需要指定设备文件,只需要指定挂载点即可,示例:mount –o remount,rw /
Loop:挂载本地回环设备 示例:mount -o loop,ro /root/boot.iso /mnt
Sync
Async
卸载命令 umount 格式
Umount Device/mount_point
注意:卸载时要确保没有进程正在访问要卸载的设备,否则无法卸载,卸载时如果遇到“device is busy”类似的报错提示,可以查一下正在访问设备的进程号
:fuser /media ,也可以用lsof命令;杀掉相关正在访问此设备的进程,再尝试卸载:
:fuser –km /media
系统开机时文件系统自动挂载的定义:/etc/fstab文件,下面是详细介绍(新加的分区需要开机自动挂载的话,需要先在这个文件中添加一行)
第一列:挂载设备,可用uuid,label,或设备文件名,伪文件系统/proc /sys,及交换分区swap格式不同,示例如下:
UUID=6016e181-cc52-4ec9-a827-91fd15425faeswap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
第二列:挂载点
第三列:被挂载设备的文件系统类型
第四列:挂载选项,多个选项间用逗号分隔。
第五列:转储频率,指定dump命令多长时间对它做一次备份;0从不备份1每天备份2每隔一天备份。
第六列:自检次序,文件系统的检查次序(清除坏的文件,修复文件系统),根文件系统应当首先被检测,0不检测;1第一个检测;2~9为检测顺序,但1只能为文件系统。
文件系统的定义:是在内核中实现的一个模块(因为只有内核有权限访问硬盘),提供文件的打开,写入,关闭等功能(系统调用)。每个文件系统接受的系统调用可能各不相同,为了便于程序员开发,linux内核为多种不同的文件系统加了一个统一的中间层(VFS,virtual file system)来屏蔽底层文件系统的不同,为程序员提供一个统一的文件系统系统调用。
常见的文件系统类型如下:
Windows:NTFS,FAT32
Linux:iso9660,nfs,cifs,ext[234],xfs,jfs,reiserfs,vfat
集群文件系统:GFS,GFS2,OCFS2
格式化文件系统命令:格式化的文件系统必须被要挂载的linux内核支持才能使用,即系统上有相应的编译好的内核模块;或者已经将此模块整合进内核。
文件系统创建工具:通常是:mkfs.fstype或者mkfs -t fstype
还有一种专用于创建ext系列文件系统的命令:mke2fs
Mke2fs的功能比较丰富,但只支持创建ext文件系统,mkfs命令的通用性更强,支持创建多种文件系统。
Mke2fs -t fs-type
-L 卷标
-m 保留块占据文件系统的百分比
-b 块大小