一、磁盘/硬盘/disk/简介


1、类型:


从工作原理区分:机械、固态

固态硬盘SSD的优势:

  SSD是摒弃传统磁介质,采用电子存储介质进行数据存储和读取的一种技术,突破了传统机械硬盘的性能瓶颈,

拥有极高的存储性能,被认为是存储技术发展的未来新星。  

    固态硬盘的全集成电路化、无任何机械运动部件的革命性设计,从根本上解决了在移动办公环境下,对于数据读

写稳定性的需求。全集成电路化设计可以让固态硬盘

做成任何形状。与传统硬盘相比,SSD固态电子盘具有以下优点:  

第一,SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。

第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,即使发生与硬物碰撞,数据丢失的可能性也能够降到最小。  

第三,得益于无机械部件及FLASH闪存芯片,SSD没有任何噪音,功耗低。  

第四,质量轻,比常规1.8英寸硬盘重量轻20-30克,使得便携设备搭载多块SSD成为可能。同时因其完全半导体化,

无结构限制,可根据实际情况设计成各种不同接口、形状的特殊电子硬盘。

2、插拔:热插拔、非热插拔

1.png


3、接口:

早期IDE —— 现在SATA I/II/III

早期服务器SCSI ——现在服务器SAS 

序列式SCSI(SAS:Serial Attached SCSI)是一种电脑集线的技术,其功能主要是作为周边零件的数据传输,如:硬盘、CD-ROM等设备而设计的界面。序列式SCSI 由并行SCSI物理存储接口演化而来,是由ANSI INCITS T10技术委员会(T10 committee)开发及维护的新的存储接口标准。与并行方式相比,序列方式能提供更快速的通信传输速度以及更简易的配置。此外SAS并支持与序列式ATA(SATA)设备兼容,且两者可以使用相类似的电缆。

2.png


4、转速:5400rpm

    7200

    10000

    15000


5、厂商:

   西部数据

   希捷

   三星日立金士顿


6、从存储连接方式:

   本地存储

   外部存储 scsi线 stat线 sas线 FC线

   网络存储:以太网络(iscsi, glusterFS,ceph)   FC网络


7、术语:

盘片:一块硬盘有若干盘片,每个盘片有可以存储数据的上、下两盘面(Side)。这些盘面堆叠在主轴上高速旋转,它们从上至下从“0”开始依次编号。

柱面:所有盘面上的同一磁道构成一个圆柱,称作柱面

扇区:将一个盘面划分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区。每个扇区中的数据作为一个单元同时读出或写入。硬盘的第一个扇区,叫做引导扇区。

磁道:每个盘面被划分成许多同心圆,这些同心圆轨迹叫做磁道;磁道从外向内从0开始顺序编号。

3.jpg


8、命名:

kernel对不同接口硬盘命名方式:

OS IDE(并口) SATA(串口) SCSI 

    RHEL5 /dev/hda /dev/sda /dev/sda 

    RHEL6 /dev/sda /dev/sda /dev/sda

    RHEL7 /dev/sda /dev/sda /dev/sda


KVM /dev/vda(半虚拟化驱动):

    KVM增加硬盘

    半虚拟化驱动磁盘: online

    全虚拟化驱动磁盘: offline

/dev/sda(全虚拟化驱动)


HP服务器硬盘:

/dev/cciss/c0d0

/dev/cciss/c0d0p1 //c0第一个控制器, d0第一块磁盘, p1分区1

/dev/cciss/c0d0p2 //c0第一个控制器, d0第一块磁盘, p2分区2


9、分区:

.png

MBR: 

MBR <2TB fdisk(4个主分区,扩展分区,逻辑分区) 

例子:3主 + 1扩展(n逻辑)

GPT:

GPT >2TB gdisk(parted) 128个主分区

GUID磁盘分区表(GUID Partition Table,缩写:GPT)

注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!


二、逻辑 LVM


1、目的:管理磁盘的一种方式,性质与基本磁盘无异。

2、特点:随意扩张大小,缩减大小,快照备份。

3、流程:

基本分区(MBR GPT)- filesystem-mount

逻辑卷-filesystem -mount



4、工作原理:

PV:物理卷(Physical volume)

VG:卷组(Volume Group)

LV:逻辑卷(Logical Volume)

PE:物理块(Physical Extent)

LE:逻辑块(Logical Extent)

图示:78.png


5、创建LVM:

①准备物理磁盘:

准备物理磁盘(可以是: /dev/sdb /dev/sdc1 (建立在RIAD之上))

[root@server0 ~]# 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

建议使用相同的磁盘名称。

如果再CENTOS6中,千万记得将分区类型更改为8E

②pv:将物理磁盘,转换成物理卷-PV

[root@server0 ~]# pvcreate /dev/sdc

Physical volume "/dev/sdc" successfully created

查看PV信息:

[root@server0 ~]# 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@server0 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/vdd lvm2 a-- 2.00g 2.00g


[root@server0 ~]# pvdisplay

③ vg:创建卷组-VG

[root@server0 ~]# vgcreate vg1 /dev/sdc

Volume group "vg1" successfully created

查看卷组信息:

第一种方法,查看卷组的摘要信息。卷组名,物理卷数量,逻辑卷数量,大小等。

[root@server0 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

vg1 1 0 0 wz--n- 2.00g 2.00g


第二种方法,扫描卷组信息。

[root@server0 ~]# vgscan 

Reading all physical volumes. This may take a while...

Found volume group "vg1" using metadata type lvm2



第三种方法。显示卷组详细信息。

[root@server0 ~]# 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@server0 ~]# lvcreate -L 200M -n lv2 vg1

指定大小,单位M,G

查看LV:

[root@server0 ~]# lvscan 

ACTIVE '/dev/vg1/lv1' [400.00 MiB] inherit

ACTIVE '/dev/vg1/lv2' [200.00 MiB] inherit

⑤创建文件系统并挂载

方法一:手动挂载

创建文件系统

[root@server0 ~]# mkfs.ext4 /dev/vg1/lv2

创建挂载点

[root@server0 ~]# mkdir  /mnt/lv2

挂载

[root@server0 ~]#mount /dev/vg1/lv2 /lv2

查看挂载结果

[root@server0 ~]# 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


逻辑卷管理完毕,就可以向挂载点写入数据了。

方法二:自动挂载

vim /etc/fstab

/dev/vg1/lv1    /mysql_data     ext4    defaults 0 0

分区 挂载点 文件系统 属性 压缩 检测

mount -a


三、VG 管理

3.1、扩大VG vgextend:

环境:/dev/vg1 容量由4G 扩容到 6G。


步骤1,创建PV。而后使用第二步,将PV增加到VG中。

[root@server0 ~]# pvcreate /dev/sdd1


步骤2:扩展VG,同时包含方法1.

[root@server0 ~]# vgextend vg1 /dev/sdd1

Volume group "vg1" successfully extended


扩容完成,查看VG:

[root@server0 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

vg1 2 2 0 wz--n- 3.99g 3.76g


3.2、减小VG vgreduce:

警告:减小VG ,命令虽少。但千万需要注意的是数据迁移。


环境介绍:

卷组vg1

物理卷sdc,sdd1和sde(查看物理卷pvs命令)

sdc物理卷中有数据

为了避免vg缩减影响数据,请先将sdd中的数据移动到sde中。



查看当前的VG中PV的使用情况:

[root@server0 ~]# pvs

PV VG Fmt Attr PSize PFree

/dev/sdc vg1 lvm2 a-- 2.00g 1.76g

/dev/sdd1 vg1 lvm2 a-- 2.00g 2.00g

/dev/sde vg1 lvm2 a-- 2.00g 2.00g

注意观察,PV的空间。一个是使用过的,一个是满的。


pvmove:

会将sdd中的数据,移动到sde中。

[root@server0 ~]# pvmove /dev/sdc

/dev/sdc: Moved: 16.7%

/dev/sdc: Moved: 100.0%

可以看到移动过程。

再次查看,空间已经发生变化。

[root@localhost ~]# pvs

  PV         VG     Fmt  Attr PSize   PFree 

  /dev/sda2  centos lvm2 a--  <19.00g     0 

  /dev/sdc   vg1    lvm2 a--   <2.00g <2.00g

  /dev/sdd1  vg1    lvm2 a--   <2.00g  1.80g

  /dev/sde   vg1    lvm2 a--   <2.00g <2.00g


vgreduce VG缩减。

[root@server0 ~]# vgreduce vg1 /dev/sdd

Removed "/dev/sdd" from volume group "vg1"

再次观察,VG中少了一个PV

[root@server0 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

vg1 1 2 0 wz--n- 2.00g 1.76g

观察,PV的数量变少了。


四、LV扩容


1、扩大LV lvextend

1.1 lv扩容

步骤一、查看VG空间。

[root@server0 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

vg1 2 2 0 wz--n- 1.88g 1.00g

请观察,VG是否有剩余空间。

步骤二、扩容LV。 

[root@server0 ~]# lvextend -L +200M /dev/vg1/lv2

增加200M空间,给lv2

步骤三、查看LV

[root@server0 ~]# lvscan 

ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit

ACTIVE '/dev/vg1/lv2' [300.00 MiB] inherit


观看LV大小已经发生改变。

如果希望缩减LV,1请注意数据保存。2使用lvreduce


注意:xfs的lvm不支持缩容

Xfs filesystem shrinking is unsupported 


1.2 FS扩容 

步骤一、先观察文件系统当前容量。

[root@server0 ~]# df -Th 

/dev/mapper/vg1-lv2 ext4 240M 32M 192M 15% /mnt/lv2

. ext2/3/4文件系统扩容

[root@server0 ~]# resize2fs /dev/vg1/lv2

步骤二、再次观察df -hT 的分区大小。和上一次的对比一下。大小已经发生改变。

查看FS

[root@server0 ~]# 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

请注意对比,之前的输出结果,文件系统的大小发生改变。

如果您的文件系统,不是EXT4。那请用下列命令来更新XFS文件系统

xfs文件系统扩容请注意,不同的文件系统,扩容指令不同。

[root@server0 ~]# xfs_growfs /dev/vg1/lv1


2、减小LV lvreduce    减容注意事项(了解)

环境介绍

逻辑卷/dev/vg1/lv2,大小400M,并挂载到/mnt/lv2

需要先将lv卸载(umount),再进行减容操作。

1.首先查看磁盘使用情况

df -hT

注意分区大小400M

/dev/mapper/vg1-lv2     ext4      380M  2.3M  356M    1% /mnt/lv2

2、卸载

umount /dev/vg1/lv2 

3、调整分区大小

e2fsck -f /dev/vg1/lv2 

resize2fs -p /dev/vg1/lv2 200M

4、设置空闲空间,减容

lvreduce -L 200M /dev/vg1/lv2

5、挂载上/mnt/lv2,查看磁盘使用情况

 mount /dev/vg1/lv2  /mnt/lv2/

 df -h

看到分区大小已经200M

/dev/mapper/vg1-lv2     ext4      186M  1.6M  171M    1% /mnt

千万注意,不要对已经挂载的LV进行兼容,会损坏文件系统。

千万注意,缩减后的LV大小,要大于存储数据的大小。

(重新格式化才能用)


五、 LVM快照snapshot

1、快照的目的:快速备份数据。

2、快照与备份

  备份原理

  备份窗口

  数据一致性

  快照技术:COW、ROW


步骤一、 创建快照 (EXT4)

[root@server0 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2

或者这样看呢,创建LV,名字lv2-snap,根据lv2进行快照,大小128M

lvcreate -n lv2-snap  -s /dev/vg1/lv2  -L 128M


① 查询快照卷大小。

[root@server0 ~]# lvs

LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert

lv1 vg1 -wi-ao---- 768.00m 

lv2 vg1 owi-aos--- 512.00m 

lv2-snap vg1 swi-aos--- 128.00m lv2 5.92 

实验到这里就结束了。

注意:制作快照限制,受VG大小。

②挂载快照卷,恢复数据(验证)

③ 将快照卷挂载,拷贝出数据。可以用作回复数据使用了。

[root@server0 ~]# mkdir    /mnt/lv2-snap

[root@server0 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/


步骤三. 查看Snapshot

① 查看两个卷的挂载情况。

[root@server0 ~]# df -Th

Filesystem Type Size Used Avail Use% Mounted on

/dev/mapper/vg1-lv2 ext4 488M 32M 429M 7% /mnt/lv2

/dev/mapper/vg1-lv2--snap ext4 488M 32M 429M 7% /mnt/lv2-snap


② 查看两个卷的关系

[root@server0 ~]# lvscan 

ACTIVE '/dev/vg1/lv1' [768.00 MiB] inherit

ACTIVE Original '/dev/vg1/lv2' [512.00 MiB] inherit

ACTIVE Snapshot '/dev/vg1/lv2-snap' [128.00 MiB] inherit


③ 查看文件内容。根据情况进行使用。

[root@server0 ~]# ls /mnt/lv2

etc lost+found

[root@server0 ~]# ls /mnt/lv2-snap/

etc lost+found


④ 观察Snapshot

[root@server0 ~]# lvs

LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert

lv1 vg1 -wi-ao---- 768.00m 

lv2 vg1 owi-aos--- 512.00m 

lv2-snap vg1 swi-aos--- 128.00m lv2 30.56 


步骤四.提示xfs文件系统快照注意事项

XFS:不识别uuid ,所以需要单独加上一个-o nouuid 来忽略掉。就可以使用xfs的快照了。

[root@server0 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/

挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据


六、终极大法


归类汇总

lvm卸载流程:

1.umountFS

2.删除LV。

3.将PV从所在的VG中删除。

4.删除VG。

问题汇总:

先删除pv,后删除vg时报错。

Volume group "vg1" not found, is inconsistent or has PVs missing.

vgreduce --removemissing --force vg1

554.PNG


七、交换分区管理 Swap

Ⅰ、简介

1、作用: ‘提升‘ 内存的容量,防止OOM(Out Of Memory)

2、swap大小

推荐设置交换分区大小为内存的2倍

生产:

大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;

大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;

大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。


Ⅱ、查看当前的交换分区

[root@server0 ~]# free      -m

total used free shared buff/cache available

Mem: 489 140 145 4 202 304

Swap: 0 0 0


[root@server0 ~]# swapon -s

当前系统中,没有swap。如果你的系统中有,请观察大小,后续实验会增加swap大小。


Ⅲ、增加交换分区

类型:可以是分区或者LVM或者File

===分区/LVM===

===分区===

1. 准备分区(准备将/dev/sde磁盘,划分为1G分区)

[root@server0 ~]# fdisk    /dev/sde (t转换分区的ID 82)

[root@server0 ~]# partprobe /dev/sde

[root@server0 ~]# 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


2.格式化

[root@server0 ~]# mkswap /dev/sde1


3.挂载

[root@server0 ~]# blkid /dev/sde1

/dev/sde1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap" 


[root@server0 ~]# vim /etc/fstab

UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults 0 0


[root@server0 ~]# swapon -a (读取/etc/fstab)

[root@server0 ~]# swapon -s

Filename Type Size Used Priority

/dev/vdb1 partition 524284 0 -1


===File===(了解)

===File===

[root@server0 ~]# df -Th

Filesystem Type Size Used Avail Use% Mounted on

/dev/vda1 xfs 10G 3.3G 6.8G 33% /


[root@server0 ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512

或者

[root@server0 ~]# dd </dev/zero >/swap2.img bs=1M count=512


[root@server0 ~]# mkswap /swap2.img


[root@server0 ~]# vim /etc/fstab

/swap2.img swap swap defaults 0 0


由于文件型扩展SWAP会提示权限不够。所以扩大一下权限。

[root@server0 ~]# swapon -a

swapon: /swap2.img: insecure permissions 0644, 0600 suggested.

[root@server0 ~]# chmod 600 /swap2.img 

[root@server0 ~]# swapon -a



[root@server0 ~]# swapon -s

Filename Type Size Used Priority

/dev/vdb1 partition 524284 0 -1

/swap2.img file 524284 0 -2


Ⅳ、对交换分调优 [扩展]

关于swap优先级

1、swap分区的优先级(Priority)从高到低依次使用,最高32767,最低优先级是0

这样设置使得Linux并行的使用优先级相同的swap分区(Priority = 1的分区),这会大幅的提高对swap的读写。当这些分区满了,就会使用较低优先级swap分区(Priority = 0的分区) 

2、设置swap优先级:

多个交换分区分布在不同的磁盘

挂载时,使用相同的优先级


[root@server0 ~]# vim /etc/fstab

UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults,pri=1 0 0

UUID="ea5b1c77-e540-465c-9644-0d75457f8b45" swap swap defaults,pri=1 0 0

pri是优先级的意思,设置相同即可。


[root@server0 ~]# swapon -a

[root@server0 ~]# swapon -s

Filename Type Size Used Priority

/dev/sdb1 partition 524284 0 1

/dev/sdc1 partition 524284 0 1