一些基础
硬盘接口类型
- ide 早期家庭电脑 scsi 早期服务器
- sata 目前家庭电脑 sas 目前服务器
- raid卡--阵列卡
- 网卡绑定
- ABI 应用程序与OS之间的底层接口
- API 应用程序调用第三方库的接口
- Windows 磁盘分区方式,不同的方式,BIOS的设置是不同的
- 硬盘分区格式为MBR格式,启动模式应该为Legacy;
- 硬盘分区格式为GUID(GPT)格式,启动模式应该为UEFI
- BIOS+MBR 以前的方式,分区最大支持2T 与UEFI+GPT 是目前最新的方式,硬盘支持容量特别大
- 硬盘寻址方式与空间大小:由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB 时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则 只能使用LBA寻址方式
设备在Linux的命名方式:
SCSI, SATA, SAS, IDE,USB: /dev/sd ? 设备都以/dev/sd开头
虚拟磁盘:/dev/vd 、/dev/xvd ?
不同磁盘标识:a-z,aa,ab… /dev/sda, /dev/sdb, ... ? 第一块磁盘就是a ,第二块就是b.....
同一设备上的不同分区:1,2, ... /dev/sda1, /dev/sda5 第一个分区就是1,第二个分区就是2....
分区类型
MBR:(只支持2T的硬盘分区)
- 主分区:一块硬盘最多四个,最少一个,安装OS,只有1个是激活主分区
- 扩展分区:一块硬盘最多一个,不能直接使用,需要划分成更小的逻辑分区
- 逻辑分区:扩展分区的最小分区单位
- 在Linux中 MBR分区类型,主分区和扩展分区只能有1-4个,扩展分区从5往后。
- Master Boot Record
- 0磁道0扇区:512bytes 446bytes: boot loader 64bytes:分区表,其中每16bytes标识一个分区 2bytes: 55AA
比如 Linux分区方案
/dev/sda 200G
/dev/sda1 mount /boot 1G mount point
/dev/sda2 mount / 100G
/dev/sda3 mount /data 50G
/dev/sda4 extend 49G
/dev/sda5 逻辑分区 swap 4G
有一块200G的硬盘,3个主分区1个扩展分区,扩展分区分了剩余的所有空间,扩展分区中分了4G的逻辑分区给swap,swap分区是Linux的(虚拟内存)没有挂载点
MBR 最前面的512字节中,有MBR分区表,这个表记录了分区的情况
GPT:只支持主分区 uuidgen //生成UUID guid:128位二进制 32位16进制
Linux和Windows的文件系统类型 不一样~~~
Linux 常用文件格式 ext2 ext3 ext4 xfs
Windows:常用文件格式 FAT32, exFAT,NTFS
管理分区
1分区 2格式化(文件系统) 3挂载
gdisk /dev/sdb 类fdisk 的GPT分区工具
fdisk -l [-u] [device...] 查看分区
fdisk /dev/sdb 管理分区
子命令:
- p 分区列表
- t 更改分区类型
- n 创建新分区
- d 删除分区
- v 校验分区
- u 转换单位
- w 保存并退出
- q 不保存并退出
- fdisk -l 磁盘硬盘分区详细情况(专门针对于mbr分区的,管理gpt分区处于试验阶段,不太适配)
- lsblk 列出块设备
- echo '- - -' > /sys/class/scsi_host/host2/scan 重新扫描磁盘,添加一块硬盘后,重启之后才可以识别到,这样就不用重启了 host0 host1 host2
- 有时候磁盘满了需要删文件使磁盘使用率降下来,但是有一些进程会占用它,当你删除之后还是那么大,可以用这个命令立刻让这个文件变成0 >2019-11-08.log
1)使用fdisk创建完分区之后,默认是mbr分区方式,可以通过 fdisk -l 查看,分好区之后,可以把分区删除掉,把分区删掉之后,在通过 fdisk -l 查看分区,就会看到没了分区了,但是还是存在分区类型的,为什么会存在?
就是因为前512字节中存在 55aa标志位,所以他认为你之前分过区了,怎么让硬盘变得跟新的一样呢?
dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510 //把标志位清空
2) 我们通过fdisk 分完区之后,退出的时候要注意看提示信息,一般新的硬盘你分好之后,内存和硬盘都会分好的,你就可以直接用了,但是如果你分的是之前分过的硬盘,那么你退出后,就会有报警,因为你是分好了,但是内存中没有同步到,你用 fdisk –l 可以看到分好的分区(fdisk 是读取物理磁盘真实的情况,而其他的查看分区命令 如lsblk, ls /dev/sda*,cat /proc/partitions,是读取内存中的分区情况)
同步问题 要么重启 要么下面的命令
centos6
加分区:partx -a /dev/sda
删除分区: partx -d --nr 5-7 /dev/sda
centos5,7
partprobe
Partprobe
3) 有两快硬盘,第一块分区分好了,按照同样的方法把第二块也分一下,
两块硬盘分区同步,第二块硬盘按照第一块硬盘分区方式同步,本质就是同步了第一块硬盘的MBR的前64个字节(主分区与扩展分区) 逻辑分区同步不了,逻辑分区的分区信息是在EBR里面的,所以可以看出,一块硬盘有没有分区,分区格式是什么,分区情况是什么,都是存在MBR表里面的,下面的命令就是同步了MBR的分区表
4)那既然一块硬盘有没有分区本质是看MBR表的,那快速清理一个硬盘的分区,就直接把分区表的字节改一下
建立文件系统(格式化)
mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
-
-
-
- ext4
- xfs
- btrfs
- vfat
-
-
对于已经存在了文件系统的分区,重新格式化需要加-f选项
blkid //查看分区的文件系统类型
挂载
- 挂载方法:mount DEVICE MOUNT_POINT
- mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
- 挂载点下原有文件在挂载完成后会被临时隐藏
- 挂载点目录一般为空 事先存在,建议使用空目录
- -r readonly,只读挂载
- -w read and write, 读写挂载
- df -hl 查看挂载情况
- 一个设备可以挂载到多个目录下,一个目录一次只能挂载一个设备
# 将做好的文件系统挂载到 newuser 文件夹上
mount /dev/sdb1 /home/newuser/
卸载
- umount DEVICE
- umount MOUNT_POINT
- 取消挂载的时候,要退出这个目录,不能再目录里面,自己把自己杀掉?也有可能是其他进程访问了,所以 fuser –km MOUNT_POINT
- 查看挂载情况 findmnt MOUNT_POINT|devic