1.设备文件:关联至一个设备驱动程序,进而与之相对应设备文件通信
2.设备号码:
主设备号:major number 标识文件类型
次设别号:minor number 同一类型下不同设备
3磁盘组成结构:
.
磁头数=盘面数
磁头 2^8 256个磁头
磁道 由外至内排序 最多1024 用10个二进制位标识
柱面 将扇区组成一个圆,即是柱面,柱面是分区的最小单位 512bytes*256*63=8M
扇区 一个磁道最多63个扇区 用6个2进制为表示
磁盘大小:512*63*1024*256
分区inode、block、superblock、block group示意图:
一个文件系统应该仅有一个superblock,但后续的block group也可能含有superblock,但后边的只是前边的备份,可以进行superblock的救援
5.MBR分区方式,使用32位标识扇区数,分区大小不超过2T
分区方式:按照柱面
0磁道0扇区:512bytes
446bytes: boot loader
64bytes:分区表 – -> 每16bytes: 标识一个分区
2bytes: 55AA 有此内容,说明有分区
mbr一般情况下需要备份
实例:实现相同大小磁盘/dev/sde拥有和/dev/sda相同分区情况
(1)把/dev/sda的mbr复制到/dev/sde
(2)显示/dev/sdembr信息
(3)把mbr第511~512换为空
(4)发现/dev/sde分区信息没有了,由此说明:mbr最后两个字节必须存在且为“55aa”,否则即使分区信息正确,依然无法显示分区信息
四个主分区:3个主分区+1个拓展分区
6.GPT分区方式
(1)GUID(Global Unique Identifiers) partition table支持128个分区(不分主分区、拓展分区),使用64位,支持8Z(512bytes/block)、64Z(4096bytes/block)
(2)使用128位UUID 表示磁盘和分区GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI( Unified extensible firmware interface)(统一扩展固件接口)硬件支持GPT,使操作系统启动
(3)EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域
7.分区优点
优化i/o性能、实现磁盘空间配额限制、隔离系统与程序、安装多个系统、提高修复速度
8.管理分区
(1)列出块设备:lsblk
(2)创建分区使用:
a. fdisk创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区
fdisk -l device显示设备分区表,没有参数,显示/proc/partitions内容(显示的是磁盘上的分区表)
fdisk -u 以sector为单位显示分区信息,默认是cylinder
fdisk -c 关闭dos
b. gdisk创建GPT分区
c. GNU parted高级分区操作(创建、复制、调整大小等等)实时生效 对GPT格式文件系统使用,只能在centos7上边使用
parted [option] … [设备[命令[参数]…]…]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print 显示分区表
mkpart part-type [fs-type] start end 创建一个“part-type”类型的分区,“fs -type”文件系统 大小为$【end – start】M大小
parted /dev/sdb mkpart primary 1 200(默认是M)
parted /dev/sdb rm 1 删除分区
parted -l 显示分区表信息
(3)同步分区表
partprobe-重新设置内存中的内核分区表版本(centos5,7适用,centos6新分区适用)
查看分区表同步情况:/proc/partitions
通知内核重新读取分区表:
新增分区:
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
删除分区:
partx -d –nr /dev/DEVICE
–nr说明范围
centos6:partx
centos5,7:partprobe
9.文件系统的相关知识
(1)文件系统是操作系统用来明确分区或存储设备上文件的方法和数据结构;也就是组织文件的方法;操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称为文件系统
从系统角度看,文件系统是对存储设备空间进行组织与分配,负责文件存储,并对存入文件进行保护与检索;具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。
(2)Linux文件系统: :ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
光盘:iso9660
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
网络文件系统:NFS, CIFS
集群文件系统:GFS2, OCFS2(oracle)
分布式文件系统:ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:未经处理或者未经格式化产生的文件系统
查看当前系统支持文件系统:cat /proc/filesystems
(3)文件系统分类
根据其是否支持"journal"功能:
日志型文件系统: ext3, ext4, xfs, … 保证文件系统的安全可靠
非日志型文件系统: ext2, vfat
文件系统的组成部分:
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
查前支持的文件系统:cat /proc/filesystems
Linux的虚拟文件系统:VFS
(4)创建文件系统
mkfs.fs_type /dev/device
mkfs -t type /dev/device
(5)ext文件系统相关操作
a.mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}
-b {1024|2048|4096} block大小(字节)
-i #;为空间中多少字节创建一个inode,大小不应小于block大小
-I:一个inode大小 128-4096字节
-L lable :赋值给label
-l label: 给label所代表设备创建文件系统
-m #:预留多少空间给管理员,默认5%
-N#:为空间创造多少个inode
-O feature:启用指定特性
-O ^feature:禁用指定特性
b.专门管理ext系列文件系统的lable:e2lable
c.tune2fs:重新设定ext系列文件可以调整参数的值
-l:查看指定文件系统超级块信息;super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用,–O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号
(6)文件系统标签
blkid:块设备文件属性查看(显示已挂载文件信息)
blkid [option] …[device]
-U uuid 查找与uuid匹配的文件属性
-L lable 查找与lable匹配的文件的属性
findfs :查找分区
findfs[options] LABEL=<label>
findfs[options] UUID=<uuid>
(7)文件系统检查与修复(修复前,所修复文件必须处于卸载状态)
常用于死机或非正常关机
挂载文件系统标记为“dirty”
* fsck.FS_type
*fsck -t FS_type
-a 自动修复
-r 交互式修复错误
FS_type必须和分区上边的文件类型相同
*e2fsck:ext系列文件系统专用的检测修复工具
-y 自动回复为“yes”
-f 强制修复
10.挂载的相关知识
(1)挂载:将额外文件系统与根文件系统上某目录建立起关联关系,使得此目录成为其他文件访问入口的行为
卸载:接触关联关系
挂载点目录一般为空(否则其下目录会被隐藏)
(2)mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
cat /proc/mounts:查看挂载情况
findmnt mnt_point
(3)mount [-fnrsvw] [-t vfstype] [-o options] device dir
* device:指明要挂载设备
设备文件:例如/dev/sda
卷标:-L lable
uuid,-U uuid
伪文件系统名称:proc sysfs devtmpfs cofigfs
* dir:挂载点
事先存在的空目录;正在使用的设备无法被卸载 例如:/目录
-t vfstype:指定要挂载的设备的文件系统类型
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,相当于#mount(此时只有在/proc/mounts可以看到挂载信息)
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备
-B, –bind: 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
async:异步模式
sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:不否支持suid和sgid权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载
acl:启用此文件系统上的acl功能
Defaults:相当于rw, nosuid, dev, exec, auto, nouser, async
实例:把目录/boot挂载到/mnt/boot下,圈住区域即为挂载信息
分别查看/boot下和/mnt/boot相同目录,发现信息完全一样,但不是硬链接,因为节点数没增加
(4) umount mnt_point
umount DEVICE
实例:实现设备的嵌套挂载,然后把该挂载取消
(1)把/dev/sdb2分别挂载到/mnt/test、/mnt/test/test2下,结果如下
(2)进入/mnt/test下,创建文件a,然后进入/mnt/test/test2下,查看其下文件
一号区域为/mnt/test下文件
二号区域为/mnt/test/test2下文件
三号区域为/mnt/test/test2/test2下文件
总结:Linux下嵌套挂载不会无限循环下去,Windows是会无限循环下去的(具体思路与本体类似)。
(3)卸载/dev/sdb2,发现卸载的是较晚挂载的目录
11.查看正在访问指定文件系统的进程:
#lsofMOUNT_POINT
#fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程:
# fuser -km MOUNT_POINT
12. dumpe2fs "具体的分区"
查看superblock或block group 内容
-h 仅显示superblock信息
13.echo "- – -" > /sys/class/scsi_host/host2/scan实现不关机可以读取到新的硬盘
生产环境中不需要的,因为支持热插拔
14. hexdump -c 显示特殊代码对应的通配符
hexdump -C 显示特殊代码对应*进制数,还有解析的代码 显示的是16进制的
-n 显示多少bytes字符
-s 跳过前多少bytes
15.文件挂载配置文件
要挂载的文件设备或伪文件系统:设备名、uuid、lable、伪文件系统
挂载点:
文件系统类型
挂载选项
转储频率:0 不备份
1 每天备份
2 隔一天备份
自检次序:0 不自检
1 首先自检 一般只有rootfs才用1(如果挂载选项有问题,会无法重启,所以最好为0)
目录挂载到目录上时,文件类型为none,挂载属性为bind
挂载iso文件时,文件类型为iso9660,挂载属性为loop
实例:挂载/boot/目录到/mnt/boot下,
/etc/fstab配置文件添加如下内容
执行mount -a实现配置文件没有挂载选项自动挂载,查看挂载结果
16.交换分区文件和分区处理
(1)交换分区是系统RAM的补充
(2)基本设置包括:
创建交换分区或文件
使用mkswap写入特殊签名
在/etc/fstab内添加适当条目
使用swapon -a 激活交换空间
(3)启用 swapon [option]…[DEVICE]
-a 激活所有交换空间(激活后,修改配置文件,再用此选项,不生效)
-P PRIORITY:指定优先级
/etc/fstab:pri=value
禁用 swapoff [OPTION]..[DEVICE]
(4)优先级相关知识
*用户可以给某个swap指定一个0到32767的优先级
*如果用户没有指定,那么核心会自动给swap指定一个优先级(负无穷,-1),由-1开始,依次递减一
*优化性能:分布存放,高性能磁盘存放
实例:增加swap容量(建议新增加swap尽量在分区的外磁道,这样读写性能较好)
(1)查看原来swap容量
(2)创建一个属性为swap的分区,并格式化为swap格式
(3)/etc/fstab添加如下内容
(4)用swapon -a,使/etc/fstab配置文件中,是swap类型的没有使用的设备可用
14.挂载移动介质
(1)*访问前,必须挂载
*摘除前,必须卸载
*挂载点通常在/media或/mnt下
(2)使用光盘
*在图形界面下,自动启动挂载/run/media/<user>/<lable>
*字符界面下,mount /dev/cdrom /mnt
*eject 卸载或弹出磁盘
*创建ISO文件
cp /dev/cdrom /root/centos7.ISO
mkisofs -r -o /root/etc.iso /etc
*刻录光盘
wodim -v -eject centos.iso
*特殊设备挂载方法:加-loop挂载选项
把文件与伪设备loop关联起来,
实例:在/目录下,新建一个100M文件,把他挂载到/mnt/test下
(1)新建文件test
(2)格式化为ext4格式,并与/dev/loop2关联
查看黄色区域,发现如果直接用特殊文件挂载,会要求用-loop
(3)用关联设备/dev/loop3挂载,查看结果
(3)挂载USB介质
*被内核探测为SCSI设备
/dev/sdaX或类似设备
*在图形环境下自动挂载
·图标在[计算机]窗口中创建
·自动挂载到/run/media/<user>/<lable>
*在字符界面
mount /dev/sdaX /mnt
15.内存空间使用状态
free [OPTION]
-m:以MB为单位
-g:以GB为单位
16.(1) 文件系统空间占用信息查看(目录挂载信息不可看,文件可以看到)
df 列出文件系统的整体磁盘使用量
df -h 以人们较易阅读的方式显示
df -i 以硬盘iNode的数量显示
/dev/shm 与内存有关的挂载
df -a 显示所有的文件系统
df -T 把文件系统名称也列出来
有的时候,显示没有磁盘容量,可能是inode用完了 inode占用block
(2)查看某目录整体空间占用情况
du 显示文件占用空间大小(默认仅显示当前目录下的目录占用空间大小)
du -a 显示目录 ,文件占用空间情况
du -s 显示指定目录大小
du -S 显示各级子目录及本目录大小(不显示文件)
17.dd:conver and copy a file
用法:dd if=src of=dest bs=#(复制单元大小默认是以字节为单位) count=#(复制多少个bs)
of=file写到所命名的文件而不是到标准输出
if=file从所命名文件读取而不是从标准输入
bs=size指定块大小(既是是ibs也是obs)
ibs=size一次读size个byte
obs=size 一次写size个byte
cbs=size 一次转化size个byte
skip=blocks从开头忽略blocks个ibs大小的块
seek=blocks从开头忽略blocks个obs大小的块
count=n只拷贝n个记录
conv=conversion[,conversion…] 用指定的参数转换文件。
转换参数:
ascii 转换EBCDIC 为ASCII
ebcdic 转换ASCII 为EBCDIC
block 转换为长度为cbs 的记录,不足部分用空格填充。
unblock 替代cbs长度的每一行尾的空格为新行
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
swab 交换输入的每对字节
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
作业
2、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息
脚本内容如下:
执行结果如下:
原创文章,作者:mengzhiqian,如若转载,请注明出处:http://www.178linux.com/41312
评论列表(1条)
看完博客会有一个概览性的认识,但在逻辑表达的组织上显得略微混乱,如果能再优化下逻辑规划会更让人印象深刻