磁盘的基本概念
1.什么是磁盘
绝大多数人对硬盘都不陌生,一块小小的硬盘里,就可以存储海量的照片音乐和电影,尤其是我们喜爱的各类动作片。但如此小的空间,是如何储存那么多信息的呢?
每个硬盘中心都是一摞高速运转的圆盘,在圆盘上附着的一圈金属颗粒,每个金属颗粒都有自己的磁化程度,用于储存0和1。
当记录数据时,硬盘的磁头开始通电,形成强磁场,数据在磁场的作用下转变成电流,使颗粒磁化,从而将信息记录在圆盘上。
由海量颗粒组成的信息,就是我们存在硬盘里的数据。
磁盘的基本结构
1.什么是盘片:
硬盘一般有一个或多个盘片,每个盘片可以有两面,即第一个盘片的正面为0面,反面为1面然后依次类推。
2.什么是磁道:
每个盘片的盘面在出厂的时候被划分出了多个同心圆环,数据就存储在这样的同心圆环上面,我们将这样的圆环称为磁道(Track),每个盘面可以划分多个磁道。但肉业不可见。
3.什么是扇区:
在硬盘出厂时会对磁盘进行一次低格,其实就是再每个磁道划分为若干个弧段,每个弧段就是一个扇区 (Sector)。扇区是硬盘上存储的物理单位,现在每个扇区可存储512字节数据已经成了业界的约定。
4.什么是柱面:
柱面实际上就是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为 柱面 ,即各盘面上面相同位置磁道的集合。这样数据如果存储到相同半径磁道上的同一扇区,这样可以实现并行读取,主要是减少磁头寻道时间。
5.什么是磁头:
读取磁盘磁道上面金属块,主要负责读或写入数据。
磁盘的预备知识
我们需要简单了解下磁盘的接口类型、磁盘涉及的相关术语、磁盘在Linux下的命名方式。
1.磁盘的接口类型
IDE,Scsi(已经被淘汰)
SATA III 与SAS(企业使用较多)
ssd的Msata接口为超极本设计,但是被m.2接口的SSD替代,而m.2接口(支持SATA、PCI-E双通道协议)
M.2接口是为超极本量身定做的新一代接口标准,以取代原来的mSATA接口。拥有更小巧的规格尺寸,还是更高的传输性能,M.2都远胜于mSATA。
2.磁盘的基本术语
尺寸: 2.5英寸 3.5英寸容量:KB MB GB TB PB EB转速:7500 15000 IOPS:每秒能够发生IO的次数。
3.磁盘在系统上的命名方式
设备名称 | 分区信息 | 设备类型 |
---|---|---|
/dev/sda | /dev/sda1 | 第一块物理磁盘第一分区 |
/dev/sdb | /dev/sdb2 | 第二块物理磁盘第二个分区 |
/dev/vdd | /dev/vdd4 | 第四块虚拟磁盘的第四个分区 |
PS1:系统中分区由数字编号表示,1~4留给主分区使用和扩展分区,逻辑分区从5开始。
PS2: 前面我们已经提到过MBR分区表只能分配4个主分区,但现在还有一种新型的分区表GPT,GPT支持分配128个主分区。注意MBR与GPT之间不能互转,会导致数据丢失。
磁盘基本分区Fdisk
1.添加一块小于2TB的磁盘进行使用,步骤如下:
1.给虚拟机添加一块新的硬盘
2.使用fdisk进行分区
3.使用mkfs进行格式化
4.使用mount进行挂载
PS: 生产分区建议,如无特殊需求直接使用整个磁盘即可,无需分区。
PS: 学习分区建议: 1P+1E(3L) 2P+1E(2L) 3P+1E(1L) (仅适用于练习)
2.具体命令步骤:
root@Hyman[15:57:09]~# 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 0xa620416c.
Command (m for help): m #输入m列出常用的命令
Command action
a toggle a bootable flag #切换分区启动标记
b edit bsd disklabel #编辑sdb磁盘标签
c toggle the dos compatibility flag #切换dos兼容模式
d delete a partition #删除分区
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 partitions 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) #拓展功能
命令 | 解释 | 中文解释 |
---|---|---|
a | toggle a bootable flag | #切换分区启动标记 |
b | edit bsd disklabel | #编辑sdb磁盘标签 |
c | toggle the dos compatibility flag | #切换dos兼容模式 |
d | delete a partition | #删除分区 |
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 partitions 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) | #拓展功能 |
3.fdisk创建主分区
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
4.fdisk创建扩展分区
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
5.fdisk创建逻辑分区
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
6.fdisk查看分区情况并保存
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: 0xa620416c
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
/dev/sdb2 20973568 2147483647 1063255040 5 Extended
/dev/sdb5 20975616 41947135 10485760 83 Linux
Command (m for help): w #保存分区
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
7.安装 parted
命令刷新内核立即生效,无需重启。
root@Hyman[16:24:37]~# yum install parted -y
root@Hyman[16:35:05]~# partprobe /dev/sdb
格式化磁盘
mkfs格式化磁盘,实质创建文件系统,文件系统类似于将房子装修成3室一厅,还是2室一厅。
mkfs
命令的选项
选项 | 解释 |
---|---|
-b | 设定数据区块占用空间大小,目前支持1024/2048/4096bytes每个块。 |
-t | 用来指定什么类型的文件类型,可以使ext4,xfs等 |
-i | 设定iNode的大小 |
-N | 设定iNode数量,防止iNode数量不够导致磁盘不足 |
格式化整个磁盘
root@Hyman[16:35:43]~# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
67108864 inodes, 268435456 blocks
13421772 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2415919104
8192 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
格式化磁盘的某个分区
root@Hyman[16:43:19]~# mkfs.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
使用mount挂载并使用
如果需要使用该磁盘的空间,需要准备一个空的目录作为挂载点,与该设备进行关联。
root@Hyman[16:47:13]~# mkdir /data
root@Hyman[16:47:19]~# mount /dev/sdb1 /data/