1、设备文件
I/O Ports: I/O设备地址。
设备文件的使用:
通过将文件关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信。 一切皆文件,所以磁盘的也是也是基于设备文件与之通信的:open(), read(), write(), close()
设备号码:
主设备号:major number, 标识设备类型; 次设备号:minor number, 标识同一类型下的不同设备。
硬盘接口类型:
并行: IDE:133MB/s SCSI:640MB/s 串口: SATA:6Gbps SAS:6Gbps USB:480MB/s rpm: rotations per minute
磁盘设备的设备文件命名:
/dev/DEV_FILE SCSI, SATA, SAS, IDE,USB: /dev/sd; 虚拟磁盘:/dev/vd; 不同磁盘标识:a-z,aa,ab…/dev/sda, /dev/sdb, ...; 同一设备上的不同分区:1,2, .../dev/sda1, /dev/sda5;
2、磁盘结构
2.1、机械硬盘(HDD)
2.2、固态硬盘(SSD)和机械硬盘(HDD)
2.3、硬盘存储术语及扇区结构
head:磁头;
track:磁道;cylinder: 柱面;sector: 扇区,512bytes;(1)早期扇区结构
(2)区位记录磁盘扇区结构:ZBR(Zoned Bit Recording)
2.4、CHS和LBA
CHS:
采用24bit位寻址; 最大寻址空间8GB;
LBA(logical block addressing)
LBA采用48个bit位寻址 最大寻址空间128PB
注意:
由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式。
2.5、使用分区空间
设备识别; 设备分区; 创建文件系统; 标记文件系统; 在/etc/fstab文件中创建条目; 挂载新的文件系统;
2.5、磁盘分区的意义及分区类型
磁盘分区意义:
优化I/O性能 实现磁盘空间配额限制 提高修复速度 隔离系统和程序 安装多个OS 采用不同文件系统
两种分区方式:MBR,GPT
2.5.1、MBR
MBR:
Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T; 按柱面
MBR分区结构:
硬盘主引导记录MBR由4个部分组成: 主引导程序(偏移地址0000H--0088H):它负责从活动分区中装载,并运行系统引导程序。 出错信息数据区:偏移地址0089H--00E1H为出错信息,0E2H--01BDH全为0字节。 分区表(DPT,Disk Partition Table):含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节;为分区项1、分区项2、分区项3、分区项4 结束标志字:偏移地址01FE--01FF的2个字节值为结束标志55AA。
2.5.2、GPT分区
GPT:
GUID(Globals Unique Identifiers) partition table; 支持128个分区,使用64位,支持8Z(512Byte/block)、64Z (4096Byte/block); 使用128位UUID(Universally Unique Identifier) 表示磁盘和分区; GPT分区表自动备份在头和尾两份,并有CRC校验位UEFI; (统一扩展固件接口)硬件支持GPT,使操作系统启动
3、分区管理
3.1、图形化
图形化磁盘管理功能工具: 点击“应用程序” ->“系统工具” ->“磁盘”; 执行命令gnome-disks
3.2、分区管理
列出块设备:lsblk;创建分区使用: fdisk 创建MBR分区; gdisk 创建GPT分区; parted 高级分区操作; partprobe-重新设置内存中的内核分区表版本;
3.3、parted命令
注意:parted的操作都是实时生效的,小心使用
语法:
parted [选项]... [设备 [命令 [参数]...]...]
示例:
parted /dev/sdb mklabel gpt|msdos parted /dev/sdb print parted /dev/sdb mkpart primary 1 200 (默认M) parted /dev/sdb rm 1 parted -l
3.3、分区工具:fdisk & gdisk
gdisk /dev/sdb:类fdisk 的GPT分区工具; fdisk -l [-u] [device...] 查看分区; fdisk /dev/sdb 管理分区;
子命令:
p 分区列表 t 更改分区类型 n 创建新分区 d 删除分区 v 校验分区 u 转换单位 w 保存并退出 q 不保存并退出
查看内核是否已经识别新的分区: cat /proc/partations
同步分区表:
centos6通知内核重新读取硬盘分区表: 新增分区用: partx -a /dev/DEVICE kpartx -a /dev/DEVICE -f: force 删除分区用: partx -d --nr M-N /dev/DEVICECentOS 5,7:使用partprobe partprobe [/dev/DEVICE]
4、文件系统管理
4.1、文件系统类型
Linux文件系统:ext2(Extended file system), ext3,ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap 光盘:iso9660 Windows:FAT32, exFAT,NTFS Unix:FFS(fast), UFS(unix), JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2(oracle) 分布式文件系统: fastdfs,ceph, moosefs, mogilefs,glusterfs, Lustre RAW:未经处理或者未经格式化产生的文件系统
查前支持的文件系统:cat /proc/filesystems
4.2、创建文件系统
mkfs命令: (1) mkfs.FS_TYPE /dev/DEVICE ext4 xfs btrfs vfat (2) mkfs -t FS_TYPE /dev/DEVICE -L 'LABEL': 设定卷标
创建ext文件系统:
mke2fs: ext系列文件系统专用管理工具; -t {ext2|ext3|ext4} -b {1024|2048|4096} -L 'LABEL' -j: 相当于 -t ext3; mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3 -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小; -N #:指定分区中创建多少个inode; -I 一个inode记录占用的磁盘空间大小,128---4096; -m #: 默认5%,为管理人员预留空间占总空间的百分比; -O FEATURE[,...]:启用指定特性; -O ^FEATURE:关闭指定特性;
文件系统标签:
指向设备的另一种方法 与设备无关
blkid: 块设备属性信息查看; 语法: blkid [OPTION]... [DEVICE] -U UUID: 根据指定的UUID来查找对应的设备 -L LABEL:根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL e2label DEVICE [LABEL]
findfs :查找分区 findfs [options] LABEL=
tune2fs:
重新设定ext系列文件系统可调整参数的值; -l:查看指定文件系统超级块信息;super block -L 'LABEL':修改卷标 -m #:修预留给管理员的空间百分比 -j: 将ext2升级为ext3 -O: 文件系统属性启用或禁用, –O ^has_journal -o: 调整文件系统的默认挂载选项,–o ^acl -U UUID: 修改UUID号
dumpe2fs:
块分组管理,32768块 -h:查看超级块信息,不显示分组信息
4.3、文件系统检测和修复
常发生于死机或者非正常关机之后; 挂载为文件系统标记为“ no clean”; 注意:一定不要在挂载状态下修复;
fsck: File System Checkfsck.FS_TYPEfsck -t FS_TYPE -p: 自动修复错误 -r: 交互式修复错误 FS_TYPE一定要与分区上已经文件类型相同;
e2fsck:ext系列文件专用的检测修复工具 -y:自动回答为yes -f:强制修复
5、挂载
挂载:
将额外文件系统与根文件系统某现存的目录建立起关联关系, 进而使得此目录做为其它文件访问入口的行为
注意:
挂载点下原有文件在挂载完成后会被临时隐藏; 挂载点目录一般为空; 事先存在;建议使用空目录; 进程正在使用中的设备无法被卸载;
语法:
mount DEVICE MOUNT_POINTmount [-fnrsvw] [-t vfstype] [-o options] device dir
-t vsftype:指定要挂载的设备上的文件系统类型 -r: readonly,只读挂载 -w: read and write, 读写挂载 -n: 不更新/etc/mtab,mount不可见 -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab 文件中,且挂载选项中有auto功能) -L 'LABEL': 以卷标指定挂载设备 -U 'UUID': 以UUID指定要挂载的设备 -B, --bind: 绑定目录到另一个目录上 查看内核追踪到的已挂载的所有设备 cat /proc/mounts
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
async:异步模式 sync:同步模式,内存更改时,同时写磁盘 atime/noatime:包含目录和文件 diratime/nodiratime:目录的访问时间戳 auto/noauto:是否支持自动挂载,是否支持-a选项 exec/noexec:是否支持将文件系统上运行应用程序 dev/nodev:是否支持在此文件系统上使用设备文件 suid/nosuid:是否支持suid和sgid权限 remount:重新挂载 ro:只读 rw:读写 user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用 acl:启用此文件系统上的acl功能 loop: 使用loop设备
defaults:相当于rw, suid, dev, exec, auto, nouser, async
6、卸载命令
查看挂载情况
findmnt MOUNT_POINT|device查看正在访问指定文件系统的进程
lsof MOUNT_POINTfuser -v MOUNT_POINT终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT卸载
umount DEVICEumount MOUNT_POINT
7、文件挂载配置文件
注意:使用mount -a 命令挂载/etc/fstab中的所有文件系统
/etc/fstab每行定义一个要挂载的文件系统:1)要挂载的设备或伪文件系统; 设备文件; LABEL:LABEL=""; UUID:UUID=""; 伪文件系统名称:proc, sysfs;2)挂载点;3)文件系统类型;4)挂载选项:defaults;5)转储频率:0:不做备份 1:每天转储 2:每隔一天转储;6)自检次序: 0:不自检; 1:首先自检;一般只有rootfs才用1;
8、处理交换文件和分区
交换分区是系统RAM的补充。
8.1、基本设置
创建交换分区或者文件 使用mkswap写入特殊签名 在/etc/fstab文件中添加适当的条目 使用swapon -a 激活交换空间
交换分区的启用与禁用:
启用:swapon
swapon [OPTION]... [DEVICE] -a:激活所有的交换分区; -p PRIORITY:指定优先级 /etc/fstab:pri=value
禁用:swapoff [OPTION]... [DEVICE]
8.2、SWAP的优先级
可以指定swap分区0到32767的优先级,值越大优先级越高; 如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始, 每加入一个新的没有用户指定优先级的swap,会给这个优先级减一; 先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级, 而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数); 优化性能:分布存放,高性能磁盘存放;