磁盘管理的相关知识

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)
上一篇 2016-08-30 15:18
下一篇 2016-08-30 15:48

相关推荐

  • MySQL Fabric 安装部署

    MySQL Fabric  是一个用于管理 MySQL 服务器群的可扩展框架。该框架实现了两个特性 — 高可用性 (HA) 以及使用数据分片的横向扩展。这两个特性既可以单独使用,也可以结合使用。 环境: 安装MySQL Fabric 配置MySQL Fabric MySQL Fabric 安装管理数据库fabric 启动MySQL Fab…

    数据库运维 2016-06-03
  • 基于lvs调度的web应用——Discuz程序

    实验环境: 前端主机:10.1.43.101 后端主机1:172.16.0.9   作为lvs-dr的调度器,并且提供mysql和nfs文件共享 后端主机2:172.16.0.2   作为ap服务器之一 后端主机3:172.16.0.3   作为ap服务器之一 实验拓扑: 后端主机1: [root@node3…

    Linux干货 2016-10-26
  • 磁盘管理作业

    创建一个2G的文件系统,块大小为2048byte, 预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testdir目录,且默认有acl挂载选项 [root@English6 ~]# fdisk /dev/sdc Device contains neither a&nb…

    Linux干货 2016-09-01
  • btrfs文件系统管理与应用

    btrfs(b-tree、butter fs、better fs),oracle公司研发的替代ext系列的cow机制的文件系统;GPL 核心特性: 多物理卷支持;btrfs可由多个底层物理卷组成;支持RAID,以联机“添加”、“移除”、“修改”; 写时复制更新机制(CoW):复制、更新及替换指针,而非“就地”更新; 数据及元数据校验码:checksum 子卷…

    Linux干货 2017-12-18
  • 日志收集工具EFK之fluent部署手稿

    Edit EFK fluent部署安装 1. 环境介绍 Centos 6.5 64bit 2. 安装 td-agent介绍 fluent 考虑到灵活可扩展性,使用Ruby编写,部分功能考虑性能使用C语言编写。普通用户安装操作Ruby daemon还是有一定难度的。考虑到flunt的上手难度, fluent专门发布了稳定发布包,就也是所谓的td-agent. …

    Linux干货 2016-03-24
  • 正则表达式详解

    正则表达式详解

    2017-09-20

评论列表(1条)

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

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