磁盘管理的相关知识

1.设备文件:关联至一个设备驱动程序,进而与之相对应设备文件通信

2.设备号码:

    主设备号:major number 标识文件类型

    次设别号:minor number  同一类型下不同设备

3磁盘组成结构:

.1472372100387740.png

1472372140523033.png

    磁头数=盘面数

    磁头  2^8  256个磁头

    磁道   由外至内排序   最多1024     用10个二进制位标识

    柱面    将扇区组成一个圆,即是柱面,柱面是分区的最小单位  512bytes*256*63=8M

    扇区   一个磁道最多63个扇区      用6个2进制为表示

    磁盘大小:512*63*1024*256

分区inode、block、superblock、block group示意图:

1472372235803450.png

一个文件系统应该仅有一个superblock,但后续的block group也可能含有superblock,但后边的只是前边的备份,可以进行superblock的救援

5.MBR分区方式,使用32位标识扇区数,分区大小不超过2T

    分区方式:按照柱面

    0磁道0扇区:512bytes

    446bytes: boot loader

    64bytes:分区表    – -> 每16bytes: 标识一个分区

    2bytes: 55AA   有此内容,说明有分区

    mbr一般情况下需要备份 

实例:实现相同大小磁盘/dev/sde拥有和/dev/sda相同分区情况

(1)把/dev/sda的mbr复制到/dev/sde

1.png

(2)显示/dev/sdembr信息

    2.png

(3)把mbr第511~512换为空

    4.png

(4)发现/dev/sde分区信息没有了,由此说明:mbr最后两个字节必须存在且为“55aa”,否则即使分区信息正确,依然无法显示分区信息

5.png

    四个主分区:3个主分区+1个拓展分区

1472372425774772.png

6.GPT分区方式

    (1)GUID(Global Unique Identifiers) partition table支持128个分区(不分主分区、拓展分区),使用64位,支持8Z(512bytes/block)、64Z(4096bytes/block)

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

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

    (3)EFI部分又可以分为4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域

7.分区优点

    优化i/o性能、实现磁盘空间配额限制、隔离系统与程序、安装多个系统、提高修复速度

8.管理分区

    (1)列出块设备:lsblk

    (2)创建分区使用:

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

                  fdisk -l device显示设备分区表,没有参数,显示/proc/partitions内容(显示的是磁盘上的分区表)

                  fdisk -u 以sector为单位显示分区信息,默认是cylinder

                  fdisk -c 关闭dos

            b.   gdisk创建GPT分区

            c.   GNU parted高级分区操作(创建、复制、调整大小等等)实时生效  对GPT格式文件系统使用,只能在centos7上边使用

                    parted [option] … [设备[命令[参数]…]…]

                    parted /dev/sdb mklabel  gpt|msdos

                    parted /dev/sdb print  显示分区表

                    mkpart part-type [fs-type] start end   创建一个“part-type”类型的分区,“fs -type”文件系统  大小为$【end – start】M大小

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

                    parted /dev/sdb rm 1  删除分区

                    parted -l  显示分区表信息

                  

(3)同步分区表

         partprobe-重新设置内存中的内核分区表版本(centos5,7适用,centos6新分区适用)

        查看分区表同步情况:/proc/partitions

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

        新增分区:

                partx -a  /dev/DEVICE

                kpartx -a /dev/DEVICE -f: force

        删除分区:

                partx -d –nr /dev/DEVICE

                    –nr说明范围

       centos6:partx

        centos5,7:partprobe

9.文件系统的相关知识

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

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

    (2)Linux文件系统: :ext2(Extended file system), ext3, ext4, xfs(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:未经处理或者未经格式化产生的文件系统

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

(3)文件系统分类

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

            日志型文件系统: ext3, ext4, xfs, …  保证文件系统的安全可靠

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

        文件系统的组成部分:

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

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

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

        Linux的虚拟文件系统:VFS

1472372750757000.png

   

(4)创建文件系统

        mkfs.fs_type /dev/device

        mkfs -t type /dev/device

(5)ext文件系统相关操作

        a.mke2fs:ext系列文件系统专用管理工具

            -t {ext2|ext3|ext4}

            -b {1024|2048|4096}   block大小(字节)

            -i #;为空间中多少字节创建一个inode,大小不应小于block大小

            -I:一个inode大小   128-4096字节

            -L lable  :赋值给label

            -l label: 给label所代表设备创建文件系统

            -m #:预留多少空间给管理员,默认5%

            -N#:为空间创造多少个inode

            -O feature:启用指定特性

            -O ^feature:禁用指定特性

        b.专门管理ext系列文件系统的lable:e2lable

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

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

            -L 'LABEL':修改卷标

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

            -j: 将ext2升级为ext3

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

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

            -U UUID: 修改UUID号

(6)文件系统标签

        blkid:块设备文件属性查看(显示已挂载文件信息)

        blkid [option] …[device]

            -U uuid  查找与uuid匹配的文件属性

             -L lable  查找与lable匹配的文件的属性

        findfs :查找分区

        findfs[options] LABEL=<label>

        findfs[options] UUID=<uuid>

(7)文件系统检查与修复(修复前,所修复文件必须处于卸载状态)

        常用于死机或非正常关机

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

       * fsck.FS_type

       *fsck -t FS_type

            -a 自动修复

            -r 交互式修复错误

             FS_type必须和分区上边的文件类型相同

        *e2fsck:ext系列文件系统专用的检测修复工具

            -y 自动回复为“yes”

            -f  强制修复

10.挂载的相关知识

(1)挂载:将额外文件系统与根文件系统上某目录建立起关联关系,使得此目录成为其他文件访问入口的行为

        卸载:接触关联关系

        挂载点目录一般为空(否则其下目录会被隐藏)

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

        cat /proc/mounts:查看挂载情况

        findmnt mnt_point

(3)mount [-fnrsvw] [-t vfstype] [-o options] device dir

       * device:指明要挂载设备

            设备文件:例如/dev/sda

             卷标:-L lable

             uuid,-U uuid

             伪文件系统名称:proc sysfs devtmpfs cofigfs

        * dir:挂载点

                事先存在的空目录;正在使用的设备无法被卸载   例如:/目录

        -t vfstype:指定要挂载的设备的文件系统类型

        -r: readonly,只读挂载

        -w: read and write, 读写挂载

        -n: 不更新/etc/mtab,相当于#mount(此时只有在/proc/mounts可以看到挂载信息)

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

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

        -U 'UUID': 以UUID指定要挂载的设备

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

        -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功能

                    Defaults:相当于rw, nosuid, dev, exec, auto, nouser, async

实例:把目录/boot挂载到/mnt/boot下,圈住区域即为挂载信息

7.png

分别查看/boot下和/mnt/boot相同目录,发现信息完全一样,但不是硬链接,因为节点数没增加

8.png

(4)    umount mnt_point

        umount DEVICE

实例:实现设备的嵌套挂载,然后把该挂载取消

(1)把/dev/sdb2分别挂载到/mnt/test、/mnt/test/test2下,结果如下

1.png

(2)进入/mnt/test下,创建文件a,然后进入/mnt/test/test2下,查看其下文件

2.png

一号区域为/mnt/test下文件

二号区域为/mnt/test/test2下文件

三号区域为/mnt/test/test2/test2下文件

总结:Linux下嵌套挂载不会无限循环下去,Windows是会无限循环下去的(具体思路与本体类似)。

(3)卸载/dev/sdb2,发现卸载的是较晚挂载的目录

3.png

4.png

11.查看正在访问指定文件系统的进程:

        #lsofMOUNT_POINT

        #fuser -v MOUNT_POINT

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

        # fuser -km MOUNT_POINT

12. dumpe2fs  "具体的分区"

    查看superblock或block group 内容

    -h  仅显示superblock信息

13.echo "- – -" > /sys/class/scsi_host/host2/scan实现不关机可以读取到新的硬盘

        生产环境中不需要的,因为支持热插拔

14.   hexdump -c 显示特殊代码对应的通配符

        hexdump -C 显示特殊代码对应*进制数,还有解析的代码    显示的是16进制的

        -n 显示多少bytes字符

        -s 跳过前多少bytes

15.文件挂载配置文件

    要挂载的文件设备或伪文件系统:设备名、uuid、lable、伪文件系统

    挂载点:

    文件系统类型

    挂载选项

    转储频率:0 不备份

                    1 每天备份

                    2  隔一天备份

    自检次序:0 不自检

                    1  首先自检  一般只有rootfs才用1(如果挂载选项有问题,会无法重启,所以最好为0)

目录挂载到目录上时,文件类型为none,挂载属性为bind

挂载iso文件时,文件类型为iso9660,挂载属性为loop

实例:挂载/boot/目录到/mnt/boot下,

/etc/fstab配置文件添加如下内容

1.png

执行mount -a实现配置文件没有挂载选项自动挂载,查看挂载结果

2.png

16.交换分区文件和分区处理

    (1)交换分区是系统RAM的补充

    (2)基本设置包括:

        创建交换分区或文件

        使用mkswap写入特殊签名

        在/etc/fstab内添加适当条目

        使用swapon -a 激活交换空间

    (3)启用 swapon [option]…[DEVICE]

            -a 激活所有交换空间(激活后,修改配置文件,再用此选项,不生效)

            -P PRIORITY:指定优先级

            /etc/fstab:pri=value

            禁用 swapoff [OPTION]..[DEVICE]

    (4)优先级相关知识

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

            *如果用户没有指定,那么核心会自动给swap指定一个优先级(负无穷,-1),由-1开始,依次递减一

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

实例:增加swap容量(建议新增加swap尽量在分区的外磁道,这样读写性能较好)

    (1)查看原来swap容量

4.png

    (2)创建一个属性为swap的分区,并格式化为swap格式

5.png

6.png

 (3)/etc/fstab添加如下内容

7.png

 (4)用swapon -a,使/etc/fstab配置文件中,是swap类型的没有使用的设备可用

  9.png  

14.挂载移动介质

    (1)*访问前,必须挂载

                *摘除前,必须卸载

                *挂载点通常在/media或/mnt下

    (2)使用光盘

            *在图形界面下,自动启动挂载/run/media/<user>/<lable>

            *字符界面下,mount /dev/cdrom /mnt

            *eject  卸载或弹出磁盘

            *创建ISO文件

                cp /dev/cdrom /root/centos7.ISO

                mkisofs -r -o /root/etc.iso /etc

            *刻录光盘

                wodim -v -eject centos.iso

            *特殊设备挂载方法:加-loop挂载选项

                                            把文件与伪设备loop关联起来,

实例:在/目录下,新建一个100M文件,把他挂载到/mnt/test下

(1)新建文件test

11.png

(2)格式化为ext4格式,并与/dev/loop2关联

13.png

查看黄色区域,发现如果直接用特殊文件挂载,会要求用-loop

14.png

(3)用关联设备/dev/loop3挂载,查看结果

15.png

    (3)挂载USB介质

                *被内核探测为SCSI设备

                    /dev/sdaX或类似设备

                *在图形环境下自动挂载

                        ·图标在[计算机]窗口中创建

                        ·自动挂载到/run/media/<user>/<lable>

                *在字符界面

                        mount /dev/sdaX /mnt

15.内存空间使用状态

    free [OPTION]

        -m:以MB为单位

        -g:以GB为单位

16.(1) 文件系统空间占用信息查看(目录挂载信息不可看,文件可以看到)

            df 列出文件系统的整体磁盘使用量

            df -h 以人们较易阅读的方式显示

            df -i 以硬盘iNode的数量显示

            /dev/shm 与内存有关的挂载

            df -a 显示所有的文件系统

            df -T 把文件系统名称也列出来

            有的时候,显示没有磁盘容量,可能是inode用完了 inode占用block

    (2)查看某目录整体空间占用情况

            du 显示文件占用空间大小(默认仅显示当前目录下的目录占用空间大小)

            du -a  显示目录 ,文件占用空间情况

            du -s 显示指定目录大小

            du -S 显示各级子目录及本目录大小(不显示文件)

17.dd:conver and copy a file

用法:dd if=src of=dest bs=#(复制单元大小默认是以字节为单位) 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

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

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

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

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

    swab 交换输入的每对字节

    noerror 出错时不停止

    notrunc 不截短输出文件

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

作业

2、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息

脚本内容如下:

22.png

执行结果如下:

23.png

 

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

(0)
mengzhiqianmengzhiqian
上一篇 2016-08-30
下一篇 2016-08-30

相关推荐

  • 第9天:压缩,任务,rpm包

    http://note.youdao.com/yws/public/redirect/share?id=b3e4fc37bdd98991638dce69ce3eea53&type=false

    Linux干货 2016-08-18
  • NET25-第11周作业

    1、详细描述一次加密通讯的过程,结合图示最佳。 第一步:他们需要实现协商好对称加密算法,单向加密算法,公钥加密算法,交换公钥等。 第二步:B用户想要将数据传给A,首先需要使用单向加密算法取出数据的特征码,并用自己的私钥对这段特征码进行加密(数字签名),B用户生成临时对称密钥,并用对称密钥加密整段数据,B用户使用 A用户的公钥加密一次性对称密钥,附加在整段数据…

    Linux干货 2017-05-15
  • 马哥教育网络班21期+第二周课程练习

    Linux上的文件管理类命令都有哪些?其常用的方法及其相关示例。     cp:将源文件或者目录复制到目标文件或者目录中。     mv:将文件或目录重新命名,或者将源文件从源目录移到目标目录中。     rm:删除指定的一个文件或者多个文件或者目录。       &n…

    Linux干货 2016-07-16
  • 网络的冰山一角

        这周我们学习了网络管理,每一天进度特别快,上课认真听了,但是感觉也只能听懂一半。所以我决定把网络管理作为这周博客写一写,这样相当于又复习了一边,能加深印象。 一、用户应用程序对网络的影响     1、批处理应用程序:无需直接人工交互,宽带很重要,但是并非关键性因素。 &n…

    2017-09-04
  • 如何使用正则表达式

    正则表达式(Regular Expression)就是使用简单的字符按照预先设定的规则来完成复杂的功能,说白了,正则表达式是一种字符串的匹配方式,就是用预先设定好的规则来描述我们想要表达的内容,它是由普通字符以及元字符组成的字符串,其中元字符不表示本身的意义,而是用于表达控制或通配等功能。 为什么要用这个东西那,我想,每一个学习计算机的人都应该明白,计算机就…

    Linux干货 2015-10-27
  • 初识varnish

      实验拓扑 varnish主机    地址192.168.150.137 后端web主机     web1静态服务192.168.150.138     web2动态服务192.168.150.140 varnish的安装及开启 varnish主机: ~]# yum info varni…

    Linux干货 2017-01-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-01 14:32

    看完博客会有一个概览性的认识,但在逻辑表达的组织上显得略微混乱,如果能再优化下逻辑规划会更让人印象深刻