13Linux之磁盘管理
- 13Linux之磁盘管理
-
13 磁盘管理
-
13.1 两种分区格式
- 13.1.1 磁盘命名
- 13.1.2 mbr
- 13.1.3 gpt
-
13.2 制作文件系统并且挂载
-
13.3 制作swap分区
- 13.3.1 查看
- 13.3.2 制作swap分区
- 13.3.3 激活swap分区
- 13.3.4 关闭swap分区
- 13.3.5 开机自动挂载
- 13.4 RAID
-
13.5 修复服务器文件系统
-
13.6 xfs文件系统备份与恢复
- 13.6.1 两种备份级别
- 13.6.2 数据备份xfsdump
- 13.6.3 数据恢复xfsrestore
- 13.6.4 xfsdump备份与xfsrestore恢复
- 13.6.5 示例
-
13.7 LVM
- 13.7.1 lvm简介
- 13.7.2 lvm基本使用
- 13.7.3 在线动态扩容
- 13.7.4 在线动态缩容与删除
- 13.7.5 快照
13 磁盘管理
13.1 两种分区格式
13.1.1 磁盘命名
-
磁盘在系统中的命名
设备名称 |
分区信息 |
设备类型 |
/dev/sda |
/dev/sda1 |
第一块物理磁盘第一分区 |
/dev/sdb |
/dev/sdb2 |
第二块磁盘第二个分区 |
/dev/vdd |
/dev/vdd4 |
第四块虚拟磁盘第四个分区 |
-
三类分区:主分区<----扩展分区<----逻辑分区
逻辑分区属于扩展分区,扩展分区属于主分区
主分区又叫引导分区,是可以安装系统的分区
-
两种分区格式
mbr分区格式----->分区工具fdisk(最多四个主分区,通常用于<2T的硬盘空间)
gpt分区格式------>分区工具gdisk(最多128个主分区,通常用于>2T的硬盘空间)
13.1.2 mbr
-
查看设备详情及分区情况
[root@ccc ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 476M 0 part /boot
├─sda2 8:2 0 1.9G 0 part [SWAP]
└─sda3 8:3 0 7.7G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part /qq
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 1G 0 part
└─sdb6 8:22 0 1G 0 part
sr0 11:0 1 4.5G 0 rom
[root@ccc ~]# fdisk -l
磁盘 /dev/sda:10.7 GB,10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c10cc
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 976895 487424 83 Linux
/dev/sda2 976896 4882431 1952768 82 Linux swap / Solaris
/dev/sda3 4882432 20971519 8044544 83 Linux
磁盘 /dev/sdb:21.5 GB,21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8d447f7c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 41943039 17824768 5 Extended
/dev/sdb5 6295552 8392703 1048576 83 Linux
/dev/sdb6 8394752 10491903 1048576 83 Linux
-
命令
m # 查看帮助
q # 退出
n # 新建分区(p主分区,e扩展分区)
d # 删除分区
w # 保存
p # 查看分区情况
-
fdisk工具
[root@ccc ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary,0 extended,4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区,+扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary,3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (2099200-41943039,默认为 2099200):
将使用默认值 2099200
Last 扇区,G} (2099200-41943039,默认为 41943039):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary,2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区,G} (4196352-41943039,默认为 41943039):+1G
分区 3 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary,1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (6293504-41943039,默认为 6293504):
将使用默认值 6293504
Last 扇区,G} (6293504-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 17 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (6295552-41943039,默认为 6295552):
将使用默认值 6295552
Last 扇区,G} (6295552-41943039,默认为 41943039):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB,21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8d447f7c
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 6293503 1048576 83 Linux
/dev/sdb4 6293504 41943039 17824768 5 Extended
/dev/sdb5 6295552 8392703 1048576 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
-
lsblk /dev/sdb查看一下
[root@ccc ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part /qq
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 1G 0 part
└─sdb6 8:22 0 1G 0 part
13.1.3 gpt
13.2 制作文件系统并且挂载
13.2.1 制作文件系统
-
磁盘必须格式化制作文件系统,然后挂载才能使用
-
一块磁盘可以不分区直接格式化制作文件系统
[root@ccc ~]# mkfs.xfs /dev/sdb
-
也可以基于mbr或gpt分区方式分区完毕后,针对某一个分区比如/dev/sdb1制作文件系统
[root@ccc ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4,agsize=65536 blks
= sectsz=512 attr=2,projid32bit=1
= crc=1 finobt=0,sparse=0
data = bsize=4096 blocks=262144,imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560,version=2
= sectsz=512 sunit=0 blks,lazy-count=1
realtime =none extsz=4096 blocks=0,rtextents=0
[root@ccc ~]# mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4,rtextents=0
[root@ccc ~]# mkfs.xfs /dev/sdb3
meta-data=/dev/sdb3 isize=512 agcount=4,rtextents=0
[root@ccc ~]# mkfs.xfs /dev/sdb4
mkfs.xfs: /dev/sdb4 appears to contain a partition table (dos).
mkfs.xfs: Use the -f option to force overwrite.
[root@ccc ~]# mkfs.xfs /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4,rtextents=0
[root@ccc ~]# mkfs.xfs /dev/sdb6
meta-data=/dev/sdb6 isize=512 agcount=4,rtextents=0
13.2.2 挂载
-
挂载
[root@ccc ~]# mount /dev/sdb1 /opt
[root@ccc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 487140 0 487140 0% /dev
tmpfs 497840 0 497840 0% /dev/shm
tmpfs 497840 7780 490060 2% /run
tmpfs 497840 0 497840 0% /sys/fs/cgroup
/dev/sda3 8034304 6531028 1503276 82% /
/dev/sda1 484004 125552 358452 26% /boot
tmpfs 99572 0 99572 0% /run/user/0
/dev/sdb1 1038336 32992 1005344 4% /opt
-
卸载
[root@ccc ~]# umount /opt
[root@ccc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 487140 0 487140 0% /dev
tmpfs 497840 0 497840 0% /dev/shm
tmpfs 497840 7780 490060 2% /run
tmpfs 497840 0 497840 0% /sys/fs/cgroup
/dev/sda3 8034304 6531028 1503276 82% /
/dev/sda1 484004 125552 358452 26% /boot
tmpfs 99572 0 99572 0% /run/user/0
-
强制卸载
[root@ccc ~]# umount -l /opt
[root@ccc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 487140 0 487140 0% /dev
tmpfs 497840 0 497840 0% /dev/shm
tmpfs 497840 7780 490060 2% /run
tmpfs 497840 0 497840 0% /sys/fs/cgroup
/dev/sda3 8034304 6531028 1503276 82% /
/dev/sda1 484004 125552 358452 26% /boot
tmpfs 99572 0 99572 0% /run/user/0
-
强制重新格式化
[root@ccc ~]# mkfs.xfs /dev/sdb1 -f
-
将/dev/sdb1挂载到/opt下,往/opt下新建文件,文件存到的是/dev/sdb1下,卸载/opt后,数据依然存在
-
同一个分区/文件系统挂载到不同的文件夹下,数据的来源一致
-
开机自动挂载
# 查看UUID
[root@ccc ~]# blkid
/dev/sda1: UUID="b89e54ee-6c11-44da-b17d-25a1fb8e5bb5" TYPE="xfs"
/dev/sda2: UUID="762c7f34-e11a-49dd-8697-b7fa2546fef0" TYPE="swap"
/dev/sda3: UUID="b43c52c4-89a7-48d2-83e4-6e8d35553e64" TYPE="xfs"
/dev/sdb1: UUID="b0cde59c-5d48-4a53-87ec-85e428c07d82" TYPE="xfs"
/dev/sdb2: UUID="6ff6e47c-98b7-4bb1-ab9b-56a96fff7374" TYPE="xfs"
/dev/sdb3: UUID="7e7ee698-6a23-4786-9034-f3f7a23865eb" TYPE="xfs"
/dev/sdb5: UUID="92903935-1bee-4c35-87ce-317bff95bd2e" TYPE="xfs"
/dev/sdb6: UUID="85b1c2ed-bb44-4c3f-b576-4f72025895a6" TYPE="xfs"
/dev/sr0: UUID="2020-04-22-00-54-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
# 编辑配置文件
[root@ccc ~]# vim /etc/fstab
[root@ccc ~]# tail -1 /etc/fstab
UUID=b0cde59c-5d48-4a53-87ec-85e428c07d82 /boot xfs defaults 0 0
方法二
/dev/sdb1 /boot xfs defaults 0 0
-
磁盘挂载mount补充
-t # 指定文件系统
-a # 挂载/etc/fstab中配置的所有
[root@ccc ~]# mkdir /db2
[root@ccc ~]# mount -t xfs /dev/sdb2 /db2
[root@ccc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 487140 0 487140 0% /dev
tmpfs 497840 0 497840 0% /dev/shm
tmpfs 497840 7788 490052 2% /run
tmpfs 497840 0 497840 0% /sys/fs/cgroup
/dev/sda3 8034304 6556084 1478220 82% /
/dev/sdb1 1038336 32992 1005344 4% /opt
/dev/sda1 484004 125552 358452 26% /boot
tmpfs 99572 0 99572 0% /run/user/0
/dev/sdb2 1038336 32992 1005344 4% /db2
查看文件系统的UUID并挂载
[root@ccc ~]# blkid | grep sdb1
/dev/sdb1: UUID="b0cde59c-5d48-4a53-87ec-85e428c07d82" TYPE="xfs"
[root@ccc ~]# mount UUID="b0cde59c-5d48-4a53-87ec-85e428c07d82" /db2
修改配置文件建议用UUID
[root@ccc ~]# tail -1 /etc/fstab
UUID=b0cde59c-5d48-4a53-87ec-85e428c07d82 /boot xfs defaults 0 0
[root@ccc ~]# mount -a
[root@ccc ~]# df
...
-
/etc/fstab配置文件编写格式
需挂载的设备 |
挂载点 |
文件系统类型 |
挂载参数 |
是否备份 |
是否检查 |
/dev/sdb1 |
/data |
xfs |
defaults |
0 |
0 |
第一列device:指定要挂载的文件系统的设备名称或块信息,除指定设备文件外,也可使用UUID、LABEL来指定分区。
第二列dir:指定挂载点的路径。
第三列type:指定文件系统类型,如ext3、ext4、xfs等。
第四列options:指定挂载参数,默认为defaults。
第五列dump:表示该挂载后的文件系统是否能被dump备份命令作用。
第六列pass:指定如何使用fsck来检查硬盘。
options指定挂在参数的类型
参数 |
含义 |
async/sync |
是否同步方式运行,默认async(异步) |
user/nouser |
是否允许普通用户使用mount命令挂载,默认nouser |
exec/noexec |
是否允许可执行文件执行,默认exec |
suid/nisuid |
是否允许存在suid属性的文件,默认suid |
auto/noauto |
执行mount -a时,此文件是否被主动挂载,默认auto |
rw/ro |
是否只读或者读写模式进行挂载,默认rw |
defaults |
具有rw、suid、exec、auto、nouser、async等默认参数的设定 |
dump选项的作用
选项 |
含义 |
0 |
不做备份 |
1 |
每天进行备份操作 |
2 |
不定日期的进行备份操作 |
pass选项的含义
选项 |
含义 |
0 |
不检查 |
1 |
检查,挂载点为/的时候(即根分区),必须写1,其他都不能写1 |
2 |
检查,当1级别检验完成后进行2级别检验 |
13.3 制作swap分区
13.3.1 查看
13.3.2 制作swap分区
13.3.3 激活swap分区
13.3.4 关闭swap分区
13.3.5 开机自动挂载
13.3.6 文件系统制作swap
-
如果磁盘没有过多的分区可以使用,可以通过文件增加SWAP空间,本质上还是磁盘
[root@ccc ~]# touch /db2/swap_file
[root@ccc ~]# dd if=/dev/zero of=/db2/swap_file bs=1M count=200
记录了200+0 的读入
记录了200+0 的写出
209715200字节(210 MB)已复制,3.59794 秒,58.3 MB/秒
[root@ccc ~]# chmod 0600 /db2/swap_file
[root@ccc ~]# ll /db2/swap_file
-rw------- 1 root root 209715200 11月 8 18:37 /db2/swap_file
[root@ccc ~]# free -m
total used free shared buff/cache available
Mem: 972 116 547 7 308 712
Swap: 1906 0 1906
[root@ccc ~]# mkswap -f /db2/swap_file
正在设置交换空间版本 1,大小 = 204796 KiB
无标签,UUID=a5af3188-8e4a-435e-ab05-7314edb2a8ce
[root@ccc ~]# swapon /db2/swap_file
[root@ccc ~]# free -m
total used free shared buff/cache available
Mem: 972 116 547 7 308 712
Swap: 2106 0 2106
13.4 RAID
https://www.cnblogs.com/linhaifeng/articles/13921161.html
13.5 修复服务器文件系统
13.5.1 修复方式
-
如果进不了操作系统,可以进入单用户模式操作
-
首先尝试mount和umount文件系统,以便重放日志,修复文件系统。若不行,再进行以下操作
-
执行xfs_repair -n 只检查不修复:检查文件系统是否损坏,如果损坏会列出要执行的操作
[root@ccc ~]# xfs_repair -n /dev/sdb
如果是日志和数据不一致,xfs会默认在挂载的时候修复这一不一致,操作系统给出的建议是以读写的方式挂载并自动修复,可以尝试以只读不修复方式挂载文件系统
[root@ccc ~]# mount -o ro,norecovery /dev/sdb1 /opt
-
如果上述挂载不成功,可以执行xfs_repair修复文件系统
[root@ccc ~]# xfs_repair /dev/sdb1
-
如果还不行,只能采用"损失部分数据的修复方法"
根据打印消息,修复失败时:
先执行xfs_repair -L /dev/sdb1(清空日志,会丢失文件)
再执行xfs_repair /dev/sdb1
-L是修复xfs文件系统的最后手段,会清空日志,丢失用户的数据和文件
在执行xfs_repair操作前,最好先xfs_metadump工具保存元数据,一旦修复失败,可以修复到恢复之前状态
-
修复完成以后,尝试能不能正常挂载,如能,取消挂载,再启动就正常了
13.5.2 模拟环境
-
准备一个1G的文件系统与数据
[root@ccc ~]# mount /dev/sdb1 /opt
[root@ccc ~]# echo "ccc" > /opt/1.txt
-
模拟文件系统损坏
[root@ccc ~]# dd if=/dev/zero of=/dev/sdb bs=500M count=1
记录了1+0 的读入
记录了1+0 的写出
524288000字节(524 MB)已复制,10.3369 秒,50.7 MB/秒
[root@ccc ~]# cat /opt/1.txt
ccc
[root@ccc ~]# umount /opt # 模拟断电后系统重启,重新挂载不成功
[root@ccc ~]# mount /dev/sdb1 /opt
mount: 将 /dev/sdb1 挂载到 /opt 失败: 结构需要清理
-
修复
[root@ccc ~]# xfs_repair /dev/sdb1 # 修复失败
Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
- scan filesystem freespace and inode maps...
bad magic number
Metadata CRC error detected at xfs_agi block 0x2/0x200
bad magic # 0x0 for agi 0
bad version # 0 for agi 0
...
[root@ccc ~]# xfs_repair -L /dev/sdb1 # 强制修复
[root@ccc ~]# mount /dev/sdb1 /opt
[root@ccc ~]# ls /opt # 数据丢失
-
如果是ext文件系统,修复用fsck命令
fsck -f -y /dev/sdb1
-y # 对所有问题都回答yes
-f # 即使文件系统标记为clean,也强制进行检查
13.6 xfs文件系统备份与恢复
13.6.1 两种备份级别
- 完全备份 0
- 增量备份 1~9
- 增量备份是和第一次的备份(level 0)进行比较,仅备份有差异的文件(level 1)
13.6.2 数据备份xfsdump
-
安装命令
[root@ccc ~]# yum install -y xfsdump
-
常用参数
-L # xfsdump会记录每次备份的session Label,这里可以填写针对此文件系统的简易说明
-M # xfsdump可以记录存储Media Label,这里可以填写此媒体的简易说明
-l # L的小写,指定level,有0~9共10个等级,默认为0,即完整备份
-f # 后面接产生的文件和destination file。如/dev/st0设备文件名或其他一般文件文件名
-I # 大写的i,从/var/lib/xfsdump/inventory列出目前备份的信息状态
-
使用限制
必须用root权限
只能备份已挂载的文件系统
只能备份xfs文件系统
只能用xfsrestore解释
透过文件系统的UUID来分辨备份档,因此不能备份相同UUID的文件系统
13.6.3 数据恢复xfsrestore
13.6.4 xfsdump备份与xfsrestore恢复
-
数据备份
# 1、先做全量备份,切记[备份的原路径]末尾不要加做斜杠/
xfsdump -l 0 -L sdb1_bak -M sdb1_bak -f 全量备份的成果路径1 备份的源路径
# 2、再做增量备份
xfsdump -l 1 -L sdb1_bak -M sdb1_bak -f 增量备份的成果路径2 备份的源路径
xfsdump -l 1 -L sdb1_bak -M sdb1_bak -f 增量备份的成果路径3 备份的源路径
xfsdump -l 1 -L sdb1_bak -M sdb1_bak -f 增量备份的成果路径4 备份的源路径
-
数据恢复
# 1、先恢复全量备份
xfsrestore -f 全量备份的成果路径1 数据恢复的路径
# 2、再依次恢复增量
xfsrestore -f 增量备份的成果路径2 数据恢复的路径
xfsrestore -f 增量备份的成果路径3 数据恢复的路径
xfsrestore -f 增量备份的成果路径4 数据恢复的路径
13.6.5 示例
-
数据备份
# 1、准备一个分区并制作好xfs文件系统,挂载好后给他加一点初始数据
[root@ccc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
...
/dev/sdb1 1038336 32996 1005340 4% /opt
[root@ccc ~]# cp -r /etc/ /opt/
[root@ccc ~]# echo "111" > /opt/1.txt
[root@ccc ~]# ls /opt/
1.txt etc
# 2、制作全量备份
[root@ccc ~]# xfsdump -l 0 -L sdb1_bak -M sdb1_bak -f /all.bak /opt
# 3、在/opt下新增文件2.txt,然后做增量备份
[root@ccc ~]# echo "222" > /opt/2.txt
[root@ccc ~]# xfsdump -l 1 -L sdb1_bak -M sdb1_bak -f /add1.bak /opt
# 4、在/opt下新增文件3.txt,然后做增量备份
[root@ccc ~]# echo "222" > /opt/2.txt
[root@ccc ~]# xfsdump -l 1 -L sdb1_bak -M sdb1_bak -f /add2.bak /opt
# 5、查看备份文件大小
[root@ccc ~]# du -sh /opt/
32M /opt/
[root@ccc ~]# ll -h /all.bak
-rw-r--r-- 1 root root 29M 11月 8 20:09 /all.bak
[root@ccc ~]# ll -h /add1.bak
-rw-r--r-- 1 root root 22K 11月 8 20:18 /add1.bak
[root@ccc ~]# ll -h /add2.bak
-rw-r--r-- 1 root root 23K 11月 8 20:19 /add2.bak
-
数据恢复
[root@ccc ~]# rm -rf /opt/*
[root@ccc ~]# ll /opt/
总用量 0
[root@ccc ~]# xfsrestore -f /all.bak /opt/
...
[root@ccc ~]# ls /opt/
1.txt etc
[root@ccc ~]# xfsrestore -f /add1.bak /opt/
...
[root@ccc ~]# ls /opt/
1.txt 2.txt etc
[root@ccc ~]# xfsrestore -f /add2.bak /opt/
...
[root@ccc ~]# ls /opt
1.txt 2.txt 3.txt etc
13.7 LVM
13.7.1 lvm简介
13.7.2 lvm基本使用
-
下载安装软件包
[root@ccc ~]# yum install -y lvm2
-
制作pv:可以对分区做,也可以对整块盘做
# 1、制作
[root@ccc ~]# pvcreate /dev/sdb1
WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@ccc ~]# pvcreate /dev/sdb2
Wiping xfs signature on /dev/sdb2.
Physical volume "/dev/sdb2" successfully created.
[root@ccc ~]# pvcreate /dev/sdb3
Wiping swap signature on /dev/sdb3.
Physical volume "/dev/sdb3" successfully created.
# 2、查看
[root@ccc ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 1.00g 1.00g
/dev/sdb2 lvm2 --- 1.00g 1.00g
/dev/sdb3 lvm2 --- 1.00g 1.00g
[root@ccc ~]# pvscan
PV /dev/sdb2 lvm2 [1.00 GiB]
PV /dev/sdb3 lvm2 [1.00 GiB]
PV /dev/sdb1 lvm2 [1.00 GiB]
Total: 3 [3.00 GiB] / in use: 0 [0 ] / in no VG: 3 [3.00 GiB]
-
制作vg:将pv划入vg中
# 制作一个vg1(包含/dev/sdb1和/dev/sdb2两个pv)
[root@ccc ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
Volume group "vg1" successfully created
[root@ccc ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g
# 制作vg2(包含/dev/sdb3一个pv)
[root@ccc ~]# vgcreate vg2 /dev/sdb3
Volume group "vg2" successfully created
[root@ccc ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g
vg2 1 0 0 wz--n- 1020.00m 1020.00m
-
创建逻辑卷lvm
选项
-L # 逻辑卷大小
-n # 逻辑卷名字
# 从vg1中分出来逻辑卷lv1_from_vg1、lv2_from_vg1
[root@ccc ~]# lvcreate -L 100M -n lv1_from_vg1 vg1
Logical volume "lv1_from_vg1" created.
[root@ccc ~]# lvcreate -L 200M -n lv2_from_vg1 vg1
Logical volume "lv2_from_vg1" created.
# 从vg2中分出来逻辑卷lv1_from_vg2、lv2_from_vg2
[root@ccc ~]# lvcreate -L 300M -n lv1_from_vg2 vg2
Logical volume "lv1_from_vg2" created.
[root@ccc ~]# lvcreate -L 400M -n lv2_from_vg2 vg2
Logical volume "lv2_from_vg2" created.
# 查看
[root@ccc ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1_from_vg1 vg1 -wi-a----- 100.00m
lv2_from_vg1 vg1 -wi-a----- 200.00m
lv1_from_vg2 vg2 -wi-a----- 300.00m
lv2_from_vg2 vg2 -wi-a----- 400.00m
-
格式与挂载
[root@ccc ~]# mkfs.xfs /dev/vg1/lv1_from_vg1
[root@ccc ~]# mkfs.xfs /dev/vg1/lv2_from_vg1
[root@ccc ~]# mkfs.xfs /dev/vg2/lv1_from_vg2
[root@ccc ~]# mkfs.xfs /dev/vg2/lv2_from_vg2
[root@ccc ~]# mount /dev/vg1/lv1_from_vg1 /test1/
[root@ccc ~]# mount /dev/vg1/lv2_from_vg1 /test2/
[root@ccc ~]# mount /dev/vg2/lv1_from_vg2 /test3/
[root@ccc ~]# mount /dev/vg2/lv2_from_vg2 /test4/
# 查看
[root@ccc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
...
/dev/mapper/vg1-lv1_from_vg1 98980 5344 93636 6% /test1
/dev/mapper/vg1-lv2_from_vg1 201380 10464 190916 6% /test2
/dev/mapper/vg2-lv1_from_vg2 303780 15584 288196 6% /test3
/dev/mapper/vg2-lv2_from_vg2 406180 20704 385476 6% /test4
13.7.3 在线动态扩容
-
命令
lvextend -L [+]MGT /dev/VG_NAME/VL_NAME
# -L 100M与-L +100M不是一个意思,+100M代表在原有基础上扩容
-
示例
[root@ccc ~]# lvextend -L +100M /dev/vg1/lv2_from_vg1
Size of logical volume vg1/lv2_from_vg1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
Logical volume vg1/lv2_from_vg1 successfully resized.
[root@ccc ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1_from_vg1 vg1 -wi-ao---- 100.00m
lv2_from_vg1 vg1 -wi-ao---- 300.00m
lv1_from_vg2 vg2 -wi-ao---- 300.00m
lv2_from_vg2 vg2 -wi-ao---- 400.00m
[root@ccc ~]# xfs_growfs /dev/vg1/lv1_from_vg1 # 扩展逻辑卷后需更新xfs文件系统
13.7.4 在线动态缩容与删除
-
!!!!!!!!!!!!!!!不要缩容!!!!!!!!!!!!!
-
xfs不支持缩容
lvreduce -L [-]MGT /dev/VG_NAME/LV_NAME # 缩减逻辑卷
-
删除
# 删除lv之前需先卸载挂载点
[root@ccc ~]# umount /test1
[root@ccc ~]# lvremove /dev/vg1/lv1_from_vg1
Do you really want to remove active logical volume vg1/lv1_from_vg1? [y/n]: y
Logical volume "lv1_from_vg1" successfully removed
[root@ccc ~]# umount /test2
[root@ccc ~]# lvremove /dev/vg1/lv2_from_vg1 -y
Logical volume "lv2_from_vg1" successfully removed
# 删除vg
[root@ccc ~]# vgremove vg1
Volume group "vg1" successfully removed
# 删pv:只能删掉不属于任何vg的pv
[root@ccc ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
13.7.5 快照
-
lvm的快照功能采用写时复制技术(Copy-On-Write,COW)
-
创建快照时不用停止服务即可对数据进行备份
-
快照本质是特殊的lv,创建快照后会将老数据赋给快照空间
# 准备初始数据
[root@ccc ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
...
/dev/mapper/vg1-lv1_from_vg1 98980 5344 93636 6% /test1
[root@ccc ~]# echo 111 > /test1/1.txt
# 查看vg1容量是否充足
[root@ccc ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 1 0 wz--n- <10.00g <9.90g
# 在vg1卷里创建一个lv1_from_vg1的快照
[root@ccc ~]# lvcreate -L 1G -s -n lv1_from_vg1_snap /dev/vg1/lv1_from_vg1
Reducing COW size 1.00 GiB down to maximum usable size 104.00 MiB.
Logical volume "lv1_from_vg1_snap" created.
# 查看
[root@ccc ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1_from_vg1 vg1 owi-aos--- 100.00m
lv1_from_vg1_snap vg1 swi-a-s--- 104.00m lv1_from_vg1 0.01
# 修改文件/test/1.txt
[root@ccc ~]# echo 22222111 >> /test1/1.txt
[root@ccc ~]# cat /test1/1.txt
111
22222111
# 恢复数据
# 挂载快照,和原来lvm使用同一个UUID,不被xfs允许,需加选项-o nouuid
[root@ccc ~]# mount -o nouuid /dev/vg1/lv1_from_vg1_snap /opt/
[root@ccc ~]# cat /opt/1.txt
111
[root@ccc ~]# cp /opt/1.txt /test1/1.txt
cp:是否覆盖"/test1/1.txt"? y
[root@ccc ~]# cat /test1/1.txt
111
-
要恢复的文件个数过多,直接合并
[root@ccc ~]# mount /dev/vg1/lv1_freom_vg1 /test1
[root@ccc ~]# echo ccc > /test1/2.txt
[root@ccc ~]# cat /test1/2.txt
ccc
[root@ccc ~]# lvcreate -L 1G -n lv1_from_vg1_snap /dev/vg1/lv1_freom_vg1
Volume group name expected (no slash)
Run `lvcreate --help' for more information.
[root@ccc ~]# lvcreate -L 1G -s -n lv1_from_vg1_snap /dev/vg1/lv1_freom_vg1
Reducing COW size 1.00 GiB down to maximum usable size 104.00 MiB.
Logical volume "lv1_from_vg1_snap" created.
[root@ccc ~]# echo 1111 >> /test1/2.txt
[root@ccc ~]# echo 1111 >> /test1/2.txt
[root@ccc ~]# echo 1111 >> /test1/2.txt
[root@ccc ~]# echo 1111 >> /test1/2.txt
[root@ccc ~]# cat /test1/2.txt
ccc
1111
1111
1111
1111
[root@ccc ~]# mount -o nouuid /dev/vg1/lv1_from_vg1_snap /opt/
[root@ccc ~]# cat /opt/2.txt
ccc
# 先卸载数据源与快照,再进行合并,快照是一次性的会自动删除
[root@ccc ~]# umount /opt/
[root@ccc ~]# umount /test1/
[root@ccc ~]# lvconvert --mergesnapshot /dev/vg1/lv1_from_vg1_snap
Merging of volume vg1/lv1_from_vg1_snap started.
vg1/lv1_freom_vg1: Merged: 100.00%
[root@ccc ~]# mount /dev/vg1/lv1_freom_vg1 /test1
[root@ccc ~]# cat /test1/2.txt
ccc
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|