磁盘/硬盘/disk是同一样东西,与内存的差别就是容量比较大
类型
从工作原理上分为机械硬盘和固态硬盘.
机械硬盘:是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
固态硬盘:固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘
磁盘大小4K
扇区(Sector),由于硬盘的设计机构,工作时磁道的角速度相同。由于径向长度不同,所以,线速度也不同,外圈的线速度较内圈的线速度大,即同样的转速下,外圈在同样时间段里,划过的圆弧长度要比内圈划过的圆弧长度大。每段圆弧叫做一个扇区,扇区从“1”开始编号,每个扇区中的数据作为一个单元同时读出或写入。
磁道(Track),盘片上的同心圆,由厂商完成划分,其容量由盘片的密度决定。在最外圈,离主轴最远的地方是“0”磁道,硬盘数据的存放就是从最外圈开始的
盘片(Platters)为数据的主要存储介质,往往有多片,每个碟片都有两面,因此也会相对应每碟片有2个磁头,工作时,所有盘片由一个点击带动同时旋转
柱面(Cylinder),硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面,划分分区是按照柱面划分的
簇(Data cluster),有时被称为分配单元(allocation unit),是操作系统中磁盘文件存储管理的单位,可为一个或多个物理扇区组成
接口
Linux的一个重要思想之一就是一切皆文件,而磁盘作为存储数据的重要设备,在系统中也有与之对应的设备文件。根据不同接口类型的设备,其设备文件的命名方式亦不同
IDE
IDE(Integrated Drive Electronics),集成磁盘电子接口,事实上IDE为磁盘的形式,这种硬盘一般使用PATA(Parallel Advanced Technology Attachment)接口,我们通常所谓的IDE硬盘即接口为PATA的硬盘,该接口为并行接口,其理论传输速度为133MB/s。
SATA
SATA(Serial Advanced Technology Attachment),即串行ATA,SATA有多种规格,SATA2的理论速度为3Gbps,SATA3的理论速度为6Gbps,该接口排线与SCSI兼容,SATA硬盘也可接上SAS接口。设备文件以sd开头
SAS
SAS(Serial Attached SCSI)串行SCSI,是新一代的SCSI技术,SAS并支持与序列式ATA(SATA)设备兼容,且两者可以使用相类似的电缆,理论速度6Gbps,设备文件通常以sd开头
SCSI
SCSI(Small Computer System Interface)小型计算机系统接口,是一种用于计算机及其周边设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。
USB
USB(Universal Serial Bus)通用串行总线,是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人计算机和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域,相信大家不会陌生
目前日渐普及的USB Type-C
转速
转速,转速是硬盘内电机主轴的旋转速度,也就是硬盘盘片在一分钟内所能完成的最大转数,即RPM(Rotations Per Minute),个人设备常见的有5400RPM,7200RPM
命名
kernel对不同接口硬盘命名方式
RHEL7/centos7主要分为
IDE(并口):通常为/dev/hda , /dev/hdb等。
SATA(串口):通常为 /dev/sda , /dev/sdb
/dev设备文件目录,sda是一个文件,s代表sata就是串口,d代表磁盘,a第一块
分区方式
MBR:主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导,MBR支持最大的磁盘容量是 <2TB。设计时分配4个分区,如果希望超过4个分区,需放弃主分区,改为扩展分区和逻辑分区。
GPT:全局唯一标识分区表(GUIDPartition Table,缩写:GPT)是一个实体硬盘的分区表的结构布局的标准,GPT 支持大于2T的硬盘,支持128个分区
分区(MBR或者GPT) ---->格式化/文件系统 Filesystem ----> 挂载mount
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 1月 25 09:35 /dev/sda
brw-rw----. 1 root disk 8, 1 1月 25 09:35 /dev/sda1
brw-rw----. 1 root disk 8, 2 1月 25 09:35 /dev/sda2
brw-rw----. 1 root disk 8, 16 1月 25 09:35 /dev/sdb
brw-rw----. 1 root disk 8, 32 1月 25 09:35 /dev/sdc
brw-rw----. 1 root disk 8, 48 1月 25 09:35 /dev/sdd
名称 设备类型 序号 是否可移动设备 大小 是否只读 磁盘或分区 挂载点
[root@localhost ~]# fdisk /dev/sdb 启动分区工具
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
。
Device does not contain a recognized partition table
使用磁盘标识符 0xd43058cb 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):
欢迎界面,输入帮助指令或操作指令
然后按“ n "键
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
请选择主分区,或扩展分区
敲击字母“p”键
Select (default p): p
分区号 (1-4,默认 1):
选择分区号
敲击数字“1”键
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
选择磁盘开始的扇区
敲击回车键
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):
选择磁盘分区结束的扇区,即分区大小
输入分区大小“+2G” 后回车,实际环境根据磁盘划分,如4T磁盘,可以500G 一个分区。
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):
已经完成 2G 大小分区记录。但未生效
输入w保存分区信息
`命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# ``
自动退出分区工具
刷新分区表
[root@localhost ~]# partprobe /dev/sdb
查看分区结果
[root@localhost ~]# fdisk -l /dev/sdb
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd43058cb
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
划分磁盘完毕,/dev/sdb1,新创建的分区,sdb2,sdb3 都要格式化。
[root@localhost ~]# mkdir /mnt/disk1
[root@localhost ~]#mount -t ext4 /dev/sdb1 /mnt/disk1
[root@server0 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 ext4 2G 6M 1.9G 3% /mnt/disk1
分区 文件系统 大小 占用 空闲 占比 挂载点
或者
[root@server0 ~]# mount
/dev/sdb1 on /mysql_data type xfs (rw,relatime,seclabel,attr2,inode64,noquoa)
/dev/sdb3 on /mnt/disk1/disk2/disk3/disk4 type ext4 (rw,relatime,seclabel,dta=ordered)
mount 看的是磁盘有没有特殊属性,具体属性在后续讲解。
关于挂载重启失效的问题
永久挂载: fstab
写入自启动文件
[root@server0 ~]# vim /root/.bashrc
[root@server0 ~]# mount -t ext4 /dev/sdb1 /mnt/disk1
不能影响文件原先的内容
如果已经创建了四个主分区按以下要求做
先卸载
[root@server0 ~]# umount /dev/sdb4
[root@server0 ~]# fdisk /dev/sdb
删除主分区
输入d 删除分区
按下4 第四个分区
按下p 打印分区列表,查看删除结果
创建扩展分区
按下n 创建分区
按下e 创建扩展分区
回车 起始扇区
回车 磁盘的结尾
创建逻辑分区
与创建主分区方式一致
如果最后一个主分区还没创建 按以下操作
按下n 创建分区
按下e 创建扩展分区
然后直接回车默认就好
最后w保存退出
[root@server0 ~]# vim /etc/fstab
[root@server0 ~]# /dev/sdb1 /mnt/disk1 ext4 defaults 0 0
磁盘 挂载点 文件系统类型 默认选项 优先级 优先级
然后使用立刻挂载命令 mount -a
这样每次启动虚拟机 就可以立即挂载
基本磁盘,缺点是无法调整大小,所以产生了LVM,
LVM:管理磁盘的一种方式,性质与基本磁盘无异,能随意扩张大小
LVM是 Logical Volume Manager(逻辑卷管理)
PV:物理卷(Physical volume):一块硬盘,或多块硬盘
VG:卷组(Volume Group):一堆磁盘的统称
LV:逻辑卷(Logical Volume):一个逻辑分区,一个分区
准备物理磁盘
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/sdc
brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/sdd
brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/sde
将物理磁盘,转换成物理卷-PV
[root@localhost ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created
查看PV信息
[root@localhost ~]# pvscan
PV /dev/vdd lvm2 [2.00 GiB]
Total: 1 [2.00 GiB] / in use: 0 [0 ] / in no VG: 1 [2.00 GiB]
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdd lvm2 a-- 2.00g 2.00g
[root@localhost ~]# pvdisplay
创建卷组-VG
[root@localhost ~]# vgcreate vg1 /dev/sdc
Volume group "vg1" successfully created
第一种方法,查看卷组的摘要信息。卷组名,物理卷数量,逻辑卷数量,大小等。
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- 2.00g 2.00g
第二种方法,扫描卷组信息。
[root@localhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2
第三种方法。显示卷组详细信息。
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 2.00 GiB //重点观察
PE Size 4.00 MiB //重点观察
Total PE 511 //重点观察
Alloc PE / Size 0 / 0
Free PE / Size 511 / 2.00 GiB
VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V
创建lv
[root@localhost ~]# lvcreate -L 200M -n lv1 vg1
指定大小,单位M,G
创建逻辑卷 -L大小 -n卷名 vg1组名
查看lv
[root@localhost ~]# lvscan
ACTIVE '/dev/vg1/lv1' [400.00 MiB] inherit
ACTIVE '/dev/vg1/lv2' [200.00 MiB] inherit
创建文件系统并挂载
创建文件系统/格式化
[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1
注意:/dev/卷组名/逻辑卷名
创建挂载点
[root@localhost ~]# mkdir /mnt/lv1
挂载
[root@localhost ~]#mount /dev/vg1/lv1 /mnt/lv1
查看挂载信息
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg1-lv1 651948 32928 619020 6% /mnt/lv1
/dev/mapper/vg1-lv2 245671 2062 226406 1% /mnt/lv2
逻辑卷管理完毕,就可以向挂载点写入数据了
扩大VG vgextend
环境:/dev/vg1 容量由5G 扩容到 10G。
创建PV。而后使用第二步,将PV增加到VG中。
[root@localhost ~]# pvcreate /dev/sdd
扩展VG,同时包含方法1.
[root@localhost ~]# vgextend vg1 /dev/sdd
Volume group “vg1” successfully extended
查看VG
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 3.99g 3.76g
扩大LV: lvextend
第一 lv扩容
查看VG空间
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 1 0 wz--n- 9.99g 5.99g
观察VG是否有剩余空间
扩容lv
[root@localhost ~]# lvextend -L +200M /dev/vg1/lv1
增加200M空间,给lv2
第二 FS扩容
先观察文件系统当前容量。
[root@localhost ~]# df -Th
/dev/mapper/vg1-lv2 ext4 240M 32M 192M 15% /mnt/lv2
[root@localhost ~]# resize2fs /dev/vg1/lv1
再次观察df -hT 的分区大小和上一次的对比一下。大小已经发生改变。
查看FS
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 765M 67M 698M 9% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2
之前的输出结果,文件系统的大小已经发生改变。
swap的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。
swap的大小推荐是设置交换分区大小为内存的2倍
大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
太大得话 基本上会用不上
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1980 704 614 19 661 1110
Swap: 2047 0 2047
free –m 空间大小以兆为单位进行显示(默认以字节为单位进行显示)
还有一种
free –g 空间大小以GB为单位进行显示
total:总内存大小;
used:已用内存大小;
free:未用内存大小;
shared:用于共享的内存;
buffers:用于缓冲的(通常是为了写操作设定的);
cached:用于缓存的(通常是为了读操作设定的)。
-/+ buffers/cache:used表示真正意义上的已用内存空间大小(减去缓存缓冲)
准备分区
准备将/dev/sde磁盘,划分为1G分区为例
[root@localhost ~]# fdisk /dev/sde
[root@localhost ~]# partprobe /dev/sde
[root@localhost ~]# ll /dev/sde*
brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde
brw-rw----. 1 root disk 253, 17 12月 6 10:18 /dev/sde1
格式化
[root@localhost ~]# mkswap /dev/sde1
挂载
[root@localhost ~]# swapon /dev/sde1
验证
[root@localhost ~]# free -m
最后查看增加后的交换分区