Disk Management (1)

Hard disk introduction

Hard disk partition method

MBR <2TB fdisk 4 primary partitions or 3 primary partitions + 1 extended partition (N logical partitions)

The abbreviation of MBR (Master Boot Record) consists of three parts, namely:

  1. Bootloader (Primary Bootloader) =446 bytesThe first sector of the hard disk = 512 bytes
    • The main program that boots the operating system
  2. DPT partition table (Disk Partition Table) =64 bytes
    • The partition table stores the partition information of the hard disk, and the operating system can obtain the partition information of the hard disk by reading the information in the partition table.
    • Each partition requires16 bytes in size, save the file system identification, start and stop cylinder number, head number, sector number, start sector position (4 bytes), total sector number of the partition (4 bytes), etc.
    • The partition information stored in the partition table isPrimary Partition and Extended Partitionpartition information,Extended partitions cannot be used directly, need to divide one or more in the extended partitionlogical partitionavailable after
    • Partition information for logical partitionsSave asin extended partitionInstead of saving in the MBR partition table, in this way, you can break through the limitation that the MBR partition table can only save 4 partitions
  3. Hard disk valid flag (check digit) =2 bytes

GPT >2TB gdisk(parted) 128 primary partitions

Note: Converting from MBR to GPT, or from GPT to MBR will result in total data loss !

Further reading: http://www.eassos.cn/jiao-cheng/ying-pan/mbr-vs-gpt.php

Basic partition management

Disk Partition Ideas

  • enter the partition tablenew buildpartition fdisk /dev/sdb
  • update partition table <refresh partition table>
  • Format partition --> file system mkfs.ext4 /dev/sdb1
  • Mount using ——> mount [automatically mount at boot | autofs automatically mount]

==fdisk partition

use fdisk partition

# lsblk
# df -h  查看正在挂载的设备情况
# fdisk -l		查看当前系统的所有设备分区情况
# fdisk  /dev/sdb

硬盘容量 = 柱面数 × 盘面数(磁头数) × 扇区数 × 扇区大小(一般为512字节)
Disk /dev/sda: 26.8 GB, 26843545600 bytes   磁盘空间
 255 heads, 63 sectors/track, 3263 cylinders
 255磁头    63个扇区 每 磁道   3263个圆柱体
Units = cylinders of 16065 * 512 = 8225280 bytes       单元
Sector size (logical/physical): 512 bytes / 512 bytes
扇区大小(逻辑/物理)  都是512字节。
I/O size (minimum/optimal): 512 bytes / 512 bytes
I/O 大小(最小/最大) 都是512字节。
Disk identifier: 0x00030124   设备识别码

 启动设备加*           起始         结束      块           id     系统
 Device Boot      Start         End      Blocks     Id  System
/dev/sda1   *           1        2497    20051968   83  Linux
/dev/sda2            2497        2611      916481    5  Extended	扩展分区
/dev/sda3            2612        3263     5237190   83  Linux
/dev/sda5            2497        2611      916480   82  Linux swap / Solaris

Command(m for help): m      							输出帮助信息
Commandaction
   a  toggle a bootable flag  						设置启动分区
   b  edit bsd disklabel      						编辑分区标签
   c  toggle the dos compatibility flag
   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  	创建一个新的空白DOS分区表
   p  print the partition table               	打印分区表
   q  quit without saving changes           		退出不保存设置
   s   createa new empty Sun disklabel				创建一个新的空的SUN标示
   t   changea partition's system id          	改变分区的类型
   u   changedisplay/entry units            		改变显示的单位
   v   verifythe partition table              	检查验证分区表
   w  write table to disk and exit           	保存分区表

Summarize:

  1. It can only be divided into 4 main partitions at most, and the main partition numbers are 1-4
  2. The sum of logical partition sizes cannot exceed the extended partition size, and logical partition partition numbers start from 5
  3. If the extended partition is deleted, the following logical volume partitions are also deleted
  4. Partition number (1-4) of the extended partition

Case 1:

To add a hard disk, you need to divide it into two partitions, format them into ext4 and vfat format file systems, and finally need to use 2G space.

思路:
1. 增加一块硬盘
2. 使用fdisk命令进行分区
3. 格式化指定分区
4. 创建一个空的目录作为挂载点
5. 挂载使用

步骤:
1. 增加硬盘
增加完硬盘记得重启系统
# lsblk	查看硬盘是否添加成功
[root@linux ~]# fdisk -l /dev/sdb 

Disk /dev/sdb: 32.2 GB, 32212254720 bytes, 62914560 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

2. 使用fdisk命令分区
[root@web ~]# fdisk /dev/sdb
Command (m for help): p			打印分区表信息

[root@linux ~]# 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 0x7d48c333.

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

Command (m for help): p

Disk /dev/sdb: 32.2 GB, 32212254720 bytes, 62914560 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: 0x7d48c333

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2099200-62914559, default 2099200): 
Using default value 2099200
Last sector, +sectors or +size{
    
    K,M,G} (2099200-62914559, default 62914559): +1G
Partition 2 of type Linux and of size 1 GiB is set

Command (m for help): p

Disk /dev/sdb: 32.2 GB, 32212254720 bytes, 62914560 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: 0x7d48c333

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

3. 再次查看分区情况
[root@linux ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0   78G  0 part /
└─sda2   8:2    0    2G  0 part [SWAP]
sdb      8:16   0   30G  0 disk 
├─sdb1   8:17   0    1G  0 part 
└─sdb2   8:18   0    1G  0 part 
sr0     11:0    1  4.4G  0 rom  

4. 格式化分区
[root@linux ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux

[root@linux ~]# yum -y install dosfstools  需要mkfs.vfat命令,安装软件

[root@linux ~]#  mkfs.vfat /dev/sdb2
mkfs.fat 3.0.20 (12 Jun 2013)

5. 创建新的挂载点
[root@linux ~]# mkdir /u01
[root@linux ~]# mkdir /u02

6. 挂载使用
[root@linux ~]# mount /dev/sdb1 /u01
[root@linux ~]# mount /dev/sdb2 /u02

Summarize:

  1. The size of the extended partition determines alllogical partitionthe size of
  1. After deleting the extended partition, the following logical partitions are all deleted
  2. Needed after partitioningRefresh the partition table manually, if the refresh is unsuccessful requiresrestart the operating system
  1. When creating partitions, pay attention to the continuity of partition numbers as much as possible

mount partition device

Mount manually:

mount   [options]     需要挂载的设备     挂载点
特点:系统重启后需要重新挂载;手动卸载后需要手动挂载

-o:挂载选项	ro,sync,rw,remount
-t:文件系统类型
mount -t nfs=mount.nfs
mount -t cifs=mount.cifs

10.1.1.2  /share   [smb]

mount.cifs -o user=user01,password=123 //10.1.1.2/smb /u01
mount.nfs 10.1.1.2:/share /u02

[root@MissHou ~]# mount -o remount,ro /u02		//可以是挂载点也可以是设备
remount:重新挂载一个正在挂载的设备

# mount -o remount,ro /dev/sdb1		
# mount -o remount,ro /u01
注意:后面可以根挂载点也可以跟设备本身


挂载设备:真实设备、设备UUID,设备的卷标
/dev/sdb
/dev/sdb1		
[root@linux ~]# blkid /dev/sdb2          //查看设备的UUID和文件系统类型
/dev/sdb2: UUID="6483-0B59" TYPE="vfat"" 
[root@linux ~]# blkid /dev/sdb1 
/dev/sdb1: UUID="3256e440-f8ff-41e7-ba2c-3ad161ba4d1a" TYPE="ext4"
[root@linux ~]# e2label /dev/sdb1 DISK1

说明:e2label只能够对ext2~ext4的文件系统设置卷标

[root@linux ~]# e2label /dev/sdb2 disk2
e2label: Bad magic number in super-block while trying to open /dev/sdb2
Couldn't find valid filesystem superblock.
[root@linux ~]#  blkid /dev/sdb2
/dev/sdb2: UUID="6483-0B59" TYPE="vfat" 


卸载设备:umount
[root@linux ~]#  umount /u01
[root@linux ~]# umount /dev/sdb2

Automatically mount at boot:

Operating system startup process:

  1. Hardware initialization hard disk, memory,. . . HD
  2. System initialization /sbin/init—>xxxxxx/etc/fstab
UUID="6483-0B59" /u01   auto    defaults    0 0       
UUID="3256e440-f8ff-41e7-ba2c-3ad161ba4d1a" /u02    ext4    ro    0 0
# mount -a
特点:系统重启后自动挂载;手动卸载后重启会自动挂载或者使用mount -a自动挂载

/etc/fstab文件:
格式:
要挂载的资源路径	挂载点	文件系统类型	挂载选项	dump备份支持  文件系统检测
UUID=289370eb-9459-42a8-8cee-7006507f1477   /      ext4    defaults        1 1
1段:挂载的设备(磁盘设备的文件名或设备的卷标或者是设备的UUID)
2段:挂载点(建议用一个空目录),建议不要将多个设备挂载到同一个挂载点上
3段:文件系统类型(ext3、ext4、vfat、ntfs(安装软件包)、swap等等)
4段:挂载选项
async/sync  异步/同步:
auto/noauto     自动/非自动:
rw/ro   读写/只读:
exec/noexec     可被执行/不可被执行:
remount     重新挂在一个已经挂载的文件系统,常用于修改挂载参数
user/nouser     允许/不允许其他普通用户挂载:
suid/nosuid     具有/不具有suid权限:该文件系统是否允许SUID的存在。
usrquota    这个是在启动文件系统的时候,让其支持磁盘配额,这个是针对用户的。
grpquota    支持用户组的磁盘配额。
....
defaults 同时具有rw, dev, exec, acl, async,nouser等参数。

mount -a  重新读取/etc/fstab文件内容

man mount 可以找到详细信息

5段:是否支持dump备份。//dump是一个用来备份的命令,0代表不要做dump备份,1代表要每天进行dump的动作,2也代表其他不定日期的dump备份。通常这个数值不是0就是1。数字越小优先级越高。

6段:是否用 fsck 检验扇区。//开机的过程中,系统默认会用fsck检验文件系统是否完整。0是不要检验,1表示最先检验(一般只有根目录会设定为1),2也是要检验,只是1是最先,2是其次才进行检验。

# fsck -f /dev/sdb2		强制检验/dev/sdb2上文件系统

说明:
要挂载的资源路径可以是文件系统的UUID,设备路径,文件系统的标签 ,光盘镜像文件(iso),亦或是来自网络的共享资源等

建议:
/etc/rc.local  操作系统启动后读取的最后一个文件

vim /etc/rc.local
...
/bin/mount -o noexec,ro /dev/sdb1 /u01

Logical volume management

Logical volume:

Logical Volume (LVM): It is the Linux environment fordisk partition managementA mechanism that builds on **physical storage deviceAn abstraction layer above, the advantage lies in flexible management.
Features:
1.
Dynamic online expansion (emphasis)**
2. Offline cropping
3. Data striping
4. Data mirroring

Basic concepts of logical volumes

  • Physical Volume (Physical Volume, PV)

The physical volume is the underlyingreally provide capacity, the device for storing data, it can be the entire hard disk, partitions on the hard disk, etc.

  • Volume Group (Volume Group, VG)

Volume groups are built on top of physical volumes and consist ofone or more physical volumescomposition. That is, physical volumes are integrated to provide capacity allocation.
An LVM system can have only one volume group, or it can contain multiple volume groups.

  • Logical Volume (LV)

A logical volume is built on top of a volume group, which is a piece of space "cut out" from the volume group. it isLogical design used by end usersprepare. After the logical volume is created, itsThe size can be stretched

  • Physical area PE (physical extent)

Each physical volume is divided into basic units called PE (Physical Extents), and PE with a unique number is the smallest unit that can be addressed by LVM. The size of the PE can be specified, and the default is 4 MB. Once the PE size is determined, it cannot be changed, and the PE sizes of all physical volumes in the same volume group are consistent.
4MB=4096kb=4096kb/4kb=1024 blocks

illustrate:

  1. The minimum unit of hard disk read data is 1 sector, 512 bytes
  2. The minimum unit of operation read data is 1 data block = 8*512 bytes = 4096 bytes = 4KB
  3. The smallest unit of lvm addressing is 1 PE=4MB
  • Logical area LE (logical extent)

Logical volumes are also divided into addressable basic units called LE (Logical Extents). In the same volume group, the size of LE is the same as that of PE, and there is a one-to-one correspondence.

Real physical device --> logical (command creation) --> physical volume (pv) --> volume group (vg) --> logical volume (lv) --> logical volume format --> mount use

Logical volume LVM application

logical volume creation

Create a 2.5G == logical volume

思路:
1. 物理的设备
2. 将物理设备做成物理卷
3. 创建卷组并将物理卷加入其中
4. 创建逻辑卷
5. 格式化逻辑卷
6. 挂载使用

步骤:
1. 物理设备
[root@linux u01]# fdisk -l /dev/sdb

[root@linux u01]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has b
een opened read-only.[root@linux u01]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0   78G  0 part /
└─sda2   8:2    0    2G  0 part [SWAP]
sdb      8:16   0   30G  0 disk 
├─sdb1   8:17   0    1G  0 part /u02
├─sdb2   8:18   0    1G  0 part /u01
├─sdb3   8:19   0    5G  0 part 
├─sdb4   8:20   0    1K  0 part 
├─sdb5   8:21   0    2G  0 part 
├─sdb6   8:22   0    2G  0 part 
└─sdb7   8:23   0 1021M  0 part 
sr0     11:0    1  4.4G  0 rom  


更新分区表,并查看系统是否接收新的分区表
[root@linux u01]# partprobe

2. 创建物理卷
[root@linux u01]#  pvcreate /dev/sdb3 /dev/sdb5
  Physical volume "/dev/sdb3" successfully created.
  Physical volume "/dev/sdb5" successfully created.
查看物理卷:
[root@linux u01]# pvs
  PV         VG Fmt  Attr PSize PFree
  /dev/sdb3     lvm2 ---  5.00g 5.00g
  /dev/sdb5     lvm2 ---  2.00g 2.00g
  
[root@linux u01]#  pvdisplay /dev/sdb3 /dev/sdb5      详细查看
  --- Physical volume ---
  PV Name               /dev/sdb3
  VG Name               vg01
  PV Size               5.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              1279
  Free PE               1279
  Allocated PE          0
  PV UUID               lTvCmO-8732-UP3N-lKFb-FTNY-PsCD-HAiMyd
   
  --- Physical volume ---
  PV Name               /dev/sdb5
  VG Name               vg01
  PV Size               2.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              511
  Free PE               511
  Allocated PE          0
  PV UUID               ErlvER-8euJ-Oc6Z-4gR0-PDVm-UyIY-86IGMw

3. 创建卷组并将物理卷加入其中
[root@linux u01]# vgcreate vg01 /dev/sdb3 /dev/sdb5
  Volume group "vg01" successfully created
查看卷组信息:
[root@linux u01]# vgs vg01         简单查看
  VG   #PV #LV #SN Attr   VSize VFree     
  vg01   2   0   0 wz--n- 6.99g 6.99g

[root@linux u01]# vgdisplay vg01        详细查看
 
4. 创建逻辑卷
[root@linux u01]# lvcreate -n lv01 -L 2.5G vg01
  Logical volume "lv01" created.
  
在操作系统层面映射两个地方:
[root@linux u01]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx 1 root root 7 Feb  8 02:21 /dev/mapper/vg01-lv01 -> ../dm-0
[root@linux u01]# ll /dev/vg01/lv01 
lrwxrwxrwx 1 root root 7 Feb  8 02:21 /dev/vg01/lv01 -> ../dm-0

查看逻辑卷的信息:
[root@linux u01]# lvdisplay /dev/vg01/lv01 
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                75Zjdt-PbTm-ncMv-mKTg-4Pan-fksg-y2A0H4
  LV Write Access        read/write
  LV Creation host, time linux, 2023-02-08 02:21:18 -0500
  LV Status              available
  # open                 0
  LV Size                2.50 GiB
  Current LE             640
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

-n:指定逻辑卷的名字
-L:指定逻辑卷的大小
-l:指定逻辑卷的大小
举例:
-l 100			100个PE,每个PE大小默认4M,故逻辑卷大小为400M
-l 50%free		卷组剩余空间的50%
[root@server ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree  
  vg01   1   1   0 wz--n- 2.00g 516.00m

Create a logical volume lv02 with a size of 200M; each PE is 4M, and -l50 specifies 50 PEs with a size of 200M

[root@linux u01]# lvcreate -n lv02 -l50 vg01
  Logical volume "lv02" created.
[root@linux u01]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree 
  vg01   2   2   0 wz--n- 6.99g <4.30g
[root@linux u01]# lvs /dev/vg01/lv02
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv02 vg01 -wi-a----- 200.00m           

Create a logical volume lv03 whose size is 50% of the space of the remaining volume group vg01

[root@linux u01]# lvcreate -n lv03 -l50%free vg01
  Logical volume "lv03" created.
[root@linux u01]# lvs /dev/vg01/lv03 
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv03 vg01 -wi-a----- <2.15g                                                    
[root@linux u01]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree 
  vg01   2   3   0 wz--n- 6.99g <2.15g

# format logical volume

[root@linux ~]# mkfs.ext4 /dev/vg01/lv01

mount use

1) Create an empty mount point
2) Mount using

[root@linux ~]#  mount /dev/vg01/lv01 /u01

Logical volume dynamic expansion

Dynamically expand the /u01 directory to 6G

思路:
1. 查看/u01目录所对应的逻辑卷是哪一个  /dev/mapper/vg01-lv01
2. 查看当前逻辑卷所在的卷组vg01剩余空间是否足够
3. 如果vg01空间不够,得先扩容卷组,再扩容逻辑卷
4. 如果vg01空间足够,直接扩容逻辑卷

步骤:
1. 查看/u01目录属于哪个卷组
[root@linux ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               7.8G     0  7.8G   0% /dev
tmpfs                  7.8G     0  7.8G   0% /dev/shm
tmpfs                  7.8G   12M  7.8G   1% /run
tmpfs                  7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1               78G  2.1G   76G   3% /
tmpfs                  1.6G     0  1.6G   0% /run/user/0
/dev/mapper/vg01-lv01  2.4G  7.5M  2.3G   1% /u01
/dev/sdb1              976M  2.6M  907M   1% /u02

[root@linux ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-ao----   2.50g                                                    
  lv02 vg01 -wi-a----- 200.00m                                                    
  lv03 vg01 -wi-a-----  <2.15g    

2. 卷组的剩余空间
root@linux ~]# vgs
  VG   #PV #LV #SN Attr   VSize VFree 
  vg01   2   3   0 wz--n- 6.99g <2.15g
结果:当前卷组空间不足我扩容
  
3. 扩容逻辑卷所在的卷组
1)首先得有物理设备 /dev/sdb6
2) 将物理设备做成物理卷
[root@linux ~]# pvcreate /dev/sdb6
  Physical volume "/dev/sdb6" successfully created.
  
[root@linux ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree  
  /dev/sdb3  vg01 lvm2 a--  <5.00g 156.00m
  /dev/sdb5  vg01 lvm2 a--  <2.00g  <2.00g
  /dev/sdb6       lvm2 ---   2.00g   2.00g
3)将物理卷加入到卷组中(卷组扩容)
[root@linux ~]# vgdisplay
[root@linux ~]# vgextend vg01 /dev/sdb6
  Volume group "vg01" successfully extended

[root@linux ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  vg01   3   3   0 wz--n- <8.99g 4.14g

注意:
正常情况下,应该先将/dev/sdb6物理设备创建为物理卷再加入到卷组中;如果直接加入卷组,系统会自动帮你将其做成物理卷。

4. 扩容逻辑卷
[root@linux ~]# lvextend -L 6G /dev/vg01/lv01     -L 6G最终的大小
  Size of logical volume vg01/lv01 changed from 2.50 GiB (640 extents) to 6.00 GiB
 (1536 extents).  Logical volume vg01/lv01 successfully resized.
 or
 [root@linux ~]# lvextend -L +2.5G /dev/vg01/lv01 	 -L +2.5G 扩容2.5G

5. 查看结果
[root@linux ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-ao----   6.00g                                                    
  lv02 vg01 -wi-a----- 200.00m                                                    
  lv03 vg01 -wi-a-----  <2.15g   
 
[root@linux ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               7.8G     0  7.8G   0% /dev
tmpfs                  7.8G     0  7.8G   0% /dev/shm
tmpfs                  7.8G   12M  7.8G   1% /run
tmpfs                  7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1               78G  2.1G   76G   3% /
tmpfs                  1.6G     0  1.6G   0% /run/user/0
/dev/mapper/vg01-lv01  2.4G  7.5M  2.3G   1% /u01   实际并没有改变
/dev/sdb1              976M  2.6M  907M   1% /u02

 6. 同步文件系统
[root@linux ~]#  resize2fs /dev/vg01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv01 is mounted on /u01; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg01/lv01 is now 1572864 blocks long.

7. 再次查看验证
[root@linux ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               7.8G     0  7.8G   0% /dev
tmpfs                  7.8G     0  7.8G   0% /dev/shm
tmpfs                  7.8G   12M  7.8G   1% /run
tmpfs                  7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1               78G  2.1G   76G   3% /
tmpfs                  1.6G     0  1.6G   0% /run/user/0
/dev/mapper/vg01-lv01  5.9G   10M  5.6G   1% /u01
/dev/sdb1              976M  2.6M  907M   1% /u02

Trim logical volumes offline (understand)

[root@server ~]# umount /data/
[root@server ~]# e2fsck -f /dev/vg01/lv01		检验文件系统
[root@server ~]# resize2fs /dev/vg01/lv01 2G	裁剪文件系统到2G
[root@server ~]# lvreduce /dev/vg01/lv01 -L 2G	裁剪逻辑卷
[root@server ~]# mount /dev/vg01/lv01 /data		挂载使用

Logical volume related commands

创建物理卷:pvcreate
pvcreate /dev/sdb1
创建卷组:vgcreate
vgcreate vg01 /de/sdb1
创建逻辑卷:lvcreate		
lvcreate -n lv01 -L 1G vg01
lvcreate -n lv01 -l 100 vg01
lvcreate -n lv01 -l 100%free vg01

删除逻辑卷:lvremove
lvremove /dev/vg01/lv01
删除卷组:vgremove
vgremove vg01
说明:卷组里的物理卷没有被使用才可以直接删除卷组
删除物理卷:pvremove 
pvremove /dev/sdb1

扩容卷组:vgextend
vgextend vg01 /dev/sdb2
扩容逻辑卷:lvextend
lvextend /dev/vg01/lv01 -L +2G
同步文件系统:
resize2fs /dev/vg01/lv01

裁剪卷组:vgreduce
vgreduce vg01 /dev/sdb2
裁剪逻辑卷:lvreduce

Practical exercise

思路:
0. 准备好物理设备,并创建一个逻辑卷,大小根据mysql数据库的实际大小再大一些,挂载到系统中
1. 最好在系统维护时间操作(23:00-8:00)
2. 先停止前端应用 LAMP apache
3. 停止mysql数据库(建议备份mysql数据库)
4. 迁移mysql数据文件

步骤:
1. 添加一块物理硬盘[是否需要重启开服务器是否支持热插拔]
sdb                            8:16   0   10G  0 disk 
├─sdb1                         8:17   0    2G  0 part 
├─sdb2                         8:18   0    2G  0 part 
├─sdb3                         8:19   0    1K  0 part 
├─sdb5                         8:21   0    2G  0 part 
├─sdb6                         8:22   0    2G  0 part 
└─sdb7                         8:23   0    2G  0 part
2. 创建大小为8G的逻辑卷
1)创建物理卷
[root@server ~]# pvcreate /dev/sdb[12567]
2)创建卷组vg_mysql
[root@server ~]# vgcreate vg_mysql /dev/sdb[12567]
[root@server ~]# vgs vg_mysql
  VG       #PV #LV #SN Attr   VSize VFree
  vg_mysql   5   0   0 wz--n- 9.98g 9.98g
3)创建逻辑卷lv_mysql
[root@server ~]# lvcreate -n lv_mysql -L 8G vg_mysql
[root@server ~]# lvs /dev/vg_mysql/lv_mysql 
  lv_mysql vg_mysql -wi-a----- 8.00g     

4)格式化为ext4文件系统
[root@server ~]# mkfs.ext4 /dev/vg_mysql/lv_mysql 

5)挂载使用
a. 创建一个空的挂载点/u01
[root@server ~]# mkdir /u01
b. 挂载逻辑卷lv_mysql到/u01目录
[root@server ~]# mount /dev/vg_mysql/lv_mysql /u01


3. 停止前端web服务
[root@server ~]# service apache stop

4. 停止mysql数据库
[root@server ~]# service mysql stop

5. 备份mysql数据库到另外一台备份机 (实验环境不是必须)
备份机:10.1.1.2   备份目录:/backup
[root@server ~]# rsync -av /usr/local/mysql 10.1.1.2:/backup/

6. 将/usr/local/mysql/目录里的所有数据文件同步到逻辑卷上,即/u01目录
[root@server ~]# rsync -av /usr/local/mysql/ /u01
查看是否同步完成:
[root@server ~]# ls /u01
[root@server ~]# du -sh /u01		查看大小是否和原来mysql数据库大小一致

7. 卸载逻辑卷
[root@server ~]# umount /u01

8. 删除/usr/local/mysql/目录里原来的数据文件
注意:删之前一定要确定成功备份了!!!
[root@server ~]# rm -rf /usr/local/mysql/*

9. 挂载逻辑卷lv_mysql到mysql的安装目录/usr/local/mysql
[root@server ~]# mount /dev/vg_mysql/lv_mysql /usr/local/mysql/
开机自动挂载:
vim /etc/rc.local
...
mount /dev/vg_mysql/lv_mysql /usr/local/mysql/

10. 启动数据库
[root@server ~]# service mysql start

11. 启动web服务
[root@server ~]# service apache start

12.测试验证
访问之前的网站看是否可以正常访问

Expand swap space

Method 1: Add a hard disk or partition to expand the swap space ==

查看swap空间大小:
[root@web ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1861        646       1215          0          9         60
-/+ buffers/cache:        576       1285
Swap:         2047          0       2047
[root@web ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097144	0	-1

[root@web ~]# mkswap /dev/sdb7
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=485ff8ad-a636-4556-a2e7-4ee9efc78afb
[root@web ~]# blkid /dev/sdb7
/dev/sdb7: UUID="485ff8ad-a636-4556-a2e7-4ee9efc78afb" TYPE="swap"  

//激活swap分区。swap空间不能手动挂载
[root@server ~]# swapon /dev/sdb7

[root@server ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2031608	0	-1
/dev/sdb7                               partition	2064312	0	-2

Method 2: Use the dd command to simulate large files to expand swap

[root@server ~]# dd if=/dev/zero of=/dev/sda1 bs=1M count=100  //不要执行

if=源文件
of=目标文件
bs=复制数据的大小
count=复制的个数

注意:
1. 一般可以使用dd命令做块设备文件的备份
2. /dev/zero 特殊设备,一般用来模拟一个大文件,源源不断的二进制的bit流;
   /dev/null  空设备,类似黑洞

步骤:
1. 使用dd命令模拟大文件
# dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024
2. 格式化大文件
[root@server ~]# mkswap /tmp/swapfile 

3.激活大文件
[root@server ~]# swapon -p 1 /tmp/swapfile
-p:指定优先级,数字越大优先级越高,0-32767
4. 查看
[root@server ~]# swapon -s
Filename				Type		Size	Used	Priority
/tmp/swapfile                           file		1048568	0	1

如果开机自动挂载,需要修改文件:/etc/fstab
/swap_file	swap swap defautls,pri=1 0 0

Striping Logical Volumes

条带化:
        把保存到逻辑卷的数据分成n等分,分别写到不同的物理卷,可以提高数据的读写效率;
        如果任何一个涉及到的物理卷出现故障,数据都会无法恢复。


sdc                            8:32   0   20G  0 disk 
├─sdc1                         8:33   0    2G  0 part 
└─sdc2                         8:34   0    2G  0 part 

创建物理卷
[root@server ~]# pvcreate /dev/sdc[12]

查看物理卷
[root@server ~]# pvs
/dev/sdc1            lvm2 a--   2.01g  2.01g
/dev/sdc2            lvm2 a--   2.01g  2.01g


创建卷组:
[root@server ~]# vgcreate vg01 /dev/sdc[12]

[root@web ~]# pvs /dev/sdc[12]
  PV         VG   Fmt  Attr PSize PFree
 /dev/sdc1  vg01      lvm2 a--   2.00g  2.00g
 /dev/sdc2  vg01      lvm2 a--   2.00g  2.00g


创建实现条带化的逻辑卷:
[root@server ~]# lvcreate -n lv01 -L 1G vg01 -i 2 /dev/sdc[12]
  Using default stripesize 64.00 KiB
  Logical volume "lv01" created
  
[root@server ~]# lvs /dev/vg01/lv01 
  LV   VG   Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-a----- 1.00g                                             
[root@server ~]# pvs /dev/sdc[12]
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdc1  vg01 lvm2 a--  2.00g 1.50g
  /dev/sdc2  vg01 lvm2 a--  2.00g 1.50g


-i 参数:给出条带化的数量


格式化挂载使用:
[root@server ~]# mkfs.ext4 /dev/vg01/lv01
[root@server ~]# mount /dev/vg01/lv01 /u01


测试:
[root@server ~]# yum -y install sysstat
[root@server ~]# iostat -m -d /dev/sdc[12] 2 
-d 查看磁盘
-m 以什么速度显示,每秒M
 2 每隔2s显示一次 
   如果后面还有数字则代表总共显示多少次
   
[root@server ~]# dd if=/dev/zero of=/u01/test bs=1M count=1000    模拟写数据
[root@server ~]# iostat -m -d /dev/sdc[12] 1
。。。
Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sdb5            178.00         0.00        52.00          0         52
sdb6            177.00         0.00        52.00          0         52

Mirroring logical volumes

逻辑卷实现镜像:
镜像:对某个逻辑卷的数据做镜像,起到数据备份的作用。

当前环境:
├─sdb7                    8:23   0    2G  0 part 
└─sdb8                    8:24   0    2G  0 part 


创建物理卷:
[root@web ~]# pvcreate /dev/sdb[78]
[root@web ~]# pvs /dev/sdb[78]
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb7       lvm2 a--  2.01g 2.01g
  /dev/sdb8       lvm2 a--  2.01g 2.01g

  
 将物理卷加入到vg02卷组:
[root@web ~]# vgextend vg02 /dev/sdb[78]
  Volume group "vg02" successfully extended
[root@web ~]# vgs vg02
  VG   #PV #LV #SN Attr   VSize VFree
  vg02   4   1   0 wz--n- 8.02g 6.02g


创建实现镜像的逻辑卷:
[root@web ~]# lvcreate -n lv02 -L 2G vg02 -m 1 /dev/sdb[78]
  Logical volume "lv02" created

-m参数:给出镜像的个数;1表示1个镜像

[root@web ~]# lvs
  LV       VG   Attr       LSize  Pool Origin Data%  Move Log       Cpy%Sync Convert
  lv_root  vg01 -wi-ao---- 17.70g                                                   
  lv_swap  vg01 -wi-ao----  2.00g                                                   
  lv01     vg02 -wi-ao----  2.00g                                                   
  lv02     vg02 mwi-a-m---  2.00g                         lv02_mlog    38.67        
  lv-mysql vg03 -wi-ao---- 10.00g                                                   
   

说明: Cpy%Sync 53.52该值是100%说明复制ok 

创建后:
[root@web ~]# pvs /dev/sdb[78]
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb7  vg02 lvm2 a--  2.00g 4.00m
  /dev/sdb8  vg02 lvm2 a--  2.00g    0 


格式化逻辑卷:
[root@web ~]# mkfs.ext4 /dev/vg02/lv02
挂载使用
[root@web ~]# mount /dev/mapper/vg02-lv02 /u02

[root@web ~]# touch /u02/file{1..3}
[root@web ~]# mkdir /u02/dir{1..3}

 
测试验证:
思路:损坏一个磁盘,测试数据是否在第二个物理卷中
1. 使用dd命令破坏一个物理卷
[root@web ~]# dd if=/dev/zero of=/dev/sdb7 bs=1M count=100

2. 再次查看物理卷发现有一个unknown Device
 /dev/sdc       vg03 lvm2 a--  20.00g 10.00g
unknown device vg02 lvm2 a-m   2.00g  4.00m

3. 将损坏的盘从卷组中移除
vgreduce vg02 --removemissing --force

4. 再次查看挂载点/u02数据依然存在

自己也可以再次测试:
1. 再拿刚刚人为损坏的盘做成物理卷再次加入到vg02卷组中
[root@web ~]# pvcreate /dev/sdb7
  Physical volume "/dev/sdb7" successfully created
[root@web ~]# vgextend vg02 /dev/sdb7
  Volume group "vg02" successfully extended

2. 再次让/dev/sdd5和/dev/sdd6互为镜像
[root@web ~]# lvconvert -m 1 /dev/vg02/lv02 /dev/sdb[78]
  vg02/lv02: Converted: 0.0%
  vg02/lv02: Converted: 32.2%
  vg02/lv02: Converted: 65.8%
  vg02/lv02: Converted: 97.7%
  vg02/lv02: Converted: 100.0%

3. 等待复制完成就可以再次人为模拟另一块物理卷损坏继续测试

logical volume snapshot

1. 创建快照 (EXT4)
[root@node1 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2	给lv2逻辑卷创建快照
[root@node1 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/	挂载快照

[root@node1 ~]# 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@node1 ~]# dmsetup ls --tree
vg1-lv2--snap (252:5)
 ├─vg1-lv2--snap-cow (252:7)		保存原卷改变前的数据
 │  └─ (253:17)
 └─vg1-lv2-real (252:6)				真实的逻辑卷(原卷)
    ├─ (253:17)
    └─ (253:18)
vg1-lv2 (252:1)
 └─vg1-lv2-real (252:6)
    ├─ (253:17)
    └─ (253:18)
    
2. 修改原卷的数据
[root@server ~]# dd if=/dev/zero of=/u01/test bs=1M count=30

3. 观察Snapshot
[root@server ~]# lvs /dev/vg1/lv2-snap 
  LV     VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  s-lv01 vg01 swi-aos--- 52.00m      lv01     0.16    
[root@server ~]# lvs /dev/vg1/lv2-snap 
  LV     VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  s-lv01 vg01 swi-aos--- 52.00m      lv01    58.16 
  

XFS:
[root@node1 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/s
挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据

应用场景:
/var/lib/mysql
1. 锁表
2. 备份【逻辑|物理备份】
3. 解锁

100G  物理备份		/var/lib/mysql/xxx

1. 锁表
2. 创建快照
3. 解锁
4. 挂载快照
5. 备份到指定地方
6. 删除快照

快照实现自动扩容:
/etc/lvm/lvm.conf 
snapshot_autoextend_threshold = 80
snapshot_autoextend_percent = 20
//当快照使用到80%时,自动扩容20%;当snapshot_autoextend_threshold = 100表示关闭自动扩容

disk quota

磁盘配额 quota
===========================================================================
作用: 限制用户或组对磁盘空间的使用,例如文件服务器,邮件服务器...

一、启用磁盘限额
1. 让文件系统支持配额 [ext3/4]
# vim /etc/fstab 
/dev/vg02/lv02          /u01            ext4    defaults,usrquota,grpquota 0 0
# umount /u01
# mount -a
# mount |grep u01
/dev/mapper/vg02-lv02 on /u01 type ext4 (rw,usrquota,grpquota)

2. 创建磁盘配额的数据库文件
注意: 建议停用SELinux
[root@server ~]# yum -y install quota
[root@server ~]# quotacheck -acug
[root@server ~]# ll /u01
total 16
-rw------- 1 root root 6144 Sep 17 09:28 aquota.group
-rw------- 1 root root 6144 Sep 17 09:28 aquota.user


//-a 所有分区(已支持配额)
//-c 创建
//-u 用户
//-g 组

3.启动磁盘配额
# quotaon -a			//启动所有分区的磁盘配额


二、日常管理
设置配额:
方法一:edquota
# edquota -u stu1
Disk quotas for user stu1 (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/mapper/vg01-lv01          0           0          0          0        0        0  



soft:又称软限制,当用户到达这个限制以后,系统会给予警告,但仍可写入。
hard:又称硬限制,到达这个限制,就完全禁止任何写入

以下三个为磁盘空间的限制设置:
blocks:已使用空间,无需要设置
soft:用户空间使用限制,为软限制,需要设置
hard:用户空间使用限制,为硬限制,需要设置
以下三个为总文件个数的限制:
inodes:已有文件总数,无需要设置
soft:文件总数限制,为软限制,需要设置
hard:文件总数限制,为硬限制,需要设置

我们要限制stu1用户使用空间10M,最多不能超过12M,文件总数为200个,
最多不能超过250个,设置如下:
Filesystem        			blocks soft hard inodes soft hard
/dev/mapper/vg01-lv01       0     10240 12288 0    200  250 
注:空间限制是以k为单位的。

grace time: 宽限期,默认7天 
# edquota -t  修改配额的宽限期


测试:
# su - stu1
[stu1@vm1 data]$ dd if=/dev/zero of=test99 bs=1M count=11
dm-1: warning, user block quota exceeded.
11+0 records in
11+0 records out
11534336 bytes (12 MB) copied, 0.108284 s, 107 MB/s


[stu1@vm1 data]$ dd if=/dev/zero of=test99 bs=1M count=13
dm-1: warning, user block quota exceeded.
dm-1: write failed, user block limit reached.
dd: writing `test99': Disk quota exceeded
13+0 records in
12+0 records out
12582912 bytes (13 MB) copied, 0.257964 s, 48.8 MB/s

[stu1@vm1 data]$ touch file{
     
     1..6}
dm-1: warning, user file quota exceeded.

[stu1@vm1 data]$ touch file{
     
     1..11}
dm-1: write failed, user file limit reached.
touch: cannot touch `file10': Disk quota exceeded
touch: cannot touch `file11': Disk quota exceeded

[stu1@vm1 data]$ quota		//查看自己的配额情况
Disk quotas for user stu1 (uid 500): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/mapper/vg01-lv01
                  12288*  10240   12288   24:00       1       5      10 


方法二: setquota
# setquota -u username block软限制 block硬限制 inode软限制 inode硬限制 分区
# setquota -u jack 80000 100000 15 20 /dev/sda2
# quota jack

方法三:复制
# edquota -p alice tom robin user1 user2 user3
将alice的配额方案复制给后面所有用户

# for i in {1..10}
> do
> useradd zhang$i
> edquota -p stu1 zhang$i
> done


+++查看配额+++
查看单个用户的配额:	    # quota jack
查看所有用户的配额:	    # repquota -a
                              	        # repquota -ag
普通用户查看自己配额:  $ quota


扩展知识:针对组设置配额
例1:限制hr组的成员能在/home/hr目录中:100M   50文件
# groupadd hr
# useradd hr01 -G hr 
# useradd hr02 -G hr
# mkdir /home/hr
# chgrp hr /home/hr
# chmod 2770 /home/hr
# ll -d /home/hr
drwxrws--- 2 root hr 4096 09-12 17:07 /home/hr

# edquota -g hr
Disk quotas for group hr (gid 507):
 	Filesystem                           blocks       soft       hard     inodes     soft     hard
	/dev/mapper/vg01-lv_home          4          0     102400          1        0        50
# repquota -ag
===========================================================================

rhel7:
注意:
1、不需要手动执行quotacheck命令对xfs文件系统进行检查,它会在mount的时候自动执行
2、不需要在xfs文件系统的根下生成quota数据文件


 # mount -o uquota /dev/xvm/home /home
 # xfs_quota -x -c 'limit bsoft=500m bhard=550m tanya' /home
 # xfs_quota -x -c report /home

-x:专家模式
-c:交互模式,可加多个

GPT partition

gdisk tool partition

parted tool partition.

GPT  128个主分区
1.创建分区
# gdisk -l /dev/sdc
# gdisk /dev/sdc
# partprobe /dev/sdc
# ll /dev/sdc*

2.创建文件系统(格式化)redhat7默认使用xfs
# mkfs.xfs /dev/sdb1

3.挂载(手动、开机自动、autofs自动)
# mkdir /mnt/disk1
# mkdir /mnt/disk2
# mount -t xfs -o ro /dev/sdb1 /mnt/disk1		//手动挂载
# umount /mnt/disk1

Guess you like

Origin blog.csdn.net/weixin_39735909/article/details/128931855