磁盘管理

网友投稿 241 2022-11-07

磁盘管理

磁盘结构

#设备号码: 主设备号:major number, 标识设备类型 次设备号:minor number, 标识同一类型下的不同设备 #设备类型: 块设备:block,存取单位“块”,磁盘 字符设备:char,存取单位“字符”,键盘 #磁盘设备的设备文件命名 /dev/DEV_FILE /dev/sdX   #SCSI, SATA, SAS, IDE,USB /dev/nvme0n#   #nvme协议硬盘,如:第一个硬盘:nvme0n1,第二个硬盘:nvme0n2 #虚拟磁盘 /dev/vd /dev/xvd

创建设备文件 mknod

[root@centos8 ~]#mknod /data/partition-sda1 b 8 1 [root@centos8 ~]#ll /data/partition-sda1 brw-r--r-- 1 root root 8, 1 Apr 13 09:15 /data/partition-sda1 [root@centos8 ~]#ll /dev/zero crw-rw-rw- 1 root root 1, 5 Apr 13 08:03 /dev/zero [root@centos8 ~]#mknod /data/zero c 1 5 [root@centos8 ~]#ll /data/zero crw-r--r-- 1 root root 1, 5 Apr 13 09:17 /data/zero

硬盘接口类型

IDE:133MB/s,并行接口,早期家用电脑 SCSI:640MB/s,并行接口,早期服务器 SATA:6Gbps,SATA数据端口与电源端口是分开的,即需要两条线,一条数据线,一条电源线 SAS:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而 SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入 SAS主板上,反之不成 USB:480MB/s M.2: 注意:速度不是由单纯的接口类型决定,支持Nvme协议硬盘速度是最快的

服务器硬盘大小

LFF:3.5寸,一般见到的那种台式机硬盘的大小 SFF:Small Form Factor 小形状因数,2.5寸,注意不同于2.5寸的笔记本硬盘 L、S分别是大、小的意思,目前服务器或者盘柜采用sff规格的硬盘主要是考内虑增大单位密度内的磁盘 容量、增强散热、减小功耗

硬盘存储术语 CHS head:磁头 磁头数=盘面数 track:磁道 磁道=柱面数 sector:扇区,512bytes cylinder:柱面计算公式: 1柱面=512 * sector数/track*head数=512*63*255=7.84M CentOS 5 之前版本 Linux 以柱面的整数倍划分分区,CentOS 6之后可以支持以扇区划分分区

磁盘分区

为什么分区 优化I/O性能 实现磁盘空间配额限制 提高修复速度 隔离系统和程序 安装多个OS 采用不同文件系统

分区方式

两种分区方式:MBR,GPT MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T 0磁道0扇区:512bytes 446bytes: boot loader 64bytes:分区表,其中每16bytes标识一个分区 2bytes: 55AA MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区) MBR分区:主和扩展分区对应的1--4,/dev/sda3,逻辑分区从5开始,/dev/sda5 MBR分区结构

备份MBR的分区表,并破坏后恢复

#备份MBR分区表 [root@centos8 ~]#dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446 [root@centos8 ~]#scp /data/dpt.img 10.0.0.102: #破坏MBR分区表 [root@centos8 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446 #无法启动 [root@centos8 ~]#reboot #用光盘启动,进入rescue mode,选第3项skip to shell #配置网络 #ifconfig ens160 10.0.0.8/24 #ip a a 10.0.0.8/24 dev/ens160 #scp 10.0.0.102:/root/dpt.img . #恢复MBR分区表 #dd if=dpt.img of=/dev/sda bs=1 seek=446 #exit

GPT分区

GPT分区结构分为4个区域: GPT头 分区表 GPT分区 备份区域

管理分区

#列出块设备 lsblk #创建分区命令 fdisk 管理MBR分区 gdisk 管理GPT分区 parted 高级分区操作,可以是交互或非交互方式

parted 命令

回车就立即生效,危险

parted [选项]... [设备 [命令 [参数]...]...] parted /dev/sdb mklabel gpt|msdos parted /dev/sdb print parted /dev/sdb mkpart primary 1 200 (默认M) parted /dev/sdb rm 1 parted –l   列出所有硬盘分区信息

[root10:13 AMcentos8 ~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 2G 0 part /boot └─sda2 8:2 0 198G 0 part ├─cl-root 253:0 0 90G 0 lvm / ├─cl-swap 253:1 0 8G 0 lvm [SWAP] └─cl-data 253:2 0 100G 0 lvm /data sr0 11:0 1 7.7G 0 rom [root10:13 AMcentos8 ~]#parted /dev/sda print #查看分区类型 Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 215GB Sector size (logical/physical): 512B/512B Partition Table: msdos #能否识别msdos是由55AA标记位决定的 Disk Flags: Number Start End Size Type File system Flags 1 1049kB 2149MB 2147MB primary ext4 boot 2 2149MB 215GB 213GB primary lvm

分区工具fdisk和gdisk

gdisk [device...]             类fdisk 的GPT分区工具 fdisk -l [-u] [device...]     查看分区 fdisk [device...]             管理MBR分区 p 分区列表 t 更改分区类型 n 创建新分区 d 删除分区 v 校验分区 u 转换单位 w 保存并退出 q 不保存并退出

查看内核是否已经识别新的分区

cat /proc/partations

Centos6 通知内核重新读取硬盘分区表

partx -a /dev/DEVICE kpartx -a /dev/DEVICE -f: force #示例: [root@centos6 ~]#partx -a /dev/sda

删除分区用

partx -d --nr M-N /dev/DEVICE #示例: [root@centos6 ~]#partx -d --nr 6-8 /dev/sda

非交互式创建分区

echo -e 'n\np\n\n\n+2G\nw\n' | fdisk /dev/sdc

文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的 方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统 从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进 行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的 存取,安全控制,日志,压缩,加密等

支持的文件系统:

ls /lib/modules/`uname -r`/kernel/fs binfmt_misc.ko.xz cachefiles cifs dlm ext4 fscache gfs2 jbd2 mbcache.ko.xz nfs_common nls pstore udf btrfs ceph cramfs exofs fat fuse isofs lockd nfs nfsd overlayfs squashfs xfs

常用文件系统

ext2:Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分 区 ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复 ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件 (16TB)、最大1EB的文件系统,以及速度的提升 xfs:SGI,支持最大8EB的文件系统 swap iso9660 光盘 btrfs(Oracle) reiserfs

Windows 常用文件系统

FAT32

NTFS

exFAT

Unix

FFS(fast)

UFS(unix)

JFS2

网络文件系统:

NFS

CIFS

集群文件系统:

GFS2

OCFS2(oracle)

分布式文件系统:

fastdfs

ceph

moosefs

mogilefs

glusterfs

Lustre

RAW**:

未经处理或者未经格式化产生的文件系统

常用的文件系统特性

FAT32 最多只能支持16TB的文件系统和4GB的文件 NTFS 最多只能支持16EB的文件系统和16EB的文件 EXT3 最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 Ext3目前只支持32000个子目录 Ext3文件系统使用32位空间记录块数量和 inode数量 当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块 EXT4: EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本 Ext4的文件系统容量达到1EB,而支持单个文件则达到16TB 理论上支持无限数量的子目录 Ext4文件系统使用64位空间记录块数量和 inode数量 Ext4的多块分配器支持一次调用分配多个数据块 修复速度更快 XFS 根据所记录的日志在很短的时间内迅速恢复磁盘文件内容 用优化算法,日志记录对整体文件操作影响非常小 是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB 能以接近裸设备I/O的性能存储数据

查前支持的文件系统:

cat /proc/filesystems

du -s 只看数据占据的大小

mount

mount**常用命令选项**

-t vsftype 指定要挂载的设备上的文件系统类型 -r readonly,只读挂载 -w read and write, 读写挂载 -n 不更新/etc/mtab,mount不可见 -a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有 auto功能) -L 'LABEL' 以卷标指定挂载设备 -U 'UUID' 以UUID指定要挂载的设备 -B, --bind 绑定目录到另一个目录上 -o options:(挂载文件系统的选项),多个选项使用逗号分隔 async   异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全   sync   同步模式,内存更改时,同时写磁盘,安全,但效率低下 atime/noatime 包含目录和文件 diratime/nodiratime 目录的访问时间戳 auto/noauto 是否支持开机自动挂载,是否支持-a选项 exec/noexec 是否支持将文件系统上运行应用程序 dev/nodev 是否支持在此文件系统上使用设备文件 suid/nosuid 是否支持suid和sgid权限 remount 重新挂载 ro/rw 只读、读写   user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用 acl/noacl 启用此文件系统上的acl功能 loop 使用loop设备 _netdev   当网络可用时才对网络资源进行挂载,如:NFS文件系统 defaults 相当于rw, suid, dev, exec, auto, nouser, async

loop 实现将文件当做移动硬盘

[root11:30 AMcentos7 ~]#dd if=/dev/zero of=/data/image bs=1M count=1024 [root11:37 AMcentos7 ~]#mkfs.ext4 /data/image 文件格式化 [root11:38 AMcentos7 ~]#blkid /data/image /data/image: UUID="3d40f8e8-4cff-4eab-9660-bec5f197c98f" TYPE="ext4" [root11:38 AMcentos7 ~]#mkdir /mnt/loop [root11:39 AMcentos7 ~]#mount /data/image /mnt/loop/ 将文件以后使用 [root11:40 AMcentos7 ~]#ll /dev/loop* brw-rw----. 1 root disk 7, 0 Jun 7 11:40 /dev/loop0 #此时的loop0就相当于 image这个被格式化的文件 crw-rw----. 1 root disk 10, 237 Jun 7 11:40 /dev/loop-control [root11:40 AMcentos7 ~]#df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 487320 0 487320 0% /dev tmpfs 497836 0 497836 0% /dev/shm tmpfs 497836 7788 490048 2% /run tmpfs 497836 0 497836 0% /sys/fs/cgroup /dev/sda3 92757672 1894504 86128296 3% / /dev/sda1 1998672 139768 1737664 8% /boot /dev/sda2 103080888 94896 97726728 1% /data tmpfs 99568 0 99568 0% /run/user/0 /dev/loop0 999320 2564 927944 1% /mnt/loop [root11:41 AMcentos7 ~]#losetup -a /dev/loop0: [2050]:16 (/data/image) #此时这个文件就相当于一个移动硬盘

#通过查看/etc/mtab文件显示当前已挂载的所有设备 mount #查看内核追踪到的已挂载的所有设备 cat /proc/mounts 查看正在访问指定文件系统的进程 lsof MOUNT_POINT fuser -v MOUNT_POINT 终止所有在正访问指定的文件系统的进程 fuser -km MOUNT_POINT

文件夹挂载到文件夹

两个文件不是硬链接的关系,又不是软链接的关系,却内容一样,可能是文件夹挂载在文件夹上了

fuser

-v 查看文件是否在使用

持久挂载

将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载

/etc/fstab格式帮助:

man 5 fstab

每行定义一个要挂载的文件系统,,其中包括共 6 项

要挂载的设备或伪文件系统

设备文件

LABEL:LABEL=""

UUID:UUID=""

伪文件系统名称:proc, sysfs

挂载点:必须是事先存在的目录

文件系统类型:ext4,xfs,iso9660,nfs,none

挂载选项:defaults ,acl,bind

转储频率:0:不做备份 1:每天转储 2:每隔一天转储

fsck检查的文件系统的顺序:允许的数字是0 1 2

0:不自检 ,1:首先自检;一般只有rootfs才用 2:非rootfs使用

添加新的挂载项,需要执行下面命令生效

mount -a 挂载自动生效

不卸载重新挂载

uuidgen 随机生成UUID

[root11:41 AMcentos7 ~]#uuidgen 97232f49-f2f9-4271-8e4e-a36e2045c3ef

修改UUID故障:

自动进入emergency mode,输入root 密码 #cat /proc/mounts 可以查看到/ 以rw方式挂载 #vim /etc/fstab #reboot

范例:centos 6 /etc/fstab 的分区UUID错误,无法启动

如果/etc/fstab 的挂载设备出错,比如文件系统故障,并且文件系统检测项(即第6项为非0),将导致无 法启动 自动进入emergency mode,输入root 密码 #cat /proc/mounts 可以查看到/ 以ro方式挂载,无法直接修改配置文件 #mount -o remount,rw / #vim /etc/fstab 将故障行的最后1项,即第6项修改为0,开机不检测此项挂载设备的健康性,从而忽略错误,能实现启动

处理交换文件和分区

swap交换分区是系统RAM的补充,swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据 时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过 多 swap 空间会造成存储设备处于分配状态但闲置,造成浪费,过多 swap 空间还会掩盖内存泄露 注意:为优化性能,可以将swap 分布存放,或高性能磁盘存放

1. 创建交换分区或者文件 2. 使用mkswap写入特殊签名 3. 在/etc/fstab文件中添加适当的条目 4. 使用swapon -a 激活交换空间

启用swap分区

swapon [OPTION]... [DEVICE]

选项:

-a:激活所有的交换分区

-p PRIORITY:指定优先级,也可在/etc/fstab 在第4列指定:pri=value

范例:创建swap分区

[root@centos8 ~]#echo -e 'n\np\n\n\n+2G\nt\n82\nw\n' | fdisk /dev/sdc [root@centos8 ~]#mkswap /dev/sdc1 Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f [root@centos8 ~]#blkid /dev/sdc1 /dev/sdc1: UUID="d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f" TYPE="swap" PARTUUID="b094d43d-01 [root@centos8 ~]#vim /etc/fstab UUID=d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f swap         swap defaults 0 0 [root@centos8 ~]#swapon -a [root@centos8 ~]#free -h             total       used       free     shared buff/cache   available Mem:          3.7Gi       264Mi       3.2Gi       9.0Mi       261Mi       3.2Gi Swap:         4.0Gi         0B       4.0Gi [root@centos8 ~]#cat /proc/swaps Filename Type Size Used Priority /dev/sda5                               partition 2097148 0 -2 /dev/sdc1                               partition 2097148 0 -3

禁用swap分区:

swapoff [OPTION]... [DEVICE]

范例:禁用swap分区

[root@centos8 ~]#sed -i.bak '/swap/d' /etc/fstab [root@centos8 ~]#swapoff -a

SWAP的优先级

可以指定swap分区0到32767的优先级,值越大优先级越高 如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的 没有用户指定优先级的swap,会给这个优先级减一 先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远 高于核心缺省指定的优先级(是负数)

swap的使用策略

/proc/sys/vm/swappiness 的值决定了当内存占用达到一定的百分比时,会启用swap分区的空间

范例

[root@centos8 ~]# cat /proc/sys/vm/swappiness 30 [root@rhel5 ~]# cat /proc/sys/vm/swappiness 60 剩余空间是百分之六十就启动swap

说明:内存在使用到100-30=70%的时候,就开始出现有交换分区的使用。简单地说这个参数定义了系

统对swap的使用倾向,默认值为30,值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止

对swap的使用,只是最大限度地降低了使用swap的可能性

移动介质

在图形环境下自动启动挂载/run/media//

手工挂载

mount /dev/cdrom /mnt/

操作光盘

eject 弹出光盘 eject -t 弹入光盘

创建ISO文件

cp /dev/cdrom /root/centos.iso mkisofs -r -o /root/etc.iso /etc #来自于genisoimage包

刻录光盘

wodim –v –eject centos.iso

USB**介质**

查看USB设备是否识别

lsusb

被内核探测为SCSI设备

/dev/sdaX、/dev/sdbX或类似的设备文件

在图形环境中自动挂载在/run/media//

范例:插入U盘后可以看到日志信息

[root@centos8 ~]#tail /var/log/messages -f Apr 15 14:25:06 centos8 kernel: usb 4-1: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd Apr 15 14:25:06 centos8 kernel: usb 4-1: New USB device found, idVendor=0951, idProduct=1666, bcdDevice= 1.10

或者

[root01:42 PMcentos7 ~]#dmesg

格式化U盘为 FAT32 文件系统

[root@centos8 ~]#dnf -y install dosfstools [root@centos8 ~]#mkfs.vfat /dev/sdd1 mkfs.fat 4.1 (2017-01-24) [root@centos8 ~]#mount /dev/sdd1 /mnt

查看USB设备

[root@centos8 ~]#yum -y install usbutils [root@centos8 ~]#lsusb Bus 004 Device 002: ID 0951:1666 Kingston Technology DataTraveler 100 G3/G4/SE9 G2 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

磁盘常见工具

df

df [OPTION]... [FILE]... -H 以10为单位 -T 文件系统类型 -h human-readable -i inodes instead of blocks -P 以Posix兼容的格式输出

du

-h human-readable -s   summary   --max-depth=#   指定最大目录层级

dd

if=file 从所命名文件读取而不是从标准输入 of=file 写到所命名的文件而不是到标准输出 ibs=size   一次读size个byte obs=size       一次写size个byte bs=size block size, 指定块大小(既是是ibs也是obs) cbs=size       一次转化size个byte skip=blocks   从开头忽略blocks个ibs大小的块 seek=blocks 从开头忽略blocks个obs大小的块 count=n       复制n个bs conv=conversion[,conversion...] 用指定的参数转换文件 conversion 转换参数: ascii 转换 EBCDIC 为 ASCII ebcdic 转换 ASCII 为 EBCDIC lcase 把大写字符转换为小写字符 ucase 把小写字符转换为大写字符 nocreat 不创建输出文件 noerror 出错时不停止 notrunc 不截短输出文件 sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐 fdatasync 写完成前,物理写入输出文件

[root@centos8 ~]#cat f1.txt; abcdef [root@centos8 ~]#cat f2.txt 123456789 [root@centos8 ~]#dd if=f1.txt of=f2.txt bs=1 count=2 skip=3 seek=4   2+0 records in 2+0 records out 2 bytes copied, 6.6515e-05 s, 30.1 kB/s [root@centos8 ~]#cat f2.txt 1234de[root@centos8 ~]#echo 123456789 > f2.txt [root@centos8 ~]#cat f2.txt 123456789 [root@centos8 ~]#cat f1.txt abcdef [root@centos8 ~]#cat f1.txt; cat f2.txt abcdef 123456789 [root@centos8 ~]#dd if=f1.txt of=f2.txt bs=1 count=2 skip=3 seek=4 conv=notrunc 2+0 records in 2+0 records out 2 bytes copied, 7.6153e-05 s, 26.3 kB/s [root@centos8 ~]#cat f2.txt 1234de789

#备份MBR dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1 #破坏MBR中的bootloader dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446 #有一个大于2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有 fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下 dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc #将本地的/dev/sdx整盘备份到/dev/sdy dd if=/dev/sdx of=/dev/sdy #将/dev/sdx全盘数据备份到指定路径的image文件 dd if=/dev/sdx of=/path/to/image #备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径 dd if=/dev/sdx | gzip >/path/to/image.gz #将备份文件恢复到指定盘 dd if=/path/to/image of=/dev/sdx #将压缩的备份文件恢复到指定盘 gzip -dc /path/to/image.gz | dd of=/dev/sdx #将内存里的数据拷贝到root目录下的mem.bin文件 dd if=/dev/mem of=/root/mem.bin bs=1024 #拷贝光盘数据到root文件夹下,并保存为cdrom.iso文件 dd if=/dev/cdrom of=/root/cdrom.iso #销毁磁盘数据 dd if=/dev/urandom of=/dev/sda1 #通过比较dd指令输出中命令的执行时间,即可确定系统最佳的block size大小 dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000 dd if=/dev/zero of=/root/1Gb.file bs=2048 count=500000   dd if=/dev/zero of=/root/1Gb.file bs=4096 count=250000 #测试硬盘写速度 dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000 #测试硬盘读速度 dd if=/root/1Gb.file bs=64k | dd of=/dev/null

练习

1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求

此分区开机后自动挂载至/test目录,且默认有acl挂载选项

2、写一个脚本,完成如下功能:

(1) 列出当前系统识别到的所有磁盘设备

(2) 如磁盘数量为1,则显示其空间使用信息

否则,则显示最后一个磁盘上的空间使用信息

[root03:35 PMcentos7 /scripts]#cat 11.sh #!/bin/sh DiskInfo=`df |grep -o '^/dev/sd[a-z][[:digit:]]*'` echo -e "磁盘上所识别的所有设备是:\n$DiskInfo" Num=`df|grep -o '^/dev/sd[a-z][[:digit:]]*'|wc -l` [ $Num -eq 1 ] && echo "磁盘的使用率为: `df |grep '/dev/sd' |sed -r 's/.*[ ]([0-9]+%).*/\1/'`" ||echo "磁盘的使用率为: `df |grep '/dev/sd' |sed -r 's/.*[ ]([0-9]+%).*/\1/' |sed '$!d'`"

3、将CentOS6的CentOS-6.10-x86_64-bin-DVD1.iso和CentOS-6.10-x86_64-bin-DVD2.iso两个文件,

合并成一个CentOS-6.10-x86_64-Everything.iso文件,并将其配置为yum源

RAID

RAID**功能实现**

提高IO能力,磁盘并行读写

提高耐用性,磁盘冗余算法来实现

RAID**实现的方式**

外接式磁盘阵列:通过扩展卡提供适配能力

内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置

软件RAID:通过OS实现,比如:群晖的NAS

3.2 RAID**级别**

级别:多块磁盘组织在一起的工作方式有所不同

RAID-0:条带卷,strip

RAID-1:镜像卷,mirror

RAID-2

..

RAID-5

RAID-6

RAID-10

RAID-01

RAID级别

RAID-0

以 chunk 单位,读写数据

读、写性能提升

可用空间:N*min(S1,S2,...)

无容错能力

最少磁盘数:2, 2+

条带卷,优点:多块硬盘同时读写数据,提高了读写的速度 缺点: 一块磁盘坏了,所有的都无法用了,因为数据是分散在多块磁盘里面的,出问题的概率太大,没有容错

RAID-1

读性能提升、写性能略有下降

可用空间:1*min(S1,S2,...)

有冗余能力

最少磁盘数:2, 2N

镜像卷:优点:备份,每次写入数据都会备份一份, 缺点:磁盘的利用率只有百分之五十,写入数据要写双倍的,写的速率下降了

RAID-4

多块数据盘异或运算值存于专用校验盘 磁盘利用率 (N-1)/N

有冗余能力

至少3块硬盘才可以实现

3块以上的硬盘,有一块盘将其中的两块盘做异或运算,得到一个校验位 ,其中一块盘坏了,通过异或可以恢复 存放校验位的那块盘是最容易坏的

RAID-5

读、写性能提升

可用空间:(N-1)*min(S1,S2,...)

有容错能力:允许最多1块磁盘损坏

最少磁盘数:3, 3+

至少3块盘,每块盘都有一个校验位和数据,避免了像RAID4那样将校验位全部写在一块磁盘上了 可用空间l利用率: (n-1)/n

RAID-6

读、写性能提升

可用空间:(N-2)*min(S1,S2,...)

有容错能力:允许最多2块磁盘损坏

最少磁盘数:4, 4+

升级RIAD5,每块磁盘都有两个校验位和数据,最少4块才可以完成, 磁盘的利用率 n-2/n

RAID-10

读、写性能提升

可用空间:N*min(S1,S2,...)/2

有容错能力:每组镜像最多只能坏一块

最少磁盘数:4, 4+

2块做成RAID1 另外的 2块也做成RAID1 在把这两组盘做成RAID0 利用率:50% 系统失败的几率1/3

RAID-01

多块磁盘先实现RAID0,再组合成RAID1

两块组合做成RAID 0 再把这个组合备份一份 磁盘的利用率:50% 系统失败的几率2/3

RAID-50

逻辑卷管理器(LVM)

实现空间的扩展,在线扩展,不影响用户的使用情况,RAID技术扩展要关机使用 缺点:逻辑上的空间,方式不透明 #PV 将磁盘标记成为PV, 将PV组合为卷组, 从卷组里面抽取一部分成为逻辑卷

LVM**介绍**

LVM: Logical Volume Manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,

允许在多个物理设备间重新组织文件系统

LVM可以弹性的更改LVM的容量

通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备

中的PE加到LV中以加大容量

实现过程

将设备指定为物理卷

用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent,

PE)来定义的

在物理卷上创建的逻辑卷, 是由物理区域(PE)组成

可以在逻辑卷上创建文件系统并挂载

第一个逻辑卷对应设备名:/dev/dm-#

dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

软链接:

/dev/mapper/VG_NAME-LV_NAME /dev/VG_NAME/LV_NAME

范例

/dev/mapper/vol0-root /dev/vol0/root

可以是分区,也可以是一块物理磁盘 #拿sdb1 sdb2 记为PV [root08:21 AMcentos8 ~]#lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 100G 0 part / ├─sda3 8:3 0 50G 0 part /data ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 4G 0 part [SWAP] sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 1G 0 part └─sdb2 8:18 0 1G 0 part sr0 11:0 1 7.7G 0 rom [root08:25 AMcentos8 ~]#yum provides pvcreate [root08:25 AMcentos8 ~]#yum install lvm2 -y [root08:29 AMcentos8 ~]#rpm -ql lvm2 #查看安装该包生成了哪些命令 [root08:30 AMcentos8 ~]#rpm -ql lvm2 |grep pv /usr/lib/systemd/system/lvm2-pvscan@.service /usr/sbin/pvchange /usr/sbin/pvck /usr/sbin/pvcreate /usr/sbin/pvdisplay /usr/sbin/pvmove /usr/sbin/pvremove /usr/sbin/pvresize /usr/sbin/pvs /usr/sbin/pvscan /usr/share/man/man8/pvchange.8.gz /usr/share/man/man8/pvck.8.gz /usr/share/man/man8/pvcreate.8.gz /usr/share/man/man8/pvdisplay.8.gz /usr/share/man/man8/pvmove.8.gz /usr/share/man/man8/pvremove.8.gz /usr/share/man/man8/pvresize.8.gz /usr/share/man/man8/pvs.8.gz /usr/share/man/man8/pvscan.8.gz #相关命令 [root08:30 AMcentos8 ~]#pv pvchange pvck pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan #标记物理卷 [root08:35 AMcentos8 /data]#pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. #pvdisplay pvs 查看描述 #创建卷组,组名为mysql [root08:37 AMcentos8 /data]#vgcreate mysql /dev/sdb1 /dev/sdb2 Volume group "mysql" successfully created [root08:37 AMcentos8 /data]#vgs 查看 VG #PV #LV #SN Attr VSize VFree mysql 2 0 0 wz--n- 1.99g 1.99g [root08:38 AMcentos8 /data]#vgdisplay 查看卷组 #创建逻辑卷 [root08:40 AMcentos8 /data]#lvcreate -n lv_data -L 600M mysql Logical volume "lv_data" created. -L表示指明具体的大小 -l表示指明的PE个数 , 例如:-l 100 表示指明PE的个数为100个 [root08:45 AMcentos8 /data]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_data mysql -wi-a----- 600.00m [root08:46 AMcentos8 /data]#ll /dev/mysql/lv_data #在dev目录下的mysql卷组下面的lv_data逻辑卷 #生成的两条软链接的名字都是逻辑卷的名字 lrwxrwxrwx 1 root root 7 May 2 08:43 /dev/mysql/lv_data -> ../dm-0 #两条软链接 [root08:47 AMcentos8 /data]#ll /dev/mapper/mysql-lv_data lrwxrwxrwx 1 root root 7 May 2 08:43 /dev/mapper/mysql-lv_data -> ../dm-0 #格式化 [root08:56 AMcentos8 /data]#mkfs.ext4 /dev/mysql/lv_data [root08:59 AMcentos8 /data]#blkid |grep /dev/mapper/mysql-lv_data /dev/mapper/mysql-lv_data: UUID="7aacb7f6-6cdf-4aa7-ad57-f8dfa1a1295e" TYPE="ext4" #挂载使用 [root09:01 AMcentos8 /data]#vim /etc/fstab [root09:04 AMcentos8 /data]#mount -a [root09:05 AMcentos8 /data]#cp /etc/fstab /data/mysql/ [root09:06 AMcentos8 /data]#ll /data/mysql/ total 20 -rw-r--r-- 1 root root 804 May 2 09:06 fstab drwx------ 2 root root 16384 May 2 08:57 lost+found

实现逻辑卷

相关工具来自于 lvm2 包

[root@centos8 ~]#yum -y install lvm2

pv**管理工具**

显示pv信息

pvs:简要pv信息显示 pvdisplay

pvcreate /dev/DEVICE

删除pv

pvremove /dev/DEVICE、

pvdisplay

[root08:49 AMcentos8 /data]#pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name mysql PV Size 1.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 255 Free PE 105 Allocated PE 150 被分配了150个PE PV UUID 98SCfB-ZYau-hgVd-EZEi-rq1d-eXTe-YjE6Jc --- Physical volume --- PV Name /dev/sdb2 VG Name mysql PV Size 1.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 255 Free PE 255 一个PE也没有被分配 Allocated PE 0 PV UUID QUO9AV-7PuR-vzw3-RfrU-t33E-AyEz-t7XadQ

lvdisplay

[root08:51 AMcentos8 /data]#lvdisplay --- Logical volume --- LV Path /dev/mysql/lv_data LV Name lv_data VG Name mysql LV UUID qRF7Ic-Xcol-YsVs-QIXc-pH26-uzL7-BWm3UN LV Write Access read/write LV Creation host, time centos8.magedu.com, 2021-05-02 08:43:30 +0800 LV Status available # open 0 LV Size 600.00 MiB Current LE 150 #相当于PE Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0

逻辑卷的扩展

[root09:08 AMcentos8 /data]#lvextend -L +100M /dev/mysql/lv_data 此方法直接指明大小 [root09:11 AMcentos8 /data]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_data mysql -wi-ao---- 700.00m #被加了100M 或者:此方法是以PE为单位计算的 [root09:11 AMcentos8 /data]#lvextend -l +100%free /dev/mysql/lv_data 全部给了逻辑卷,容量变大了 ***但是看到的是文件系统空间的大小,要同步 [root09:14 AMcentos8 /data]#df -H Filesystem Size Used Avail Use% Mounted on devtmpfs 482M 0 482M 0% /dev tmpfs 500M 0 500M 0% /dev/shm tmpfs 500M 14M 486M 3% /run tmpfs 500M 0 500M 0% /sys/fs/cgroup /dev/sda2 108G 14G 94G 13% / /dev/sda3 54G 1.5G 53G 3% /data /dev/sda1 1.1G 124M 830M 13% /boot tmpfs 100M 0 100M 0% /run/user/0 /dev/mapper/mysql-lv_data 603M 938k 558M 1% /data/mysql

resize2fs 同步ext系列文件系统

[root09:15 AMcentos8 /data]#resize2fs /dev/mysql/lv_data resize2fs 1.45.6 (20-Mar-2020) Filesystem at /dev/mysql/lv_data is mounted on /data/mysql; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/mysql/lv_data is now 522240 (4k) blocks long. [root09:18 AMcentos8 /data]#df -H Filesystem Size Used Avail Use% Mounted on devtmpfs 482M 0 482M 0% /dev tmpfs 500M 0 500M 0% /dev/shm tmpfs 500M 14M 486M 3% /run tmpfs 500M 0 500M 0% /sys/fs/cgroup /dev/sda2 108G 14G 94G 13% / /dev/sda3 54G 1.5G 53G 3% /data /dev/sda1 1.1G 124M 830M 13% /boot tmpfs 100M 0 100M 0% /run/user/0 /dev/mapper/mysql-lv_data 2.1G 1.9M 2.0G 1% /data/mysql

xfs_growfs 同步xfs 系列的文件系统

xfg_growfs mountpoint 这一点和resize2fs 不一样

扩卷组进一步扩展逻辑卷

#标记物理机 [root09:25 AMcentos8 /data]#pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created. #扩展mysql这个卷组 [root09:25 AMcentos8 /data]#vgextend mysql /dev/sdb3 Volume group "mysql" successfully extended #查看卷组被扩大 [root09:27 AMcentos8 /data]#vgdisplay --- Volume group --- VG Name mysql System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size <11.99 GiB PE Size 4.00 MiB Total PE 3069 Alloc PE / Size 510 / 1.99 GiB Free PE / Size 2559 / <10.00 GiB #有空闲空间了,被扩大了 VG UUID Sy9Z0L-VFTG-ZghN-ngaK-0Cjl-6Pe1-geZUbD #扩展逻辑卷组 [root09:29 AMcentos8 /data]#lvcreate -r -L +2G /dev/mysql/lv_data 加 -r 连带文件系统一起扩展 #加 -r 以后就无需要用resize2fs 这个命令操作一次了 [root09:34 AMcentos8 /data]#df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 460M 0 460M 0% /dev tmpfs 477M 0 477M 0% /dev/shm tmpfs 477M 13M 464M 3% /run tmpfs 477M 0 477M 0% /sys/fs/cgroup /dev/sda2 100G 13G 87G 13% / /dev/sda3 50G 1.4G 49G 3% /data /dev/sda1 976M 118M 792M 13% /boot tmpfs 96M 0 96M 0% /run/user/0 /dev/mapper/mysql-lv_data 4.0G 2.4M 3.8G 1% /data/mysql

逻辑卷的缩容

[root10:57 AMcentos8 ~]#pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. [root10:58 AMcentos8 ~]#pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- 5.00g 5.00g /dev/sdb2 lvm2 --- 5.00g 5.00g [root10:58 AMcentos8 ~]#vgcreate vg0 /dev/sdb{1,2} Volume group "vg0" successfully created #所有的空间都做逻辑卷 [root10:58 AMcentos8 ~]#lvcreate -n mysql -l 100%vg vg0 Logical volume "mysql" created. [root10:59 AMcentos8 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mysql vg0 -wi-a----- 9.99g [root10:59 AMcentos8 ~]#vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 9.99 GiB PE Size 4.00 MiB Total PE 2558 Alloc PE / Size 2558 / 9.99 GiB Free PE / Size 0 / 0 VG UUID 24EUtO-waB2-hKy8-qEHW-Qs1D-PZ2b-sPkrhb #格式化 [root11:00 AMcentos8 ~]#mkfs.ext4 /dev/vg0/mysql #挂载 [root11:03 AMcentos8 ~]#mount /dev/vg0/mysql /lv #缩减逻辑卷有风险,建议先备份 1 先取消挂载 [root11:09 AMcentos8 ~]#umount /lv 2.先检查文件系统的完整,不检查文件系统后面的步骤无法实现 [root11:12 AMcentos8 ~]#fsck -f /dev/vg0/mysql fsck from util-linux 2.32.1 e2fsck 1.45.6 (20-Mar-2020) 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/mapper/vg0-mysql: 13/655360 files (0.0% non-contiguous), 66755/2619392 blocks 3 缩减文件系统 [root11:13 AMcentos8 ~]#resize2fs /dev/vg0/mysql 1G resize2fs 1.45.6 (20-Mar-2020) Resizing the filesystem on /dev/vg0/mysql to 262144 (4k) blocks. The filesystem on /dev/vg0/mysql is now 262144 (4k) blocks long. 4 缩减逻辑卷 [root11:15 AMcentos8 ~]#lvreduce -L 1G /dev/vg0/mysql WARNING: Reducing active logical volume to 1.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg0/mysql? [y/n]: y Size of logical volume vg0/mysql changed from 9.99 GiB (2558 extents) to 1.00 GiB (256 extents). Logical volume vg0/mysql successfully resized. 5 挂载查看容量变小 [root11:16 AMcentos8 ~]#mount /dev/vg0/mysql /lv [root11:18 AMcentos8 ~]#df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 460M 0 460M 0% /dev tmpfs 477M 0 477M 0% /dev/shm tmpfs 477M 13M 464M 3% /run tmpfs 477M 0 477M 0% /sys/fs/cgroup /dev/sda2 100G 13G 87G 13% / /dev/sda3 50G 1.4G 49G 3% /data /dev/sda1 976M 118M 792M 13% /boot tmpfs 96M 0 96M 0% /run/user/0 /dev/mapper/vg0-mysql 944M 21M 857M 3% /lv #/dev/vg0/mysql /dev/mapper/vg0-mysql 都是dm-0的软链接 [root11:19 AMcentos8 ~]#ll /dev/vg0/mysql lrwxrwxrwx 1 root root 7 May 2 11:16 /dev/vg0/mysql -> ../dm-0 [root11:19 AMcentos8 ~]#ll /dev/mapper/vg0-mysql lrwxrwxrwx 1 root root 7 May 2 11:16 /dev/mapper/vg0-mysql -> ../dm-0

逻辑卷的快照

快照性能下降 空间限制, 测试用一下 #创建一个逻辑卷且格式化 [root11:45 AMcentos8 ~]#lvcreate -n binlog -L 500 vg0 [root11:45 AMcentos8 ~]#mkfs.xfs /dev/vg0/binlog #自动挂载 [root11:49 AMcentos8 ~]#mount -a # 拷贝数据到挂载目录 [root11:50 AMcentos8 /data/binlog]#cp /etc/fstab /etc/issue /etc/os-release /data/binlog/ #我现在的卷组里有两个逻辑卷 [root11:50 AMcentos8 /data/binlog]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert binlog vg0 -wi-ao---- 500.00m mysql vg0 -wi-ao---- 1.00g [root11:51 AMcentos8 /data/binlog]#vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 9.99 GiB PE Size 4.00 MiB Total PE 2558 Alloc PE / Size 381 / <1.49 GiB #已经使用的PE个数是381个 Free PE / Size 2177 / 8.50 GiB #空闲的PE还有2177个 VG UUID 24EUtO-waB2-hKy8-qEHW-Qs1D-PZ2b-sPkrhb #创建快照要确保vg的空间还够

创建快照

[root11:51 AMcentos8 /data/binlog]#lvcreate -n binlog-snapshot -s -L 100M /dev/vg0/binlog Logical volume "binlog-snapshot" created. -n binlog-snapshot :创建一个叫 binlog-snapshot 的快照 -s 指明是快照,不加s 就误认为是逻辑卷 -L 100M 指明快照的大小

[root12:03 PMcentos8 /data/binlog]#lvdisplay --- Logical volume --- LV Path /dev/vg0/mysql LV Name mysql VG Name vg0 LV UUID ALzsqN-W5e1-dVx6-EI8a-VG1t-cv99-rruQpo LV Write Access read/write LV Creation host, time centos8.magedu.com, 2021-05-02 10:59:47 +0800 LV Status available # open 1 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 --- Logical volume --- LV Path /dev/vg0/binlog LV Name binlog VG Name vg0 LV UUID 5LwdHD-7Hq1-5Pvh-WCCj-7ET6-qQ5D-2CCSKj LV Write Access read/write LV Creation host, time centos8.magedu.com, 2021-05-02 11:45:43 +0800 LV snapshot status source of binlog-snapshot [active] #说明了什么是我的快照 LV Status available # open 1 LV Size 500.00 MiB Current LE 125 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/vg0/binlog-snapshot 3快照文件 LV Name binlog-snapshot VG Name vg0 LV UUID uj3TxC-XQdi-KM1t-sakh-Y06j-JEmM-QfDf1X LV Write Access read/write LV Creation host, time centos8.magedu.com, 2021-05-02 12:03:57 +0800 LV snapshot status active destination for binlog #对binlog的快照 LV Status available # open 0 LV Size 500.00 MiB Current LE 125 COW-table size 100.00 MiB COW-table LE 25 Allocated to snapshot 0.02% Snapshot chunk size 4.00 KiB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:4 [root12:13 PMcentos8 /data/binlog]#blkid /dev/mapper/vg0-mysql: UUID="17eee59c-438b-415a-8fd1-9426e95469de" TYPE="ext4" /dev/mapper/vg0-binlog: UUID="e016cbb5-3e44-414f-b150-9e39f493f036" TYPE="xfs" /dev/sda1: UUID="37e18d75-7231-4d84-8536-18e1b3a891f6" TYPE="ext4" PARTUUID="80c09a6f-01" /dev/sda2: UUID="55d00b68-d8ef-4c35-aa11-b8c11b91e867" TYPE="xfs" PARTUUID="80c09a6f-02" /dev/sda3: UUID="fdcd162f-2ea2-4088-9e86-6a911336304a" TYPE="xfs" PARTUUID="80c09a6f-03" /dev/sda5: UUID="d81ef34a-c3dd-4483-b830-4cf516cbec7c" TYPE="swap" PARTUUID="80c09a6f-05" /dev/sdb1: UUID="fwJ2ct-4fPI-3MyZ-BKHy-DB6k-d39v-hiGrto" TYPE="LVM2_member" PARTUUID="a3103b56-01" /dev/sdb2: UUID="xtn9y9-si6o-yWdR-VSEg-zLWc-KPjO-gzbFtB" TYPE="LVM2_member" PARTUUID="a3103b56-02" /dev/mapper/vg0-binlog--snapshot: UUID="e016cbb5-3e44-414f-b150-9e39f493f036" TYPE="xfs" /dev/mapper/vg0-binlog 和 /dev/mapper/vg0-binlog--snapshot 的UUID是一样的,xfs文件系统无法通过uuid来挂载 [root12:16 PMcentos8 /data/binlog]#mount /dev/vg0/binlog-snapshot /mnt/snap/ mount: /mnt/snap: wrong fs type, bad option, bad superblock on /dev/mapper/vg0-binlog--snapshot, missing codepage or helper program, or other error. #正确的挂载方式: [root12:17 PMcentos8 /data/binlog]#mount -o nouuid,ro /dev/vg0/binlog-snapshot /mnt/snap/ [root12:20 PMcentos8 /data/binlog]#ls /mnt/snap/ 看到数据证明快照能备份 fstab issue os-release 现在我修改逻辑卷里面的东西,但是快照里面的是不会方式变化的 [root12:25 PMcentos8 /data/binlog]#ll /data/binlog/ total 12 -rw-r--r-- 1 root root 899 May 2 11:50 fstab -rw-r--r-- 1 root root 23 May 2 11:50 issue -rw-r--r-- 1 root root 420 May 2 11:50 os-release [root12:25 PMcentos8 /data/binlog]#\rm /data/binlog/fstab [root12:26 PMcentos8 /data/binlog]#ll /mnt/snap/ total 12 -rw-r--r-- 1 root root 899 May 2 11:50 fstab #快照里面的东西不会丢失 -rw-r--r-- 1 root root 23 May 2 11:50 issue -rw-r--r-- 1 root root 420 May 2 11:50 os-release #现在文件里面增加了,但是快照里面的文件是不会改变的 [root12:27 PMcentos8 /data/binlog]#touch f.txt [root12:28 PMcentos8 /data/binlog]#ll total 8 -rw-r--r-- 1 root root 0 May 2 12:28 f.txt -rw-r--r-- 1 root root 23 May 2 11:50 issue -rw-r--r-- 1 root root 420 May 2 11:50 os-release [root12:28 PMcentos8 /data/binlog]#ll /mnt/snap/ #发现快照里面永远都是最初的状态 total 12 -rw-r--r-- 1 root root 899 May 2 11:50 fstab -rw-r--r-- 1 root root 23 May 2 11:50 issue -rw-r--r-- 1 root root 420 May 2 11:50 os-release

恢复快照

#取消逻辑卷和快照的挂载 [root12:28 PMcentos8 /data/binlog]#umount /data/binlog/ /mnt/snap/ #恢复快照 [root12:31 PMcentos8 ~]#lvconvert --merge /dev/vg0/binlog-snapshot Merging of volume vg0/binlog-snapshot started. vg0/binlog: Merged: 100.00% #完成任务,快照自动被删除 [root12:34 PMcentos8 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert binlog vg0 -wi-a----- 500.00m mysql vg0 -wi-ao---- 1.00g #查看文件被恢复 root12:38 PMcentos8 ~]#mount -a [root12:38 PMcentos8 ~]#ll /data/binlog/ total 12 -rw-r--r-- 1 root root 899 May 2 11:50 fstab -rw-r--r-- 1 root root 23 May 2 11:50 issue -rw-r--r-- 1 root root 420 May 2 11:50 os-release

快照的优点: 快 ,方便测试

pvmove移动PE

[root12:53 PMcentos8 ~]#pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name vg0 PV Size 5.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 1279 Free PE 898 Allocated PE 381 PV UUID fwJ2ct-4fPI-3MyZ-BKHy-DB6k-d39v-hiGrto --- Physical volume --- PV Name /dev/sdb2 VG Name vg0 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 xtn9y9-si6o-yWdR-VSEg-zLWc-KPjO-gzbFtB [root12:53 PMcentos8 ~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert binlog vg0 -wi-ao---- 500.00m mysql vg0 -wi-ao---- 1.00g #移动sdb1磁盘上的PE [root12:56 PMcentos8 ~]#pvmove /dev/sdb1 /dev/sdb1: Moved: 8.66% /dev/sdb1: Moved: 67.19% /dev/sdb1: Moved: 100.00% [root12:59 PMcentos8 ~]#pvdisplay --- Physical volume --- PV Name /dev/sdb1 #该分区上的数据全部挪动到 /dev/sdb2 上了 VG Name vg0 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 fwJ2ct-4fPI-3MyZ-BKHy-DB6k-d39v-hiGrto --- Physical volume --- PV Name /dev/sdb2 VG Name vg0 PV Size 5.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 1279 Free PE 898 Allocated PE 381 PV UUID xtn9y9-si6o-yWdR-VSEg-zLWc-KPjO-gzbFtB #从卷组里删除sdb1这个成员 [root12:59 PMcentos8 ~]#vgreduce vg0 /dev/sdb1 Removed "/dev/sdb1" from volume group "vg0" #从pv里面删除 sdb1 这个成员,让他不是物理卷 [root01:04 PMcentos8 ~]#pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped. #pvs彻底看不到他了 [root01:05 PMcentos8 ~]#pvs PV VG Fmt Attr PSize PFree /dev/sdb2 vg0 lvm2 a-- <5.00g <3.51g #fdisk 删除分区 [root01:17 PMcentos8 ~]#fdisk /dev/sdb [root01:17 PMcentos8 ~]#lsblk # sdb2里就不会有内容了 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 100G 0 part / ├─sda3 8:3 0 50G 0 part /data ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 4G 0 part [SWAP] sdb 8:16 0 20G 0 disk └─sdb2 8:18 0 5G 0 part ├─vg0-mysql 253:0 0 1G 0 lvm /data/mysql └─vg0-binlog 253:1 0 500M 0 lvm /data/binlog sr0 11:0 1 1024M 0 rom

删除逻辑卷

1.取消所有逻辑卷的挂载,且删除/etc/fstab文件里面的挂载信息 2.删除所有的逻辑卷 [root01:26 PMcentos8 ~]#lvremove /dev/vg0/* Do you really want to remove active logical volume vg0/mysql? [y/n]: y 3.删除卷组 [root01:27 PMcentos8 ~]#vgremove vg0 4.删除物理卷 [root01:28 PMcentos8 ~]#pvremove /dev/sdb2 Labels on physical volume "/dev/sdb2" successfully wiped.

vg管理工具

显示卷组

vgs vgdisplay

创建卷组

vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

管理卷组

vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]

删除卷组

先做pvmove

再做vgremove

lv**管理工具**

显示逻辑卷

lvs Lvdisplay

创建逻辑卷

lvcreate -L #[mMgGtT] -n NAME VolumeGroup

lvcreate -l 60%VG -n mylv testvg lvcreate -l 100%FREE -n yourlv testvg

删除逻辑卷

lvremove /dev/VG_NAME/LV_NAME

fsadm [options] resize device [new_size[BKMGTEP]] resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size] xfs_growfs /mountpoint

#创建物理卷 pvcreate /dev/sda3 #为卷组分配物理卷 vgcreate vg0 /dev/sda3 #从卷组创建逻辑卷 lvcreate  -L 256M  -n data vg0 #mkfs.xfs   /dev/vg0/data #挂载 mount /dev/vg0/data /mnt/data#

扩展和缩减逻辑卷

在线扩展逻辑卷

lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME #针对ext resize2fs /dev/VG_NAME/LV_NAME #针对xfs xfs_growfs MOUNTPOINT lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME

缩减逻辑卷

注意:缩减有数据损坏的风险,建议先备份再缩减,xfs文件系统不支持缩减

umount /dev/VG_NAME/LV_NAME e2fsck -f /dev/VG_NAME/LV_NAME resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME mount

[root@centos8 ~]#blkid /dev/vg0/mysql /dev/vg0/mysql: UUID="94674607-2196-4015-9194-4632ac23f36a" TYPE="ext4" [root@centos8 ~]#lvs LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mysql vg0 -wi-a----- 2.99g   [root@centos8 ~]#df Filesystem           1K-blocks   Used Available Use% Mounted on devtmpfs                 391676       0    391676   0% /dev tmpfs                    408092       0    408092   0% /dev/shm tmpfs                    408092    5792    402300   2% /run tmpfs                    408092       0    408092   0% /sys/fs/cgroup /dev/sda2             104806400 2274504 102531896   3% / /dev/sda3              52403200  398576  52004624   1% /data /dev/sda1                999320  130848    799660  15% /boot tmpfs                     81616       0     81616   0% /run/user/0 /dev/mapper/vg0-mysql   3022704    9204   2840240   1% /data/mysql #第一步 [root@centos8 ~]#umount /data/mysql [root@centos8 ~]#resize2fs /dev/vg0/mysql 1G resize2fs 1.44.6 (5-Mar-2019) Please run 'e2fsck -f /dev/vg0/mysql' first. #第二步 [root@centos8 ~]#fsck -f /dev/vg0/mysql fsck from util-linux 2.32.1 e2fsck 1.44.6 (5-Mar-2019) 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/mapper/vg0-mysql: 14/196224 files (0.0% non-contiguous), 31009/784384 blocks #第三步 [root@centos8 ~]#resize2fs /dev/vg0/mysql 1G resize2fs 1.44.6 (5-Mar-2019) Resizing the filesystem on /dev/vg0/mysql to 262144 (4k) blocks. The filesystem on /dev/vg0/mysql is now 262144 (4k) blocks long. [root@centos8 ~]#lvs LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mysql vg0 -wi-a----- 2.99g                                                     [root@centos8 ~]#df Filesystem     1K-blocks   Used Available Use% Mounted on devtmpfs          391676       0    391676   0% /dev tmpfs             408092       0    408092   0% /dev/shm tmpfs             408092    5792    402300   2% /run tmpfs             408092       0    408092   0% /sys/fs/cgroup /dev/sda2      104806400 2274504 102531896   3% / /dev/sda3       52403200  398576  52004624   1% /data /dev/sda1         999320  130848    799660  15% /boot tmpfs              81616       0     81616   0% /run/user/0 [root@centos8 ~]#mount -a [root@centos8 ~]#df Filesystem           1K-blocks   Used Available Use% Mounted on devtmpfs                 391676       0    391676   0% /dev tmpfs                    408092       0    408092   0% /dev/shm tmpfs                    408092    5792    402300   2% /run tmpfs                    408092       0    408092   0% /sys/fs/cgr /dev/sda2             104806400 2274504 102531896   3% / /dev/sda3              52403200  398576  52004624   1% /data /dev/sda1                999320  130848    799660  15% /boot tmpfs                     81616       0     81616   0% /run/user/0 /dev/mapper/vg0-mysql    966584    7676    890096   1% /data/mysql [root@centos8 ~]#df -h Filesystem             Size Used Avail Use% Mounted on devtmpfs               383M     0 383M   0% /dev tmpfs                 399M     0 399M   0% /dev/shm tmpfs                 399M  5.7M 393M   2% /run tmpfs                 399M     0 399M   0% /sys/fs/cgroup /dev/sda2             100G  2.2G   98G   3% / /dev/sda3               50G 390M   50G   1% /data /dev/sda1             976M 128M 781M  15% /boot tmpfs                   80M     0   80M   0% /run/user/0 /dev/mapper/vg0-mysql 944M  7.5M 870M   1% /data/mysql [root@centos8 ~]#lvs LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mysql vg0 -wi-ao---- 2.99g                                                     [root@centos8 ~]#umount /data/mysql #第四步 [root@centos8 ~]#lvreduce -L 1G /dev/vg0/mysql WARNING: Reducing active logical volume to 1.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg0/mysql? [y/n]: y Size of logical volume vg0/mysql changed from 2.99 GiB (766 extents) to 1.00 GiB (256 extents). Logical volume vg0/mysql successfully resized.     #第五步 [root@centos8 ~]#mount -a [root@centos8 ~]#lvs LV   VG Attr       LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mysql vg0 -wi-ao---- 1.00g                                                     [root@centos8 ~]#df -h Filesystem             Size Used Avail Use% Mounted on devtmpfs               383M     0 383M   0% /dev tmpfs                 399M     0 399M   0% /dev/shm tmpfs                 399M  5.7M 393M   2% /run tmpfs                 399M     0 399M   0% /sys/fs/cgroup /dev/sda2             100G  2.2G   98G   3% / /dev/sda3               50G 390M   50G   1% /data /dev/sda1             976M 128M 781M  15% /boot tmpfs                   80M     0   80M   0% /run/user/0 /dev/mapper/vg0-mysql 944M  7.5M 870M   1% /data/mysql

跨主机迁移卷组

源计算机上

1 在旧系统中,umount所有卷组上的逻辑卷

2 禁用卷组

vgchange –a n vg0 lvdisplay

3 导出卷组

vgexport vg0 pvscan vgdisplay

4.拆下旧硬盘在目标计算机上,并导入卷组:

vgimport vg0

5 启用

vgchange –ay vg0

6 mount 所有卷组上的逻辑卷

逻辑卷快照

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝,对于需要备份或者复制的现有数据临

时拷贝以及其它操作来说,快照是最合适的选择,快照只有在它们和原来的逻辑卷不同时才会消耗空间,

建立快照的卷大小小于等于原始逻辑卷,也可以使用lvextend扩展快照

逻辑卷管理器快照

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移

动到快照区,没有改动的区域则由快照区和文件系统共享

逻辑卷快照工作原理

在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间

当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中

快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候

的文件数量不能高于快照区的实际容量

快照特点:

备份速度快,瞬间完

应用场景是测试环境,不能完成代替备份

快照后,逻辑卷的修改速度会一定有影响

mkfs.xfs /dev/vg0/data mount /dev/vg0/data/ /mnt/data #为现有逻辑卷创建快照 lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data #挂载快照 mkdir  -p /mnt/snap mount -o ro /dev/vg0/data-snapshot   /mnt/snap #恢复快照 umount /dev/vg0/data-snapshot umount /dev/vg0/data lvconvert --merge /dev/vg0/data-snapshot #删除快照 umount /mnt/databackup lvremove /dev/vg0/databackup

练习

1、创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创 建大小为5G的逻辑卷testlv;挂载至/users目录

#第一步:识别硬盘 echo '- - -' >/sys/class/scsi_host/host0/scan echo '- - -' >/sys/class/scsi_host/host1/scan echo '- - -' >/sys/class/scsi_host/host2/scan #第二步:分区 [root09:54 PMcentos8 /dev/mapper]#parted /dev/sdb print mklabel msdos [root09:55 PMcentos8 /dev/mapper]#parted /dev/sdb mkpart primary 1 10240 [root09:55 PMcentos8 /dev/mapper]#parted /dev/sdb mkpart primary 10241 20482 第三步格式化 [root10:00 PMcentos8 /dev/mapper]#mkfs.ext4 /dev/sdb1 [root10:00 PMcentos8 /dev/mapper]#mkfs.ext4 /dev/sdb2 第四步:查看 [root10:01 PMcentos8 /dev/mapper]#blkid /dev/sdb2 /dev/sdb1 第五步:fdisk 转8e 逻辑卷 Device Boot Start End Sectors Size Id Type /dev/sdb1 20002816 40003583 20000768 9.6G 8e Linux LVM /dev/sdb2 2048 20000767 19998720 9.5G 8e Linux LVM 第六步:创建PV [root10:19 PMcentos8 /dev/mapper]#pvcreate /dev/sdb{1..2} WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/sdb1. WARNING: ext4 signature detected on /dev/sdb2 at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/sdb2. Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created. 第七步:创建卷组。设置PE 大小

[root10:36 PMcentos8 /dev/mapper]#mkdir /user [root10:36 PMcentos8 /dev/mapper]#mount -a

2、 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复

制/etc/pam.d目录至自己的家目录

[root10:37 PMcentos8 /dev/mapper]#useradd -d /users/archlinux archlinux [root10:40 PMcentos8 /dev/mapper]#su - archlinux [archlinux@centos8 ~]$ cp -r /etc/pam.d /users/archlinux [archlinux@centos8 ~]$

3、扩展testlv至7G,要求archlinux用户的文件不能丢失

[root10:42 PMcentos8 /dev/mapper]#lvextend -L 7G /dev/testvg/testlv Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents). Logical volume testvg/testlv successfully resized. [root10:43 PMcentos8 /dev/mapper]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert data cl -wi-ao---- 100.00g root cl -wi-ao---- 89.99g swap cl -wi-ao---- 8.00g testlv testvg -wi-ao---- 7.00g

4、收缩testlv至3G,要求archlinux用户的文件不能丢失

[root10:45 PMcentos8 /dev/mapper]# cp -r /users/archlinux /mnt/archlinux.bak [root10:47 PMcentos8 /dev/mapper]#umount /user [root10:47 PMcentos8 /dev/mapper]#resize2fs /dev/testvg/testlv 3G #缩减文件系统 resize2fs 1.45.4 (23-Sep-2019) Please run 'e2fsck -f /dev/testvg/testlv' first. [root10:47 PMcentos8 /dev/mapper]#e2fsck -f /dev/testvg/testlv e2fsck 1.45.4 (23-Sep-2019) 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/testvg/testlv: 11/327680 files (0.0% non-contiguous), 42078/1310720 blocks [root10:48 PMcentos8 /dev/mapper]#lvreduce -L 3G /dev/testvg/testlv #缩减逻辑卷 WARNING: Reducing active logical volume to 3.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce testvg/testlv? [y/n]: y Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 3.00 GiB (192 extents). Logical volume testvg/testlv successfully resized. #重新挂载 [root10:51 PMcentos8 /dev/mapper]#cp -r /mnt/archlinux.bak /users/archlinux [root11:00 PMcentos8 /dev/mapper]# chmod 700 /users/archlinux [root11:01 PMcentos8 /dev/mapper]# chown -R archlinux:archlinux /users/archlinux [root11:01 PMcentos8 /dev/mapper]#

5、对testlv创建快照,并尝试基于快照备份数据,验证快照的功能

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:日更工商数据(工商日更资料)
下一篇:根据身份证识别男女(根据身份证识别男女性别)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~