1.磁盘的概念
每个硬盘中心的都是一摞高速运转的圆盘,在圆盘上附着一圈金属颗粒,每个金属颗粒都有自己的磁化程度,用于存储0和1;当记录数据时,磁盘的磁头开始通电,形成强磁场,数据在磁场的作用下转变成电流,使颗粒磁化,从而将信息记录在圆盘上,由海量颗粒组成的信息,就是我们存在硬盘里的数据。
2.磁盘的基本结构
(1)盘片:硬盘一般有一个或多个盘片,每个盘片可以有两面,第一个盘片的正面为0,反面为1;
(2)磁道:每个盘片的盘面在出厂的时候被划分出了多个同心圆环,数据就存储在这样的同心圆环上面,我们将这样的圆环称为磁道,每个盘面可以划分多个磁道,但肉眼不可见;
(3)扇区:在硬盘出厂的时会对磁盘进行一次低格,其实就是在每个磁道划分为若干个弧段,每个弧段就是一个扇区,扇区是硬盘上存储的物理单位,现在每个扇区可存储512字节数据已经成了业界的约定;
(4)柱面:柱面实际上就是我们抽象出来的一个逻辑概念,简单来说就是出于同一个垂直区域的磁道称为柱面,即各盘面上面相同位置磁道的集合。这样数据如果存储到相同半径磁道上的同一扇区,这样可以实现并读取,主要是减少磁头寻道时间;
(5)磁头:读取磁盘上面金属块,主要负责读或者写入数据
3.磁盘的预备知识
(1)磁盘的接口类型
①IDE和SCSI(已淘汰)
②SATA (个人机)和SAS(企业)
③SSD
msata(超极本)
m.2(超极本)
a.接口类型
SATA :几乎所有主板都兼容, 便宜 性能差
PCI-E:需要看主板是否兼容, 贵, 性能高
b.传输通道
PCI-E AHCI
NVMe
(2)磁盘的基本术语
尺寸:2.5英寸,3.5英寸
容量:KB、MB、GB、TB、PB、EB
转速:5400 7500 15000
IOPS:每秒能够发生IO的次数
(3)磁盘在系统上的命名方式
设备名称 | 分区信息 | 设备类型 |
---|---|---|
/dev/sda | /dev/sda1 | 第一块物理磁盘第一个分区 |
/dev/sdb | /dev/sdb2 | 第二块物理磁盘的第二个分区 |
/dev/vdd | /dev/vdd4 | 第四块物理磁盘的第四个分区 |
1~4留给主分区使用和扩展分区,逻辑分区从5开始
MBR分区表只能分配4个主分区
GPT支持分配128个主分区
MBR和GPT之间不能转换,会导致数据丢失
MBR=2T GPT=2T以上
4.磁盘基本分区fdisk
(1)给虚拟机添加一块新的硬盘
虚拟机不支持热插拔,在关机后编辑虚拟机,添加硬盘
(2)使用fdisk进行分区
[root@peachcat1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 1G 0 part [SWAP]
└─sda3 8:3 0 38G 0 part /
sdb 8:16 0 1T 0 disk
sdc 8:32 0 4T 0 disk
sr0 11:0 1 4.3G 0 rom
[root@peachcat1 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa899a17f.
Command (m for help): m#列出常用的命令
Command action
a toggle a bootable flag #切换分区启动标记
b edit bsd disklabel #编辑sdb磁盘标签
c toggle the dos compatibility flag #切换dos兼容模式
d delete a partition #删除分区
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types #显示分区类型
m print this menu #显示帮助菜单
n add a new partition #新建分区
o create a new empty DOS partition table #创建新的空白分区表
p print the partition table #显示分区表的信息
q quit without saving changes #不保存退出
s create a new empty Sun disklabel #创建新的Sun磁盘标签
t change a partition's system id #修改分区ID,可以通过l查看id
u change display/entry units #修改容量单位,磁柱或扇区
v verify the partition table #检验分区表
w write table to disk and exit #保存退出
x extra functionality (experts only) #拓展功能
#创建主分区
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p#选择创建主分区
Partition number (1-4, default 1): #默认创建第一个主分区
First sector (2048-2147483647, default 2048): #默认扇区回车
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2147483647, default 2147483647): +10G#分配10G
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes, 2147483648 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 label type: dos
Disk identifier: 0xa899a17f
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
#创建扩展分区
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e#创建扩展分区
Partition number (2-4, default 2):
First sector (20973568-2147483647, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-2147483647, default 2147483647): #空间都给到扩展分区
Using default value 2147483647
Partition 2 of type Extended and of size 1014 GiB is set
#创建逻辑分区
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l#创建逻辑分区
Adding logical partition 5
First sector (20975616-2147483647, default 20975616):
Using default value 20975616
Last sector, +sectors or +size{K,M,G} (20975616-2147483647, default 2147483647): +10G#分配10G空间
Partition 5 of type Linux and of size 10 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@peachcat1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 1G 0 part [SWAP]
└─sda3 8:3 0 38G 0 part /
sdb 8:16 0 1T 0 disk
├─sdb1 8:17 0 10G 0 part
├─sdb2 8:18 0 1K 0 part
└─sdb5 8:21 0 10G 0 part
sdc 8:32 0 4T 0 disk
sr0 11:0 1 4.3G 0 rom
(3)使用mkfs进行格式化
[root@peachcat1 ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@peachcat1 ~]# mkfs -t xfs /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
(4)使用mount进行挂载
[root@peachcat1 ~]# mkdir /data_1
[root@peachcat1 ~]# mkdir /data_5
[root@peachcat1 ~]# mount /dev/sdb1 /data_1
[root@peachcat1 ~]# mount /dev/sdb5 /data_5
[root@peachcat1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 38G 5.5G 33G 15% /
devtmpfs 224M 0 224M 0% /dev
tmpfs 235M 0 235M 0% /dev/shm
tmpfs 235M 5.5M 229M 3% /run
tmpfs 235M 0 235M 0% /sys/fs/cgroup
/dev/sda1 1014M 127M 888M 13% /boot
tmpfs 47M 0 47M 0% /run/user/0
/dev/sdb1 10G 33M 10G 1% /data_1
/dev/sdb5 10G 33M 10G 1% /data_5
主分区 扩展分区 逻辑分区
MBR:只能分配4个主分区
分配7个分区怎么办
3个主分区,1个扩展分区(4个逻辑分区)
2个主分区,1个扩展分区(5个逻辑分区)
1个主分区,1个扩展分区(6个逻辑分区)