磁盘和分区管理

磁盘:
真空的,需要防尘,磁盘主要分两种
(1)机械硬盘:目前主流,比较遗憾
(2)固态硬盘:性能相对好一点的磁盘

磁盘基本术语(硬件方面):
(1)盘片
(2)盘面:每一块盘片有两块盘面
(3)磁头
(4)磁道
(5)扇区:512字节
(6)机械臂
(7)柱面:磁道组成的逻辑分区
柱面具有以下特点:
1、存储数据就是按照柱面来存储的,读取数据也是
2、划分分区也是按照柱面来划分
3、从外到内,柱面的编号从0开始
4、同一个转轴,越靠外面的磁道,转速越快(这也是我们大多数操作系统安装在C盘的原因)

磁盘基本术语(软件方面):
磁盘出厂前,需要低级格式化,划分磁道分区
1、MBR:master boot record,主引导记录(0盘片0磁道0扇区的那一块地方就是MBR,属于磁盘,是全局的存储空间,独立于操作系统之外)
MBR的大小为512字节,分为3个部分,446字节叫做BootLoader,叫做引导加载器,是一段程序代码,作用是引导操作系统正确启动起来;接下来的64字节,每16字节标识一个主分区,因此操作系统最多可以划分4个主分区;剩下的2个字节叫做魔数,标识MBR是否有效。
2、分区:partition,划分分区的作用是创建文件系统,每一个分区就是一个文件系统。

要正常使用一块磁盘,需要经过:
低级格式化(由硬盘厂商来完成)–做分区–高级格式化(创建文件系统)–挂载

磁盘分区命令:
查看当前系统识别了多少块硬盘:fdisk -l
查看当前系统某块硬盘的具体信息:fdisk -l /dev/sda
管理磁盘分区:fdisk /dev/sda (启动一个交互式界面)
m:for help
p:显示当前分区,包括没保存的改动
n:创建新的分区
e:创建新的扩展分区
p:创建新的主分区
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
L:修改的时候查看分区类型(以确定某种类型对应的编号)
创建完分区之后需要内核识别才能够格式化。
查看内核已经识别的分区:cat /proc/partitions
通知内核重读分区表:partprobe #Redhat6上使用了新命令:partx
备注:
partprobe是默认重读所有磁盘上的分区表,当然我们也可以指定内核重读哪一块磁盘,比如说partprobe /dev/sda

创建分区例子:
1、创建3个逻辑分区(得先创建扩展分区,在扩展分区的基础上创建逻辑分区。主分区不能创建逻辑分区;扩展分区不能使用,只能使用在扩展分区上划分出来的逻辑分区)
(1)fdisk /dev/sda #会进入一个交互界面,备注:进入交互界面后,如果在创建分区的过程中敲错命令,直接删除键是删不掉的,需要按住ctrl+删除键来删除
(2)p #查看分区
(3)n
(4)e #创建扩展分区
(5)n
(6)+2G #创建第一个逻辑分区,大小为2G
(7)n
(8)+5G #创建第二个逻辑分区,大小为5G
(9)n
(10)+1G #创建第三个逻辑分区,大小为1G
(11)p #查看分区
(12)w #保存退出
(13)cat /proc/partitions #查看内核是否识别新创建的分区
(14)partprobe /dev/sda #指定内核重读/dev/sda分区表

2、创建SWAP分区(备注:SWAP分区是磁盘上的空间,允许内存过载使用。一旦内存耗尽,可以临时拿硬盘上的SWAP来应急,防止系统崩溃甚至宕机。SWAP分区必须是一个单独的分区)
(1)首先新建一个新的分区:
fdisk #准备新建分区
p #查看已有分区
n #新建分区
+1G #新建1G的分区
L #查看分区类型
t #调整分区类型
8 #对第几块磁盘调整类型
L #查看分区类型
82 #linux swap的分区编码
p #查看是否已经建好swap分区
w #保存退出
partprobe /dev/sda #通知内核重读分区表
(2)创建好分区之后,需要创建文件系统(swap分区也是有自己的文件系统的)
mkswap /dev/sda8
(3)启用和关闭交换分区的交换空间(类似于mount,但是有专门的命令,不用mount)
启用:swapon /dev/sda8
可选参数:
-a:启用所有定义在/etc/fstab文件中的交换设备
关闭:swapoff /dev/sda8

其他命令:
1、blkid:block id,查看磁盘设备的相关属性
UUID:用于唯一标识磁盘设备
TYPE:用于标识文件系统类型
LABEL:显示卷标

2、e2label:专门用于查看或者定义卷标
e2label /dev/sda5 查看卷标
e2label /dev/sda5 labelname 设定卷标

3、free:查看系统上物理内存和交换分区的使用情况(默认单位是字节)
-m:以MB为单位显示内存使用情况
buffer:缓冲,保存的是元数据
cache:缓存,保存的是数据
(这两段空间可以清除数据,不会影响到数据的完整性,对系统性能会有影响)

4、df:显示整个磁盘分区的使用情况(以磁盘块个数来显示大小)
可选参数:
-h:人性化显示
-i:以inode个数显示大小
-P:不换行显示
备注:
与du的区别:du显示目录或者目录的子目录所占用的大小
可选参数:
-h:人性化显示
-s:显示目录所占据的整体的大小

5、dd:复制
可选参数:
if= #指定数据来源
of= #指定数据存储目标
bs=1 #以一个字节为单位
count=2 #复制2次,跟bs=1结合使用就是复制2个字节的数据
例子:
1、创建1M的数据:
dd if=/dev/zero of=/var/swapfile bs=1 count=1024
2、拿一个文件,哪怕你没有分区,没有多余的空间可以创建分区,我们照样可以找个文件来暂时性的当做交换分区来使用(性能差,但可以临时救急)
(1)dd if=/dev/zero of=/var/swapfile bs=1M count=1024
(2)mkswap /var/swapfile
(3)swapon /var/swapfile
与cp的区别:
(1)cp是以文件为单位的,dd是以数据流为单位的(数据流就是01代码)
(2)dd可以复制不完整的数据