码迷,mamicode.com
首页 > 其他好文 > 详细

磁盘存储和文件系统:

时间:2018-05-21 23:06:37      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:磁盘文件系统

设备文件
I/O Ports: I/O设备地址
一切皆文件:open(), read(), write(), close()
设备类型:
块设备:block,存取单位“块”,磁盘 分区 块
字符设备:char,存取单位“字符”,键盘
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信
设备号码:
主设备号:major number, 标识设备类型
次设备号:minor number, 标识同一类型下的不同设备

硬盘接口类型
    并行:
        IDE:133MB/s
        SCSI:640MB/s
    串口:
        SATA:6Gbps
        SAS:6Gbps
        USB:480MB/s
        rpm: rotations
            per minute  每分钟的转速

机械硬盘和固态硬盘
    机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤
    固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRA)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致
    相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势
    硬盘有价,数据无价,目前SSD不能完全取代HHD
设备文件:
    磁盘设备的设备文件命名:/dev/DEV_FILE
    SCSI, SATA, SAS,IDE,USB: /dev/sd
    虚拟磁盘:/dev/vd
    不同磁盘标识:a-z,aa,ab…
        /dev/sda, /dev/sdb, ...
    同一设备上的不同分区:1,2, ...
        /dev/sda1, /dev/sda5
    硬盘存储术语
        head:磁头
        track:磁道
        cylinder: 柱面
        sector: 扇区,512bytes

CHS和LBA
    CHS (是比较老的技术最大空间8G)
        采用24bit位寻址
        其中前10位表示cylinder,中间8位表示head,后面6位表示sector
        最大寻址空间8GB

    LBA(logical block addressing)
        LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
        LBA采用48个bit位寻址
        最大寻址空间128PB
    由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

使用分区空间
    设备识别
    设备分区
    创建文件系统
    标记文件系统
    在/etc/fstab文件中创建条目
    挂载新的文件系统

如何使用磁盘:
    1、分区
    2、创建文件系统 简称:格式化
    3、挂载:分配目录名

磁盘分区
    为什么分区
        优化I/O性能
        实现磁盘空间配额限制
        提高修复速度
        隔离系统和程序
        安装多个OS
        采用不同文件系统

分区
    两种分区方式:MBR,GPT      (以现在的使用情况 MBR为主流)
    MBR: Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T
    如何分区:按柱面
    0磁道0扇区:512bytes
        446bytes: boot loader
        64bytes:分区表
        16bytes: 标识一个分区
        2bytes: 55AA 标志位
    4个主分区;3主分区+1扩展(N个逻辑分区)

管理分区
    列出块设备
        lsblk
    创建分区使用:
        fdisk创建MBR分区
        gdisk创建GPT分区
        parted高级分区操作
    partprobe-重新设置内存中的内核分区表版本

parted命令  用于创建分区表
    parted的操作都是实时生效的,小心使用
    用法:parted [选项]... [设备[命令[参数]...]...]
        parted /dev/sdb mklabel gpt|msdos
            用于创建分区
        parted /dev/sdbprint
        parted /dev/sdb mkpart primary 1 200 (默认M)
            mkpart:创建一个分区
            primary:表示主分区
            1 200:从1M开始,200M结束
        parted /dev/sdbrm1
        parted –l 列出分区信息

例如:用/dev/sdb创建一个分区为MBR的分区
    parted /dev/sdb mklabel msdos   msdos就是MBR的一个名称    

分区工具fdisk和gdisk
    gdisk /dev/sdb 类fdisk 的GPT分区工具
    fdisk -l [-u] [device...] 查看分区
    fdisk /dev/sdb 管理分区
    fdisk:适用于MBR类型的分区,也能用于gpt分区但是,不建议使用 不稳定
    子命令:
        p 分区列表
        t 更改分区类型
        n 创建新分区
        d 删除分区
        v 校验分区
        u 转换单位
        w 保存并退出
        q 不保存并退出
注意:创建完分区之后 partprobe用于进行同步可适用于centos7,centos6无法进行同步
在chentos7上在老的硬盘中创建一个新的分区,保存时会报一个错误:
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    只需要用partprobe同步一个即可   只适用于centos7 

在centos6 上创建分区时在一上去就是提示你:
    DOS-compatible mode is deprecated. It‘s strongly recommended to
    switch off the mode (command ‘c‘) and change display units to
    sectors (command ‘u‘)   (DOS-compatible的模式兼容已经过时了,强烈推荐关闭模式)
fdisk -c /dev/sda   加上c之后就可以了
    在centos6上添加一个新的分区保存时也回报一个错误
    注意:在添加分区时需执行:
    partx -a /dev/sda  执行完之后会报一个虚假错误 不用担心
    在centos6上删除分区时须执行同步:
    partx -d --nr 6-8 /dev/sda  6-8:是所删除的分区是第6、7、8的分区 只适用于centos6上删除分区时使用进行同步

同步分区表
    查看内核是否已经识别新的分区:
        cat /proc/partations
    centos6通知内核重新读取硬盘分区表
        新增分区用
        partx-a /dev/DEVICE
        kpartx-a /dev/DEVICE -f: force
        删除分区用
        partx-d --nrM-N /dev/DEVICE
    CentOS 5,7: 使用partprobe
        partprobe[/dev/DEVICE]

文件系统
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统
从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等
支持的文件系统:/lib/modules/`uname –r`/kernel/fs

文件系统类型
    inux文件系统:ext2(Extended file system), ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
    光盘:iso9660
    Windows:FAT32, exFAT,NTFS
    Unix: FFS(fast), UFS(unix), JFS2
    网络文件系统:NFS, CIFS
    集群文件系统:GFS2, OCFS2(oracle)
    分布式文件系统:fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
    RAW:未经处理或者未经格式化产生的文件系统

文件系统分类
    根据其是否支持"journal(日志)"功能:
        日志型文件系统: ext3, ext4, xfs, ...
        非日志型文件系统: ext2, vfat
    文件系统的组成部分:
        内核中的模块:ext4, xfs, vfat
        用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
    Linux的虚拟文件系统:VFS
    查前支持的文件系统:cat /proc/filesystems

创建文件系统
    mkfs命令:
        (1) mkfs.FS_TYPE/dev/DEVICE
            ext4
            xfs
            btrfs
            vfat
        (2) mkfs-t FS_TYPE /dev/DEVICE
        -L ‘LABEL‘: 设定卷标

创建ext文件系统
    mke2fs:ext系列文件系统专用管理工具
        -t {ext2|ext3|ext4}
        -b {1024|2048|4096}
        -L ‘LABEL‘
        -j: 相当于-t 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:关闭指定特性

文件系统标签
    指向设备的另一种方法
    与设备无关
    blkid:块设备属性信息查看
        blkid[OPTION]... [DEVICE]
        -U UUID: 根据指定的UUID来查找对应的设备
        -L LABEL:根据指定的LABEL来查找对应的设备
    e2label:管理ext系列文件系统的LABEL
        e2label DEVICE [LABEL]
    findfs:查找分区
        findfs[options] LABEL=<label>
        findfs[options] UUID=<uuid>

问题:在/etc/fstab文件中对应/data文件夹是哪个设备挂载上去的???
blkid -U grep /data /etc/fstab|sed -r "s/UUID=([^ ]*) .*/\1/"
或者
blkid -U 5d151697-f0b0-4139-9341-adc6950628a4 可直接复制/etc/fstab中挂载/data中的UUID
或:
blkid -U grep /data /etc/fstab|cut -d" " -f1|cut -d= -f2
或:
findfs grep /data /etc/fstab|cut -d" " -f1

tune2fs (只能看ext系列的文件,无法看xfs的文件 会报错误)
    tune2fs:重新设定ext系列文件系统可调整参数的值
        -l:查看指定文件系统超级块信息;super block
        -L ‘LABEL‘:修改卷标
        -m #:修预留给管理员的空间百分比
        -j: 将ext2升级为ext3
        -O: 文件系统属性启用或禁用,–O ^has_journal
        -o: 调整文件系统的默认挂载选项,–o ^acl
        -U UUID: 修改UUID号
    dumpe2fs:
        块分组管理,32768块
        -h:查看超级块信息,不显示分组信息

问题:如何将/dev/sdb2的UUID换个新的???
tune2fs -U uuidgen /dev/sdb2
uuidgen:可生成随机的UUID

文件系统检测和修复
    常发生于死机或者非正常关机之后
    挂载为文件系统标记为“no clean”
    注意:一定不要在挂载状态下修复
        fsck: File System Check
        fsck.FS_TYPE
        fsck-t FS_TYPE
        -p: 自动修复错误
        -r: 交互式修复错误
        FS_TYPE一定要与分区上已经文件类型相同
    e2fsck:ext系列文件专用的检测修复工具
        -y:自动回答为yes
        -f:强制修复

注意:fsck、e2fsck两个只适合ext系列的文件 fsck命名会自动检测文件系统的类型

问题:将/dev/sdb1中的设备文件给破坏了如何修复呢???
dd if=/dev/zero of=/dev/sdb1 bs=1M count=30 注意/dev/sdb1有1G的大小只是破坏了30M而已 直接将它超级块给破坏;
Couldn‘t find valid filesystem superblock.
[root@localhostcentos6 ~]# fsck /dev/sdb1 -y
或者
e2fsck -f /dev/sdb1 -y -f在磁盘上会一个一个的去检查
tune2fs -l /dev/sdb1 |less 用于查看磁盘的状态

挂载mount
    挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
    卸载:为解除此关联关系的过程
    把设备关联挂载点:mount Point
    mount
    卸载时:可使用设备,也可以使用挂载点
    umount
    挂载点下原有文件在挂载完成后会被临时隐藏
    挂载点目录一般为空

用mount命令挂载文件系统
    挂载方法:mount DEVICE MOUNT_POINT
    mount:通过查看/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:挂载点
            事先存在;建议使用空目录
            进程正在使用中的设备无法被卸载

mount常用命令选项
    -t vsftype:指定要挂载的设备上的文件系统类型
    -r: readonly,只读挂载  
    -w: read and write, 读写挂载
    -n: 不更新/etc/mtab,mount不可见
        centos6:mount -n /dev/sdb1 /data/sdb1/     可隐藏挂载
        centos7:无法使用

    -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
    -L ‘LABEL‘: 以卷标指定挂载设备
    -U ‘UUID‘: 以UUID指定要挂载的设备
    -B, --bind: 绑定目录到另一个目录上  (用于实现目录挂目录)
        mount /dev/sdb1 /data/sdb1/  
        mount /data/sdb1 /mnt/sdb1
        将磁盘挂载到/data/sdb1后,再将/data/sdb1/挂载到/mnt/sdb1中  
        里面中的文件可以共享 其实是一个软连接

    查看内核追踪到的已挂载的所有设备
        cat /proc/mounts(可用于查看所有挂载设备)

    -o options:(挂载文件系统的选项),多个选项使用逗号分隔
        async:异步模式
        sync:同步模式,内存更改时,同时写磁盘
        atime/noatime:包含目录和文件
        diratime/nodiratime:目录的访问时间戳
        auto/noauto:是否支持自动挂载,是否支持-a选项
        exec/noexec:是否支持将文件系统上运行应用程序
    问题如何将/data/sdb1/设置为noexec???
            mount -o remount,noexec /data/sdb1/     让/data/sdb1/文件不能直接运行以防有病毒程序
            mount -o exec,remount /data/sdb1/   解除noexec

        dev/nodev:是否支持在此文件系统上使用设备文件
            mount -o remount,nodev /data/sdb1   让此分区上的设备文件失效
            mount -o dev,remount /data/sdb1/

        suid/nosuid:是否支持suid和sgid权限
        remount:重新挂载
        ro:只读
        rw:读写
        user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
        acl:启用此文件系统上的acl功能
添加acl权限:
tune2fs -o acl /dev/sdb1    (添加完加之后 需要取消挂载重新挂载设备)

问题:当遇到用户在访问设备时,如何取消/dev/sdb1设备上的acl权限???
mount -o noacl,remount /dev/sdb1 /data/sdb1/

        loop: 使用loop设备
    defaults:相当于rw, suid, dev, exec, auto, nouser, async

卸载命令
    查看挂载情况
        findmntMOUNT_POINT|device
        findmnt /data/sdb1/ 可用于判断是否挂载设备

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

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

问题:有用户正在访问/data/sdb1时,管理员想取消挂载设备时怎么做???
fuser -v /data/sdb1/ 查看正在访问此文件的用户
fuser -km /data/sdb1/ 强行踢出正在访问的用户

    卸载
        umountDEVICE
        umountMOUNT_POINT

挂载点和/etc/fstab
    配置文件系统体系
    被mount、fsck和其它程序使用
    系统重启时保留文件系统体系
    可以在设备栏使用文件系统卷标
    使用mount -a 命令挂载/etc/fstab中的所有文件系统

mount /dev/sdb1 /data/sdb1  这个方式挂载机器如果重启了保存不住的,如何想要保存住的话就要写入/etc/fstab配置文件中即可:
vim /etc/fstab
UUID=1bcfeffa-ae95-4e04-ab34-a37b428a9071 /data/sdb2    ext4  defaults  0 3     
写完之后不用重启可执行mount -a 即可
tune2

注意:如果要加别的权限时用户正在访问时改完之后可执行mount -o remount /data/sdb2/

问题:把/dev/sdb中硬盘格式化,将/home/的家目录全部迁移进去
注意:在操作之前先做备份!!!!!!!!!!!!!
安全起见可用fdisk将里面的分区全部清除即可也可以运行命令:
dd if=/dev/zero of=/dev/sdb bs=1 count=512 在实际运行中很危险不建议使用
partx -d --nr 1-2 /dev/sdb 同步 如不同的话内存中还有
mkfs.ext4 /dev/sdb1 -L /home
mkdir /mnt/home
mount /dev/sdb1 /mnt/home
cp -av /home/* /mnt/home

    vim /etc/fstab
        UUID=e62955d4-7fa9-4765-97a9-b47b81426e2e /home         ext4    defaults 0 0
    rm -rf /home/*  将本机原本的家目录空间清除
    mount -a    加载读取新的home家文件
    umount /mnt/home
    rm -rf /mnt/home
    su - user   切换用户看是否成功
    reboot  看是否正常开机

文件挂载配置文件
    /etc/fstab每行定义一个要挂载的文件系统
    要挂载的设备或伪文件系统
        设备文件
        LABEL:LABEL=""
        UUID:UUID=""
        伪文件系统名称:proc, sysfs
    挂载点
    文件系统类型
    挂载选项:defaults
    转储频率:0:不做备份1:每天转储2:每隔一天转储
    自检次序:0:不自检
        1:首先自检;一般只有rootfs才用1

处理交换文件和分区
    交换分区是系统RAM的补充
    基本设置包括:
        创建交换分区或者文件
        使用mkswap写入特殊签名
        在/etc/fstab文件中添加适当的条目
        使用swapon -a 激活交换空间

挂载交换分区
    启用:swapon
        swapon[OPTION]... [DEVICE]
        -a:激活所有的交换分区
        -p PRIORITY:指定优先级
        /etc/fstab:pri=value
    禁用:swapoff[OPTION]... [DEVICE

SWAP的优先级    用于查看用执行 swapon -s    
可以指定swap分区0到32767的优先级,值越大优先级越高
如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级减一
先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)
优化性能:分布存放,高性能磁盘存放

SWAP用于模拟内存使用的,一般内存不够时会使用SWAP

问题:如遇到SWAP只有2G想要在创建2G该怎么做呢?????
fdisk /dev/sdd 分一个2G的分区用于SWAP
/dev/sdd1 1 262 2104483+ 82 Linux swap / Solaris
mkswap /dev/sdd1 格式成SWAp分区
vim /etc/fstab 写入到文件中用于下次开机自动挂载
UUID=6c8ebad5-0af8-498e-9bfa-698ba26bf6a9 swap swap defaults 0 0
swapon -a 配置文件生效

可以查看SWAP的优先级:
swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 2097148 0 -1
/dev/sdd1 partition 2104476 0 -2
那么如何将sdd1的优先级高于sda5????
vim /etc/fstab
UUID=6c8ebad5-0af8-498e-9bfa-698ba26bf6a9 swap swap defaults,pri=10 0 0
pri=100:优先级10,数字自己定义 只要高于sda5 -1 即可
swapoff /dev/sdd1 需要先禁用
swapon -a 配置文件生效
swapon -s 查看优先级是否改变

 移动介质
    挂载意味着使外来的文件系统看起来如同是主目录树的一部分
    访问前、介质必须被挂载
    摘除时,介质必须被卸载
    按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
    挂载点通常在/media 或/mnt下

使用光盘
    在图形环境下自动启动挂载/run/media/<user>/<label>
    否则就必须被手工挂载
        mount /dev/cdrom/mnt/
    eject命令卸载或弹出磁盘
    创建ISO文件
        cp/dev/cdrom/root/centos7.iso
        mkisofs -r -o /root/etc.iso /etc
    刻录光盘
        wodim–v –eject centos.iso

挂载USB介质
    查看USB设备是否识别
        lsusb
    被内核探测为SCSI设备
        /dev/sdaX、/dev/sdbX、或类似的设备文件
    在图形环境中自动挂载
        图标在[计算机]窗口中创建
        挂载在/run/media/<user>/<label>
    手动挂载
        mount /dev/sdb1 /mnt

常见工具
    文件系统空间占用等信息的查看工具:
        df[OPTION]... [FILE]...
        -H 以1000为单位
        -T 文件系统类型
        -h: human-readable
        -i:inodesinstead of blocks
        -P: 以Posix兼容的格式输出
    查看某目录总体空间占用状态:
        du [OPTION]... DIR
        -h: human-readable
        -s: summary --max-depth

工具dd
    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个记录
        conv=conversion[,conversion...] 用指定的参数转换文件
        转换参数:
        ascii 转换EBCDIC 为ASCII
        ebcdic 转换ASCII 为EBCDIC
        lcase 把大写字符转换为小写字符
        ucase 把小写字符转换为大写字符
        nocreat 不创建输出文件
        noerror 出错时不停止
        notrunc 不截短输出文件
        sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
    备份MBR:
        ddif=/dev/sdaof=/tmp/mbr.bakbs=512 count=1
    破坏MBR中的bootloader:
        ddif=/dev/zero of=/dev/sdabs=64 count=1 seek=446
    有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下:
        ddif=fileAof=fileBbs=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将无法挂载,创建和拷贝操作无法执行

    得到最恰当的block size
        ddif=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
        ddif=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
        ddif=/dev/zero bs=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

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

磁盘存储和文件系统:

标签:磁盘文件系统

原文地址:http://blog.51cto.com/001230/2118833

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