Linux基础18 磁盘介绍, 结构, 磁盘分区Fdisk, lsblk磁盘信息, df查看磁盘使用情况, 文件工具dd

磁盘的基本概念 

1.什么是磁盘?
磁盘就像是森林,是所有硬式存储的统称,如最早出现的软盘,现在的硬盘,都是磁盘中的一部分。
2.什么是软盘?
磁盘开始指的是1.44MB的3.5英寸磁盘,这是很早时候的电脑储存盘,也叫软盘。
软盘在如今已经很少被使用了,使用软盘需要安装软盘驱动。软盘容量小,容易损坏。随着数据的大量增长,软盘已经不满足日益所需的数据存储需求,如是,硬盘便被研发出来。
3.什么是硬盘?
硬盘就是计算机中的最大的存储装置了,就是将磁盘的储存片装到硬质金属盒子里可以得到更好的保护,而且在使用寿命上也比软盘优越得多,只有低格才对硬盘有很大的伤害,其它的读写是不要紧的,也就叫硬盘。
4.磁盘与软盘硬盘的关系?
磁盘是一种统称,即是一开始的软盘,又是现如今的硬盘,但是在现在,说起磁盘,都指的是硬盘。

 

磁盘的基本结构

盘片
磁道
扇区 512字节,又是最小的物理单位
柱面
磁头

 

磁盘的预备知识 

IDE,SCSI (已经被淘汰)

SATA III 与 SAS (企业使用较多)

M.2接口是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来的mSATA接口。无论是更小巧的规格尺寸,还是更高的传输性能,M.2都远胜于mSATA
M2接口百度百科

你了解M.2固态硬盘吗?

装机到底要不要买M.2接口的SSD?

SATA、MSATA、PCIE和M2都是什么?

固态硬盘SATA和MSATA有什么区别?
https://baike.baidu.com/item/m.2%E6%8E%A5%E5%8F%A3
http://baijiahao.baidu.com/s?id=1604321789851430125&wfr=spider&for=pc
http://www.sohu.com/a/253988990_610530
http://www.sohu.com/a/229021919_463982
https://zhidao.baidu.com/question/754765227221408324.html

 

机械和固态的对比
机械(HDD) 固态(SSD)
容量大价格低 容量小价格高
抗击打能力弱 抗击打能力高
读写速度稍慢 读写速度很快
数据恢复易 数据恢复难
使用时间无限 使用时间1-2w次(使用完所有容量,或者格式化算一次)

 

尺寸:2.5英寸 3.5英寸
单位:B KB MB GB TB PB
转速:7200 10K 15K
iops:每秒的输入和输出

 

磁盘设备的命令方式:

[root@web ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 1 Jul 13 17:33 /dev/sda1    # 有分区,不用看sda(不存在了)
brw-rw----. 1 root disk 8, 2 Jul 13 17:33 /dev/sdb2  #设备文件 (8是主设备好,2是次设备号)
brw-rw----. 1 root disk 8, 3 Jul 13 17:33 /dev/sda5
设备名称     分区信息       设备类型
/dev/sda    /dev/sda1    第一块物理磁盘第一分区    # sd开头为物理磁盘
/dev/sdb    /dev/sdb2    第二块磁盘第二个分区
/dev/vdd    /dev/vdd4    第四块虚拟磁盘的第四个分区    # vd开头为虚拟磁盘

系统中分区由数字编号表示,1-4表示给主分区使用和扩展分区,逻辑分区从5开始

https://baike.baidu.com/item/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95/7612638

前面我们已经提到过MBR分区表只能分配4个主分区,但现在还有一种新型的分区表GPT,GPT支持分配128个主分区。注意MBR与GPT之间不能互转,会导致数据丢失。

http://www.360doc.com/content/18/0614/22/6140124_762487520.shtml

MBR位置:0磁头0磁道1扇区。

 

#显示磁盘分区信息的命令

[root@web ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        48G  3.0G   45G   7% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M   18M  973M   2% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
/dev/sr0        4.3G  4.3G     0 100% /mnt
tmpfs           199M     0  199M   0% /run/user/0
tmpfs           199M     0  199M   0% /run/user/1011

#目录统计工具du [root@web
~]# du -sh /etc # 查看目录或文件大小 166M /etc

#列出块设备 [root@web
~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT(盘的挂载点) sda 8:0 0 50G 0 disk ├─sda1 8:1 0 200M 0 part /boot ├─sda2 8:2 0 2G 0 part [SWAP] └─sda3 8:3 0 47.8G 0 part / sr0 11:0 1 4.3G 0 rom /mnt

#查看指定设备
[root@ubuntu2204 ~]# lsblk -f /dev/sdc

#查看所有设备
[root@rocky86 ~]# lsblk -f

 

# 在vm中添加硬盘,在设置中硬件下面点击添加硬盘,创建新的虚拟磁盘(不要勾选立即分配所有磁盘空间,否则会直接给空间)
添加20g的做fdiks,添加3072g(3T)做gdisk
通过ll /dev/sd*或lsblk查看是否识别,没有识别重启一次reboot (下面有不重启识别方法)

# 虚拟机添加磁盘分别为20G  3T,添加完成后要重启虚拟机
[root@web ~]# ll /dev/sd*
brw-rw----. 1 root disk 8,  0 Jul 16 18:33 /dev/sda
brw-rw----. 1 root disk 8,  1 Jul 16 18:33 /dev/sda1
brw-rw----. 1 root disk 8,  2 Jul 16 18:33 /dev/sda2
brw-rw----. 1 root disk 8,  3 Jul 16 18:33 /dev/sda3
brw-rw----. 1 root disk 8, 16 Jul 16 18:33 /dev/sdb
brw-rw----. 1 root disk 8, 32 Jul 16 18:33 /dev/sdc
[root@web ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 47.8G  0 part /
sdb      8:16   0   20G  0 disk 
sdc      8:32   0    3T  0 disk 
sr0     11:0    1  4.3G  0 rom  

 添加硬盘,不重启识别

#重新扫描SCSI总线
[root@rocky86 ~]# echo '- - -' > /sys/class/scsi_host/host0/scan 
[root@rocky86 ~]# echo '- - -' > /sys/class/scsi_host/host1/scan 
[root@rocky86 ~]# echo '- - -' > /sys/class/scsi_host/host2/scan

#但是在 ubuntu 中,该目录下的内容太多了
[root@ubuntu2204 ~]# ls /sys/class/scsi_host/
host0   host11 host14 host17 host2   host22 host25 host28 host30 host4 
host7...


#两种写法,1 循环遍历
[root@ubuntu2204 ~]# for i in `ls /sys/class/scsi_host/`;do echo '- - -' > 
/sys/class/scsi_host/$i/scan;done

#2 找出SPI总线对应的 host,只扫描该 host
[root@ubuntu2204 ~]# grep mptspi /sys/class/scsi_host/host*/proc_name
/sys/class/scsi_host/host32/proc_name:mptspi
[root@ubuntu2204 ~]# echo '- - -' > /sys/class/scsi_host/host32/scan

#此处是重新扫描 SCSI 总线来添加设备,之所以是 SCSI 总线,是因为我们添加的 SCSI 类型的硬盘

 

管理存储

使用磁盘空间过程
1.设备分区(fdisk/gdisk)                    
2.创建文件系统(mkfs) ---------- 格式化(设定block大小,inode区和block区)
3.挂载新的文件系统(mount)(linux是单根,要指定路径;windows因为多根系统所以不需要)

#如果磁盘中查看到已分区内容,内存命令中看不到
partprobe  同步下

 创建文件系统

mkfs

mkfs [options] [-t <type>] [fs-options] <device> [<size>]

#常用选项
-t|--type=model #指定文件系统类型 (ext2|ext3|ext4|xfs),默认 ext2
-b               #指定块 block 大小 (1024|2048|4096)
-L LABEL #设置卷标
-V|--verbose     #显示创建过程
-j #同 -t ext3
-i N  #为数据空间中每多少个字节创建一个inode;不应该小于block
大小
-N N #指定分区中创建多少个inode
-I N               #一个inode记录占用的磁盘空间大小,128---4096
-m N #默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] #启用指定特性
-O ^FEATURE #关闭指定特性

#例:
#创建ext4 文件系统
#mkfs.ext4 /dev/sdc1 等同于 mkfs -t ext4 /dev/sdc1
[root@ubuntu2204 ~]# mkfs.ext4 /dev/sdc1

#创建xfs文件系统
[root@ubuntu2204 ~]# mkfs.xfs /dev/sdc2 

 

fdisk  只支持MBR分区表,适用于2TB以下的分区。

MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

一. 使用fdisk进行分区

1.
[root@web ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

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

2.
Command (m for help): m
Command action
   a   toggle a bootable flag                   #切换分区启动标记
   b   edit bsd disklabel                       #编辑sdb磁盘标签
   c   toggle the dos compatibility flag        #切换dos兼容模式
** d   delete a partition                       #删除分区
   g   create a new empty GPT partition table    #创建新的空白GPT分区表
   G   create an IRIX (SGI) partition table        #创建IRIX (SGI)分区表
** l   list known partition types               #显示分区类型
** m   print this menu                          #显示帮助菜单
** n   add a new partition                      #新建分区
   o   create a new empty DOS partition table   #创建新的空白分区表
** p   print the partition table                #显示分区表的信息
** q   quit without saving changes              #不保存退出
   s   create a new empty Sun disklabel         #创建新的Sun磁盘标签
   t   change a partitions system id            #修改分区ID,可以通过l查看id
   u   change display/entry units               #修改容量单位,磁柱或扇区
   v   verify the partition table               #检验分区表
** w   write table to disk and exit             #保存退出
   x   extra functionality (experts only)       #拓展功能

3.
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 

4.回车(默认为p主分区) 或者输入p
Using default response p
Partition number (1-4, default 1): 
5.回车(默认分区1编号即可,方便记忆)
First sector (2048-41943039, default 2048): 
6.扇区从哪开始,回车,默认从2048开始即可
Using default value 2048
7.到哪里结束,可以用多少扇区或者多少大小表示。如果默认就是最大值,这里选择1G大小
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G
Partition 1 of type Linux and of size 1 GiB is set

8.显示分区表信息
Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
Partition number (2-4, default 2): 
First sector (2099200-41943039, default 2099200): 
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +2G
Partition 2 of type Linux and of size 2 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): 
Using default response p
Partition number (3,4, default 3): 
First sector (6293504-41943039, default 6293504): 
Last sector, +sectors or +size{K,M,G} (14680064-41943039, default 41943039): +7G
Using default value 41943039
Partition 3 of type Linux and of size 13 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux
/dev/sdb3        14680064    41943039    13631488   83  Linux

# 删除不要的分区
Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 is deleted

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): 
Using default response p
Partition number (3,4, default 3): 
First sector (6293504-41943039, default 6293504): 
Using default value 6293504
Last sector, +sectors or +size{K,M,G} (6293504-41943039, default 41943039): +7G
Partition 3 of type Linux and of size 7 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux
/dev/sdb3         6293504    20973567     7340032   83  Linux

# 创建扩展分区(扩展分区并不存放数据, 是存放逻辑分区的)
Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): 
# 此时再创建主分区,就不能创建扩展分区了。默认为扩展分区
Using default response e
Selected partition 4
First sector (20973568-41943039, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +5G    # 把剩余大小都给扩展分区,再在里面创建逻辑分区,所以此处需要把剩余10G都写上
Partition 4 of type Extended and of size 5 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux
/dev/sdb3         6293504    20973567     7340032   83  Linux
/dev/sdb4        20973568    31459327     5242880    5  Extended

Command (m for help): d
Partition number (1-4, default 4): 
Partition 4 is deleted

Command (m for help): n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): 
Using default response e
Selected partition 4
First sector (20973568-41943039, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): 
Using default value 41943039
Partition 4 of type Extended and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux
/dev/sdb3         6293504    20973567     7340032   83  Linux
/dev/sdb4        20973568    41943039    10484736    5  Extended

# 此时只能创建逻辑分区
Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (20975616-41943039, default 20975616):      
Using default value 20975616
Last sector, +sectors or +size{K,M,G} (20975616-41943039, default 41943039): +5G
Partition 5 of type Linux and of size 5 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux
/dev/sdb3         6293504    20973567     7340032   83  Linux
/dev/sdb4        20973568    41943039    10484736    5  Extended
/dev/sdb5        20975616    31461375     5242880   83  Linux

Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (31463424-41943039, default 31463424): 
Using default value 31463424
Last sector, +sectors or +size{K,M,G} (31463424-41943039, default 41943039): 
Using default value 41943039
Partition 6 of type Linux and of size 5 GiB is set

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x5b38e62c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     6293503     2097152   83  Linux
/dev/sdb3         6293504    20973567     7340032   83  Linux
/dev/sdb4        20973568    41943039    10484736    5  Extended
/dev/sdb5        20975616    31461375     5242880   83  Linux
/dev/sdb6        31463424    41943039     5239808   83  Linux

# 保存分区信息
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

# 可以通过ll /dev/sd*, 或者lsblk 查看

二.格式化,挂载

格式化分区,创建文件系统。
[root@web ~]# 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@web ~]# mkdir   /data1
[root@web ~]# ll /data1
total 0
[root@web ~]# cp /etc/services   /data1    # 空目录即可,这里展示效果会被覆盖
[root@web ~]# ll /data1
total 656
-rw-r--r--. 1 root root 670293 Jul 16 19:01 services

挂载(临时挂载)
[root@web ~]# mount /dev/sdb1  /data1
[root@web ~]# ll /data1
total 0
[root@web ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        48G  3.0G   45G   7% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.7M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1      1014M   33M  982M   4% /data1
[root@web ~]# dd if=/dev/zero of=/data1/test.txt  bs=10M count=50    # 创建文件
50+0 records in
50+0 records out
524288000 bytes (524 MB) copied, 2.13248 s, 246 MB/s
[root@web ~]# ll /data1/
total 512000
-rw-r--r--. 1 root root 524288000 Jul 16 19:03 test.txt
[root@web ~]# ll /data1/ -h
total 500M
-rw-r--r--. 1 root root 500M Jul 16 19:03 test.txt
[root@web ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        48G  3.0G   45G   7% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.7M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1      1014M  533M  482M  53% /data1


永久挂载
[root@web ~]# vim /etc/fstab
[root@web ~]# tail -1 /etc/fstab
/dev/sdb1     /data1        xfs             defaults        0     0
设备名        挂载点        文件系统类型      默认参数      是否备份  是否检查磁盘

[root@web ~]# umount /data1/    # 取消挂载,可以写目录名或者设备名
[root@web ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        48G  3.0G   45G   7% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.7M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
[root@web ~]# mount -a    # 将/etc/fstab的所有内容重新加载(用于检测是否编辑正常,通过reboot测试万一异常修复比较麻烦)
[root@web ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        48G  3.0G   45G   7% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.7M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1      1014M  533M  482M  53% /data1


重新选择一个挂载点
[root@web ~]# umount  /data1/
[root@web ~]# 
[root@web ~]# ll /data1/
total 656
-rw-r--r--. 1 root root 670293 Jul 16 19:01 services
[root@web ~]# mkdir  /data2
[root@web ~]# ll /data2
total 0
[root@web ~]# mount  /dev/sdb1  /data2
[root@web ~]# ll /data2
total 512000
-rw-r--r--. 1 root root 524288000 Jul 16 19:03 test.txt

 

文件工具dd

dd 命令:convert and copy a file

#常用格式
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST  bs=N count=N

#常用选项
if=file #从所命名文件读取而不是从标准输入
of=file #写到所命名的文件而不是到标准输出
ibs=size   #一次读size个byte
obs=size       #一次写size个byte
bs=size #指定块大小(既是是ibs也是obs)
cbs=size       #一次转化size个byte
skip=blocks   #从开头忽略blocks个ibs大小的块
seek=blocks   #从开头忽略blocks个obs大小的块
count=n         #复制n个bs
conv=conversion[,conversion...] #用指定的参数转换文件

#conversion 转换参数
ascii #转换 EBCDIC 为 ASCII
ebcdic #转换 ASCII 为 EBCDIC
lcase #把大写字符转换为小写字符
ucase #把小写字符转换为大写字符
nocreat #不创建输出文件
noerror #出错时不停止
notrunc #不截短输出文件
sync #把每个输入块填充到ibs个字节,不足部分用空(NUL)
字符补齐
fdatasync #写完成前,物理写入输出文件
#备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

#有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有
fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

#将本地的/dev/sdx整盘备份到/dev/sdy 
dd if=/dev/sdx of=/dev/sdy

#将/dev/sdx全盘数据备份到指定路径的image文件
dd if=/dev/sdx of=/path/to/image

#备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
dd if=/dev/sdx | gzip >/path/to/image.gz

#将备份文件恢复到指定盘
dd if=/path/to/image of=/dev/sdx

#将压缩的备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx

#将内存里的数据拷贝到root目录下的mem.bin文件
dd if=/dev/mem of=/root/mem.bin bs=1024

#拷贝光盘数据到root文件夹下,并保存为cdrom.iso文件
dd if=/dev/cdrom of=/root/cdrom.iso

#销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1

#通过比较dd指令输出中命令的执行时间,即可确定系统最佳的block size大小
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
dd if=/dev/zero of=/root/1Gb.file bs=2048 count=500000  
dd if=/dev/zero of=/root/1Gb.file bs=4096 count=250000

#测试硬盘写速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

#测试硬盘读速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
M57-M

 

posted @ 2023-05-08 14:18  战斗小人  阅读(278)  评论(0编辑  收藏  举报