一、 磁盘基础知识
本章学习之前需要了解以下几点:
•强调: Linux里面一切皆文件。
•I/O Ports即I/O设备地址,用来标识硬件对应的设备地址,来让操作系统以及cpu使用。
•注意: CPU的核数不一定就是越多越好,由于CPU协调之间的问题,性能可能不升反降。
1、 设备文件
①、什么是设备文件
设备文件会关联至一个设备驱动,进而能够跟与之对应的硬件设备进行通信
②、设备文件分类:
•块设备:block。存取单位"快"。典型代表:磁盘
•字符设备:char,存取单位"字符"。典型代表键盘
③、设备文件路径:
# /dev/dev_file
④、设备号码标识:
主设备号:major number,标识设备类型
次设备号:minor number,标识同一类设备号下的不同设备
[root@oldboy dev]# ls -l /dev/ | grep "sda" lrwxrwxrwx. 1 root root 4 May 23 16:37 root -> sda3 brw-rw----. 1 root disk 8, 0 May 29 05:40 sda 【注意:这是同一设备类型,所以主设备号都是8,由于是同一设备类型下的不同设备,所以次设备号不同,且sdade的次设备号是0】 brw-rw----. 1 root disk 8, 1 May 23 16:37 sda1 brw-rw----. 1 root disk 8, 2 May 23 16:37 sda2 brw-rw----. 1 root disk 8, 3 May 23 16:37 sda3
⑤、硬盘接口类型
接口速率而非硬件设备速率,同一个接口不同的硬盘速率不同
并行(实现数据串行工作,类似双向两车道,但是之间有数据干扰)
IDE:133MB/s
SCSI:640MB/s
串口(实现数据串行工作,类型单向四车道)
SATA3:6Gbps(需要除以8来得到实际速率)
SAS:6Gbps
USB:480MB/s
单位(rpm): rotations per minute
命名格式: /dev/DEV_FILE
不同的主设备命名方法: /dev/sd#
【注意:#代表a-z】
如:
同一主设备不同的分区命名:
【直接使用数字区分】
如:/dev/sda /dev/sda2 /dev/sda2 /dev/sda3
2、机械式硬盘【这一部分写出来主要是了解作用:要了解什么是磁道、扇区、柱面】
机械硬盘主要由以下几部分组成:机械手臂(Boom),磁头(Head),转轴(Spindle),盘片(Platter)组成,在实际应用中又将盘片分成了磁道(Track),扇区(Sector)和柱面(Cylinder)
在实际应用中又将盘片分成了磁道(Track),扇区(Sector)和柱面(Cylinder)
3、分区原理知识点
512bytes
,
446bytes: boot loader 主引导记录 64bytes: 分区表 16bytes: 标识一个分区 【所以一个机械硬盘最多只能够分4个主分区,或者3个主分区+扩展分区(N个逻辑分区)】 2bytes: 55AA用来标识结尾
实战演练:(要知道 "dd"命令是干什么的)
# 备份MBR dd if=/dev/sda1 of=/root/mbr bs=512 count=1 # 恢复MBR: dd if=/root/mbr of=/dev/sda1 bs=512 count=1 # 恢复分区表: dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66 注:mbr大小512 所以bs=512 count=1 bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置
4、磁盘分区管理工具:【fdisk 、parted 、sfdisk】
本篇文章主要是讲解fdisk进行磁盘分区操作
fdisk 管理分区的前提条件:最多只能够管理15个分区
语法格式2: fdisk [-l, -u] [device]
参数说明:如果不带参数的话,直接进行分区
-l:显示当前系统分区情况;后面如果带了具体的那个分区的话,就显示那个分区结构
-u:对磁盘进行分区操作
在使用fdisk命令的时候注意:
# fdisk -u /dev/sda 【正确】 # fdisk -u /dev/sda1 【错误】
在分区操作上:以下是子命令管理操作
p: print, 显示已有分区;
分区保存退出之后还要进行以下几步操作才行
①、查看内核是否已经识别分区命令:
# cat /proc/partaions
②、如果内核没有识别,则通知内核重新读取磁盘分区表
方法一:
# partx [-a,-n] /dev/DEVICE
-a:读取全部全部分区表
-n:读取指定的分区表
方法二:
#kpartx [-a,-f] /dev/DEVICE
-a:读取全部全部分区表
-f:强制读取分区表 【注意:这种方法不建议使用,如果上面的读取方法不行的话,最后才使用这种方法】
方法三: 【注意:这个方法只适用于centos5.x系列】
# partprobe [/dev/DEVICE]
③、做了上面几步之后,如果想使用当前分区的磁盘的话,还需要格式化磁盘
案例分析:
[root@oldboy ~]# fdisk -l 【查看当前系统里面的所有分区情况】 Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0006ac8d Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 113 694272 82 Linux swap / Solaris Partition 2 does not end on cylinder boundary. /dev/sda3 113 1306 9585664 83 Linux
[root@oldboy ~]# fdisk -u /dev/sda 【在磁盘sda上面创建新的分区】 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c'). Command (m for help): n Command action e extended p primary partition (1-4) e 【扩展分区】 Selected partition 4 First sector (63-20971519, default 63): Using default value 63 Last sector, +sectors or +size{K,M,G} (63-2047, default 2047): 1000 Command (m for help): p 【查看分区信息】 Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0006ac8d Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 411648 1800191 694272 82 Linux swap / Solaris Partition 2 does not end on cylinder boundary. /dev/sda3 1800192 20971519 9585664 83 Linux /dev/sda4 63 1000 469 5 Extended Partition 4 does not end on cylinder boundary. Partition table entries are not in disk order Command (m for help): w 【保存分区信息并退出】 The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@oldboy ~]# cat /proc/partitions 【查看内核是否已经识别了分区,这里内核没有识别分区】 major minor #blocks name 8 0 10485760 sda 8 1 204800 sda1 8 2 694272 sda2 8 3 9585664 sda3 [root@oldboy ~]# partx -a /dev/sda 【通知内核重新读取磁盘分区信息】 BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 [root@oldboy ~]# cat /proc/partitions 【再次查看,内核已经识别了分区】 major minor #blocks name 8 0 10485760 sda 8 1 204800 sda1 8 2 694272 sda2 8 3 9585664 sda3 8 4 469 sda4
5、文件系统管理操作
1)文件系统类型介绍:
linux文件系统类型:ext2、ext3、ext4、xfs 【btfrs、reiserfs、jfs、swap(交换分区)、光盘(iso9660)】
swap: 交换分区
windows: fat32 、utfs
unix: FFS、UFS、JFS2
网络文件系统:NFS、CIFS
集群文件系统:GFS2、OCFS2
分布式文件系统:ceph
根据其是否支持"journal"功能,又分为
日志文件系统:ext3,ext4,xfs,...
非日子文件系统:ext2,vfat
文件系统的组成部分:
Linux的虚拟文件系统:VFS------linux系统上可同时使用多种文件系统类型,最终都统一成VFS来进行管理,
使用cat /proc/filesystems命令来查看系统支持的文件系统类型,
lsmod命令能查看已装载的模块
2)创建文件系统(格式化):
mkfs命令:
语法1: mkfs.FS_TYPE /dev/DEVICE
语法2:mkfs -t FS_TYPE /dev/DEVICE [上面一个可以说成是下面这个的简写]
FS_TYPE 选项:
ext4、xfs、btrfs、vfat
共同参数:
-L # : 设定卷标名为#
案例详解:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
3)文件系统专用管理工具:
mke2fs命令 【是ext系列文件系统专用管理工具】
语法:mke2fs [OPTIONS] /dev/DEVICE
参数:
-t: (ext2\ext3\ext4)
-b:指定block大小,不指定的话默认(1024.2048.4096)
-L: 指定卷标
-j: 相当于 -t ext3
-i # : 为数据空间中没多少个字节创建一个inode;ci大小不应该小雨block大小
-n # : 为数据空间创建多少个inode
-m # : 为管理人员预留的空间占据百分比;默认百分之5的空间
-O FEATURE[,...] : 启用指定特性
-O ^FEATURE[,...]: 关闭指定特性
举例:mke2fs -b 2048 -m 3 -L MYDATA /dev/sda4
4)创建交换分区
命令:mkswap
使用命令的前提:必须先调整其分区的ID为82 (使用fdisk 里面的 "t" 选项实现)
命令格式: mkswap [OPTIONS] ... DEVICE
参数: -L : "LABLE"
5)其他常用工具
blkid命令 :快设备属性信息查看
语法: blkid [OPTIONS]... [/dev/DEVICE]
如果前面不给参数的话,是查看设备文件的UUID和LABEL等,后面就必须写上是哪个设备文件】
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
e2lable命令:管理ext系列文件系统的LABLE
语法: e2lable [LABLE] DEVICE
tune2fs命令:重新设定ext系列文件系统可调整参数的值
参数:
-l:查看文件系统的超级块信息:super block
-L 'LABLE' : 修改卷标
-j: 将 ext2 升级为ext3 (相当于 "-t ext3")
-m # : 为管理人员预留的空间占据百分比;默认百分之5的空间
-O FEATURE[,...] : 启用指定特性
-O ^FEATURE[,...] 关闭指定特性
tune2fs -O has_journal /dev/sda5, 会把原先的ext2文件系统改为ext3,
tune2fs -O ^has_journal /dev/sda5 禁用此属性
-o:调整文件系统的默认挂载选项,用法和上面一样,关于属性名可以man tune2fs来查看,
例如tune2fs -o ^acl /dev/sda5 #禁用默认挂载选项的acl功能
-U UUID : 修改UUID号;UUID但是随机 生成的,要修改的场景不多
dumpe2fs命令
-h: 查看超级快信息
举例: dumpe2fs /dev/sda4 会详细的显示文件系统信息,或者说是布局信息,比如分组情况,块信息,inode位置等
6)文件系统的检测工具(常用于异常关机导致文件系统出错的情况):
注意事项:无论是异常关机还是正常关机,开机时不要进行文件自动检测,最好是开机后进行文件手动检测