操作系统磁盘管理

风格不统一 提交于 2019-12-29 21:29:12

01.知识概述部分

1)系统启动流程

2)磁盘管理体系结构
磁盘物理层次(内部结构 外部结构)
磁盘逻辑层级(RAID :LVM)
磁盘分区操作(fdisk parted)
磁盘创建文件系统(格式化)
磁盘挂载操作(mount 参数)
磁盘应用环境(作为交换分区)

3)基础阶段知识梳理

02.课程知识回顾说明

1)操作系统用户相关命令

useradd  groupadd usermod  groupmod userdel groupdel

2)操作系统用户相关文件

 /etc/passwd  /etc/skel

3)操作系统定时任务配置 crontab -e

时间信息 任务信息
时间信息:分 时 日 月 周
时间设置:*(每) */n(每隔多久) n-m() n,m()

 1:00   0 */2 * * * --> 2点 4点 。。 (分钟也要设置,否则每分钟都会执行,每两小时只会在整数点执行)
 date -s "1:00:00"  --> tail -f /var/log/cron ---> date 2:59:50   3:00 不会执行
                                              ---> date 3:59:50   4:00 正常执行
 */n  n 在执行时, 是小时整数倍时间执行
 n=2  2 4 6 8 10 12 14 16 18 20 22 0 
 n=3  1:00 3点 6点 9  12  15 

a 定时任务编写规范 直接书写命令/直接编写脚本信息

b 定时任务注意事项

命令信息尽量绝对路径

无法识别特殊符号信息 要不然放脚本里,或者加转义\符号

尽量将定时任务输出信息放入到黑洞中 &>/dev/null

0 9,11,13 * * *  xxxxx
tail -f /var/log/cron 

当前时间 18:00 ---> 编写定时任务 ---> 日志识别当前时间为18:00
---> date 8:59 ---> 异常问题
	  
练习时把时间先改为0点 
当前时间 00:00 ---> 编写定时任务 ---> 日志识别当前时间为00:00
---> date 8:59 ---> 正常执行

4)磁盘管理章节说明
磁盘物理结构说明
外部结构:
内部结构:磁头 磁道(规范化磁盘存储方式) 扇区 柱面(分区有关)

5)磁盘管理分区方法
磁盘0磁头0磁道1扇区介绍:MBR + DPT
系统进行分区操作:fdisk parted

6)磁盘逻辑结构说明:
磁盘阵列概念:RAID
磁盘弹性管理:LVM

03.磁盘管理知识体系结构

1)磁盘管理物理结构
外部结构:能看见的结构信息
内部结构:看不到的结构信息

2)磁盘管理逻辑结构

如何将多个磁盘进行整合
利用RAID进行整合:提高单块磁盘容量 提高磁盘存储效率 提高磁盘安全性
利用LVM进行整合 :弹性扩容或缩容磁盘(数据库服务器)

3)磁盘分区操作方法

分区概念知识:主分区 扩展分区 逻辑卷 分区表(dos mbr)
分区命令使用:fdisk parted

4)磁盘格式化操作

创建文件系统:xfs ext3/ext4
格式化命令:mkfs(make file system)

5)磁盘应用管理

磁盘挂载操作:mount umount
磁盘管理检测:iotop fsck
如何创建swap空间:

04.磁盘管理物理结构

外部结构:

接口信息:SATA SCSI SAS PCI-e
转速信息:10k 15k
容量信息:byte k M G T
硬盘组成:主轴 磁盘 磁头

内部结构:
磁头(head) :读取磁道数据信息

磁道(trock) :多个同心圆

扇区(sector) :
存储数据最小物理单位(512byte)
最小逻辑存储单位:block -4k 4k=8个扇区

柱面(cylinder):表示相同同心圆做成一个存储的单元

公式:

一个柱面大小(容量)*磁道数量=磁盘大小
(一个磁道大小*磁头数) * 磁道数 ↑

05.磁盘管理分区操作

环境准备:准备三块硬盘 50g 10M 3T
检查确认:

fdisk -l   显示系统有哪些磁盘信息列表展示一下
fdisk  +  磁盘  直接分区,创建分区表
fdisk -s  指定分区block块的大小
fdisk -b  指定扇区大小
fdisk -c    一般centos6需要用,选择dos模式
fdisk -u    选择柱面或者扇区作为单元,默认扇区,正常柱面
问题:新添加硬盘无法识别

方法一:重启服务器
方法二:不重启服务器时,识别新硬盘

echo "- - -" > /sys/class/scsi_host/host0/scan   --- 让系统重新扫描磁盘硬件信息
(磁盘太大时还是需要重启,2T以上)

硬盘简单描述:
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。 但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。在linux中第一块硬盘分区为hda分区(或者是sda分区),主分区编号为hda1-4,逻辑分区从5开始。
硬盘的容量=主分区的容量+扩展分区的容量 扩展分区的容量=各个逻辑分区的容量之和

MBR简单描述
0磁头0磁道1扇区:MBR(master boot record主引导记录)+DPT(磁盘分区表)正好512字节,MBR占了446byte,DTP 占用64字节,每个分区占用16字节:总共有4个主分区,分区结束,标识55AA占用2byte,可以划分一个扩展分区:类似指针 --> 不同逻辑分区,设置扩展分区的目的,只是为了能够建立更多逻辑分区。

https://blog.csdn.net/free050463/article/details/81876521 msdos与GPT详解
https://zhidao.baidu.com/question/138774663.html 主分区与逻辑分区的区别
https://www.cnblogs.com/hiwangzi/p/7640995.html 《鸟哥的Linux私房菜》笔记——03. 磁盘分区

总结:
主分区 4个 扩展分区只能1个(不能直接使用)逻辑分区可以多个 (编号从5开始)

4个主分区(/dev/sda):/dev/sda1 … /dev/sda4

三个主分区,2个逻辑分区:/dev/sda1 … /dev/sda3 /dev/sda5 /dev/sda6
4不能用,代表扩展分区

分区操作1:fdisk (操作时可看10点的视频)

第一个里程:利用命令进入分区界面

fdisk /dev/sdb
c    toggle the dos compatibility flag(centos6会用到) 切换dos兼容性标志
d    delete a partition 删除指定分区
g   create a new empty GPT partition table(centos7独有) 创建一个新的空的GPT分区表(没有主分区限制,100多个)可以划分超过2T大小磁盘
G     create an IRIX (SGI) partition table 创建一个IRIX (SGI)分区表
l    list known partition types 列出已知分区类型(用的时候输入英文的l)关注:8e  Linux LVM     82  Linux swap / So    83  Linux 
m    print this menu 打开菜单
n    add a new partition 添加新的分区
o    create a new empty DOS partition table 创建一个新的空的DOS分区表(具有主分区限制)只能划分2T以下磁盘
p    print the partition table 输出分区表信息
q    quit without saving changes 退出不保存配置
t   change a partition's system id 改变分区类型
v    verify the partition table 验证分区表
u   change display/entry units 改变单元方式,扇区或柱面,一般默认就可以了
w    write table to disk and exit 保存分区配置

第二个里程:进行分区操作

操作时误输入,删除错误字符时按住ctrl+删除键 或者ctrl u

n  -->  p  --> 分区大小信息  -->  划分主分区
n  -->  e  --> 分区大小信息  -->  划分扩展分区,只有分完扩展分区后,才能分逻辑分区
n  -->  l  --> 分区大小信息  -->  划分逻辑分区


# 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-104857599, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +10G
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 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: 0xca0477a7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

第三个里程: 检查确认并保存退出后格式化

p --> w 
mkfs.xfs /dev/sdb1 格式化

格式化较小磁盘时,比如10M,需要选用etx3或者etx4,xfs不支持较小的分区
-f 强制分区,用于xfs,ext3,4不支持该参数

扩展:fdisk命令划分2T以上分区,输入大小时需要整数,比如+2T

输入g 修改分区表为gpt
输入o 修改分区表为dos

[root@jason / 20:15:02]# fdisk /dev/sdc
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
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.

Command (m for help): n
Partition number (1-128, default 1): 
First sector (34-6442450910, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-6442450910, default 6442450910): +2T  
Created partition 1

Command (m for help): p

Disk /dev/sdc: 3298.5 GB, 3298534883328 bytes, 6442450944 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: gpt
Disk identifier: F83A4F4D-DC55-4D12-904D-BFCC7C2F5C23

#         Start          End    Size  Type            Name
 1         2048   4294969343      2T  Linux filesyste 

分区操作2:parted

查看空闲空间

[root@jason ~ 04:34:55]# parted /dev/sdc print free
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  2100GB  2100GB               primary
        2100GB  3299GB  1199GB  Free Space

第一个里程:

[root@jason ~ 10:33:17]# parted /dev/sdc
GNU Parted 3.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)   

第二个里程:

分区参数:

mklabel(创建分区表 MRB-msdos/gpt)        create a new disklabel (partition table)
                                         创建新的分区表
1.配置分区类型,需注意,如果之前有分区下面的操作会清除以前的分区数据
# mklabel GPT                            # mklabel    msdos这是恢复默认的格式

2. mkpart(创建新的分区)                  make a partition
配置主分区:
 # mkpart primary 0 2100G   (创建第一个主分区,0到2100G,可以把所有分区都划为主分区)
创建第二个分区mkpart primary  2100G 3000G   (以此类推)

配置逻辑分区:
剩余空间给扩展分区
mkpart entended 2150G 2350G

在扩展分区上创建第一个逻辑分区
(parted) mkpart logic 2350G 2400G   

创建第二个逻辑分区
mkpart logic 2400G 100%            #100%代表使用剩余的所有空间
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name      Flags
 1      17.4kB  2100GB  2100GB               primary
 2      2100GB  2150GB  50.0GB               primary
 3      2150GB  2350GB  200GB                entended
 4      2350GB  2350GB  512B                 logic
 5      2350GB  2400GB  50.0GB               logic
 6      2400GB  3299GB  899GB                logic



3.
print(显示分区表信息)                                  display the partition table
rm(删除指定分区信息)                                  delete partition NUMBER

4.quit(退出分区界面)                                       exit program

5.mkfs.xfs   /dev/xxx   格式化后挂载即可

6.mklabel    msdos这是恢复默认的格式

06.磁盘管理逻辑结构 LVM

磁盘阵列概念:将多块磁盘整合为一块,提高磁盘存储效率和安全性,以及单块磁盘容量

磁盘阵列配置:RAID 0 1 5 10 11

阵列级别:
raid 0 :用于WCG游戏等比赛
优势:读写效率高
缺点:安全性低
存储:存储利用率=总磁盘容量总和

raid 1 :
优势:安全性高
缺点:读写效率低
存储:存储利用率=总磁盘容量总和1/2

raid 5:最少三块,每块盘生成校验文件 重要!
优势:安全性高 读写效率高
缺点:损失一块磁盘容量

raid 6:
优势:安全性高,读写效率高,可以坏两块磁盘
存储:损失一块磁盘容量
RAID6实现方式:
带有两种校验的独立磁盘结构,两种校验方法,效率低,存储率低,可靠性高,解决两块磁盘失效,没有统一的校验,最少4块磁盘。
P+Q算法横向
DP算法斜向

raid 10/01:
优势:安全性高 读写效率高
存储:损失一半容量

IBM服务器阵列配置步骤

第一个步骤:是否按 ctrl + H 进入磁盘阵列配置界面
第二个步骤:选择raid配置向导界面
手动配置
第三个步骤:创建驱动器组
第四个步骤:选择配置阵列级别
dell服务器RAID配置:https://www.cnblogs.com/passzhang/articles/8672029.html
IBM服务器RAID配置:https://jingyan.baidu.com/article/da1091fb60acb0027849d6ce.html

磁盘弹性扩容:实现磁盘分区大小灵活调整(数据库/存储) LVM

概念介绍说明
概念原理知识:
PV:(PE PE PE) VG (PV PV PV) LV逻辑卷
pe最小存储单位 pv物理卷 vg卷组 LV逻辑卷

lvm逻辑卷操作命令
序号 功能            PV物理卷命令 VG卷组命令 LV逻辑卷命令
1 扫描功能(scan)    pvscan      vgscan    lvscan
2 建立功能(create)  pvcreate    vgcreate  lvcreate
3 查询功能(display) pvdisplay   vgdisplay lvdisplay
4 删除功能(remove)  pvremove    vgremove  lvremove
5 扩容功能(extend)              vgextend  lvextend
6 缩容功能(reduce)              vgreduce  lvreduce

分区操作:

LVM磁盘管理配置过程

第一个里程:进行磁盘分区格式化操作

fdisk -l              ---检查系统磁盘信息
fdisk /dev/sdc  ---对第三块磁盘进行分区

(说明:利用lvm逻辑卷管理执行相关命令,需要先安装lvm软件程序包lvm2)

分区操作步骤:

n --> p --> 回车,回车 --> 输入分区大小(+尺寸) --> p   划分出两个分区
[root@jason ~ 18:44:59]# fdisk /dev/sdc  (更改分区类型,改为linux lvm)
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
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.

Command (m for help): t
Partition number (1,2, default 2): 1
Partition type (type L to list all types): 31
Changed type of partition 'Linux filesystem' to 'Linux LVM'
#         Start            End          Size         Type            Name
 1         2048        1026047     500M     Linux LVM       
 2      1026048      2050047    500M     Linux LVM       

w   保存分区操作

yum -y install lvm2  

第二个里程:进行PV创建过程(物理卷)

[root@jason ~ 18:51:26]# pvcreate /dev/sdc1  /dev/sdc2
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdc2" successfully created.

[root@jason ~ 18:52:10]# pvdisplay(查看pv,用pvs可以简单查看)
  "/dev/sdc1" is a new physical volume of "500.00 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               500.00 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               iq78ZX-oB0D-RuKY-sd09-Wivv-jv9W-tEoCSW
   
  "/dev/sdc2" is a new physical volume of "500.00 MiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc2
  VG Name               
  PV Size               500.00 MiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               f86XlI-R6tH-xRyk-hpnP-oC7W-DFGE-DR11XR

第三个里程:将PV划分到VG中(生成卷组)

[root@jason ~ 18:52:53]# vgcreate vg1 /dev/sdc1 /dev/sdc2
Volume group "vg1" successfully created

(vg1是可以随便起的名称)

vgdisplay后跟卷组名可以只查看这个卷组的详细信息,不跟卷组名是查看所有卷组的详细信息。这里我们看到我们创好的vg卷组PE大小为4MiB,这是PE的默认大小,PE是卷组的最小储存单位,我们也可以用-s参数来修改,不过这只能在创建卷组时使用,一旦卷组创建成功是没法再去修改PE大小的

[root@jason ~ 20:18:15]# vgdisplay    (详细查看卷组信息)
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        2
  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                2
  Act PV                2
  VG Size               992.00 MiB  ←两个物理卷合并为卷组
  PE Size               4.00 MiB    ←默认4兆,PE是卷组的最小储存单位,我们也可以用-s参数来修改,不过这只能在创建卷组时使用,一旦卷组创建成功是没法再去修改PE大小的。
  Total PE              248
  Alloc PE / Size       0 / 0   
  Free  PE / Size       248 / 992.00 MiB
  VG UUID               6nRCff-3IY4-fcn8-M7NE-i3ht-o9fr-rmfM9T


[root@jason ~ 20:19:11]# vgs   (简单查看卷组信息)
VG  #PV #LV #SN Attr   VSize   VFree  
vg1   2   0   0 wz--n- 992.00m 992.00m

第四个里程:创建LV

使用lvcreate命令创建一个LV,是从指定VG中创建一个逻辑卷

说明:命令参数解释

-L    ---  参数后跟的是你要设定的逻辑卷大小,这个大小必须是是你设定的PE值的整数倍,如果不是它会给你分一个比你设定的大一点的空间,也就是向上取整数倍空间。弊端就是有可能用不完vg里面的空间
-l    ---  后面跟的就是PE数量,像上个步骤中我们划分的卷组PE值为4MiB,数量为248,也可以使用-l跟数量,那划分的逻辑卷大小就为4*划分的数量。弊端是需要计算,但是不会出现用不完vg的空间的情况。
-n    ---  参数后跟逻辑卷名字,是对创建的逻辑卷命名,最后跟的是卷组名。

[root@jason ~ 20:22:22]# lvcreate -L 200M -n lv1 vg1
Logical volume "lv1" created.

(从vg1组里的900M里只拿出200M使用,创建的lv的名字是lv1)

创建完后我们可以用lvs查看或者lvdisplay查看详细信息

[root@jason ~ 20:32:02]# lvs       (简单查看)
LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv1  vg1 -wi-a----- 200.00m  

[root@jason ~ 20:32:59]# lvdisplay (详细查看)
  --- Logical volume ---
  LV Path                /dev/vg1/lv1
  LV Name                lv1
  VG Name                vg1
  LV UUID                7h6yPO-v0FV-7DbJ-zOf0-yZkd-5EAA-FBHiP4
  LV Write Access        read/write
  LV Creation host, time jason, 2019-12-28 20:32:02 +0800
  LV Status              available
  # open                 0
  LV Size                200.00 MiB
  Current LE             50
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

第五个里程:挂载使用LV

先使用mkfs命令对创建的卷组进行格式化操作,使用ext4格式

mkfs.ext4 /dev/vg1/lv1

(xfs格式是不支持动态缩减的,可以增加,但是,我们可以借助于工具搞定它)↓
https://www.dazhuanlan.com/2019/10/07/5d9a61dc22277/

[root@jason ~ 20:34:34]# mount /dev/vg1/lv1 /mnt
[root@jason ~ 20:35:02]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             99G  2.9G   96G   3% /
devtmpfs             980M     0  980M   0% /dev
tmpfs                991M     0  991M   0% /dev/shm
tmpfs                991M  9.6M  981M   1% /run
tmpfs                991M     0  991M   0% /sys/fs/cgroup
/dev/sda1            197M  105M   93M  54% /boot
tmpfs                199M     0  199M   0% /run/user/0
/dev/mapper/vg1-lv1  190M  1.6M  175M   1% /mnt

说明: 如果想实现开机自动挂载,可以后续编写/etc/rc.local和/etc/fstab文件信息

lv弹性扩容:
[root@jason ~ 20:36:54]# vgs
  VG  #PV #LV #SN Attr   VSize   VFree  
  vg1   2   1   0 wz--n- 992.00m 792.00m

[root@jason ~ 20:37:50]# lvextend -L +100M /dev/vg1/lv1
  Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
  Logical volume vg1/lv1 successfully resized.

[root@jason ~ 20:38:30]# lvscan
  ACTIVE            '/dev/vg1/lv1' [300.00 MiB] inherit

[root@jason ~ 20:38:41]# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv1  vg1 -wi-ao---- 300.00m       
resize2fs -f /dev/oldboy01/lv1

说明: 先使用vgs查看VG剩余空间是否充足,然后用-L或-l参数调整lv空间,然后跟上要扩容的逻辑卷
-L — 后面直接跟容量大小,需要注意+xxx表示增加多少空间,xxx是表示扩容到多少。
-r — 使挂载的文件系统自动识别扩容的空间,不用命令加载识别
需要注意此时文件系统并没有增大,需要执行命令让文件系统识别已经扩容的空间。↓

[root@oldboyedu ~]# df -h
文件系统              容量   已用   可用  已用% 挂载点
/dev/mapper/vg1-lv1  190M  1.6M  175M    1% /disk1           ← 未识别扩容空间
[root@oldboyedu ~]# resize2fs -f /dev/mapper/vg1-lv1         ← 加载识别扩容空间
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /disk1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg1-lv1 is now 307200 blocks long.

[root@oldboyedu ~]# df -h                                                    
文件系统             容量  已用  可用 已用% 挂载点
/dev/mapper/vg1-lv1  287M  2.1M  267M    1% /disk1           ← 已经识别扩容空间

说明:其实有更简单的操作,就是在扩容的同时加上-r参数会自动扩展文件系统大小。↓

[root@jason ~ 20:43:33]# lvextend -L +100M -r /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 300.00 MiB (75 extents) to 400.00 MiB (100 extents).
Logical volume vg1/lv1 successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/mapper/vg1-lv1 is now 409600 blocks long.

[root@jason ~ 20:44:15]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             99G  2.9G   96G   3% /
devtmpfs             980M     0  980M   0% /dev
tmpfs                991M     0  991M   0% /dev/shm
tmpfs                991M  9.6M  981M   1% /run
tmpfs                991M     0  991M   0% /sys/fs/cgroup
/dev/sda1            197M  105M   93M  54% /boot
tmpfs                199M     0  199M   0% /run/user/0
/dev/mapper/vg1-lv1  384M  2.3M  360M   1% /mnt

使用vgextend命令来对逻辑卷组进行扩容:

需要首先添加一块新硬盘sdd用于对卷组进行扩容,添加新的PV。
在虚拟机中这个时候我们通常需要重启,这里我们可以使用:

echo "- - -" > /sys/class/scsi_host/host0/scan
让系统重新扫描SCSI总线来添加设备,因为添加的是SCSI磁盘,所以扫描的是SCSI总线

[root@oldboyedu ~]# lsblk
NAME         MAJ:MIN     RM      SIZE RO  TYPE MOUNTPOINT
sdd                  8:32 0          20G 0    disk

将添加好的硬盘格式化为PV,再将新的PV添加到指定的卷组中:

[root@oldboyedu ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.  ← /dev/sdc已创建完成PV物理卷



[root@oldboyedu ~]# vgextend vg1 /dev/sdd
Volume group "vg1" successfully extended    ← /dev/sdd已扩展完成VG物理卷组
[root@oldboyedu ~]# vgs
VG  #PV #LV #SN Attr   VSize   VFree 
vg1   2   1   0 wz--n- 20.96g 20.57g
lv弹性缩容:

逻辑卷扩容可以在线操作但是缩减必须是离线执行,需要先卸载已挂载的逻辑卷

1.umount 挂载点目录
2.e2fsck -f /dev/vg1/lv1
3.lvreduce -L -4M /dev/vg1/lv1
4.resize2fs -f /dev/vg1/lv1
5.mount 挂载点

扩容逻辑卷是先扩大逻辑卷再扩大文件系统,而缩小逻辑卷就需要反着来,要先缩小文件系统,再去缩小逻辑卷。

[root@oldboyedu ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg1/lv1: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
[root@oldboyedu ~]# resize2fs /dev/vg1/lv1 200M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 204800 blocks long.

说明:缩小文件系统前我们要先对文件系统做个扫描检测,如果我们直接使用resize2fs系统会提示
先对文件系统进行检测,这是为了保护缩减文件系统时不对数据损害
磁盘文件系统检测完毕之后,对相应逻辑卷大小进行缩容处理:

[root@rihongedu ~]# lvreduce -L 200M /dev/vg1/lv1
# 警告: 将活动逻辑卷减少到200.00 mib
WARNING: Reducing active logical volume to 200.00 MiB. 
# 这可能会破坏您的数据(文件系统等)。
THIS MAY DESTROY YOUR DATA (filesystem etc.)  
# 真的想降低vg1/lv1吗?[是/否]:是
Do you really want to reduce vg1/lv1? [y/n]: y  
# 逻辑卷vg1/lv1的大小从400.00 mib(100区)更改为200.00 mib(50区)。
Size of logical volume vg1/lv1 changed from 400.00 MiB (100 extents) to 200.00 MiB (50 extents).
# 逻辑卷vg1/lv1已成功调整大小。
Logical volume vg1/lv1 successfully resized.
 
[root@oldboyedu ~]# lvs
LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv1  vg1 -wi-a----- 200.00m

说明:文件系统大小和逻辑卷大小一定要保持一致才行。
如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。
看到逻辑卷已经缩小了,接着我们再来挂载看看文件系统大小

[root@oldboyedu ~]# mount /dev/vg1/lv1 /disk1/
[root@oldboyedu ~]# df -h
Filesystem            Size   Used  Avail  Use% Mounted on
/dev/mapper/vg1-lv1  190M  1.6M  175M   1%  /disk1

逻辑卷组缩小过程说明,可以利用vgreduce去缩小VG卷组的大小

[root@oldboyedu ~]# vgreduce vg1 /dev/sdc
Removed “/dev/sdc”Volume group "vg1"     ß /dev/sdc已缩减完成VG物理卷组
[root@oldboyedu ~]# vgs
VG  #PV #LV #SN Attr   VSize   VFree 
vg1   2   1   0 wz--n- 992.00m 792.00m

说明:缩小VG卷组就是把一个PV从卷组中移除,但要先肯定PV中没有数据,不然就会造成数据的丢失
接着我们可以使用pvremove命令移除PV,这样就让分区又重新变成了普通分区。

[root@oldboyedu ~]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.  ß /dev/sdc已删除完成PV物理卷

 
[root@oldboyedu ~]# pvs
PV        VG Fmt  Attr PSize   PFree 
/dev/sdb1     lvm2 ---  500.00m 500.00m
/dev/sdb2     lvm2 ---  500.00m 500.00m
LVM的工作原理进行个总结:
  1. 物理磁盘被格式化为PV,空间被划分为一个个的PE
  2. 不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
  3. LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
  4. LV现在就直接可以格式化后挂载使用了
  5. LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,如果操作正确其过程不会丢失原始数据
    PS:我们实际生产操作中很少用到逻辑卷的缩减,因为缩减很容易就会造成数据损坏,这是得不偿失的,所以不推荐对逻辑卷进行缩减。

07.磁盘创建文件系统

文件系统概念:存储数据不同机制
常见文件系统:ext3/ext4(存储效率) xfs(存储效率/识别大硬盘能力)
mkfs.ext3 格式化很慢

ext3
块尺寸 最大文件尺寸 最大文件系统尺寸

1KiB  16GiB   2TiB
2KiB  256GiB  8TiB
4KiB  2TiB    16TiB
8KiB  16TiB   32TiB

ext4
Extents
ext4引进了Extent档案储存方式,以取代ext2/3使用的block mapping方式。Extent指的是一连串的连续实体block,这种方式可以增加大型档案的效率并减少分裂档案。ext4支援的单一Extent, 在单一block为4KB的系统中最高可达128MB[1]。单一inode中可储存4笔Extent;超过四笔的Extent会以Htree方式被索 引。
最大文件尺寸 16 TiB (for 4k block filesystem)
最大卷容量 1 EiB

xfs
最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。

创建文件系统:mkfs – make file system 格式化分区,不要直接格式化整块磁盘
命令语法结构:

mkfs.文件系统类型(ext4/xfs) /dev/分区文件sdb2  
mkfs -t -f  文件系统类型(ext4/xfs)/dev/sdb2

08.磁盘管理挂载操作:

挂载概念:给一个存储设备(文件)开了个门
挂载操作:

mount   (mount 参数  设备文件信息  挂载点目录)  
umount (umount   /挂载点目录)处在目录中或者目录中有数据被调用无法卸载
umount -lf  挂载点目录   强制卸载     
-l lazy     (懒惰)不用从挂载点目录切换出去
-f force     强制进行卸载
如何实现开机自动挂载磁盘分区设备:

方法一:vim /etc/fstab

blkid查看UUID

UUID=a171c16c-1aa8-4578-a766-38e36e647d38   /mnt                  xfs    defaults        0 0

方法二:vim /etc/rc.local

mount  /dev/sdb1  /mnt

09.磁盘应用管理

问题一:磁盘问题系统出现问题(fstab提示只读)

fsck ext 修复ext系统的

步骤一:利用命令检查或修复文件系统,最好是修复未挂载的

fsck -a  挂载点/分区设备文件
xfs_repair   

步骤二:利用挂载命令修复

mount -o  remount rw    /        (或者相应出问题的挂载点)

修复后reboot重启

问题二:磁盘空间不足情况

inode空间不足了:
解决:找出大量小文件

find ./  -type f  -size -10c|xargs  rm

block空间不足:

dd  ---模拟创建一个大文件/创建交换分区
dd if=/dev/zero of=/tmp/1g  bs=100M count=10  


[root@jason tmp 10:41:35]# dd if=/dev/zero of=/tmp/123.txt  bs=100M count=10  
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 6.9012 s, 152 MB/s
[root@jason tmp 10:42:16]# dd if=/dev/zero of=/tmp/123.txt  bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 3.38328 s, 317 MB/s

解决:找出大文件数据

find / -type f  -size  
du -sh /* |sort -h

文件数据是否彻底删除:
1)会否有硬链接存在 i_link=0
PS:硬链接不能在不同的分区创建

find /  -type f  inum  xxx  |xargs rm -f

2)是否有程序进程调用 i_conut=0
日志文件 --> 服务进程调用

> acess.log   重定向清空

(实验一下删除源文件后du是否还能查到为硬链接的大文件)
[root@jason tmp 21:38:46]# ll -h
total 2.1G
-rw-r--r-- 2 root   root   1.0G Dec 27 10:42 123.txt
-rw-r--r-- 2 root   root   1.0G Dec 27 10:42 123.txt_link

[root@jason tmp 21:40:23]# du -sh ./*|sort -rh
1.0G	./123.txt
656K	./oldboy02.txt

[root@jason tmp 21:40:27]# rm 123.txt
[root@jason tmp 21:40:45]# du -sh ./*|sort -rh
1.0G	./123.txt_link
656K	./oldboy02.txt
问题三:如何调整swap空间大小
[root@jason ~]# free -h
                     total        used        free      shared  buff/cache   available
Mem:           1.9G         94M        1.7G        9.5M        130M        1.7G
Swap:          1.0G          0B         1.0G

内存空间不足 --> 使用swap不足 --> 系统服务自动停止(内存溢出)java程序软件

方法一:

第一个历程: 占用磁盘空间作为扩展交换分区

dd if=/dev/zero of=/swap/1G_swap bs=100M count=10
          1        2               3         4
1)相当于从黑洞中取出数据内容
2)将黑洞中取出数据存放到哪
3)每次取出数据数量
4)总的取出数据次数

第二个历程: 将创建数据变为swap文件数据

mkswap  /swap/1G_swap
file /swap/1G_swap

第三个历程: 加载文件给交换分区扩容

swapon /swap/1G_swap
swapoff /swap/1G_swap
swapon -s 查看
如何自动重启系统识别扩容交换分区容量

https://blog.csdn.net/lzw5210/article/details/60140684
在系统重启后,swap文件的大小又会变回原大小,我们可以在/etc/fstab里增加下面的配置,使其重启后,我们刚刚的配置仍然有效。

/swap/1G_swap           swap                    swap    defaults        0 0

如果想卸载掉上面的分区,可以通过swapoff完成

[root@gataway ~]# swapoff /swap/1G_swap

========================================

补充:如何分区时设置一个swap分区

第一个里程:指定划分磁盘

fdisk /dev/sda

第二个里程:创建分区,并设置为swap分区类型

t  --> 82(l查看)  --> 设置完成
方法二:

通过fdisk增加swap分区
该方法和方法一主要操作步骤大同小异。不过该方法要求硬件目前有未分配的空间。

1、我们先通过fdisk新增分区

fdisk  /dev/sdaCommand(m for help): n
通过n新建分区,选择为主分区,分区ID为82,即swap分区。保存退出。接着对新建的分区进行格式化并挂载
mkswap /dev/sda4
swapon /dev/swap
完成后,参照方法一里的查看方法进行查看确认。新增完成后,在/etc/fstab里新增如下配置
/dev/sda4             swap                    swap    defaults        00

磁盘使用流程:
1)完成磁盘阵列配置
2)完成磁盘分区操作
3)系统磁盘弹性管理 *
4)完成磁盘格式化,创建文件系统
5)磁盘挂载操作
6)磁盘应用管理

10.操作系统启动流程:

centos6
  1. 进行服务器开机bios自检 (检查硬件 加载识别bios)
  2. 识别MBR引导信息 (引导系统启动)
  3. 加载grub菜单选择内核 (选择内核信息)
  4. 加载系统内核信息 (控制管理硬件)
  5. 启动第一个服务进程 (init服务进程,可以让所有服务串行启动)
  6. 加载系统文件运行级别文件 (/etc/inittab)
    加载系统文件磁盘挂载文件 (/etc/fstab) ???
  7. 加载系统初始化脚本文件 (/etc/rc.d/rc.sysinit)
  8. 加载不同运行级别目录脚本 (实现服务开机自启)
  9. 加载启动mingetty进程 (显示登录系统界面)

centos启动知识扩展介绍

进入到/etc/rc3.d目录中:
S编号信息: start 指定服务启动顺序
K编号信息: kill 指定服务关闭顺序

centos6开机自动启动服务:
所有服务进行串行启动/关闭 启动效率比centos7慢

centos6检查服务是否开启
/etc/init.d/crond status
crond (pid 1679) is running…

centos6检查服务开机是否自启
chkconfig --list|grep crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

centos6调整服务开机启动设置
chkconfig crond off 关闭
chkconfig crond on 关闭

centos6手动启动服务程序
/etc/init.d/crond start 启动
/etc/init.d/crond stop 关闭

centos7
  1. 进行开机自检 ----------- (检查硬件 加载识别bios)
  2. 识别MBR引导信息 ---- (引导系统启动)
  3. 加载grub菜单 ----------- (选择内核信息)
  4. 加载内核信息 ----------- (控制管理硬件)
  5. 启动第一个服务进程 – (systemd服务进程,可以让所有服务并行启动)
  6. 加载系统运行模式文件 (/etc/systemd/system/default.target)
    加载系统文件磁盘挂载文件 ----- (/etc/fstab)
  7. 加载系统初始化脚本文件 -------- (/usr/lib/systemd/system/sysinit.target)
  8. 加载系统开机运行目标文件
    加载不同运行级别目录单元文件 (/usr/lib/systemd/system/multi-user.target.wants/xxx —> /usr/lib/systemd/system
    PS:可以确保centos7中服务可以开机运行
  9. 加载启动mingetty进程 (显示登录系统界面)

如何编写自动启动服务脚本:shell

CentOS7引导顺序

1.  UEFi或BIOS初始化,运行POST开机自检
2.  选择启动设备
3.  引导装载程序, centos7是grub2
4.  读取装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
5.  加载initramfs驱动模块
6.  加载内核选项
7.  内核初始化,centos7使用systemd代替init
8.  执行initrd.target所有单元,包括挂载/etc/fstab
9.  从initramfs根文件系统切换到磁盘根目录
10.systemd执行默认target配置,配置文件/etc/systemd/system/default.target
11.systemd执行sysinit.target初始化系统及basic.target准备操作系统
12.systemd启动multi-user.target下的本机与服务器服务
13.systemd执行multi-user.target下的/etc/rc.d/rc.local
14.Systemd执行multi-user.target下的getty.target及登录服务
systemd执行graphical需要的服务

进入/etc/systemd/system/multi-user.target.wants/目录中
systemctl enable 服务 ---- 服务开机自启
systemctl disable 服务 ---- 服务禁止自启

所有服务启动或停止文件
/usr/lib/systemd/system/

centos7开机自动启动服务:
所有服务进行并行启动/关闭 启动效率比centos6快
/usr/lib/systemd/system/crond.service == centos6启动服务脚本文件
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files

总结系统启动过程:
开机自检 - 加载MBR - 识别grub菜单 - 启动第一个系统进程
识别系统运行模式/级别 – 加载初始化文件 – 实现系统服务开机自启 – 显示登陆界面

磁盘管理总结
1)磁盘管理分区方法
磁盘0磁头0磁道1扇区介绍:MBR + DPT
系统进行分区操作:fdisk parted
2)磁盘逻辑结构说明:
磁盘阵列概念:RAID
磁盘弹性管理:LVM

问题:
01.挂载defaults参数是什么意思?并进行详细解释说明

[root@ob2 data]# cat /etc/fstab 

UUID=da4d312a-dee1-4433-98c0-59dbbcf8b040 /                       ext4    defaults        1 1
UUID=e4ab7a0c-500f-4305-bcd2-a77be0ce5326 /boot                   ext4    defaults        1 2
UUID=ecac3aab-5a27-4cdb-9c52-6f5deb254d26 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

第一列到六列是设备或分区 挂载点 文件类型 default是挂载类型 dump 系统故障dump内存信息到硬盘 fsck 检查磁盘坏道等
defaults表示挂载类型,rw,suid.dev,exec,auto,nouser,async.大多是默认值.async是异步,写入内存.效率高,安全稍低.sync写入磁盘效率低一些.
rw读写
suid可以有suid权限
exec可执行文件
Async/sync 设置是否为同步方式运行,默认为async
auto/noauto 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro 是否以以只读或者读写模式挂载
exec/noexec 限制此文件系统内是否能够进行"执行"的操作
user/nouser 是否允许用户使用mount命令挂载
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式
Grpquota 启动文件系统对群组磁盘配额模式的支持
Defaults 同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置

02.如何自动重启系统识别扩容交换分区容量
在系统重启后,swap文件的大小又会变回原大小,我们可以在/etc/fstab里增加下面的配置,使其重启后,我们刚刚的配置仍然有效。
/tmp/mem.swap swap swap defaults 00
如果想卸载掉上面的分区,可以通过swapoff完成
[root@gataway ~]# swapoff /tmp/mem.swap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!