Linux 磁盘、文件系统管理

Linux 磁盘、文件系统管理

                                                                                        2016-08-229


本章内容

     磁盘结构

     分区类型

     管理分区

     管理文件系统

     挂载设备

     管理虚拟内存


第一篇:Linux磁盘管理

  概述:

         计算机的五大组成部件:输入设备、输出设备、存储器、运算器、控制器,其中,输入、输出设备称之为I/O设备,运算器和控制器称之为CPU ,存储器如内存、硬盘等。计算机只有CPU和内存其实就可以独立完成计算任务了,只是其输入输出都在内存中实现,但是,内存属于随机存储单元,断点就会导致数据丢失,因此,我们就通过其他辅助设备来弥补内存的不足,这些辅助设备称之为外存,如:磁盘,光驱等。


一、硬盘

    1.硬盘接口类型:

1.png

   2.硬盘:固态硬盘和机械硬盘

  3.硬盘存储术语(CHS):

     head:磁头  256个 

        track:磁道  1024个磁道

        平均寻道时间:5400rpm,7200rpm,10000rpm,15000rpm

        cylinder: 柱面 (分区划分基于柱面)

        secotr: 扇区,512bytes  63个

        cylinder=512*63track*256head=8M

1.png

2.png



二、设备文件

    1.一切皆文件:

         open(), read(), write(), close()

    2.设备类型:

        块设备(block):随机访问,数据交换单位是“块”;

        字符设备(character):线性访问,数据交换单位是“字符”;

    3.设备文件:FHS  /dev

        关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

    4.设备号:

        major:主设备号,区分设备类型;用于标明设备所需要的驱动程序;

        minor:次设备号,区分同种类型下的不同设备;是特定设备的访问入口;

wKiom1fDh1ziQDW0AAB4YTRYQsQ634.png    5.mknod命令:创建设备文件

         make block or character speclal files

3.png

         语法:mknod [OPTION]… NAME TYPE [MAJOR MINOR]

                -m MODE :创建后的设备文件的访问权限;



 三、设备文件名:ICANN

      1.磁盘:

           IDE:/dev/hd[a-z]  例如:/dev/hda,/dev/hdb

           SCSI,SATA,USB,SAS:

                不同设备:/dev/sd[a-z]

      2.分区:

            同一设备上的不同分区:1,2…

                /dev/sda#:  如:/dev/sda1…

            CentOS 6和7统统将硬盘设备文件表示为/dev/sd[a-z]

      3.引用设备的方式:

            设备文件名、卷标(label)、

           UUID(全局唯一标识符,uuidgen 命令可以生成uuid)

wKioL1fEHSHShaa2AAAMhSYCIDA877.png

      注意:引用设备的时候,最好用UUID,因为设备文件名可能会改变。



四、磁盘分区:MBR、GPT

MBR: 0 sector 

     1.Master Boot Recor,1982年,使用32位表示扇区数,分区不超过2T

     2.如何分区:按柱面

     3.0磁道0扇区:512bytes,分为三部分

            446bytes: bootloader,程序,引用启动操作系统程序;

            64bytes:分区表,每16bytes: 标识一个分区,一共只能有4个分区;

            2bytes: MBR区域的有效标识,一般55AA为有效;

wKioL1fEI1jzk4rlAABe-McGpKg751.png

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

         主分区和扩展分区的标识:1-4

         逻辑分区只能从5开始(5+)

wKioL1fEJL_xt6-pAABVQHhY_WQ332.png

     5.新增添磁盘,还不能直接显示出来,要想出现要对磁盘进行扫描(实际生产环境中不需要,都是热插拔技术):

          命令:echo "—" > /sys/class/scsi_host/host2/scan  


 GPT分区:

       GUID(Globals Unique Identifiers)partition table 

       支持128个分区,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)

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

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



五、管理磁盘

     1.列出块设备:lsblk

     2.创建分区使用:

          fdisk创建MBR分区,也支持GPT,对于一块硬盘,最多只能管理15分区

          gdisk创建GPT分区

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

     3.partprobe-重新设置内存中的内核分区表版本


磁盘分区管理工具:fidsk、parted


parted命令:

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

           parted /dev/sdb mklabel gpt|msdos

           parted /dev/sdb print  查看分区

           parted /dev/sdb mkpart primary 1 200 (默认M)创建分区

           parted /dev/sdb rm1  删除分区

           parted -l

    注意:parted的操作都是实时生效的,一般不建议使用


fdisk命令

1.语法fdisk -l [-u] [device…]

         列出指定磁盘设备上的分区情况

fdisk.png

2.管理分区         

   fdisk device

   fdisk提供了一个交互式接口来管理分区,他有许多命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直接使用w命令保存至磁盘上;

fdisk1.png

3.常用命令

       n:创建新分区

       d:删除已有分区;(如果删除扩展分区sda4 逻辑分区都会消失)

       t:修改分区类型

       l:查看所有分区ID

fdisk-l.png       w:保存并退出

       q:不保存并退出

       m:查看帮助信息

       p:显示现有分区表

    注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别

fdisk-warning.png


同步分区表:partx,partprobe

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

        # cat /proc/partations

fdisk-内核识别.png

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

    新增分区用:

        partx -a /dev/device

        kpartx -a /dev/device -f: forcepartx -a.png

    删除分区用:

        partx -d –nr N /dev/DEVICE

        centos6:–nr N-M(表示范围)

wKioL1fELeWA_XijAAB4L59SOEE403.png

    partprobe命令:centos5,7使用。一条命令搞定,增减删除都可以!

                 用法:partprobe [/dev/DEVICE]



六、创建文件系统(格式化)

相关概念:

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

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


1.格式化:

       低级格式化(分区之前进行,划分磁道)

       高级格式化(分区之后进行,创建文件系统)

2.磁盘分区划分为元数据区和数据区

元数据区:

     文件元数据(inode):

         包含文件的大小、权限、属主属组、时间戳、数据块指针

     符号链接文件(软链接):

         存储数据指针的空间当中存储的是真实文件的访问路径;

     设备文件

         存储数据指针的空间当中存储的是设备号(major,minor)  

3.文件系统组织结构中的常见术语

      block groups(块组),块组内分为元数据区(inode table中又存放indoe)和数据区(block)

      bitmap index :位图索引 (了解哪些inode已经使用,哪些还没使用) 

      block bitmap:了解哪些磁盘块已经使用,哪些还没有使用;

      superblock:记录当前整个分区上有哪些块组,以及块组的划分   

wKiom1fEO5zC62uoAAFoFTqa18I714.png


Linux 的文件系统

1.VFS虚拟文件系统接口,当两个层次之间不衔接时,所加的中间层。因此linux可以引入众多的文件系统类型。

vfs.png

2.文件系统:

    linux:

        ext2(Extended file system), ext3, ext4xfs(SGI),                           btrfs(Oracle),reiserfs, jfs(AIX), swap(用于存放虚拟内存)

    光盘:iso9660

    Windows:fat32, ntfs

    Unix: FFS(fast), UFS(unix), JFS2

    网络文件系统:NFS, CIFS

    集群文件系统:GFS2, OCFS2(oracle)

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

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

3.根据其是否支持"journal"功能

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

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

4.文件系统的组成部分:

     内核中文件系统的驱动块(lsmod命令可查看):ext4, xfs, vfat

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

5.查前支持的文件系统:cat /proc/filesystems


内核及文件系统的组成部分

     文件系统驱动:由内核提供

     文件系统管理工具:由用户空间的应用程序提供



七、文件系统管理工具:

        mkfs,mk2fs,e2label,tune2fs,dumpe2fs,

        主要都是和ext系列的文件系统有关。

注意:扩展分区是不能格式化的,因为它存放的是逻辑分区,可对逻辑分区格式化


1.创建文件系统的工具

   mkfs命令:(按两次Tab键)

1.png   (1) # mkfs.FS_TYPE /dev/device

            ext4,xfs,btrfs,vfat

  示例:

    创建ext2文件类型

2.png

     在ext2基础上创建ext3文件类型(区别:多了一个创建日志的功能)

3.png

     (2) # mkfs -t FS_TYPE /dev/DEVICE  如:(mkfs -t ext2=mkfs.ext2)

                   -L 'LABEL': 设定卷标

            mke2fs的选项,mkfs也支持


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

语法:mke2fs [OPTIONS] /dev/sd… 默认为ext2文件系统

      -t {ext2|ext3|ext4}:指明要创建的文件系统类型

      -b {1024|2048|4096}:指明块大小,默认为4K,最大不超过4K

      -L 'LABEL' :指明卷标

mk2fs.png

      -j: 创建有日志功能的文件系统ext3

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

      -i#: 指明indoe与字节的比率;即每多少个字节创建一个inode;此大小不应该小于block的大小

      -N #:直接指明要给此文件系统创建的inode的数量;

      -I 一个inode记录大小128—4096

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

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

      -O ^FEATURE:关闭指定特性


e2label命令:卷标的查看,预设定

      查看:e2label devicee2lable.png


 tune2fs:查看或修改ext系列文件系统的某些属性;

    adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;注意:块大小不可修改

   语法:tune2fs [options] devicd

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

tune3fs.png      -L 'LABEL':修改卷标

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

tune2fs -m.png

      -j: 将ext2升级为ext3

tune2fs -j.png

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

tune2fs -o.png      -o: 开启或关闭文件系统的默认挂载选项,–o ^acl

tune2fs-oo.png      -U UUID: 修改UUID号


dumpe2fs命令

显示ext系列文件系统的属性信息

    语法:dumpe2fs [-h] device

         -h:查看超级块信息(分组信息),分区用分组管理

11.png



用于实现文件系统检测的工具:fsck,e2fsck

    因进程意外中止或系统崩溃等原因导致操作非正常终止时,可能会造成文件损坏;此时应该检测并修复文件系统,建议离线进行

    常发生于死机或者非正常关机之后

    挂载为文件系统标记为“dirty”


fsck命令

fsck – check and repair a Linux file system

      fsck.FS_TYPE

fsck..png

      fsck -t FS_TYPE  如:fsck -t ext4=fsck.ext4

             -a: 自动修复错误

             -r: 交互式修复错误

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


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

     语法:e2fsck [OPTIONS] device

         -y:对所有问题自动回答为yes;

         -f:即使文件系统处于clean状态,也要强制进行检测;

e2fsck.png


blkid:块设备属性信息查看

 语法:blkid[OPTION]…[DEVICE]

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

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

blkid.png

findfs:查找分区

    findfs[options] LABEL=<label>

    findfs[options] UUID=<uuid>



八、其他文件系统

1.swap文件系统

     Linux上的交换分区必须使用独立的文件系统;且文件系统的System ID必须为82;

     创建swap设备:mkswap命令

     语法:mkswap [OPTIONS] device

                -L LIBEL:指明卷标

                -f:强制

2.Windows无法识别Linux的文件系统;因此存储设备需要在两种系统之间交叉使用时,应该使用windows和linx同时支持的文件系统:fat32(vfat)

     # mkfs.vafat device



第二篇:文件系统的使用:挂载

  磁盘的分区和格式化完成后,磁盘要想能够使用,就需要挂载,在挂载某个分区前需要先建立一个挂载点。

一、相关概念

    1.首先要"挂载":mount和unmount卸载命令

    2.根文件系统之外的其他文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为挂载点;

    3.挂载点:mount_point,作为另一个文件系统的访问入口

          1)事先存在;

          2)应该使用未被或不会被其他进程使用到的目录;

          3)挂载点下原有文件将会被临时隐藏;

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

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


二、mount命令

    挂载方法:mount DEVICE MOUNT_POINT

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

mount.png

    语法: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:挂载点

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

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


mount命令用法

   语法:mount [-nrw] [-t vfstype] [-o options] device dir

   命令选项:

        -r: readonly,只读挂载

mount -r.png

        -w: read and write, 读写挂载

        -n: 在默认情况下,设备挂载或卸载的操作同时会更新至/etc/mtab文件中,-n 用于禁此特性

        -t vsftype:指定要挂载的设备上的文件系统类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统的类型;

        -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)

        -L 'LABEL': 挂载时以卷标的方式指明挂载设备

               mount -L LABEL dir

mount -L.png        -U 'UUID': 挂载时以UUID指定要挂载的设备

              mount -U UUID dir

mount -U.png

        -B, –bind: 将目录绑定至另一个目录上,作为其临时访问入口

mount-B.png



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

     async:异步模式

     sync:同步模式,内存更改时,同时写磁盘

     atime/noatime:文件或目录在被访问时是否更新其访问时间戳;

     diratime/nodiratime:目录在被访问是是否更新其访问时间戳

     auto/noauto:是否支持自动挂载,是否支持-a选项

     exec/noexec:是否允许运行此设备上的程序文件;

     dev/nodev:此设备上是否允许创建设备文件;

     suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;

     remount:重新挂载

     ro:只读

     rw:读写

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

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

            # mount -o acl device dir

            # tune2fs -o acl device

acl.png

     defaults:相当于rw, suid, dev, exec, auto, nouser, async  


查看当前系统已挂载的所有设备

      # mount

      # cat /etc/mtab

      # cat /proc/mounts

挂载光盘

      mount -r /dev/cdrom mount_point

      光盘设备文件:/dev/cdrom,/dev/dvd

      把光盘制作成iso文件方法:

Linux 磁盘、文件系统管理   特殊用法:/misc

Linux 磁盘、文件系统管理

挂载U盘:

      事先识别U盘的设备文件

挂载本地回环设备:

     # mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT


unmount命令

     正在被进程访问到的挂载点无法被卸载

     查看挂载情况:

          # findmnt MOUNT_POINT

     查看被那个或者哪些进程所占用:

          # lsof MOUNT_POINT

          # fuser -v MOUNT_POINT

1111.png

     终止所有在正访问指定的文件系统的进程:

          # fuser -km MOUNT_POINT

fuser.png

     卸载:

          # umount DEVICE

          # umount MOUNT_POINT

          # umount -l

Linux 磁盘、文件系统管理



/etc/fstab 配置文件

设定除根文件系统以外的其他文件系统能够开机时自动挂载

/etc/fstab每行定义一个要挂载的文件系统及相关属性

     6个字段:

         1)要挂载的设备

              设备文件;

               LABEL(LABEL="")

               UUID(UUID="")

               伪文件系统

         2)挂载点

               swap类型的设备的挂载点为swap;

         3)文件系统类型

         4)挂载选项

               defaults:使用默认挂载选项

               如果要同时指明多个挂载选项,彼此间逗号分隔;

         5)转储频率

               0:从不备份

               1:每天备份

               2:每隔一天备份

         6)自检次序

               0:不自检;

               1:首先自检,通常只能是根文件系统可用;

               2:次级自检

                 …

mount -a:可自动挂载定义在此文件中的所支持自动挂载的设备

示例:

     在/etc/fstab配置文件中添加一行来挂载分区Linux 磁盘、文件系统管理    使用命令 df或者mount可以查看挂载情况,要想生效执行 mount -a命令,自动挂载此文件中的所有支持自动挂载的设备

Linux 磁盘、文件系统管理    如果对挂载的参数修改,要重新生效使用 mount -o remount MOUNT_POINT

Linux 磁盘、文件系统管理

Linux 磁盘、文件系统管理


 注意:/etc/fstab 设备名出错,自检非0,开机会导致无法启动

          排错方法:mount -o remount,rw /



四、处理swap交换文件和分区:

    swap,它类似于Windows的虚拟内存,分区时一般指定虚拟内存的大小为实际内存的2倍,如果你的实际内存超过了8G,那你划分16G给虚拟内存就足够日常交换了,如果真的遇到虚拟内存不够用的情况,就必须增加哦一个虚拟磁盘,因此我们不可能重新给磁盘分区,增加虚拟内存的基本思路:建立swapfile–>格式化swap格式–>启用虚拟磁盘。


交换分区是系统RAM的补充

1.基本设置包括:

      1)创建交换分区(fdisk -t 82)或者文件

      2)使用mkswap写入特殊签名

Linux 磁盘、文件系统管理      3)在/etc/fstab文件中添加适当的条目

Linux 磁盘、文件系统管理

     4)使用swapon -a 激活交换空间

Linux 磁盘、文件系统管理

2.挂载交换分区

启用:swapon

        swapon[OPTION]… [DEVICE]

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

            -p PRIORITY:指定优先级

           /etc/fstab:pri=value

禁用:swapoff[OPTION]… [DEVICE]mkswap.png

总结:

swap的创建

   1)fdisk  -t 82 分区
    dd if=/dev/zero of=/swapfile bs=1M count=1024 文件
  2)mkswap /dev/sdc1
    mkswap /swapfile
  3)vim /etc/fstab
    /dev/sdc1   swap swap defaults,pri=100  0 0
    /swapfile swap swap pri=100  0 0
  4)swapon -s 查看swap分区
    swapon -a 读/etc/fstab 生效

   示例:创建swap文件增加虚拟内存

Linux 磁盘、文件系统管理

Linux 磁盘、文件系统管理

     心得:既然可以把一个文件当做一个swap分区用,同样我们也可以创建一个文件当做分区使用,如果需要的话直接就可以把文件拷贝走,很方便。


swap的优先级

     用户可以给某个swap指定一个0到32767的优先级

     如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一。

     先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)。

    优化性能:分布存放,高性能磁盘存放

Linux 磁盘、文件系统管理



free命令内存空间及交换分区使用状态查看

    free [OPTION]

          -m: 以MB为单位

          -h:以人类适宜的方式查看

    Mem:物理内存的使用情况;

    Swap:交换分区的使用情况 ;

    -/+ buffers/cache:表示物理内存在不考虑缓存和缓存占据空间时的使用情况

Linux 磁盘、文件系统管理       buffers:缓冲,用来缓存写

       cache:  缓存,迎来缓存度

Linux 磁盘、文件系统管理


df命令:查看磁盘设备的使用情况

     df [OPTION]… [FILE]…

          -l:仅显示本地文件的相关信息;

          -H 以1000为单位

          -T 文件系统类型

          -h: human-readable

          -i:显示inode的使用状态而非block

          -P: 以Posix兼容的格式输出

Linux 磁盘、文件系统管理


du命令查看某目录总体空间占用状态:

     du [OPTION]… DIR

          -h: human-readable

          -s: summary

Linux 磁盘、文件系统管理


losetup命令

     可以把文件关联到一个设备,从而用设备名代替文件名

centos6 实现loop 设备和文件关联

   dd if=/dev/zero of=/testdir/bigfile bs=1M count=500

   losetup  /dev/loop7 /testdir/bigfile 

   mkfs.ext4 /testdir/bigfile

   mount /dev/loop7  /mnt/bigfile/ 

   losetup -a

示例:

    创建一个文件,对文件进行格式化挂载到另一个目录下

Linux 磁盘、文件系统管理

Linux 磁盘、文件系统管理

   下面是CentOS7版本的

Linux 磁盘、文件系统管理

Linux 磁盘、文件系统管理



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         一次读size个byte

    obs=size         一次写size个byte

    cbs=size         一次转化size个byte

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

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

    count=n          只拷贝n个记录

Linux 磁盘、文件系统管理


conv=conversion[,conversion…] 用指定的参数转换文件。

转换参数:

     ascii 转换EBCDIC 为ASCII

     ebcdic 转换ASCII 为EBCDIC

     block 转换为长度为cbs 的记录,不足部分用空格填充。

     unblock 替代cbs长度的每一行尾的空格为新行

     lcase 把大写字符转换为小写字符

     ucase 把小写字符转换为大写字符

     swab 交换输入的每对字节

     noerror 出错时不停止

     notrunc 不截短输出文件

     sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐


1)磁盘拷贝:

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

2)备份MBR:

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

3)破坏MBR中的bootloader:

      dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

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

      #ddif=fileAof=fileBbs=1 count=128 skip=63 seek=31 conv=notrunc


1)备份:

      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工具进行压缩,保存到指定路径

2)恢复:

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

          将备份文件恢复到指定盘

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

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


1)拷贝内存资料到硬盘

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

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

2)从光盘拷贝iso镜像

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

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

3)销毁磁盘数据

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

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


得到最恰当的block size

     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

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


测试硬盘读写速度

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

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

    通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度


修复硬盘

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

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

    

        

         


        

        

         

原创文章,作者:zhumengxiaotao,如若转载,请注明出处:http://www.178linux.com/40299

(0)
上一篇 2016-09-01 08:50
下一篇 2016-09-01 08:50

相关推荐

  • Mysql 启动时 报ERROR 2002,分析解决、

    1、故障现象 [root@localhost scripts]# mysql -u root ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysqld.sock’ (2) 2、故障分析 查看mysql实例的状态 [root@localhost scr…

    Linux干货 2017-08-29
  • 2

    2

    Linux干货 2018-03-26
  • 内核编译之增加ntfs文件系统

    内核编译 内核编译 单内核体系设计,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制。 内核组成部分:     Kernel,内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-WERSION- RELEASE;     Kernel object…

    Linux干货 2016-09-13
  • 网络接口配置-bonding

    网络接口配置-bonding •Bonding 就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 Bonding的工作模式 •Mode 0 (balance-rr) 轮转(Round-robin)策略:从头…

    Linux干货 2016-09-05
  • 安装CentOS6.8操作系统

        工具:     VMware Workstation 12     http://www.vmware.com/cn/products/workstation/workstation-evaluation.html  &n…

    Linux干货 2016-08-04
  • 从Linux小白到大牛——与狼共舞的日子3

    马哥教育网络班21期+第3周课程练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who root :0   2016-07-23 08:55 (:0) wangsining pts…

    Linux干货 2016-07-26

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-01 15:08

    文章整体思路清晰,结构层次分明,对于前面的可以做成链接跳转回更好。