码迷,mamicode.com
首页 > 系统相关 > 详细

磁盘管理——Linux基本命令(14)

时间:2017-08-26 18:21:52      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:linux

1.设备文件

1)磁盘存储术语

 head:磁头

 track:磁道

 cylinder: 柱面

 secotr: 扇区,512bytes

 

2)寻址方式

·CHScylinderheadsecotr)称为硬盘的三围

采用24bit位寻址

其中前10位表示cylinder,中间8位表示head,后面6位表示sector

最大寻址空间8GB

因为一个硬盘的磁头数/盘面数为2562^8),一个盘面上有10242^10)个磁道,每个磁道有642^6)个扇区,每个扇区512字节

 256*1024*64*512/1024/1024/1024=8GB   所以一个硬盘大小为8GB

 (64*512*256/1024/1024/1024=8M  一个柱面大小为8MB

 

·LBAlogical block addressing

  LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址

  LBA采用48bit位寻址

  最大寻址空间128PB (空间单位B KB MB GB TB PB EB ZB YB BB NB DB

 

由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

 

3)磁盘分区

为什么分区:

 优化I/O性能

 实现磁盘空间配额限制

 提高修复速度

 隔离系统和程序

 安装多个OS

 采用不同文件系统

 


2.分区方式

1)两种分区方式:MBRMSDOS),GPT

 MBR: Master BootRecord1982年,使用32位表示扇区数,分区不超过2T

512*2^32/1024/1024/1024/1024=2T

如何分区:按柱面

 0磁道0扇区:512bytes

其中:前446bytes: bootloaderGrub)引导分区(先不研究这个)

之后的64bytes:分区表(共有4个)

    16bytes: 标识一个分区

最后2bytes:55AA 标识位,代表分区结束

使用hexdump -C -n 512 -v /dev/sda 查看分区表

技术分享

 4个主分区;3主分区+1扩展(N个逻辑分区)

 

·备份

dd if=/dev/sda of=/dev/sdx bs=1 count=512

技术分享

然后使用hexdumo -C mbr查看分区,就跟sda一样了。

 

·破坏分区,格式化

dd if=/dev/zero of=/dev/sdx bs=1 count=512

技术分享

就是将zero复制过去,因此分区就没了。

技术分享

使用fdisk查看,果然没有了。

使用hexdump -C -n 512 -v /dev/sda 查看分区表也空了。技术分享


2MBR分区结构技术分享

扩展分区指向另外一个扇区,那个扇区也有512个字节,前446个字节未使用,后两位为55AA,中间的64个字节存储着扩展分区中的逻辑分区。扩展分区自身存储着第一个EBR的位置,一个EBR只对应一个逻辑分区,第二个分区用来指向下一个EBR的位置,以此类推。因此删除一个逻辑分区,不会影响下一个逻辑分区。

逻辑分区的信息不存在MBR中,使用dd复制的时候不会复制逻辑分区的内容。

技术分享

技术分享


3MBRDPT结构

技术分享

技术分享

技术分享

4GPT分区

GPT:GUIDGlobals Unique Identifiers partition table 支持128个分区,使用64位,支持8Z512Byte/block 64Z 4096Byte/block

使用128UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动

 

GPT分区结构:

(分为4部分)

技术分享


3.管理分区

1)列出和创建

·列出块设备

方法一:lsblk

技术分享

以树状结构列出块设备(包括光驱),可以看到每个硬盘的分区,设备号,挂载点,类型

技术分享

也可以指定列出某一块设备某个分区

 

方法二:ls /dev/sd*技术分享

方法三:cat /proc/partitions

技术分享


·创建分区:

fdisk 创建MBR分区

gdisk 创建GPT分区

parted 高级分区操作(创建、复制、调整大小等等)

 

2fdisk分区

fdisk -l /dev/sdX 查看硬盘分区信息

技术分享

7里面显示的start End是以扇区数为单位


技术分享

6里面显示的start End是以柱面数为单位

如果两个分区用的同一个柱面,就会显示一段话提示我们,我们管这种模式叫DOS模式。

 

-c  打开或禁用dos模式centos6)

-c=dos  -c=nondos   打开、禁用dos模式(centos7)

技术分享

本来默认有dos模式的CentOS6在使用-cdos模式就被禁用了技术分享

本来默认没有dos模式的CentOS7在使用-c=dosdos模式被开启了

  

  -u  切换显示的单位(扇区/柱面)(centos6)

  -u=cylinders  -u=sectors    切换显示的单位(扇区/柱面)(centos7)

 

·fdisk /dev/sdX  进行分区

子命令:

  帮助

    n 建立分区

    d 删除分区

    p 显示分区信息

    t 转换分区类型

    a 将指定分区设置/取消活动分区

    L 查看分区类型

    o 重建分区表

    v 验证分区表,显示剩余没有被分区划分的扇区数量

    g 创建GPT格式的分区(centos7)

    q 退出不保存

    w 退出并保存,不保存,所有的修改都不生效

 

3)使用fdisk进行MBR格式分区

·下面我们来试试分区(此分区默认为MBR格式):

技术分享

技术分享

技术分享

技术分享

同样的,我们给第三个主分区分5G技术分享

然后我们分了两个扩展分区

技术分享

使用p查看分区情况

技术分享

最后输入w保存分区

技术分享

查看一下分区,这样就已经分好了。

 

·除了系统盘之外的盘就可以按照上面的方式成功分区了,但是当我们给系统盘sda)分区的时候w保存之后会出现下面的话,说让你重启才能生效。

此时我们如果不方便重启的话,也可以使用命令来同步分区表。技术分享


查看内核是否已经识别新的分区:

cat /proc/partations

 

通知内核重新读取硬盘分区表:

Centos6新增分区用

partx -a /dev/DEVICE

kpartx -a /dev/DEVICE -f:force

删除分区用 partx -d --nr M-N /dev/DEVICE

CentOS 57: 新增或删除均使用partprobe[/dev/DEVICE]


技术分享

6中我们在系统盘中新增了几个分区,但是保存之后并没有显示,于是我们使用partx -a /dev/sda 就有新增分区了。

技术分享

同理CentOs7或者5里面使用partprobe /dev/sda 就可以了。

 

4)使用fdisk进行GPT格式分区

CentOS7

我们使用分区命令fdisk /dev/sdb技术分享

输入g,然后保存,查看一下发现已经转化成了GTP分区格式。技术分享

然后我们就可以开始分区了。技术分享

MBR不同的是,GTP显示的是分区的编号(共128个分区)技术分享

先分一个2G大小。查看一下技术分享

然后我们再分一个500M技术分享

保存并退出。

技术分享

sdb分区成功。

 

使用hexdump -C -n 512 -v /dev/sdb查看分区表技术分享

跟我们之前讲过的一样,只有最后两位是55aa,模拟出一个MBR,表示这是一个分过区的硬盘。

 

·fdisk也可以使用echo导入fdisk进行非交互式分区,命令如下:

echo -e "n\np\n1\n\n+1G\nw\n" |fdisk /dev/sdb 

代表给第一个分区分1G的大小。

 

5parted

我们一般不推荐使用fdisk来进行GTP分区,可以使用parted更方便的分区。

parted的操作都是实时生效的,小心使用

 用法:parted [选项]... [设备 [命令 [参数]...]...]

parted /dev/sdb mklabel gpt|msdos

parted /dev/sdb print

parted /dev/sdb mkpart primary 1 200 (默认M

parted /dev/sdb rm 1

parted -l

 

技术分享

输入过后是一个交互式界面,等待你输入

技术分享

可以输入help查看一下帮助文档,这个帮助文档只是一个大目录,如果想看某个具体的内容,继续使用help

如果想看mklabel的帮助,就输入help mklabel

技术分享

根据帮助文档可以知道想要使用GPT格式分区,就输入mklabel gpt

技术分享

如图,变成了GPT格式了。

传统的分区叫msdos分区,我们先使用msdos分区创建。技术分享

使用help查看帮助文档技术分享

看到新建分区命令。

技术分享

只输入mkpart,会一步一步提示技术分享

按照提示分区之后(默认单位为M),查看一下,已经分好了。技术分享

删除命令为rm,如图,删除成功。

一般我们用fdisk分区MSDOS格式,我们现在用parted来分gpt格式。

首先还是使用mklabel gpt转化成gpt分区技术分享

然后我们创建分区(在这里不会问你是主分区扩展分区,因为gpt格式没有主分区扩展分区一说)技术分享

如图,创建成功

 

6gdisk

gdisk是类fdiskGPT分区工具,与fdisk类似,只能分GPT格式。

技术分享

输入?查看帮助文档

技术分享

o是创建一个GTP格式技术分享

如图,创建成功

查询帮助文档,新建命令为n

技术分享

让我们新建一个

看,这里类似于fdisk技术分享

这个也不是实时生效的,同样使用w保存技术分享

输入y确认保存。分区完成。

 


4.文件系统

  文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

  从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。

1)文件系统类型

 查看支持的文件系统:在/lib/modules/`uname -r`/kernel/fs 目录下

 

Linux文件系统:ext2(Extended file system), ext3, ext4, xfsSGI, btrfsOracle, reiserfs,jfsAIX, swap

 光盘:iso9660

 WindowsFAT32,exFAT,NTFS

 Unix: FFSfast,UFSunix,JFS2

 网络文件系统:NFS,CIFS

 集群文件系统:GFS2,OCFS2oracle

 分布式文件系统:fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre

 RAW:未经处理或者未经格式化产生的文件系统

 

2)文件系统分类

根据其是否支持"journal"功能:

日志型文件系统: ext3,ext4,xfs, ...

非日志型文件系统: ext2,vfat

文件系统的组成部分:

内核中的模块:ext4,xfs,vfat

用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat

Linux的虚拟文件系统:VFS

技术分享

查看当前支持的文件系统:cat /proc/filesystems

 

3)创建文件系统(格式化)

每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区格式化,创建文件系统,以成为操作系统能够利用的文件系统格式。

linux的文件格式为Ext2/Ext3,Ext4windows 操作系统为vfat或者NTFS

 

·mkfs命令(有两种方法)

mkfs.FS_TYPE /dev/DEVICE

支持格式:ext4  xfs  btrfs  vfat

 

mkfs -t FS_TYPE /dev/DEVICE

-L ‘LABEL‘: 设定卷标

 

方法一:

技术分享

使用blkid可以查看文件系统信息技术分享

 

方法二:

技术分享

再使用blkid查看,果然变成ext3类型

技术分享

同样的,也可以改成xfs格式技术分享

4)创建ext文件系统

mkfs可以创建多种系统类型,而使用mke2fs专门用于ext系列文件系统管理。只能创建ext文件系统。

mke2fsext系列文件系统专用管理工具

默认创建ext2类型

-t {ext2|ext3|ext4}

-b {1024|2048|4096}  block

-L ‘LABEL‘  设置卷标

-j: 相当于 -text3   创建一个ext3类型

 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小

-N #:指定分区中创建多少个inode

-I 一个inode记录占用的磁盘空间大小,128---4096

-m #: 默认5%,为管理人员预留空间占总空间的百分比

-O FEATURE[,...]:启用指定特性

-O ^FEATURE:关闭指定特性

 

inode:记录文件属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;

block:实际记录文件的内容,若文件太大时会占用多个block ;

super block:记录文件系统的整体信息,包括inode/block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等。

每个inodeblock都有编号,而每个文件系统都会占用一个inode,inode中有文件数据放置的block号码。我们可以找到文件的inode,然后找出文件所放置数据的block号码,之后读出数据。这种数据访问方式成为索引式文件系统。这种文件系统一般不太需要经常进行磁盘碎片整理。

 

 

5)查看与重置文件系统信息

tune2fs:重新设定ext系列文件系统可调整参数的值

-l:查看指定文件系统超级块信息;super block

(这里面记录文件系统的整体情况。比如文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等。还有一个validbit数值,若此文件系统已经被挂载,validbit的值为0,若未被挂载,则validbit值为1。)

-L ‘LABEL‘:修改卷标

-m #:修预留给管理员的空间百分比

-j: ext2升级为ext3

-O: 文件系统属性启用或禁用, O^has_journal

-o: 调整文件系统的默认挂载选项,–o ^acl

-U UUID: 修改UUID
dumpe2fs

-h:查看超级块信息,不显示分组信息 tune2fs -l一致

 

使用tune2fs -l /dev/sdx 查看文件系统信息

技术分享

其中第一行表示卷标

 

我们刚才说过-L‘LABEL‘可以设定卷标(卷标其实就是一个磁盘名称)技术分享

现在我们设置卷标为lky技术分享

果然修改成功

 

不仅可以使用tune2fs查看信息,也可以使用tune2fs -L修改卷标。

技术分享

如图,修改成功。

 

设置了卷标之后,我们就可以使用卷标进行挂载了

技术分享

mount后面写上LABEL=”xxx”即可挂载成功。(只可以使用卷标挂载,不能卸载)

 

当然,也可以使用UUID挂载。

技术分享


centos5 系统中,安装时所创建的文件系统会自动将挂载点路径命名为卷标名。因为开机自动读取一个/etc/fstab文件

技术分享

如图,里面放了开机自动挂载的信息并定义了卷标号。

 

6)文件系统标签

指向设备的另一种方法,与设备无关

blkid:块设备属性信息查看(默认不显示光盘,但可以指定/dev/sr0查看)

技术分享

blkid [OPTION]... [DEVICE]

-U UUID: 根据指定的UUID来查找对应的设备

        -L  LABEL:根据指定的LABEL来查找对应的设备技术分享

我们新建一个分区

技术分享

使用lsblk查看,有sdb3技术分享

但是使用blkid没有查到sdb3,因为它还没有格式化,还不是块设备。技术分享

使用mkfs格式化之后再次查询技术分享

查到了sdb3

 

e2label:管理ext系列文件系统的LABEL

  e2label DEVICE  查询卷标

e2label DEVICE[LABEL]  设置卷标

技术分享


findfs:查找分区

findfs [options] LABEL=<label>

findfs [options] UUID=<uuid>技术分享


5.超级块

启动Unix操作系统后,发现某个文件系统无法使用,很有可能就是超级块出现了问题。主要是因为在超级块中保存了全局文件信息,如硬盘已用空间、数据块可用空间、inode结点信息等等。

技术分享


使用dumpe2fs /dev/sda1查看超级块信息和block分组信息

 

我们来看分组信息:

一共从0-78

第一组中,整个分区第一个块放超级块信息

技术分享

group1,3,5,7奇数的块都存放着备份的超级块

 


6.文件系统检测和修复

常发生于死机或者非正常关机之后。此时使用的就是备份的超级块。

挂载为文件系统标记为“no clean”

  注意:一定不要在挂载状态下修复

技术分享

fsck: File System Check

fsck.FS_TYPE

fsck -t FS_TYPE

-p: 自动修复错误

-r: 交互式修复错误

FS_TYPE一定要与分区上已经文件类型相同

e2fsckext系列文件专用的检测修复工具

-y:自动回答为yes

-f:强制修复(当破坏力度比较小时,可能会检测不到,不给修复,使用-f可以强制修复)


技术分享

我们使用dd先破坏一下技术分享

已经破坏成功,sda10下面没有东西了技术分享

也不能查看sda10的状态


技术分享

能卸载,但是卸载了之后就再也挂不上了

 

我们使用e2fsck来修复一下

技术分享

技术分享

大概看一下修复过程技术分享

最后修复完成。

 

然后我们使用tune2fs -l查看一下技术分享

已经修复好了技术分享

df也可以查看到了

技术分享

也可以挂载并查看里面的数据了。技术分享


7mount挂载

1)基础

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为

卸载:为解除此关联关系的过程

把设备关联挂载点:mount Point

mount

卸载时:可使用设备,也可以使用挂载点

umount

挂载点下原有文件在挂载完成后会被临时隐藏,因此挂载点目录一般为空

 

2)挂载方法

挂载方法:mount DEVICE MOUNT_POINT

 通过查看/etc/mtab文件显示当前已挂载的所有设备

技术分享

mount [-fnrsvw] [-t vfstype] [-o options] device dir

device:指明要挂载的设备;

(1) 设备文件:例如/dev/sda5

(2) 卷标:-L ‘LABEL‘, 例如 -L ‘MYDATA‘

(3) UUID, -U ‘UUID‘:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e‘

(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs

dir:挂载点

事先存在;建议使用空目录

进程正在使用中的设备无法被卸载

 

3mount常用命令选项

-t 指定要挂载的设备上的文件系统类型(其实正常不需要指定会自动识别,挂载的时候一般不用-t

-r 只读挂载技术分享

如图,只读挂载后不能进行文件下的写操作

技术分享

-w 读写挂载

   --remount,ro|rw  也会更新/etc/fstab中的选项,如果与指定的冲突,则后指定的优先。

  -n隐藏挂载信息不显示,不更新/etc/mtab,但在/proc/mounts可以查到

  -a读取/etc/fstab,自动挂载其中没有挂载的设备

技术分享

/etc/fstab是开机之后自动读取的文件,因为开机的时候会自动执行命令mount -a,因此每次开机有些目录已经自动挂载了。

 

(如图,如果/etc/fstab已经配置好了一个挂载的选项,则使用mount挂载的时候不需要指定两个参数了

技术分享

使用mount /dev/sda10 或者/mount /app/sda10 都可以挂载成功)

 

注:如果输入mount不指定选项,则会去读文件中指定的选项,如果输入的选项与文件中的选项冲突,以输入的为准。如果不冲突,则将手动输入的和文件中的选项结合。

 

   -L ‘LABEL‘  以卷标指定挂载设备

   -U ‘UUID‘  UUID指定要挂载的设备

   -B --bind  目录挂目录,绑定一个目录到另一个目录上

 查看内核追踪到的已挂载的所有设备:

cat /proc/mounts

 

-o  options(挂载文件系统的选项,决定挂载的功能),多个选项使用逗号分隔

   sync,async 同步,异步(defaults)

   atime(defaults),noatime  是否在读访问时更新atime

   diratime(defaults),nodiratime 目录的访问时间戳

   auto(defaults)/noauto 写在/etc/fstab当中的分区,表示是否在mount -a时被挂载

   exec(defatuls)/noexec 在该分区所挂载的目录中的脚本是否可以执行。

   dev(defaults)/nodev  是否支持在此文件系统上使用设备文件

   suid(defaults)/nosuid 是否支持suidsgid权限

   remount:重新挂载

技术分享

 ro:只读

 rw:读写(defaults)

 user/nouser(defaults):是否允许普通用户挂载此设备,默认管理员才能挂载

    acl:启用此文件系统上的acl功能

Defaults 默认,见以上中的(defaults)

技术分享

如图,选项也可以直接写到/etc/fstab中进行配置

 

4)卸载命令

findmnt [MOUNT_POINT] 查看挂载情况

技术分享

 

lsof MOUNT_POINT 查看正在访问指定文件系统的进程(查到后可以使用kill杀掉)技术分享


 fuser -v MOUNT_POINT  查看所有在正访问指定的文件系统的进程

 fuser -km MOUNT_POINT  终止所有在正访问指定的文件系统的进程

技术分享


卸载:

 umount DEVICE

 umount MOUNT_POINT

 

5)文件挂载配置文件

/etc/fstab每行定义一个要挂载的文件系统

要挂载的设备或伪文件系统:

设备文件

LABELLABEL=""

UUIDUUID=""

伪文件系统名称:proc, sysfs

挂载点

文件系统类型

挂载选项:defaults(如果没有其他选项必须写defaults,因为要占位。如果有其他选项的话,可以不写defaults也是默认值。)

转储频率:0:不做备份 1:每天转储 2:每隔一天转储

自检次序: 0:不自检  1:首先自检(一般只有根文件系统才用1   2:其次自检 (数字越小越先检测)

技术分享

 

网络地址挂载:

172.17.253.164:/common   /mnt/nfs   nfs    defaults    0 0

 

在服务器配置/etc/export  添加可以共享的文件夹和允许的客户端地址

技术分享

如图就是共享的文件夹为/common 客户端地址任意

再使用以下命令添加到/etc/fsta文件中挂载:

//172.17.X.X/shares  /mnt/share  cifs  defaults,username=test,password=test  0 0 

 


8、处理交换文件和分区

1)基本设置

创建交换分区或者文件,并将类型改为swap(记得要更新分区表)

技术分享

使用mkswap写入特殊签名(格式化)。也可以对文件做。

技术分享

可以再加个卷标

技术分享

/etc/fstab文件中添加适当的条目使其开机自动激活(第一列也可以使用分区名和UUID技术分享

使用swapon -a 激活交换空间技术分享

激活成功

 

2)手动挂载交换分区

启用:swapon

swapon[OPTION]... [DEVICE]

-a 激活所有的交换分区;

-s 查看优先级(默认随机分配的一般都是负值)

技术分享


-p PRIORITY:指定优先级(可以指定范围是0-32767

技术分享

也可以写到/etc/fstab文件中:pri=value

技术分享


禁用:swapoff [OPTION]... [DEVICE]技术分享

使用free查看内存信息使用状态,显示都为0

 


9、移动介质

1U

技术分享

右键这个图标

技术分享

点击第一项

技术分享

点击确定

技术分享

过一会,桌面上就有U盘了

 

在命令行界面下,查看到U盘格式为HPFS/NTFS技术分享

此时不能直接挂载,需要安装包

在百度上搜索ntfs3q rpm

技术分享

分别下载el6el7

技术分享

技术分享

安装之后就能挂载了。技术分享

技术分享

2)光盘

在图形环境下自动启动挂载/run/media/<user>/<label>

否则就必须被手工挂载:mount /dev/cdrom /mnt/

 

eject命令 卸载或弹出磁盘

 

创建ISO文件

cp /dev/cdrom/root/centos7.iso   将设备做成ISO文件

mkisofs -r -o/root/etc.iso /etc  将目录/etc做成ISO文件

挂载ISO文件

mount -o loop/root/centos69_1.iso /mnt/centos69 (对于光驱设备要加选项-o loop技术分享

写到/etc/fstab文件中:

/root/centos69_1.iso    /mnt/centos69    iso9660 defaults,loop 0 0  

 

刻录光盘

wodim –v –eject centos.iso

 


10、常见工具                   

1)内存空间使用状态:

free [OPTION]

-m  MB为单位

-g  GB为单位

技术分享

2)文件系统空间占用等信息的查看工具:

df [OPTION]... [FILE]...

-h 以人类阅读方式(就是单位显示的便于阅读)

技术分享

  -H 以人类阅读方式 1000为单位(计算结果大小会与1024有不同)

技术分享

-T 文件系统类型

-i 显示inodes的使用信息

-a 显示所有的挂载信息,包含bind

 

3)查看某目录总体空间占用状态:

du [OPTION]... DIR

-h  以人类阅读方式

-s  显示总和

如果目录下有目录会被列出,如果没有的话只显示总和。

技术分享

 


11、工具dd

1)用法

dd命令:convert and copy a file

用法:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=#block size, 复制单元大小

count=#:复制多少个bs

 

of=file  写到所命名的文件而不是到标准输出

if=file  从所命名文件读取而不是从标准输入

bs=size  指定块大小(既是是ibs也是obs)

ibs=size  一次读sizebyte

obs=size 一次写sizebyte

cbs=size 一次转化sizebyte

skip=blocks  从开头忽略blocksibs大小的块

seek=blocks  从开头忽略blocksobs大小的块

count=n  只拷贝n个记录

 

备份MBR

dd if=/dev/sdaof=/tmp/mbr.bak bs=512 count=1

破坏MBR中的bootloader

dd if=/dev/zeroof=/dev/sda bs=64 count=1

seek=446

 

2)示例

有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下:

#dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

 

·备份:

dd if=/dev/sdx of=/dev/sdy

将本地的/dev/sdx整盘备份到/dev/sdy

 

dd if=/dev/sdx of=/path/to/image

/dev/sdx全盘数据备份到指定路径的image文件

 

dd if=/dev/sdx | gzip >/path/to/image.gz

备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径

 

·恢复:

dd if=/path/to/image of=/dev/sdx

将备份文件恢复到指定盘

 

gzip -dc /path/to/image.gz | dd of=/dev/sdx

将压缩的备份文件恢复到指定盘

 

·拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024

将内存里的数据拷贝到root目录下的mem.bin文件

 

·从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso

拷贝光盘数据到root文件夹下,并保存为cd.iso文件


·销毁磁盘数据

dd if=/dev/urandom of=/dev/sda1

利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行

 

3)得到最恰当的block size

dd if=/dev/zerobs=1024 count=1000000 of=/root/1Gb.file

dd if=/dev/zerobs=2048 count=500000 of=/root/1Gb.file

dd if=/dev/zerobs=4096 count=250000 of=/root/1Gb.file

通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

 

测试硬盘写速度:

dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

测试硬盘读速度:

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

 

4)修复硬盘

dd if=/dev/sda of=/dev/sda

当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的。


本文出自 “Ty_endless” 博客,请务必保留此出处http://tyendless.blog.51cto.com/12435756/1959501

磁盘管理——Linux基本命令(14)

标签:linux

原文地址:http://tyendless.blog.51cto.com/12435756/1959501

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!