LVM2(逻辑卷)
Logical Volume Manager 第二个版本
LVM原理图:
PV:Physics Volume (物理磁盘的块设备)
PE:Physics Extent(PV里的最小存储单元,和磁盘里的block概念类似)
VG:Virtual Volume (多个PV组成的虚拟卷,空间大小等于下层的PV空间只和)
LV:Logical Volume(逻辑卷。顶层用户使用的设备。是从VG划分出来的空间,分配给了LV,)
LE:Logical Extent(PV里的PE,在LV里叫LE而已)
LVM的目的:将多个磁盘组成一个逻辑设备。灵活的管理磁盘设备。实现按需增减磁盘空间,传统设备,很难增加空间。
逻辑卷放在/dev/mapper/目录下。这个目录下放的是符号链接,真正的逻辑卷是/dev/dm-#
centos6.10:/dev/vg_c610/目录下也是符号链接
# ll /dev/mapper/
crw-rw----. 1 root root 10, 58 Jan 31 14:27 control
lrwxrwxrwx. 1 root root 7 Jan 31 14:27 vg_c610-lv_root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Jan 31 14:27 vg_c610-lv_swap -> ../dm-1
# ll /dev/vg_c610/
total 0
lrwxrwxrwx. 1 root root 7 Jan 31 14:27 lv_root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Jan 31 14:27 lv_swap -> ../dm-1
centos7 1810:/dev/centos/目录下也是符号链接
# ll /dev/mapper/
total 0
lrwxrwxrwx. 1 root root 7 Feb 7 14:29 centos-home -> ../dm-2
lrwxrwxrwx. 1 root root 7 Feb 7 14:29 centos-root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Feb 7 14:29 centos-swap -> ../dm-1
# ll /dev/centos/
total 0
lrwxrwxrwx. 1 root root 7 Feb 7 14:29 home -> ../dm-2
lrwxrwxrwx. 1 root root 7 Feb 7 14:29 root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Feb 7 14:29 swap -> ../dm-1
安装centos操作系统时,如果不手动创建分区的话,自动创建的就是LVM。
centos6:/dev/sda2就是Linux LVM,它里面有/dev/mapper/vg_c610-lv_swap和/dev/mapper/vg_c610-lv_root
# fdisk -l
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 1045 7875584 8e Linux LVM
Disk /dev/mapper/vg_c610-lv_root: 7205 MB, 7205814272 bytes
255 heads, 63 sectors/track, 876 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_c610-lv_swap: 855 MB, 855638016 bytes
255 heads, 63 sectors/track, 104 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
centos7:/dev/sda2就是Linux LVM,它里面有/dev/mapper/centos-root,/dev/mapper/centos-swap,/dev/mapper/centos-home
# fdisk -l
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 125829119 61864960 8e Linux LVM
Disk /dev/mapper/centos-root: 39.8 GB, 39766196224 bytes, 77668352 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-home: 19.4 GB, 19415433216 bytes, 37920768 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
根据上图来看,要想创建LV,要先创建底层的PV和VG。
1,使用fdisk创建3个分区,sdb1:10M;sdb2:20M;sdb3:30M。并修改各个分区的System成Linux LVM
Device Boot Start End Blocks Id System
/dev/sdb1 1 2 15779 8e Linux LVM
/dev/sdb2 3 6 31620 8e Linux LVM
/dev/sdb3 7 11 39525 8e Linux LVM
2,告诉内核我创建了一个分区partx -a /dev/sdb
3,创建PV,使用pv开头的命令
# pv
pvchange pvck pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan pv.sh
创建PV:pvcreate
。指定设备文件创建pv
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
删除PV:pvremove
如果pv上已经有了vg,则需要先删除vg
# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped
把PV里的PE移动到别的PV:pvmove
# pvmove /dev/sdb3
No data to move for vg1
扫描:pvscan
检测:pvck
简要信息显示:pvs
# pvs /dev/sdb1
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 ---- 15.41m 15.41m
详细信息显示:pvdisplay
由于/dev/sdb1是新创建的,还没有把它加入到VG,所有VG没有。
# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "15.41 MiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 15.41 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 8Zyix5-13OS-PYHf-ZmmT-hSiH-iCv4-8FJJ61
4,创建VG,使用vg开头的命令
# vg
vgcfgbackup vgck vgdb vgextend vgmerge vgremove vgscan
vgcfgrestore vgconvert vgdisplay vgimport vgmknodes vgrename vgsplit vgchange vgcreate vgexport vgimportclone vgreduce vgs
创建VG:vgcreate
。指定设备文件创建vg。
创建vg1,并把/dev/sdb1 /dev/sdb2加入到vg1,PE的大小是2M。
# vgcreate vg1 -s 2M /dev/sdb1 /dev/sdb2
Physical volume "/dev/sdb2" successfully created
Volume group "vg1" successfully created
删除VG:vgremove
删除vg前,先umount所有lv,然后删除所有lv
# umount /dev/vg1/lv01
# lvremove /dev/vg1/lv01
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume "lv01" successfully removed
# vgremove vg1
Volume group "vg1" successfully removed
重命名VG:vgrename
扩展VG空间:vgextend
:就是往VG里再加一个PV。
# vgextend vg1 /dev/sdb3
Volume group "vg1" successfully extended
缩减VG空间:vgreduce
。缩减前要先移除PV
# pvmove /dev/sdb3
No data to move for vg1
[root@c610 ~]# vgreduce vg1 /dev/sdb3
Removed "/dev/sdb3" from volume group "vg1"
[root@c610 ~]# vgdisplay vg1
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
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 42.00 MiB
PE Size 2.00 MiB
Total PE 21
Alloc PE / Size 0 / 0
Free PE / Size 21 / 42.00 MiB
VG UUID hTcQTz-djr2-F4wD-cFL2-AVdt-Hwwn-WC4rco
切割VG:vgsplit
扫描:vgscan
检测:vgck
简要信息显示:vgs
# vgs vg1
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 42.00m 42.00m
详细信息显示:vgdisplay
# vgdisplay vg1
--- Volume group ---
VG Name vg1
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 42.00 MiB
PE Size 2.00 MiB
Total PE 21
Alloc PE / Size 0 / 0
Free PE / Size 21 / 42.00 MiB
VG UUID hTcQTz-djr2-F4wD-cFL2-AVdt-Hwwn-WC4rco
再看看pv的状态:
# pvs /dev/sdb*
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a--u 14.00m 14.00m
/dev/sdb2 vg1 lvm2 a--u 28.00m 28.00m
# pvdisplay /dev/sdb*
--- Physical volume ---
PV Name /dev/sdb1
VG Name vg1
PV Size 15.41 MiB / not usable 1.41 MiB
Allocatable yes
PE Size 2.00 MiB
Total PE 7
Free PE 7
Allocated PE 0
PV UUID Z1Ahmt-8h29-a7Vw-2Ico-xJsv-GQop-dR5n7c
--- Physical volume ---
PV Name /dev/sdb2
VG Name vg1
PV Size 30.88 MiB / not usable 2.88 MiB
Allocatable yes
PE Size 2.00 MiB
Total PE 14
Free PE 14
Allocated PE 0
PV UUID 328Wnd-hu1j-hqJl-DoYC-bHed-VNjI-F317fK
5,创建LV,使用lv开头的命令
# lv
lvchange lvdisplay lvmchange lvmdiskscan lvmsadc lvremove lvs
lvconvert lvextend lvmconf lvmdump lvmsar lvrename lvscan
lvcreate lvm lvmconfig lvmetad lvreduce lvresize
创建LV:lvcreate
指定大小:-L(单位mMgGtT)
指定逻辑卷的名字:-n
指定LE的数量:-l(小写L)
指定在哪个VG上创建:VolumeGroup
例子:在vg1上,创建一个12M,名字是lv01的lv
# lvcreate -L 12M -n lv01 vg1
Logical volume "lv01" created.
创建lv成功后,在/dev/mapper下,就多一个vg1-lv01逻辑卷
ll /dev/mapper/
total 0
crw-rw----. 1 root root 10, 58 Feb 9 07:01 control
lrwxrwxrwx. 1 root root 7 Feb 9 07:40 vg1-lv01 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Feb 9 07:01 vg_c610-lv_root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Feb 9 07:01 vg_c610-lv_swap -> ../dm-
有了逻辑卷,就可以当成正常的分区使用了。比如在分区里安装文件系统:
# mkfs.ext4 -b 1024 -L MYL01 /dev/mapper/vg1-lv01
mke2fs 1.41.12 (17-May-2010)
Filesystem label=MYL01
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
3072 inodes, 12288 blocks
614 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=12582912
2 block groups
8192 blocks per group, 8192 fragments per group
1536 inodes per group
Superblock backups stored on blocks:
8193
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
挂载:
# mount /dev/mapper/vg1-lv01 /mnt
# cp /etc/mtab /mnt
# ls /mnt
lost+found mtab
# mount
/dev/mapper/vg_c610-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/vg1-lv01 on /mnt type ext4 (rw)
简要显示:lvs
12M大小的逻辑卷lv01
# lvs /dev/vg1/lv01
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg1 -wi-ao---- 12.00m
显示详细信息:lvdisplay
# lvdisplay /dev/vg1/lv01
--- Logical volume ---
LV Path /dev/vg1/lv01
LV Name lv01
VG Name vg1
LV UUID xwToIt-5nEQ-Gcip-rtIQ-CftU-vPKS-KxRHNw
LV Write Access read/write
LV Creation host, time c610, 2020-02-09 07:40:26 +0600
LV Status available
# open 1
LV Size 12.00 MiB
Current LE 6
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
扩展:lvextend(问题不大,但如果上面有重要数据,建议先备份后,再扩展)
命令格式:lvextend -L [+]20M /dev/vg1/lv01
如果使用+号,则是要增加多少;不使用+号,则直接增加到多少。
在挂载的状态下,可以直接扩展。
# mount
/dev/mapper/vg1-lv01 on /mnt type ext4 (rw)
# lvextend -L 20M /dev/vg1/lv01
Size of logical volume vg1/lv01 changed from 12.00 MiB (6 extents) to 20.00 MiB (10 extents).
Logical volume lv01 successfully resized.
# lvs //dev/vg1/lv01
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg1 -wi-ao---- 20.00m
# lvdisplay //dev/vg1/lv01
--- Logical volume ---
LV Path /dev/vg1/lv01
LV Name lv01
VG Name vg1
LV UUID xwToIt-5nEQ-Gcip-rtIQ-CftU-vPKS-KxRHNw
LV Write Access read/write
LV Creation host, time c610, 2020-02-09 07:40:26 +0600
LV Status available
# open 1
LV Size 20.00 MiB
Current LE 10
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
但是使用df -lh
命令发现分区大小没有变大
# df -lh /dev/mapper/vg1-lv01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv01 11M 110K 10M 2% /mnt
虽然lv空间是大了,但是lv里面的文件系统不知道啊,所以要告诉里面的文件系统,我变大了,使用resize2fs /dev/vg1/lv01
命令告诉。
注意:resize2fs
命令只适用于ext系列文件系统
resize后,再用df
查看,空间就变大了。
# resize2fs /dev/vg1/lv01
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg1/lv01 is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg1/lv01 to 20480 (1k) blocks.
The filesystem on /dev/vg1/lv01 is now 20480 blocks long.
# df -lh /dev/mapper/vg1-lv01
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv01 19M 110K 18M 1% /mnt
缩减:lvreduce(出问题的可能性非常大,一定要先备份。)
1,先卸载文件系统
# umount /mnt
2,强制检测,修复文件系统
# e2fsck -f /dev/vg1/lv01
e2fsck 1.41.12 (17-May-2010)
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
MYL01: 12/4608 files (8.3% non-contiguous), 1721/20480 blocks
3,先缩减文件系统的大小(缩减后的大小,一定要能容纳下现有的内容)
# resize2fs /dev/vg1/lv01 10M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg1/lv01 to 10240 (1k) blocks.
The filesystem on /dev/vg1/lv01 is now 10240 blocks long.
4,缩减lv的大小
# lvreduce -L 10M /dev/vg1/lv01
WARNING: Reducing active logical volume to 10.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv01? [y/n]: y
Size of logical volume vg1/lv01 changed from 20.00 MiB (10 extents) to 10.00 MiB (5 extents).
Logical volume lv01 successfully resized.
5,重新挂载
# mount /dev/vg1/lv01 /mnt
# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_c610-lv_root
6.5G 2.1G 4.1G 34% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 477M 40M 412M 9% /boot
/dev/mapper/vg1-lv01 8.7M 110K 8.2M 2% /mnt
# lvs /dev/vg1/lv01
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg1 -wi-ao---- 10.00m
# lvdisplay /dev/vg1/lv01
--- Logical volume ---
LV Path /dev/vg1/lv01
LV Name lv01
VG Name vg1
LV UUID xwToIt-5nEQ-Gcip-rtIQ-CftU-vPKS-KxRHNw
LV Write Access read/write
LV Creation host, time c610, 2020-02-09 07:40:26 +0600
LV Status available
# open 1
LV Size 10.00 MiB
Current LE 5
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2
6,检测文件丢没丢
# ll /mnt
drwx------. 2 root root 12288 Feb 9 07:52 lost+found
-rw-r--r--. 1 root root 320 Feb 9 07:56 mtab
删除:lvremove
# lvremove /dev/vg1/lv02
Do you really want to remove active logical volume snap01? [y/n]: y
Logical volume "snap01" successfully removed
修改大小(是有局限性的):lvresize
修改lv的配置文件:lvmconf
参考:https://blog.51cto.com/13570193/2073691
原理:
左边的图表示,LVM会在VG上预留一定的区域作为快照区,原本lv中存放着数据,同时快照区存放着lv中元数据,因此快照区大小不需要和原始lv一样的大小。在刚创建snapshot的时候,快照区中并不会真实地拷贝原始lv中的数据,只是记录了整个原始lv中的元数据,所以这个时间点快照区和原始lv共享文件系统的数据,即两边的数据一样。
? 右边的图表示,当原始lv中的数据发生改变的时候,原始lv中的发生变化的PE的数据更新之前,会将数据真实地备份至快照区的一个PE中,如图中,A->new A之前,先将A备份至快照区的一个PE,然后lv中A才更新为new A,这样快照区会保存lv中PE发生变化之前的数据,这时候我们再访问快照区的内容仍然为创建snapshot那个时间点的时候lv中的数据,因此我们可以利用快照区进行备份和恢复。
? 需要注意的是,由于快照区也有容量的限制,所以呢,当原始lv中发生变化的PE的数量超过快照区的PE的数量的时候,该快照就会立即失效。
? 我们在创建快照区的时候,要考虑将来lv数据的变化量,以此来指定快照区的大小,一种解决办法是刚创建完快照之后,立即把快照区中的内容进行备份,这样就不用时刻考虑快照区会失效了,因为我们已经把他的数据备份走了。还有一种简单粗暴的方法就是创建一个和原始lv一样大小的快照区,这样就不用担心数据变化量的因素了。
1,创建快照
lvcreate -L #[mMgGtT] -p r -s -n snapshort_name original_lv_name
快照卷必须和被快照的卷放在同一个卷组(VG)上
快照卷必须是只读的,所以使用:-p r。
快照卷创建成功后,生成/dev/vg1/snap01.
用lvs查看发现【sri-aos---】第一位是s,说明此lv是快照卷
# lvcreate -s -p r -n snap01 /dev/vg1/lv01 -L 6M
Logical volume "snap01" created.
# ll /dev/vg1
lrwxrwxrwx. 1 root root 7 Feb 9 09:33 lv01 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Feb 9 09:33 snap01 -> ../dm-5
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv01 vg1 owi-aos--- 10.00m
snap01 vg1 sri-aos--- 6.00m lv01 0.20
lv_root vg_c610 -wi-ao---- 6.71g
lv_swap vg_c610 -wi-ao---- 816.00m
# lvdisplay /dev/vg1/snap01
--- Logical volume ---
LV Path /dev/vg1/snap01
LV Name snap01
VG Name vg1
LV UUID qi9z5f-YdeV-CjXR-MAck-zP33-T9xw-Il0yqG
LV Write Access read only
LV Creation host, time c610, 2020-02-09 09:33:58 +0600
LV snapshot status active destination for lv01
LV Status available
# open 1
LV Size 10.00 MiB
Current LE 5
COW-table size 6.00 MiB
COW-table LE 3
Allocated to snapshot 0.20%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:5
2,创建后,必须挂载
# mkdir /snap
# mount /dev/vg1/snap01 /snap/
mount: block device /dev/mapper/vg1-snap01 is write-protected, mounting read-only
3,试验
修改lv中的文件,快照卷里的文件,不会被修改(修改前把原文件复制到了快照卷)
发现lv01挂载在/mnt;快照卷snap01挂载在/snap
# mount
/dev/mapper/vg1-lv01 on /mnt type ext4 (rw)
/dev/mapper/vg1-snap01 on /snap type ext4 (ro)
查看挂载目录下的文件
# ll /mnt
total 14
drwx------. 2 root root 12288 Feb 9 07:52 lost+found
-rw-r--r--. 1 root root 320 Feb 9 07:56 mtab
# ll /snap/
total 14
drwx------. 2 root root 12288 Feb 9 07:52 lost+found
-rw-r--r--. 1 root root 320 Feb 9 07:56 mtab
修改lv中mtab的内容
# echo "new line" >> /mnt/mtab
# cat /mnt/mtab
/dev/mapper/vg_c610-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw,rootcontext="system_u:object_r:tmpfs_t:s0" 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/mapper/vg1-lv01 /mnt ext4 rw 0 0
new line
查看快照卷的文件内容,没有被修改。
# cat /snap/mtab
/dev/mapper/vg_c610-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw,rootcontext="system_u:object_r:tmpfs_t:s0" 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
/dev/mapper/vg1-lv01 /mnt ext4 rw 0 0
新建一个文件在lv中,快照卷里不会有新建的文件
# touch /mnt/aa
# ll /snap/
drwx------. 2 root root 12288 Feb 9 07:52 lost+found
-rw-r--r--. 1 root root 320 Feb 9 07:56 mtab
在lv中删除,快照时存在的文件,快照卷里此文件不会被删除
# rm -f /mnt/mtab
# ll /snap/mtab
-rw-r--r--. 1 root root 320 Feb 9 07:56 /snap/mtab
4,快照不需要了后,删除快照
卸载
# umount /snap/
删除快照卷
# lvremove /dev/vg1/snap01
Do you really want to remove active logical volume snap01? [y/n]: y
Logical volume "snap01" successfully removed
命令:dd if=src of=dst bs=数字 count=数字
复制源:if;复制先:of;复制的单个单元大小:bs;复制单元的数量:count
cp命令是依赖文件系统的,dd命令不依赖文件系统,更底层,效率更高,而且可以不复制整个文件,可以按指定大小复制。
例子:复制文件,单元大小为1K,复制100个单元,所以就是复制了100K。
# dd if=/etc/mtab of=/root/mtab bs=1 count=100
100+0 records in
100+0 records out
100 bytes (100 B) copied, 0.000594531 s, 168 kB/s
# cat /root/mtab
/dev/mapper/vg_c610-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
# ll /root/mtab
-rw-r--r--. 1 root root 100 Feb 9 12:01 /root/mtab
dd最主要用途,磁盘拷贝,备份磁盘MBR,快速清除磁盘分区,清除磁盘的bootloader
磁盘拷贝:
# dd if=/dev/sda of=/dev/sdb
备份磁盘MBR(MBR存放在磁盘的前512字节):
# dd if=/dev/sda of=/tmp/mbr.back bs=512 count=1
快速清除磁盘分区:把磁盘的前512字节(MBR)全部变成0.
# dd if=/dev/zero of=/dev/sda bs=512 count=1
保留分区,破环MBR中的bootloader(在MRR的前446字节)。
# dd if=/dev/zero of=/dev/sda bs=446 count=1
/dev/zero是吐零机
原文:https://www.cnblogs.com/xiaoshiwang/p/12287074.html