zoukankan      html  css  js  c++  java
  • Linux上天之路(十)之Linux磁盘管理

    主要内容

    • 磁盘介绍

    • 磁盘管理

    • 磁盘限额

    • 逻辑卷管理

    • 磁盘阵列

    1. 磁盘介绍

    硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:

    存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数

    磁盘结构

    MBR(主引导记录)位于硬盘第一个物理扇区(绝对扇区)柱面0,磁头0,扇区1处。由于DOS是由柱面0,磁头1,扇区1开始,故MBR不属于DOS扇区,DOS不能直接访问。MBR中包含硬盘的主引导程序和硬盘分区表。分区表有4个分区记录区。记录区就是记录有关分区信息的一张表。它从主引导记录偏移地址01BEH处连续存放,每个分区记录区占16个字节。

    磁盘的表示方法
    /dev/sda1
    sd 代表磁盘接口类型   USB SATA SAS等接口   IDE 用hd表示
    a b c 磁盘的顺序
    1 2 3 4磁盘中的分区号
    

    2. 磁盘管理

    磁盘分区、格式化、挂载

    计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区。主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。

    分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个独立的磁硬使用。分区表是一个硬盘分区的索引,分区的信息都会写进分区表。

    • fdisk命令
    fdisk磁盘分区命令
    fidsk  [命令选项] [参数]
    命令选项
    -l   list 列出磁盘分区
    -u   与-l一起使用,显示分区的相关信息
    fdisk /dev/sda    为/dev/sda分区
    m :显示菜单和帮助信息
    a :活动分区标记/引导分区
    d :删除分区
    l :显示分区类型
    n :新建分区
    p :显示分区信息
    q :退出不保存
    t :设置分区号
    v :进行分区检查
    w :保存修改
    x :扩展应用,高级功能
    命令缺点:单个分区不能超过2T 超过的话需要用parted命令
    在linux 下大磁盘的分区不能再采用fdisk了,MBR分区表只支持2T磁盘,所以大于2T的磁盘必须使用GPT分区表。
    
    •  parted磁盘分区命令
    分区步骤
    1)将磁盘指定为GPT格式
    2)分区
    

    分区信息显示:

    • dumpe2fs命令

    注意:dumpe2fs是查看ext2/ext3/ext4 文件系统信息的命令

    dumpe2fs /dev/sda1
    dumpe2fs 1.39 (29-May-2006)
    Filesystem volume name:   /boot
    Last mounted on:          
    Filesystem UUID:          e8697a35-7768-45c3-8063-15b0ba67d796
    Filesystem magic number:  0xEF53
    Filesystem revision #:    1 (dynamic)
    Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super
    Default mount options:    user_xattr acl
    Filesystem state:         clean
    Errors behavior:          Continue
    Filesystem OS type:       Linux
    Inode count:              26104
    Block count:              104388
    Reserved block count:     5219
    Free blocks:              89714
    Free inodes:              26070
    First block:              1
    Block size:               1024
    Fragment size:            1024
    Reserved GDT blocks:      256
    Blocks per group:         8192
    Fragments per group:      8192
    Inodes per group:         2008
    Inode blocks per group:   251
    Filesystem created:       Tue Oct 15 10:37:16 2013
    Last mount time:          Wed Oct 16 06:20:21 2013
    Last write time:          Wed Oct 16 06:20:21 2013
    Mount count:              3
    Maximum mount count:      -1
    Last checked:             Tue Oct 15 10:37:16 2013
    Check interval:           0 ()
    Reserved blocks uid:      0 (user root)
    Reserved blocks gid:      0 (group root)
    First inode:              11
    Inode size:               128
    Journal inode:            8
    Default directory hash:   tea
    Directory Hash Seed:      4e3f02e9-f3d1-4ad1-b87c-8f6258c50435
    Journal backup:           inode blocks
    Journal size:             4114k
    
    • blkid命令 查看磁盘分区 UUID信息
    # blkid  /dev/vda1
    /dev/vda1: UUID="eb448abb-3012-4d8d-bcde-94434d586a31" TYPE="ext4"
    

    mkfs命令 磁盘格式化

    格式化(format)是指对磁盘或磁盘中的分区(partition)进行初始化的一种操作,这种操作通常会导致现有的磁盘或分区中所有的文件被清除。格式化通常分为低级格式化和高级格式化。如果没有特别指明,对硬盘的格式化通常是指高级格式化,而对软盘的格式化则通常同时包括这两者。

    -L 标签名
    -V : 详细显示模式
    -t : 给定档案系统的型式,Linux 的预设值为 ext2
    -c : 在制做档案系统前,检查该partition 是否有坏轨
    -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
    -b : 给定 block 的大小
    关于block and inode  dentry
    实验发现这句话不对
    block越大,inode越少,适合存储大文件的文件系统;block越小,inode越多,适合存储文件多而小的文件系统。
    磁盘分区格式化
    mkfs.ext4 /dev/sda3
    • mount
    mount - mount a filesystem
    命令语法
    mount device dir
    命令选线
    -a   挂载所有文件系统,参考文件 /etc/fstab
    -l   显示当前挂载
    -t   文件系统类型
    -o   指定挂载权限
    
    • umount
    mount - mount a filesystem
    命令语法
    mount device dir
    命令选线
    -a   挂载所有文件系统,参考文件 /etc/fstab
    -l   显示当前挂载
    -t   文件系统类型
    -o   指定挂载权限
    
    • 自动挂载 /etc/fstab文件
    设备       挂载点     文件系统    权限     备份   检测
    第一列    设备源文件或者UUID
    第二列    设备挂载点
    第三列    文件系统类型
    第四列
    auto: 系统自动挂载,fstab默认就是这个选项
    defaults: rw, suid, dev, exec, auto, nouser, and async.
    noauto 开机不自动挂载
    nouser 只有超级用户可以挂载
    ro 按只读权限挂载
    rw 按可读可写权限挂载
    user 任何用户都可以挂载
    
    第五列是dump备份设置。
    当其值设置为1时,将允许dump备份程序备份;设置为0时,忽略备份操作;
    
    第六列是fsck磁盘检查设置。
    其值是一个顺序。当其值为0时,永远不检查;而 / 根目录分区永远都为1。其它分区从2开始,数字越小越先检查,如果两个分区的数字相同,则同时检查。
    

     3. 磁盘限额

    解决了共用存储环境中,用户使用量的问题。
    1)开启磁盘限额功能
    修改/etc/fstab 文件,在指定的分区权限字段加入对应的限额项(usrquota,grpquota) 
    usrquota   针对用户做限额
    grpquota   针对组做限额
    2)重挂磁盘生效
    mount -o remount /dev/sdb1
    3)扫描磁盘,统计用户现在的使用情况
    quotacheck -avug 
    4)编辑限额项
     edquota username | groupname
            -u   设置用户的quota,这是预设的参数。
            -g   设置群组的quota。
            -p<源用户名称>   将源用户的quota设置套用至其他用户或群组
            -t   设置宽限期限。
            -vu/g   查看用户/组使用情况
    5)开启限额
    quotaon -a
    

    4. LVM逻辑卷管理

    在分区的时候,每个分区应该分多大是令人头疼的,而且随着长时间的运行,分区不管你分多大,都会被数据给占满。当遇到某个分区不够用时管理员可能甚至要备份整个系统、清除硬盘、重新对硬盘分区,然后恢复数据到新分区。

    虽然现在有很多动态调整磁盘的工具可以使用,但是它并不能完全解决问题,因为某个分区可能会再次被耗尽;另外一个方面这需要重新引导系统才能实现,对于很多关键的服务器,停机是不可接受的,而且对于添加新硬盘,希望一个能跨越多个硬盘驱动器的文件系统时,分区调整程序就不能解决问题。

    因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。那么我们可以通过逻辑盘卷管理(LVM,Logical Volume Manager)的方式来非常完美的实现这一功能。

    解决思路:将所有可用存储汇集成池,当池中某个分区空间不够时就会从池中继续划分空间给分区,池中空间不够就可以通过加硬盘的方式来解决。

    使用逻辑:inux 分区——(转换)物理卷—(N个组成)卷组——(分为N个)逻辑卷

    名词解释:

    物理卷

    物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数

    卷组

    LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

    逻辑卷

    LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

    PE

    每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

    LE

    逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

    物理卷管理

    物理卷的创建—-pvcreate命令

    pvcreate    [命令选项]    [参数]
    将物理分区转换为物理卷
    命令选项
    -f:强制创建物理卷,不需要用户确认;
    -u:指定设备的UUID;
    -y:所有的问题都回答“yes”;
    -Z:是否利用前4个扇区。
    

    物理卷的移除—-pvremove命令

    pvremove    [命令选项]    [参数]
    将物理卷转换为普通linux分区
    命令选项
    -d  调试模式
    -f  强制删除
    -y  对提问回答“yes”

    物理卷查看命令

    pvs     显示PV简况
    pvdisplay   显示PV详细信息
    

    物理卷扫描命令—-pvscan

    卷组管理

    将多个物理卷组成一个卷组,形成一个存储池

    vgcreate命令

    vgcreate -s 32 vg1000 /dev/sdb1 /dev/sdc1
    

    vgcreate命令

    vgcreate -s 32 vg1000 /dev/sdb1 /dev/sdc1

    vgreduce命令

    vgreduce /dev/vg1000 /dev/sdb1

    vgextend命令

    vgextend /dev/vg1000 /dev/sdb1

    逻辑卷管理

    lvcreate命令

    lvcreate -n lv99 -L 3G /dev/vg1000

    lvextend命令

    #enlarge logical volume
    lvextend -L 3.5G /dev/vg1000/lv99
    resize2fs /dev/vg1000/lv99

    lvreduce命令

    #shrink logical volume
    e2fsck -f /dev/vg1000/lv99
    resize2fs /dev/vg1000/lv99 2G
    lvreduce -L 2G /dev/vg1000/lv99 (lvresize)

    逻辑卷移除

    #remove LVM
    umount /dev/vg1000/lv99
    lvremove /dev/vg1000/lv99
    vgremove /dev/vg1000/
    pvremove /dev/sdb1 /dev/sdc1
    

    注意:

    PE 和 LE的说明及应用策略

    PE(physicalextent)

    每一个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。

    *LE(logicalextent)

    逻辑卷也被划分为被称为LE(LogicalExtents)的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

    设置使用大小为4MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以4MB为增量单位来进行扩充 或缩减。由于内核原因,PE大小决定了逻辑卷的最大大小,4MB的PE决定了单个逻辑卷最大容量为256GB,若希望使用大于256G的逻辑卷则创建卷组 时指定更大的PE。PE大小范围为8KB到512MB,并且必须总是2的倍数

    5. 磁盘阵列

    mdadm命令

    mdadm tools
    mdadm -C  /dev/md1 -l 5 -n 3 /dev/sd{b,c,d}1
    cat /proc/mdstat
    mdadm —detail /dev/md1
    #create raid config file
    echo “DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 “ >> /etc/mdadm.conf
    mdadm -Ds  >> /etc/mdadm.conf
    #mount raid 5
    mkfs.exte /dev/md1
    mount /dev/md1 /data
    #stop raid 5
    umount /data
    mdadm -S /dev/md1
    
    故障模拟
    新添加一块新盘到系统 sde5
    mdadm /dev/md1 —add /dev/sde         (mdadm -a /dev/md1 /dev/sde1)
    mdadm -f /dev/md1 /dev/sdc1
    
    cat /proc/mdstat
    md1 : active raid5 sde[3] sdd1[2] sdc14 sdb1[0]
          4192768 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
          [=>……………….]  recovery =  5.7% (121300/2096384) finish=0.8min s
    [=>……………….]  recovery =  5.7%  sde recovery 开始接替sdc工作
     [===================>.]  recovery = 95.5%
    
    #remove /dev/sdc1
    mdadm -r /dev/md1 /dev/sdc1
    
    #boot raid
    mdadm -As
    
    思考 raid10  raid1+raid1—>raid0 (启动raid中先启动raid1 后启动 raid0   关闭raid 先关上层raid0,在关闭raid1)
    

      

  • 相关阅读:
    机器学习sklearn(66):算法实例(二十三)SVM(一)概述
    机器学习sklearn(65):算法实例(二十二)聚类(五)KMeans (四) 总结
    机器学习sklearn(64):算法实例(二十一)聚类(四)KMeans (三) 案例:聚类算法用于降维,KMeans的矢量量化应用
    机器学习sklearn(63):算法实例(二十)聚类(三)KMeans (二) sklearn.cluster.KMeans
    机器学习sklearn(62):算法实例(十九)聚类(二)KMeans
    机器学习sklearn(61):算法实例(十八)聚类(一)概述
    机器学习sklearn(60):算法实例(十七)分类(十)逻辑回归(五)附录
    机器学习sklearn(59):算法实例(十六)分类(九)逻辑回归(四)实例 用逻辑回归制作评分卡
    机器学习sklearn(58):算法实例(十五)分类(八)逻辑回归(三)linear_model.LogisticRegression(二) 重要参数
    机器学习sklearn(57):算法实例(十四)分类(七)逻辑回归(二)linear_model.LogisticRegression(一) 重要参数
  • 原文地址:https://www.cnblogs.com/zhangyafei/p/11580974.html
Copyright © 2011-2022 走看看