Linux系统磁盘高级管理
一、LVM磁盘管理
LVM逻辑卷管理,它是Linux环境下对磁盘和分区进行管理的一种机制。
1、LVM的组成部分有哪些
物理卷(PV,Physical Volume):由磁盘或分区转化而成
卷组(VG,Volume Group):将多个物理卷组合在一起组成了卷组,组成同一个卷组的可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区,也可以是整块磁盘,我们通常把卷组理解为一块硬盘
逻辑卷(LV,Logical Volume):把卷组理解为硬盘的话,那么我们的逻辑卷则是硬盘上的分区,逻辑卷可以进行格式化,存储数据
物理扩展(PE,Physical Extend):PE卷组的最小存储单元,PE所在的位置是VG卷组,即硬盘上,那么我们可以把PE理解为硬盘上的扇区,默认是4MB,可自由配置
2、LVM的创建过程
第一步: 将磁盘分区,或整块磁盘不分区(不做任何操作)
第二步:将磁盘上的分区或整块盘建立成物理卷(PV)
第三步:将新增的物理卷组合成卷组(VG),并且可以通过添加或者删除一块物理卷,来实现卷组大小 的调整
第四步:最后将卷组划分成逻辑卷(LV),逻辑卷也是可以随意调整大小的,逻辑卷相当于真正的分 区,那么要使用必须进行格式化和挂载
3、物理卷管理PV
gdisk /dev/sdb ##先分区
[root@k8s-node02 ~]# 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):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-209715199,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199):
将使用默认值 209715199
分区 1 已设置为 Linux 类型,大小设为 100 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
fdisk /dev/sdc 相同的动作
创建物理卷—pvcreate
[root@k8s-node02 ~]# pvcreate /dev/sdb1 可批量转化,空格分开即可
WARNING: gpt signature detected on /dev/sdb1 at offset 512. Wipe it? [y/n]: y
Wiping gpt signature on /dev/sdb1.
WARNING: gpt signature detected on /dev/sdb1 at offset 107373133312. Wipe it? [y/n]: y
Wiping gpt signature on /dev/sdb1.
WARNING: PMBR signature detected on /dev/sdb1 at offset 510. Wipe it? [y/n]: y
Wiping PMBR signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[root@k8s-node02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sdb1 lvm2 --- <100.00g <100.00g
[root@k8s-node02 ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@k8s-node02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sdb1 lvm2 --- <100.00g <100.00g
/dev/sdc1 lvm2 --- <100.00g <100.00g
查看物理卷—pvscan & pvdisplay
[root@k8s-node02 ~]# pvs 查看所有物理卷列表
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sdb1 lvm2 --- <100.00g <100.00g
/dev/sdc1 lvm2 --- <100.00g <100.00g
[root@k8s-node02 ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<99.00 GiB / 0 free]
PV /dev/sdb1 lvm2 [<100.00 GiB]
PV /dev/sdc1 lvm2 [<100.00 GiB]
Total: 3 [298.99 GiB] / in use: 1 [<99.00 GiB] / in no VG: 2 [<200.00 GiB]
pvdisplay查看每一个物理卷的详细信息
[root@k8s-node02 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <99.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 25343
Free PE 0
Allocated PE 25343
PV UUID oASINu-xRJr-IfbW-cIvt-O4aO-EUC8-TN3Pof
"/dev/sdb1" is a new physical volume of "<100.00 GiB"
删除物理卷—pvremove
[root@k8s-node02 ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@k8s-node02 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.00g 0
/dev/sdc1 lvm2 --- <100.00g <100.00g
2、卷组管理
创建卷组-vgcreate
格式:vgcreate 选项 卷组名 物理卷(写多个时用空格分开)
-s 大小:指定VG的PE大小
vgcreate -s 2M vgdata /dev/sdb1 /dev/sdc1
[root@k8s-node02 ~]# vgcreate -s 2M vgdata /dev/sdb1 /dev/sdc1
Volume group "vgdata" successfully created
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 2 0 0 wz--n- 199.99g 199.99g
查看卷组—vgscan & vgdisplay
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 2 0 0 wz--n- 199.99g 199.99g
[root@k8s-node02 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <99.00 GiB
PE Size 4.00 MiB
Total PE 25343
Alloc PE / Size 25343 / <99.00 GiB
Free PE / Size 0 / 0
VG UUID FLhfmm-AiOL-RE8E-oXjS-T7yg-nT1R-nNDs8u
减小卷组容量–vgreduce
vgreduce vgdata /dev/sdc1
格式:vgreduce 卷组名 物理卷名
拓展:vgreduce -a 卷组 #删除指定卷组内所有空的物理卷
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 2 0 0 wz--n- 199.99g 199.99g
[root@k8s-node02 ~]# vgreduce vgdata /dev/sdc1
Removed "/dev/sdc1" from volume group "vgdata"
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 1 0 0 wz--n- <100.00g <100.00g
增加卷组容量–vgextend
格式:vgrextend 卷组名 物理卷名
vgextend vgdata /dev/sdc1 #向指定卷组内添加指定物理卷
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 1 0 0 wz--n- <100.00g <100.00g
[root@k8s-node02 ~]# vgextend vgdata /dev/sdc1
Volume group "vgdata" successfully extended
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 2 0 0 wz--n- 199.99g 199.99g
删除卷组—vgremove(若已存数据则谨慎操作)
格式:vgremove vg名称
[root@k8s-node02 ~]# vgremove vgdata
3、逻辑卷管理LV
创建逻辑卷–lvcreate
格式:lvcreate 选项 -n 逻辑卷名 卷组名
-L 容量:指定创建的逻辑卷大小,单位:MB,GB,TB等
-l(小) PE个数:按照PE个数来指定逻辑卷大小
-n 逻辑卷名:指定逻辑卷的名字
比如:lvcreate -L 20G -n lvdata vgdata
[root@k8s-node02 ~]# lvcreate -L 20G -n lvdata vgdata
Logical volume "lvdata" created.
[root@k8s-node02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <97.00g
swap centos -wi-a----- 2.00g
lvdata vgdata -wi-a----- 20.00g
注意:因为逻辑卷相当于是分区,所以需要进行格式化和挂载才能使用,并设置自启动
查看逻辑卷—lvscan & lvdisplay
[root@k8s-node02 ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<97.00 GiB] inherit
ACTIVE '/dev/vgdata/lvdata' [20.00 GiB] inherit
[root@k8s-node02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <97.00g
swap centos -wi-a----- 2.00g
lvdata vgdata -wi-a----- 20.00g
[root@k8s-node02 ~]# lvdisplay ##查看详情
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID uxRhvb-dcjZ-8m0U-Yvrg-px8b-a31W-f21e0M
LV Write Access read/write
LV Creation host, time localhost, 2021-05-11 19:47:31 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
创建完lv之后要格式化
格式:mkfs.xfs /dev/vgdata/lvdata
[root@k8s-node02 ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<97.00 GiB] inherit
ACTIVE '/dev/vgdata/lvdata' [20.00 GiB] inherit
[root@k8s-node02 ~]# mkfs.xfs /dev/vgdata/lvdata
meta-data=/dev/vgdata/lvdata isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, 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@k8s-node02 ~]# mkdir /backup
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# mount /dev/vgdata/lvdata /backup/
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# df -h | grep backup
/dev/mapper/vgdata-lvdata 20G 33M 20G 1% /backup
增加逻辑卷容量–lvextend
注意Centos6中:修改lv及文件系统的大小,必须先将lv及文件系统卸载(umount)
lvextend -L +10G /dev/vgdata/lvdata ##先增加lv的大小
centos7: xfs_growfs /dev/vgdata/lvdata ##再修改文件系统的大小
C6版:resize2fs -f /dev/vgdata/lvdata 25G #再修改文件系统的大小
[root@k8s-node02 ~]# lvextend -L +10G /dev/vgdata/lvdata ##先扩容
Size of logical volume vgdata/lvdata changed from 30.00 GiB (15360 extents) to 40.00 GiB (20480 extents).
Logical volume vgdata/lvdata successfully resized.
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 3.5G 94G 4% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 394M 0 394M 0% /run/user/0
/dev/mapper/vgdata-lvdata 20G 33M 20G 1% /backup
[root@k8s-node02 ~]# xfs_growfs /dev/vgdata/lvdata ##然后在更新
meta-data=/dev/mapper/vgdata-lvdata isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 5242880 to 10485760
[root@k8s-node02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 3.5G 94G 4% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 394M 0 394M 0% /run/user/0
/dev/mapper/vgdata-lvdata 40G 33M 40G 1% /backup
减小逻辑卷容量—lvreduce
注意:xfs文件系统默认只支持扩容,不支持缩小,so,无法真正做到无损…
注意:解除挂载之前要先将数据备份
[root@k8s-node02 ~]# df -h | grep backup
/dev/mapper/vgdata-lvdata 40G 33M 40G 1% /backup
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# umount /dev/vgdata/lvdata
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# lvreduce -L 20G /dev/vgdata/lvdata
WARNING: Reducing active logical volume to 20.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgdata/lvdata? [y/n]: y
Size of logical volume vgdata/lvdata changed from 40.00 GiB (20480 extents) to 20.00 GiB (10240 extents).
Logical volume vgdata/lvdata successfully resized.
[root@k8s-node02 ~]# mkfs.xfs -f /dev/vgdata/lvdata
meta-data=/dev/vgdata/lvdata isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, 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@k8s-node02 ~]# mount /dev/vgdata/lvdata /backup/
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 3.5G 94G 4% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 394M 0 394M 0% /run/user/0
/dev/mapper/vgdata-lvdata 20G 33M 20G 1% /backup
然后将数据在恢复进去
拓展:C6中的操作
e2fsck -f /dev/vgdata/lvdata #检查文件系统
resize2fs /dev/vgdata/lvdata newsize #减少后文件系统大小
lvreduce -L newsize/dev/vgdata/lvdata #减少后lv大小
4、激活卷组
vgchange -a y vgdata
[root@k8s-node02 ~]# vgchange -a y vgdata
1 logical volume(s) in volume group "vgdata" now active
5、停用卷组
vgchange -a n vgdata
[root@k8s-node02 ~]# vgchange -a n vgdata
Logical volume vgdata/lvdata contains a filesystem in use.
Can't deactivate volume group "vgdata" with 1 open logical volume(s)
卷组创建完毕后,可以通过 vgchange 命令来激活卷组,而无法重启系统
通过使用 vgchange 命令,我们可以激活 scvg 卷组
6、vg的导出
第一步:解除挂载
第二步:lvchange -an /dev/vgdata ##将vg停用
第三步:vgexport vgdata ##将vg导出 命令格式:vgexport vg的名称
第四步:vgs或者lvs查看
[root@k8s-node02 ~]# umount /backup/
[root@k8s-node02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 3.5G 94G 4% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 394M 0 394M 0% /run/user/0
[root@k8s-node02 ~]# lvchange -an /dev/vgdata
[root@k8s-node02 ~]# vgexport vgdata
Volume group "vgdata" successfully exported
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 2 1 0 wzx-n- 199.99g 179.99g
[root@k8s-node02 ~]# lvs
Volume group vgdata is exported
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <97.00g
swap centos -wi-a----- 2.00g
7、vg的导入
第一步:vgimport vgdata ##导入vg
第二步:vgchange -ay vgdata ##激活卷组
第三步:将vg或者lv进行挂载
第四步:lvs或者vgs查看
[root@k8s-node02 ~]# vgimport vgdata
Volume group "vgdata" successfully imported
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# vgchange -ay vgdata
1 logical volume(s) in volume group "vgdata" now active
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# mount /dev/vgdata/lvdata /backup/
[root@k8s-node02 ~]#
[root@k8s-node02 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <97.00g
swap centos -wi-a----- 2.00g
lvdata vgdata -wi-ao---- 20.00g
[root@k8s-node02 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <99.00g 0
vgdata 2 1 0 wz--n- 199.99g 179.99g
[root@k8s-node02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 3.5G 94G 4% /
/dev/sda1 1014M 166M 849M 17% /boot
tmpfs 394M 0 394M 0% /run/user/0
/dev/mapper/vgdata-lvdata 20G 33M 20G 1% /backup
二、磁盘配额
由于Linux是一个多用户管理的操作系统,而Linux默认情况下并不限制每个用户使用磁盘空间的大小,假如某个用户疏忽或者恶意占满磁盘空间,将导致系统磁盘无法写入甚至崩溃;为了保证系统磁盘的有足够的剩余空间,我们需要对用户和组进行磁盘空间使用限制。
1、磁盘配额限制类型
限制用户和组对磁盘空间的使用量(data block)
限制用户和组在磁盘内创建文件的个数(inode)
2、磁盘配额限制级别
软限制:低级限制,此限制可以突破,突破时会被警告
硬限制:绝对限制,此限制不会被突破,达到指定限制后无法使用更多空间
宽限天数:允许用户在每个文件系统指定的宽限期内超过他们的软限制。一旦宽限期过期,软限制将作 为硬限制强制执行
注意:磁盘配额是针对分区进行设置的,无法实现“某用户在系统中共计只能使用50MB磁盘空间”只能 设置某用户在/home分区能使用30M这样的限制。切记:磁盘配额是针对分区的!
3、查看系统是否支持磁盘配额
grep “CONFIG_QUOTA” /boot/config-3.10.0-957.el7.x86_64
4、查看磁盘配额命令是否安装
rpm -q quota
5、设置用户或组的限制标准,编辑配置文件
xfs_quota -x -c ‘limit bsoft=40m bhard=50m isoft=8 ihard=10 laow’ /movie
-x:专家模式
-c:用来指定后续规则作为quota命令的参数(若不指定默认以交互式进行)
limit:设置限制的命令
容量:bsoft(软) bhard(硬)
文件数:isoft(软) ihard(硬)
xfs_quota -x -c ‘report’ /movie
6、编辑配置文件修改限制
命令:edquota 选项 用户或组
-u:修改用户的限额配置
-g:修改组的限额配置
[root@localhost ~]# edquota -u laow
Disk quotas for user laow (uid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 40960 51200 0 8 10
7、启动和关闭磁盘配额
**启动:**quotaon 选项 分区名称
-u 启动用户的磁盘配额
-g 启动组的磁盘配额
-v 显示启动过程信息
[root@localhost ~]# quotaon -ugv /dev/sdb1
quotaon: Enforcing group quota already on /dev/sdb1
quotaon: Enforcing user quota already on /dev/sdb1
**关闭:**quotaoff 选项 分区名称
-u 关闭用户的磁盘配额
-g 关闭组的磁盘配额
-v 显示启动过程信息
root@localhost ~]# quotaoff -ugv /dev/sdb1
Disabling group quota enforcement on /dev/sdb1
/dev/sdb1: group quotas turned off
Disabling user quota enforcement on /dev/sdb1
/dev/sdb1: user quotas turned off
8、查看磁盘配额的信息
查询用户或组的配额:quota 选项 用户或组名
-u 用户名
-g 组名
-v 显示详细信息
-s 以常见单位显示大小
[root@localhost ~]# quota -uvs laow
Disk quotas for user laow (uid 1000):
Filesystem space quota limit grace files quota limit grace
/dev/sdb1 0K 40960K 51200K 0 8 10
常见组合:-uvs -gvs
查询指定分区的磁盘配额:repquota 选项 分区名
[root@localhost ~]# repquota -uvs /dev/sdb1
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 0K 0K 0K 3 0 0
laow -- 0K 40960K 51200K 0 8 10
*** Status for user quotas on device /dev/sdb1
Accounting: ON; Enforcement: ON
Inode: #67 (2 blocks, 2 extents)
组合方式:-uvs -gvs -ugvs
三、扩展命令 dd命令
用于通过指定大小的块进行数据拷贝和类型转换的命令
格式:dd if=数据来源 of=数据目标 bs=块大小 count=块数量
if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为bytes个字节(可自定义单位)。
count=blocks:拷贝块的数量,块大小等于bs指定的大小
常见的组合案例
将本地的/dev/sdb整盘备份到/dev/sde
dd if=/dev/sdb of=/dev/sde
将/dev/sdb全盘数据备份到指定路径的image文件中(附恢复)
dd if=/dev/sdb of=/root/image
dd if=/root/image of=/dev/sdb
备份/dev/sdb全盘数据,并利用gzip工具进行压缩,保存到指定路径(附恢复)
dd if=/dev/sdb | gzip > /root/image.gz
gzip -dc /root/image.gz | dd of=/dev/sdb
备份与恢复MBR:
备份磁盘开始的512个字节大小的MBR信息到指定文件
dd if=/dev/sda of=/root/image count=1 bs=512
count=1指仅拷贝一个块;bs=512指块大小为512个字节。
恢复:
dd if=/root/image of=/dev/sdb
将备份的MBR信息写到磁盘开始部分
拷贝光盘内容到指定文件夹,并保存为cd.iso文件(生成镜像文件
dd if=/dev/cdrom(sr0) of=/root/cd.iso
销毁磁盘数据
dd if=/dev/urandom of=/dev/sdb
注意:利用随机的数据填充硬盘,在某些必要的情况下可以用来销毁数据。
测试硬盘的读写速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
dd if=/root/1Gb.file of=/dev/null bs=64k
通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
/dev/zero:是一个特殊设备(伪设备),你可你用它来初始化文件。该设备无穷尽地提供0,可 以用于 向设备或文件写入字符串0。
dev/null:也是一个特殊设备(伪设备),称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果 不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。外号叫无底洞,你可以向它输出 任何数据,它通吃,并且不会被装满!
确定硬盘的最佳块大小
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小