首页 > 其他分享 >磁盘管理

磁盘管理

时间:2024-11-22 21:10:38浏览次数:1  
标签:管理 vg0 文件系统 dev data web01 磁盘 root

文件系统

ext4:小文件多场景

xfs:大文件多场景

格式化文件系统

mkfs

文件是由inode和block组合而成
inode是元数据  --文件大小,文件拥有人拥有组,文件时间戳,文件指针,文件权限
删除数据的时候只是删除索引,当有新数据写入才会删除索引

block size 文件系统的最小存储单元,默认是4k

文件夹的索引存放该文件夹中所有文件名,文件索引号等信息 


cp一个文件到相同分区或者不同分区inode会变
mv一个文件到相同分区inode不变,不同分区inode会变

硬链接inode一样,硬链接不能跨分区做 ln
软链接可以跨分区,因为软链接指向文件的索引         ln -s

ext4

[root@localhost ~]# tune2fs -l /dev/nvme0n2 
tune2fs 1.45.6 (20-Mar-2020)
Filesystem volume name:   <none>    
Last mounted on:          <not available>
Filesystem UUID:          a5d44a09-c2d1-485d-8860-de5c7bdeb30d # 唯一标识符,文件系统的唯一ID
Filesystem magic number:  0xEF53  
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean  #当前文件系统状态,这里显示为clean,表示文件系统没有错误
Errors behavior:          Continue  #错误处理策略,这里是Continue,表示在遇到错误时继续操作。
Filesystem OS type:       Linux
Inode count:              3276800   #文件系统中的inode总数,inode用于存储文件的元数据。
Block count:              13107200  #文件系统中的块总数。
Reserved block count:     655360
Free blocks:              12822642   # 当前空闲的块数,表示还有多少存储空间可用
Free inodes:              3276789     # 当前空闲的inode数
First block:              0
Block size:               4096  # 每个块的大小,这里是4096字节。
Fragment size:            4096  #指的是文件系统将文件分割成更小单位的大小
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Thu Oct 31 17:31:00 2024  # 文件系统创建的时间。
Last mount time:          n/a
Last write time:          Thu Oct 31 17:31:00 2024
Mount count:              0
Maximum mount count:      -1
Last checked:             Thu Oct 31 17:31:00 2024
Check interval:           0 (<none>)
Lifetime writes:          4223 kB  #该文件系统的写入总量,这里是4223 kB。
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256  #inode大小
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      d6a3db67-2a22-45e7-8209-6bb7091272b8
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0xea33d108

-b block-size
指定块的大小(以字节为单位)。有效的块大小值为1024、2048和4096字节

xfs

[root@localhost ~]# xfs_info /dev/nvme0n2
meta-data=/dev/nvme0n2           isize=512    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


isize: inode的大小(通常为512字节)。
bsize: 块的大小(4096字节)。
blocks: 数据块的总数。
imaxpct: inode的最大百分比(这里是25%)。
-b
默认值为4096字节(4 KiB),最小为512字节,最大为65536字节(64 KiB)。

查看文件夹大小

du -sh查看的是占用块文件大小

ls -lh查看的是文件实际大小

[root@localhost ~]# ls -lha /data/|head -2  
total 96K
#ls -lha /data/ 显示的 total 96K 是 /data 目录下所有文件和目录的总块数(以KB为单位)。这个大小包括了文件系统块的分配情况,而不是文件的实际内容大小
dr-xr-xr-x.  24 root root 4.0K Oct 29 10:14 .
[root@localhost ~]# ls -lh /data/|head -2
total 24K
#ls -lh 命令可以查看当前目录下的文件和目录的详细信息,包括它们的大小。
drwxr-xr-x.   6 root root   54 Oct 29 14:12 backup
[root@localhost ~]# du -sh /data/|head -2
18M	/data/
#这个看的是占用快大小
[root@localhost ~]# du -sh  --apparent-size /data/|head -2
16M	/data/
#du -sh --apparent-size /data 显示的 16M 是 /data 目录下所有文件的实际内容大小。这意味着文件的字节数加在一起的结果,而不考虑它们在磁盘上实际占用的空间。

磁盘分区方案

1.MBR
单块硬盘不得超过2TB,超过的系统不识别
一块硬盘只能创建4个主分区,多出的创建扩展分区,扩展分区要使用剩下的全部空间。
使用fdisk
2.GPT
超过2TB的使用gpt,使用gdisk

硬盘分区

fdisk分区

[root@web01 tmp]# fdisk /dev/nvme0n2

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

The old xfs signature will be removed by a write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x319b0219.

Command (m for help): 
Command (m for help): p    #按p打印分区表

Disk /dev/nvme0n2: 50 GiB, 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
Disklabel type: dos
Disk identifier: 0x319b0219

Command (m for help): n #按n新建分区
Partition type
   p   primary (0 primary, 0 extended, 4 free) #主分区
   e   extended (container for logical partitions) #扩展分区 
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-104857599, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-104857599, default 104857599): +10g #分10g给第一个分区

Created a new partition 1 of type 'Linux' and of size 10 GiB.

Command (m for help): p  
Disk /dev/nvme0n2: 50 GiB, 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
Disklabel type: dos
Disk identifier: 0x319b0219

Device         Boot Start      End  Sectors Size Id Type
/dev/nvme0n2p1       2048 20973567 20971520  10G 83 Linux  #这里看到成功了

Command (m for help): w  #保存并退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.


如果是centos7
分区后需要执行 partprobe


2.格式化
mkfs.ext4  /dev/sdb

3.挂载
[root@web01 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Oct 30 13:52:18 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=255cf4af-0510-4f44-9b61-a05194f5a781 /boot                   xfs     defaults        0 0
/dev/mapper/cl-home     /home                   xfs     defaults        0 0
/dev/mapper/cl-swap     none                    swap    defaults        0 0
/dev/sr0               /var/www/html/dvd                   iso9660   defaults  0 0 
写入配置文件后执行mount -a

脚本分区

parted

#!/bin/bash

# 设置要分区的磁盘
DISK="/dev/sdX"

# 创建分区
parted $DISK --script mklabel gpt

# 创建分区
parted $DISK --script mkpart primary  1MiB 50GiB
parted $DISK --script mkpart primary  50GiB 100GiB
parted $DISK --script mkpart primary  100GiB 100%

# 格式化分区
mkfs.ext4 ${DISK}1
mkfs.ext4 ${DISK}2
mkfs.ext4 ${DISK}3

# 打印分区表
parted $DISK print


--script 选项在使用 parted 时表示以非交互模式运行命令

卸载不掉磁盘解决办法

[root@web01 tmp]# umount /var/www/html/dvd
umount: /var/www/html/dvd: target is busy.

[root@web01 tmp]# fuser -v /var/www/html/dvd  查看访问文件系统的进程
                     USER        PID ACCESS COMMAND
/var/www/html/dvd:   root     kernel mount /var/www/html/dvd
                     root      62172 ..c.. bash

1.结束62172进程
2.fuser -km /var/www/html/dvd 结束所有访问这个文件夹的用户


还有一种情况是文件夹里面有文件被用作swap分区

拉伸文件系统

sdb           8:16   0    3T  0 disk 
└─sdb1        8:17   0   10G  0 part /root/text


第一种方法
[root@web01 ~]# gdisk /dev/sdb


Command (? for help): d   #先删除这个分区
Using 1

Command (? for help): p  #打印确保删除
Disk /dev/sdb: 6291456000 sectors, 2.9 TiB


Number  Start (sector)    End (sector)  Size       Code  Name

Command (? for help): n   #新建分区
Partition number (1-128, default 1): 
First sector (34-6291455966, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-6291455966, default = 6291455966) or {+-}size{KMGTP}: +20G  
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): p  # 打印分区发现变成20g

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        41945087   20.0 GiB    8300  Linux filesystem

Command (? for help): w #保存退出

[root@web01 ~]# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   99G  0 part 
  ├─cl-root 253:0    0 63.9G  0 lvm  /
  ├─cl-swap 253:1    0    4G  0 lvm  [SWAP]
  └─cl-home 253:2    0 31.2G  0 lvm  /home
sdb           8:16   0    3T  0 disk     
└─sdb1        8:17   0   10G  0 part /root/text  #发现还是10g

[root@web01 ~]# partprobe /dev/sdb    partprobe 命令的作用就是强制操作系统重新加载分区表,以便让新的分区结构或调整生效。


[root@web01 ~]# resize2fs /dev/sdb1  拉伸文件系统
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/sdb1 is mounted on /root/text; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/sdb1 is now 5242880 (4k) blocks long.

[root@web01 ~]# df -Th
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  1.8G     0  1.8G   0% /dev
tmpfs               tmpfs     1.9G   11M  1.9G   1% /run
tmpfs               tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/cl-root xfs        64G  5.4G   59G   9% /
tmpfs               tmpfs     371M   24K  371M   1% /run/user/976
tmpfs               tmpfs     371M     0  371M   0% /run/user/0
/dev/sda1           xfs      1014M  242M  773M  24% /boot
/dev/mapper/cl-home xfs        32G  255M   31G   1% /home
/dev/sr0            iso9660   9.3G  9.3G     0 100% /var/www/html/dvd
/dev/sdb1           ext4       20G   44M   19G   1% /root/text  #发现变成20g


如果是xfs使用 xfs_growfs 

只能拉伸最后一个分区



第二种方法
growpart 

sdb           8:16   0    3T  0 disk 
└─sdb1        8:17   0   20G  0 part /root/text


[root@web01 ~]# growpart /dev/sdb 1   代表拉伸sdb第一个分区,占用sdb所有空间
CHANGED: partition=1 start=2048 old: size=41943040 end=41945088 new: size=6291453919 end=6291455967

sdb           8:16   0    3T  0 disk 
└─sdb1        8:17   0    3T  0 part /root/text

swap交换分区

[root@web01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3709        1076         730          26        1903        2336
Swap:          4031           0        4031


swap为硬盘中的容量临时作为内存来使用防止机器内存爆满而死机
[root@web01 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	4128764	0	-2


Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         4196351   2.0 GiB     8300  Linux filesystem

Command (? for help): t #修改分区类型
Using 1
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200  #修改为linux swap
Changed type of partition to 'Linux swap'


Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         4196351   2.0 GiB     8200  Linux swap

Command (? for help): w

[root@web01 ~]# mkswap /dev/sdb1 将sdb1格式化为swap
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=2b1377ce-30e1-48ae-8b7c-04c21f51962c


[root@web01 ~]# cat /etc/fstab |grep swap  写入配置文件
/dev/mapper/cl-swap     none                    swap    defaults        0 0
/dev/sdb1  none   swap defaults 0 0


root@web01 ~]# swapon -a  挂载
[root@web01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3709        1078         740          26        1890        2334
Swap:          6079           0        6079



如果分区分完了,可以将文件拿来做swap
[root@web01 ~]# dd if=/dev/zero of=/root/text/1 bs=1M count=512 创建一个512m的文件
[root@web01 ~]# mkswap /root/text/1  将文件格式化为swap
mkswap: /root/text/1: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 512 MiB (536866816 bytes)
no label, UUID=a6c9ca20-32ea-40df-bbc3-c197e403ca6c


[root@web01 ~]# swapon /root/text/1  临时挂载
swapon: /root/text/1: insecure permissions 0644, 0600 suggested.
[root@web01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3709        1075         230          26        2403        2336
Swap:          4543           0        4543    swap空间变大了

[root@web01 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	4128764	0	-2 #swap优先级,数字越高优先级越高

修复损坏磁盘

文件的元数据(Metadata)

元数据通常存储在inode(索引节点)中。

文件的元数据是描述文件本身的辅助信息,而不包含文件的实际内容。它们通常包括以下内容:

文件名(File Name):文件的名称。
文件大小(File Size):文件内容的大小,通常以字节为单位。
文件类型(File Type):文件是普通文件、目录、符号链接还是设备文件等。
权限(Permissions):文件的访问权限,指定谁可以读取、写入或执行文件。通常包含读、写、执行权限。
所有者(Owner):文件的拥有者,通常是用户ID(UID)。
组(Group):文件所属的用户组,通常是组ID(GID)。
时间戳(Timestamps):文件的创建时间、最后访问时间和最后修改时间。
文件状态(File State):文件是否被锁定、是否为只读等状态信息。
链接计数(Link Count):文件的硬链接数,表示有多少不同路径指向同一文件内容。
索引节点(Inode):在类Unix文件系统中,文件元数据通常保存在一个称为“inode”的结构中,它存储了文件的所有元数据(除了文件名以外)。
在类Unix系统中,所有的文件元数据(除了文件名)都存储在 inode 中。inode中记录了文件的存储位置、大小、权限、所有者、时间戳等信息。

文件系统的超级块(Superblock)

通常位于磁盘的文件系统头部

超级块通常包含以下内容:

文件系统的大小(Filesystem Size):整个文件系统的大小,通常是以块(block)为单位。
块大小(Block Size):文件系统使用的基本存储单元的大小,通常是512字节、1024字节、2048字节或4096字节。
空闲块数(Free Blocks):文件系统中当前剩余的空闲块数量。
空闲inode数(Free Inodes):文件系统中当前剩余的空闲inode数量。
块位图(Block Bitmap):标记哪些块是空闲的,哪些块已经被使用。
inode位图(Inode Bitmap):标记哪些inode是空闲的,哪些inode已经被分配给文件。
文件系统的状态(Filesystem State):文件系统的健康状态,例如是否有错误,是否需要修复等。
创建时间(Creation Time):文件系统创建的时间戳。
文件系统版本(Filesystem Version):文件系统的版本号。
挂载点(Mount Point):文件系统的挂载点路径。
块大小、块数目等其他文件系统的特性:这些信息有助于文件系统管理器(如Linux的ext4或XFS文件系统)对整个文件系统进行优化。

存储单位 大小范围 说明
扇区(Sector) 512 字节 或 4KB(4096字节) 硬盘和SSD的最小物理存储单位
文件系统块(Block) 512字节、1KB、2KB、4KB、8KB、16KB、64KB等 文件系统的最小逻辑存储单位,通常为4KB
磁盘页(Page) 通常为4KB或8KB 操作系统和数据库中用于内存管理的基本单位
页组(Page Group) 通常为4KB或8KB 某些文件系统中的大块管理单位
硬盘头部信息 MBR = 512byte==引导程序 + 16*4 分区表 + 结束位

扇区(Sector):硬盘或固态硬盘的最小物理存储单元,通常为 512字节 或 4KB。
块(Block):文件系统的最小逻辑存储单位,通常为 4KB,但也可以是 1KB、2KB、8KB 等,具体取决于文件系统的设计。


模拟文件系统损坏

[root@web01 ~]# dd if=/dev/zero of=/dev/sdb1 bs=1k count=4
4+0 records in
4+0 records out
4096 bytes (4.1 kB, 4.0 KiB) copied, 0.00048365 s, 8.5 MB/s
[root@web01 ~]# mount /dev/sdb1 /root/text/
mount: /root/text: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error.

[root@web01 ~]# fsck -y /dev/sdb1


[root@web01 ~]# mount /dev/sdb1 /root/text/
[root@web01 ~]# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   99G  0 part 
  ├─cl-root 253:0    0 63.9G  0 lvm  /
  ├─cl-swap 253:1    0    4G  0 lvm  [SWAP]
  └─cl-home 253:2    0 31.2G  0 lvm  /home
sdb           8:16   0    3T  0 disk 
└─sdb1        8:17   0    2G  0 part /root/text



如果[root@web01 ~]# fsck -y /dev/sdb1修复不好
ext4系统可以使用 e2fsck -b 163840 -y /dev/sdb1
xfs系统使用 xfs_repair /dev/sdb1 

lvm

lv:逻辑卷  lv不能跨vg扩容  格式化lv后才能挂载
lvcreate创建
lvdisplay查看

vg:卷组 
vgcreate创建
vgdisplay查看
vgdisplay -v vg0 查看vg具体信息

pv:物理卷       
pvcreate 创建pv
pvdisplay查看pv

物理设备:block设备,分区,硬盘。raid阵列

创建逻辑卷

1.分区,转换类型为8e

分区后转换类型:
Command (? for help): t
Partition number (1-4): 3
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00  lvm类型
Changed type of partition to 'Linux LVM'

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         4196351   2.0 GiB     8200  Linux swap
   2         4196352        25167871   10.0 GiB    8E00  Linux LVM
   3        25167872        46139391   10.0 GiB    8E00  Linux LVM
   4        46139392        67110911   10.0 GiB    8300  Linux LVM

2.转换为pv

 [root@web01 ~]# pvcreate /dev/sdb2 /dev/sdb3
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdb3" successfully created.

 "/dev/sdb2" is a new physical volume of "10.00 GiB"
 --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               Hvs35Y-Gmi4-wyG1-labT-n2H6-rGbn-C1wR2g
   
  "/dev/sdb3" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               kVFTpa-qZZM-K9Zi-pQ23-ShwU-8Ash-3e0IzZ

3.创建vg

 root@web01 ~]# vgcreate vg0 /dev/sdb3 /dev/sdb2
  Volume group "vg0" successfully created

[root@web01 ~]# vgdisplay 
  --- Volume group ---
  VG Name               vg0
  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               19.99 GiB
  PE Size               4.00 MiB   #vg的最小单元 可以在创建vg时修改 vgcreate -s 8M vg0 /dev/sdb
  Total PE              5118
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5118 / 19.99 GiB
  VG UUID               geGK6F-dKvy-TY1h-tSF0-IqZI-pSFK-arEZhM





4.创建LV

[root@web01 ~]# lvcreate -L 4g -n data vg0  L 指定大小
[root@web01 ~]# lvcreate -L 4g -n data vg0  /dev/sdb2 指定从哪个设备上分 
[root@web01 ~]# lvcreate -l 500 -n data vg0  l指定pe数量
  Logical volume "data" created.
[root@web01 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg0/data
  LV Name                data
  VG Name                vg0
  LV UUID                qZBRWG-K0fg-7JQb-0ybu-RfWi-WJO5-K7enuN
  LV Write Access        read/write
  LV Creation host, time web01, 2024-11-07 17:54:35 +0800
  LV Status              available
  # open                 0
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3

5.格式化

[root@web01 ~]#mkfs.ext4 /dev/vg0/data


[root@web01 ~]# ll /dev/mapper/vg0-data 
lrwxrwxrwx 1 root root 7 Nov  7 18:02 /dev/mapper/vg0-data -> ../dm-3
[root@web01 ~]# ll /dev/vg0/data 
lrwxrwxrwx 1 root root 7 Nov  7 18:02 /dev/vg0/data -> ../dm-3


扩容逻辑卷

1.先创建pv
[root@web01 ~]# pvcreate /dev/sdb4
2.扩容vg
[root@web01 ~]# vgextend vg0 /dev/sdb4
  Volume group "vg0" successfully extended
[root@web01 ~]# vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  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               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       1024 / 4.00 GiB
  Free  PE / Size       6653 / <25.99 GiB
  VG UUID               geGK6F-dKvy-TY1h-tSF0-IqZI-pSFK-arEZhM
  
  3.扩容lv
  
[root@web01 ~]# lvextend -L  +10g /dev/vg0/data
  Size of logical volume vg0/data changed from 4.00 GiB (1024 extents) to 14.00 GiB (3584 extents).
  Logical volume vg0/data successfully resized.
[root@web01 ~]# lvdisplay /dev/vg0/data 
  --- Logical volume ---
  LV Path                /dev/vg0/data
  LV Name                data
  VG Name                vg0
  LV UUID                qZBRWG-K0fg-7JQb-0ybu-RfWi-WJO5-K7enuN
  LV Write Access        read/write
  LV Creation host, time web01, 2024-11-07 17:54:35 +0800
  LV Status              available
  # open                 1
  LV Size                14.00 GiB
  Current LE             3584
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3


4.拉伸文件系统
 [root@web01 ~]# resize2fs /dev/vg0/data 
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/vg0/data is mounted on /root/text; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/vg0/data is now 3670016 (4k) blocks long.

[root@web01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              1.8G     0  1.8G   0% /dev
tmpfs                 1.9G     0  1.9G   0% /dev/shm
tmpfs                 1.9G   19M  1.8G   1% /run
tmpfs                 1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/cl-root    64G  5.9G   59G  10% /
/dev/sr0              9.3G  9.3G     0 100% /var/www/html/dvd
/dev/mapper/cl-home    32G  255M   31G   1% /home
/dev/sda1            1014M  242M  773M  24% /boot
tmpfs                 371M   24K  371M   1% /run/user/976
tmpfs                 371M     0  371M   0% /run/user/0
/dev/mapper/vg0-data   14G   20M   14G   1% /root/text

缩小文件系统(停业务)

[root@web01 ~]# umount /root/text 
[root@web01 ~]# resize2fs /dev/vg0/data 10g   不能直接缩,需要先扫描卷
resize2fs 1.45.6 (20-Mar-2020)
Please run 'e2fsck -f /dev/vg0/data' first.  提示必须扫描磁盘后才能扩容

[root@web01 ~]# e2fsck -f /dev/vg0/data 
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/vg0/data: 11/917504 files (0.0% non-contiguous), 79088/3670016 blocks
 
1.缩小文件系统
[root@web01 ~]# resize2fs /dev/vg0/data 10G
resize2fs 1.45.6 (20-Mar-2020)
Resizing the filesystem on /dev/vg0/data to 2621440 (4k) blocks.
The filesystem on /dev/vg0/data is now 2621440 (4k) blocks long.
2.缩小逻辑卷
[root@web01 ~]# lvreduce -L 10g /dev/vg0/data 
  WARNING: Reducing active logical volume to 10.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/data? [y/n]: y
  Size of logical volume vg0/data changed from 14.00 GiB (3584 extents) to 10.00 GiB (2560 extents).
  Logical volume vg0/data successfully resized.
  

删除逻辑卷

1.删除和缩小LV VG PV
[root@web01 ~]# lvremove /dev/vg0/data 
Do you really want to remove active logical volume vg0/data? [y/n]: y
  Logical volume "data" successfully removed
2.迁移pv
#将sdb3的数据迁移到sdb4 不需要停业务
[root@web01 ~]# pvmove /dev/sdb3 /dev/sdb4
  /dev/sdb3: Moved: 0.31%
  /dev/sdb3: Moved: 100.00%
#此时可以将sdb3 迁移走了
[root@web01 ~]# vgreduce vg0 /dev/sdb3
  Removed "/dev/sdb3" from volume group "vg0"
[root@web01 ~]# pvremove /dev/sdb3
  Labels on physical volume "/dev/sdb3" successfully wiped.

逻辑卷迁移

1.先扫描逻辑卷

[root@web01 ~]# lvscan 
  ACTIVE            '/dev/vg0/data' [10.00 GiB] inherit
  ACTIVE            '/dev/cl/swap' [<3.94 GiB] inherit
  ACTIVE            '/dev/cl/home' [31.18 GiB] inherit
  ACTIVE            '/dev/cl/root' [<63.88 GiB] inherit
[root@web01 ~]# vgscan 
  Found volume group "vg0" using metadata type lvm2
  Found volume group "cl" using metadata type lvm2
[root@web01 ~]# pvscan 
  PV /dev/sdb2   VG vg0             lvm2 [<10.00 GiB / 9.99 GiB free]
  PV /dev/sdb4   VG vg0             lvm2 [<10.00 GiB / 0    free]
  PV /dev/sda2   VG cl              lvm2 [<99.00 GiB / 0    free]
  Total: 3 [<118.99 GiB] / in use: 3 [<118.99 GiB] / in no VG: 0 [0   ]

2.卸载后将卷组设置为不活动状态
[root@web01 ~]# lvchange -a n /dev/vg0/data  将lv卷设置为非活动状态
[root@web01 ~]# lvscan
  inactive          '/dev/vg0/data' [10.00 GiB] inherit
##还可以修改pv和vg属性:
#pvchange -x n device pv不可分配
#vgchange -ay vg0 激活卷组
#vgchange -an vg0 禁用卷组

3.导出逻辑卷
[root@web01 ~]# vgexport vg0
  Volume group "vg0" successfully exported
[root@web01 ~]# vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             exported/resizable 导出状态
  
 4.关机
 
 5.登录第二台虚机
[root@backup ~]# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0    3T  0 disk 
└─sda1        8:1    0   20G  0 part 
 6.扫描
 [root@backup ~]# vgdisplay 
 --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             exported/resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <20.00 GiB
  PE Size               4.00 MiB
  Total PE              5119
  Alloc PE / Size       5119 / <20.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               RQtROs-PSDN-dQz7-il3g-mXVy-k6TH-f0cUT2
7.导入vg
[root@backup ~]# vgimport vg0
  Volume group "vg0" successfully imported
[root@backup ~]# lvdisplay 

8.激活vg
[root@backup ~]# vgchange -ay vg0
  1 logical volume(s) in volume group "vg0" now active


9.挂载
[root@backup ~]# mkdir 1
[root@backup ~]# mount /dev/vg0/data 1
[root@backup ~]# cd 1
[root@backup 1]# ls
boot  lost+found  run  var  #有数据
[root@backup 1]# df -h
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              1.8G     0  1.8G   0% /dev
tmpfs                 1.9G     0  1.9G   0% /dev/shm
tmpfs                 1.9G  9.7M  1.9G   1% /run
tmpfs                 1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/cl-root    64G  4.8G   60G   8% /
/dev/mapper/cl-home    32G  268M   31G   1% /home
/dev/nvme0n1p1       1014M  242M  773M  24% /boot
tmpfs                 371M  1.2M  370M   1% /run/user/42
tmpfs                 371M     0  371M   0% /run/user/0
/dev/mapper/vg0-data   20G  525M   19G   3% /root/1

逻辑卷回滚

[root@web01 lvm]# mount /dev/vg0/data  /root/text/  逻辑卷坏了,无法挂载
mount: /root/text: wrong fs type, bad option, bad superblock on /dev/mapper/vg0-data, missing codepage or helper program, or other error.

[root@web01 archive]# pwd
/etc/lvm/archive 进入这个目录查看备份的vg
[root@web01 archive]# ll
total 52
-rw-------. 1 root root 2148 Nov  5 15:31 cl_00000-1019307375.vg
-rw-------  1 root root 1111 Nov  7 11:15 vg0_00000-772498167.vg
-rw-------  1 root root 1105 Nov  7 17:54 vg0_00001-532888989.vg
-rw-------  1 root root 1515 Nov  7 18:12 vg0_00002-160824709.vg
-rw-------  1 root root 1760 Nov  7 18:18 vg0_00003-1368188228.vg
-rw-------  1 root root 1941 Nov  8 11:04 vg0_00004-574781182.vg
-rw-------  1 root root 1925 Nov  8 11:10 vg0_00005-1309110768.vg
-rw-------  1 root root 1343 Nov  8 11:13 vg0_00006-278585548.vg
-rw-------  1 root root 1929 Nov  8 11:19 vg0_00007-613251119.vg
-rw-------  1 root root 1926 Nov  8 11:23 vg0_00008-1782031460.vg
-rw-------  1 root root 1690 Nov  8 14:45 vg0_00009-522694912.vg
-rw-------  1 root root 1677 Nov  8 14:46 vg0_00010-564514364.vg
-rw-------  1 root root 1695 Nov  8 15:18 vg0_00011-1825926707.vg


[root@web01 archive]# vgcfgrestore -l vg0   查看vg状态 
   
  File:		/etc/lvm/archive/vg0_00000-772498167.vg
  VG name:    	vg0
  Description:	Created *before* executing 'vgcreate vg0 /dev/sdb3 /dev/sdb2'
  Backup Time:	Thu Nov  7 11:15:14 2024


1.将lv变为非活动状态

[root@web01 archive]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg0/data
  LV Name                data
  VG Name                vg0
  LV UUID                63UAIZ-ni8d-BuuM-Lcjy-JDUv-pIz3-ayFQka
  LV Write Access        read/write
  LV Creation host, time web01, 2024-11-08 11:13:51 +0800
  LV Status              NOT available
  LV Size                5.00 GiB
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto


[root@web01 archive]# vgcfgrestore -f /etc/lvm/archive/vg0_00011-1825926707.vg vg0
  Restored volume group vg0.
[root@web01 archive]# lvchange -ay /dev/vg0/data 
[root@web01 archive]# mount /dev/vg0/data  /root/text/

逻辑卷快照技术

COW ---lvm的快照
写时复制 
新数据写在本机  --- 写性能差
ROW ---云平台的快照
写时重定向
新数据写在快照中   ---读性能差


lvcreate -L 128M -s -n snap1 /dev/vg0/data 创建一个128m快照名字为snap1

[root@web01 ~]# vim /etc/lvm/lvm.conf
下面的配置文件用来修改快照自动扩容
        snapshot_autoextend_threshold = 70  到百分之70 
        # Configuration option activation/snapshot_autoextend_percent.
        # Auto-extending a snapshot adds this percent extra space.
        # The amount of additional space added to a snapshot is this
        # percent of its current size.
        # 
        # Example
        # Using 70% autoextend threshold and 20% autoextend size, when a 1G
        # snapshot exceeds 700M, it is extended to 1.2G, and when it exceeds
        # 840M, it is extended to 1.44G:
        # snapshot_autoextend_percent = 20
        snapshot_autoextend_percent = 20  扩容百分之20


还原快照
[root@web01 ~]# lvconvert --merge /dev/vg0/snap1 
  Merging of volume vg0/snap1 started.
  vg0/data: Merged: 100.00%

逻辑卷镜像技术

 #创建逻辑卷的镜像卷(原来的逻辑卷已存在)
 [root@web01 ~]# lvconvert -m 1 /dev/vg0/data /dev/sdb4
  Are you sure you want to convert linear LV vg0/data to raid1 with 2 images enhancing resilience? [y/n]: y
  Logical volume vg0/data successfully converted.


#新建逻辑卷时创建镜像卷
[root@web01 ~]# lvcreate -m 1 -n lv01 -L 1g vg0
  Logical volume "lv01" created.

#查看状态
[root@web01 ~]# lvs -a -o +seg_pe_ranges --segments  查看所有
[root@web01 ~]# lvs -a -o +devices 查看设备

#迁移案例
[root@web01 ~]# lvconvert -m0 /dev/vg0/lv01 /dev/sdb2  将lv01的数据从sdb2移出
[root@web01 ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb2
  VG Name               vg0
  PV Size               10.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2559
  Free PE               2559  #确保sdb2无数据了
  Allocated PE          0
  PV UUID               Hvs35Y-Gmi4-wyG1-labT-n2H6-rGbn-C1wR2g
  
[root@web01 ~]# vgreduce vg0  /dev/sdb2 将sdb2移出vg
[root@web01 ~]# pvremove /dev/sdb2  移出pv
  Labels on physical volume "/dev/sdb2" successfully wiped.

现在可以拆除存储

标签:管理,vg0,文件系统,dev,data,web01,磁盘,root
From: https://www.cnblogs.com/cloudwangsa/p/18563741

相关文章

  • 计算机毕业设计推荐】基于SpringBoot+Vue的甜品店管理系统的设计与实现 【附源码+数据
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • SSM仓库员工管理系统88qro--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着物流行业的快速发展,仓库作为物流链条中的重要环节,其管理效率直接影响到整个物流体系的运作。仓库员工作为仓库运营的核心力......
  • SSM殡仪馆管理系统s5n80(程序+源码+数据库+调试部署+开发环境)
    题目:殡仪馆管理系统进度安排:(1)2024年11月1日-2024年11月15日 确定选题,下达任务书,撰写开题报告;(2)2024年11月15日-2024年12月20日提交开题报告定稿;(3)2024年12月21日-2025年3月14日 完成选题的设计、论文大纲的撰写;(4)2025年3月15日-2025年3月21日  毕业(设计)论文中期检查......
  • 【C++】绘制内存管理的地图
    生活是属于每个人自己的感受,不属于任何人的看法。前言 这是我自己学习C++的第二篇博客总结。后期我会继续把C++学习笔记开源至博客上。 上一期笔记是关于C++的类与对象础知识,没看的同学可以过去看看: 【C++】面向对象编程的艺术之旅-CSDN博客https://blog.csdn.net/......
  • flask毕设大学生创新创业项目管理网站(论文+程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景在当前全球创新创业浪潮的推动下,大学生作为最具活力和创造力的群体,其创新创业活动日益受到社会各界的广泛关注。关于大学生创新创业项目管......
  • flask毕设大学生创新创业项目管理系统(论文+程序)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着国家对创新创业教育的重视和推广,大学生创新创业项目日益增多,如何高效、系统地管理这些项目成为高校面临的重要问题。关于创新创业项目......
  • [2006]基于JAVA的洗衣店会员管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的洗衣店会员管理系统的设计与实现指导老师(一)选题的背景和意义选题背景与意义:随着社会经济的快速发展和生活节奏的不断加快,洗衣服务行业作为日常生活服务的重要组成部分,其信息化、智能化管理水平直接影响着顾客体......
  • [2005]基于JAVA的洗浴智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的洗浴智慧管理系统的设计与实现指导老师(一)选题的背景和意义背景:随着信息技术的飞速发展和大数据时代的来临,各行各业都在积极推进信息化建设,以提高管理效率和服务质量。在休闲服务业中,洗浴中心作为一种常见的大众......
  • 基于SprinBoot+vue的物业管理系统(源码+数据库+文档)
    物业管理系统基于SprinBoot+vue的物业管理系统一、前言二、系统设计三、系统功能设计 系统登录实现后台模块实现管理员模块实现物业管理模块实现业主模块实现维修员模块实现四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获......
  • 全面掌握贷中管理:策略与实践
    在金融行业,贷中管理是确保贷款资产安全和提升客户满意度的关键环节。它不仅涉及到贷款发放后的持续监控,还涵盖了风险评估、预警机制的建立以及风险应对策略的实施。随着金融市场的不断发展和监管环境的日益严格,贷中管理的重要性愈发凸显,成为金融机构稳健运营的重要保障。贷......