磁盘管理

一、磁盘结构


    设备文件

        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 转速

    设备文件

        磁盘设备的设备文件命名: /dev/DEV_FILE

        IDE: /dev/hd

        SCSI, SATA, SAS, USB: /dev/sd

            不同设备: a-z

                /dev/sda, /dev/sdb, …

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

                /dev/sda1, /dev/sda5

    硬盘结构

blob.png

    硬盘存储术语

blob.png

    硬盘存储术语

        head:磁头 

        track:磁道 63个扇区 (2^6-1)

        cylinder: 柱面

        secotr: 扇区, 512bytes

        CHS

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

        track=512*63

    使用分区空间

        设备识别

        设备分区

        创建文件系统

        标记文件系统

        在/etc/fstab文件中创建条目

        挂载新的文件系统

二、分区类型


    磁盘分区

        为什么分区?

            优化I/O性能

            实现磁盘空间配额限制

            提高修复速度

            隔离系统和程序

            安装多个OS

            采用不同文件系统

    分区

        两种分区方式: MBR, GPT

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

        如何分区:按柱面

        0磁道0扇区: 

            512bytes

            446bytes: boot loader

            64bytes:分区表

                16bytes: 标识一个分区

            2bytes: 55AA

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

    MBR分区结构

blob.png

    GPT分区

        GPT:GUID( Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block)

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

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

            grub grub2,早期lilo。

    GPT分区结构

blob.png

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

    列出可用的磁盘设备

        图形化磁盘管理功能工具:点击“应用程序” ->“系统工具” ->“磁盘”或执行命令gnome-disks

blob.png

三、管理分区


    列出块设备

        lsblk

        ls /dev/sd*

        内存中生效的磁盘。

    创建分区使用:

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

        gdisk 创建GPT分区

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

    partprobe-重新设置内存中的内核分区表版本,有bug,在centos6里不好使。

    分区工具fdisk和gdisk

        fdisk /dev/sdb

        gfisk /dev/sdb 类fdisk 的GPT分区工具

        # fdisk -l [-u] [device…]

        子命令:

            m 查看能使用的命令

            p 显示分区列表

            t 更改分区类型

            L 查看更改类型

            n 创建新分区

            d 删除分区

            w 保存并退出

            q 不保存并退出

    同步分区表

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

            # cat /proc/partations

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

            新增分区用

                partx -a -n M:N /dev/DEVICE

                kpartx -a /dev/DEVICE -f: force

            删除分区用

                partx -d -n M:N /dev/DEVICE

                centos6: –nr N-M /dev/DEVICE

        CentOS 5, 7: 使用partprobe

            partprobe [/dev/DEVICE]

    parted命令

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

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

            parted /dev/sdb mklabel gpt|msdos(mbr)

                指定分区结构

            parted /dev/sdb print

                查看有几个分区

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

                指定分区从1M到200M

            parted /dev/sdb rm 1

                删除第一个分区

            parted -l



四、管理文件系统


    文件系统

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

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

    文件系统类型

        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:未经处理或者未经格式化产生的文件系统

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

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

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

        文件系统的组成部分:

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

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

        lsmod:查看文件系统驱动。

        Linux的虚拟文件系统: VFS

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

    VFS

blob.png

    文件系统选择

blob.png

    创建文件系统

        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>

    tune2fs

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

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

            -L 'LABEL':修改卷标

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

            -j: 将ext2升级为ext3

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

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

            -U UUID: 修改UUID号

        dumpe2fs:

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

    超级块和inode table

blob.png

    文件系统检测和修复

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

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

        fsck: File System Check

            fsck.FS_TYPE

            fsck -t FS_TYPE

            -a: 自动修复错误

            -r: 交互式修复错误

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

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

            -y:自动回答为yes

            -f:强制修复

五、挂载设备


    挂载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

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

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

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

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

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

            cat /proc/mounts    比mount和cat /etc/mtab更全面。

        -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

    mknod拷贝设备

        mknod 新设备名 b 10 1 

    卸载命令

        查看挂载情况:

            #findmnt MOUNT_POINT

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

            #lsof MOUNT_POINT

            #fuser -v MOUNT_POINT

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

            # fuser -km MOUNT_POINT

        卸载:

            # umount DEVICE

            # umount MOUNT_POINT

    挂载点和/etc/fstab

        配置文件系统体系

        被mount、 fsck和其它程序使用

        系统重启时保留文件系统体系

        可以在设备栏使用文件系统卷标

        使用mount -a 命令挂载/etc/fstab中的所有文件系统

    文件挂载配置文件

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

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

            挂载点

            文件系统类型

            挂载选项

            转储频率

            自检次序

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

            设备文件、 LABEL(LABEL="")、 UUID(UUID="")、伪文件系统名称(proc,sysfs)

        挂载选项: defaults

        转储频率: 

            0:不做备份

            1:每天转储

            2:每隔一天转储

        自检次序:

            0:不自检

            1:首先自检;一般只有rootfs才用1

[root@localhost ~]# vim /etc/fstab 
UUID=d2697061-00b0-4be3-99fa-ee253ad61ac8       /mnt/sdb1   ext4    defaults 0 0 
[root@localhost ~]# mount -a
mount: mount point /mnt/sdb1 does not exist
[root@localhost ~]# mkdir /mnt/sdb1
[root@localhost ~]# mount -a
[root@localhost ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root  52403200 1585216  50817984   4% /
devtmpfs                   490216       0    490216   0% /dev
tmpfs                      500664       0    500664   0% /dev/shm
tmpfs                      500664    6912    493752   2% /run
tmpfs                      500664       0    500664   0% /sys/fs/cgroup
/dev/mapper/centos-home  49725724   32928  49692796   1% /home
/dev/sda1                  508588  127124    381464  25% /boot
tmpfs                      100136       0    100136   0% /run/user/0
/dev/sdb1                 1998672    6224   1871208   1% /mnt/sdb1

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

            解决方法:mount -o remount,rw /

LABEL="/dev/sdb"        /mnt/sdb1       ext4    defaults 0 3

blob.png

blob.png

blob.png

    处理交换文件和分区

        交换分区是系统RAM的补充

        基本设置包括:

            创建交换分区或者文件

            使用mkswap写入特殊签名

            在/etc/fstab文件中添加适当的条目

            使用swapon -a 激活交换空间

         创建swap 

            fdisk t 82

        cat /proc/swaps查看交换分区

        可以用文件挂载目录。

        

        

    挂载交换分区

        启用: swapon

            swapon [OPTION]… [DEVICE]

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

                -p PRIORITY:指定优先级

                /etc/fstab:pri=优先级

                    -s 查看swap分区

        禁用: swapoff [OPTION]… [DEVICE]

    SWAP的优先级

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

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

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

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

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

(0)
DYWDYW
上一篇 2016-09-01
下一篇 2016-09-01

相关推荐

  • 马哥教育网络班21期第10周课程练习

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) POST加电自检—— 根据bios设定,顺序查找引导设备—— 读取引导设备MBR(共512字节,前446为bootloader,后64表示分区信息,后2表示bootloader有效性),加载bootloader程序—— 以grub为例,grub1.0阶段将零磁道一扇区加载到内存,gr…

    Linux干货 2016-10-24
  • 第五周 N21 总有刁民想害朕

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; egrep "^[[:space:]]+" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; egrep "^#[[:space:]]+…

    Linux干货 2016-07-16
  • 加密算法、https、dns(主从、视图)

    第九周 2018/1/29

    2018-01-29
  • linux 系统启动流程探讨

    linux系统启动流程: linux系统启动流程,按层次分的话,可以分为内核空间的启动与用户空间的启动。 下面先说说内核空间的启动流程。 一个linux要跑起来,在最简陋的情况下,必须有:kernel , lib ,application kernel功能:加载驱动程序,内存管理,进程管理,文件系统,网络管理,安全管理,glibc 库: 是一个函数的集合,每…

    Linux干货 2017-04-11
  • 运维学习笔记-看看别人家的Puppet代码

    这篇博客的目的是通过分析Forge上的Puppet模块来加深一些概念的理解,同时了解一些常用用法。 今天的例子是jfryman-nginx模块,它是原puppetlabs-nginx模块的升级版本,依赖3个Puppet公共模块:puppetlabs-apt,puppetlabs-stdlib和puppetlabs-concat。安装非常方便,puppet m…

    Linux干货 2016-06-23
  • 12.http学习与应用实现

    1、请描述一次完整的http请求处理过程; 1)建立或处理连接:客户端发送http请求报文,服务器端接收或拒绝请求; 2)接收请求:服务器端接收来自客户端对某些资源的请求; 3)处理请求:服务器端解析客户端请求报文,获取客户端请求的资源及请求方法等信息; 4)访问资源:服务器端获取客户端请求的资源; 5)构建响应报文; 6)发送响应报文; 7)日志记录; 2…

    2017-09-20