13Linux之磁盘管理
13Linux之磁盘管理
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, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (2099200-41943039,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-41943039,默认为 41943039):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB 命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (4196352-41943039,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-41943039,默认为 41943039):+1G
分区 3 已设置为 Linux 类型,大小设为 1 GiB 命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (6293504-41943039,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 17 GiB 命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (6295552-41943039,默认为 6295552):
将使用默认值 6295552
Last 扇区, +扇区 or +size{K,M,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
步骤与mbr相似
# 需要先安装命令
[root@ccc ~]# yum install gdisk -y
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, 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/sdb3
meta-data=/dev/sdb3 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/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, 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/sdb6
meta-data=/dev/sdb6 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
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 查看
free -m
[root@ccc ~]# free -m
total used free shared buff/cache available
Mem: 972 115 762 7 94 736
Swap: 1906 0 1906
13.3.2 制作swap分区
mkswap
# 首先磁盘进行分区
[root@ccc ~]# mkswap /dev/sdb3 # 将/dev/sdb3格式化为swap
13.3.3 激活swap分区
swapon
[root@ccc ~]# free -m
total used free shared buff/cache available
Mem: 972 115 762 7 94 736
Swap: 1906 0 1906
[root@ccc ~]# swapon /dev/sdb3
[root@ccc ~]# free -m
total used free shared buff/cache available
Mem: 972 116 761 7 94 735
Swap: 2930 0 2930
13.3.4 关闭swap分区
swapoff
[root@ccc ~]# free -m
total used free shared buff/cache available
Mem: 972 116 761 7 94 735
Swap: 2930 0 2930
[root@ccc ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/sda2 partition 1952764 0 -2
/dev/sdb3 partition 1048572 0 -3
[root@ccc ~]# swapoff /dev/sdb3
[root@ccc ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/sda2 partition 1952764 0 -2
[root@ccc ~]# free -m
total used free shared buff/cache available
Mem: 972 115 762 7 94 735
Swap: 1906 0 1906
13.3.5 开机自动挂载
修改配置文件/etc/fstab
[root@ccc ~]# blkid | grep /dev/sdb3
/dev/sdb3: UUID="268ac984-c7e4-48ad-8511-0c29897453b4" TYPE="swap"
[root@ccc ~]# vim /etc/fstab
[root@ccc ~]# tail -1 /etc/fstab
UUID=268ac984-c7e4-48ad-8511-0c29897453b4 swap swap defaults 0 0
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
安装命令
[root@ccc ~]# yum install -y 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简介
lvm介绍
逻辑管理卷LVM是硬盘的一个系统工具。
通过LVM技术可以屏蔽磁盘分区的底层差异,在逻辑上给文件系统提供一个卷的概念,在卷上建议相应文件系统。
物理卷(PV):physical volume把常规的磁盘设备通过pvcreate命令对其进行初始化,形成物理卷,也就是硬盘或分区。(比作面粉)
卷组(VG):volume group把多个物理卷组成一个逻辑的整体,卷组的大小是多个硬盘之和,是由一个或多个PV组成的整体。(比作面团)
逻辑卷(LV):logical volume从卷组中划分需要的空间大小出来,用户仅需对其格式化即可挂载使用,从VG中切割出的空间用于创建文件系统。(比作馒头)
基本单元(PE):physical extend分配的逻辑大小的最小单元,默认4MB的基本块,即100MB逻辑空间需要创建25个PE。
使用lvm的原因
fdisk、gdisk工具对磁盘分区是把分区大小固定死的
如果分区设置的过大,白白浪费磁盘空间
如果分区设置的过小,会导致空间不够用的情况出现
lvm优缺点
优点:
1、可以在系统运行的状态下动态扩展文件系统的大小
2、文件系统可以跨多个磁盘,因此文件系统大小不会受到物理磁盘的限制
3、可以增加新的磁盘到LVM存储池中
4、可以以镜像的方式冗余重要的数据到多个物理磁盘
5、可以方便的导出整个卷组到另一台机器
缺点:
1、因为有额外的操作,存储性能受到影响
2、当卷组的一个磁盘损坏时,整个卷组都会受到影响
LVM有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用
解决措施:底层用RAID+上层LVM=既有冗余又有动态扩展
3、从卷组中移除一个磁盘时必须使用reducevg命令(要求root权限,且不允许在快照卷组中使用)
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 11111111 >> /test1/1.txt
[root@ccc ~]# cat /test1/1.txt
111
11111111 # 恢复数据
# 挂载快照,和原来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
13Linux之磁盘管理的更多相关文章
- liunx 磁盘管理命令记录
Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...
- Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷
今天给客户配置故障转移群集,在Windows Server 2012 R2的系统上,通过iSCSI连接上DELL的SAN存储后,在磁盘管理里面发现可以新建 简单卷.跨区卷.带区卷.镜像卷.RAID-5 ...
- Linux常用命令学习7---(磁盘管理df du、磁盘的分区和格式化fdisk parted)
1.磁盘管理 在服务器的维护中,我们需要关心服务器的磁盘使用了多少.还有多少的剩余空间.某个文件有多大.某个文件夹内的所有文件在一起一共占用的多少空间……问题.以便我们在合适的时机为服务器添加硬 ...
- LINUX的磁盘管理du命令详解
LINUX的磁盘管理du命令详解 du(disk usage)命令可以计算文件或目录所占的磁盘空间.没有指定任何选项时, 它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作 ...
- 用Win7自带的磁盘管理工具给硬盘分区
最近新买了一台笔记本,要给硬盘分几个区,心想还是用个工具方便点,于是就上网准备下个“硬盘分区魔术师”,但是看到有一篇文章介绍Win7系统也自带了硬盘分区工具,这我以前倒没听说过,试了一下,还挺方便好用 ...
- Linux_磁盘管理
一.linux磁盘管理 命令:fdisk -l brwx-rw--- 其中b(占位符)代表block,块设备文件 sda,sdb... --> 硬盘 其中sda1,sda2..sdb1,sdb2 ...
- Linux 磁盘管理
Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...
- Linux_06------Linux的磁盘管理
进制编码 * 3.格式化交换分区 * 4.启用交换分区 * * 1.2. * fdisk /dev/sdb * p * t * 6(分区编号) * L(查看编码列表),找到SWAP交换分区标号 * 8 ...
- Linux 系统常用命令汇总(五) 磁盘管理
磁盘管理 命令 选项 注解 示例 df [选项] 显示磁盘空间使用情况 显示磁盘空间是员工情况,以M显示: df -m -i 使用inodes显示结果 -k(m) 使用KB(MB)显示结果 du ...
随机推荐
- Exists 和Not Exists使用
描述:exists表示()内子查询语句返回结果不为空说明where条件成立就会执行主sql语句,如果为空就表示where条件不成立,sql语句就不会执行.not exists和exists相反,子查询 ...
- elasticsearch-安装-centos7- es7.5 搭建
centos6 搭建 参考 https://www.cnblogs.com/php-linux/p/8758788.html 搭建linux虚拟机 https://www.cnblogs ...
- Postgres 10.11安装教程
Postgres搭建 考虑到Drone和Sonarqube等都需要借助Postgres存储,为了保证CI服务的高效的工作,将考虑独立其中依赖的数据库,避免在繁忙时占用过多资源从而影响整体CI的速度. ...
- zabbix自定义脚本监控服务器端口状态
zabbix可以通过客户端的[net.tcp.port[<ip>,port]]该item监控项来判断本地/远程服务器TCP端口是否正常,不过当时没有想起来,就用了自定义脚本去写的,很久没有 ...
- PS编辑工具
3.1PS污点修复 (1)快捷键:J. (2)中括号可以改变笔触的大小,前中括号减小笔触,后中括号增加笔触. (3)可以用选区把需要修复的地方框选上,再进行修复,这样不会影响到未选区域. 3.2PS修 ...
- centos7下SVN服务器搭建
1,安装 yum install subversion 2,输入rpm -ql subversion查看安装位置 3,创建svn版本库目录 mkdir -p /var/svn/svnrepos 4,创 ...
- 深信服edr 2020HW行动0day 漏洞细节
漏洞1 一下4个漏洞触发都在其他文件,这里只进行漏洞点的分析. 漏洞点tool\log\c.php 启动c.php大约140行-148行 这里执行了两个方法 show_form 与main 这里追踪s ...
- vue 项目抛出警告
There are multiple modules with names that only differ in casing. 此图为 博主(初雪日)的截图, 这个问题虽然不报错,但是会对项目有影 ...
- USB引脚属性
1.各型号usb 2.type c接口 type c母头 type c公头 usb type c三种工作模式: usb 3.1有三种工作模式: 1:DRP.主HOST/DEVICE可自由转换,类似电脑 ...
- A. Peter and Snow Blower 解析(思維、幾何)
Codeforce 613 A. Peter and Snow Blower 解析(思維.幾何) 今天我們來看看CF613A 題目連結 題目 給你一個點\(P\)和\(n\)個點形成的多邊形(照順或逆 ...