zoukankan      html  css  js  c++  java
  • linux 磁盘管理

    linux 磁盘管理三部曲——(1)磁盘结构,认识分区

     
    分类: Linux基础篇

    最近小编整理了磁盘管理的相关知识,发现还是挺多的,所有就分了三个部分来给大家分享一下:

    1、磁盘结构,认识分区

    2、管理分区,文件系统格式化

    3、mount挂载,/etc/fstab配置文件

    这篇就先以最基础的磁盘知识开始——磁盘结构,认识分区。(讲基础的会有些无聊,但是基础还是很重要,所以还是希望大家详细了解)

    一、磁盘介绍

    1、设备类型

    (1)快设备/字符设备

    块设备:block ,存取单位“块”,磁盘

    字符设备:char ,存取单位“字符”,键盘

    (2)机械硬盘和固态硬盘

    ① 机械硬盘(HDD ):即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片

    之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤。

    ② 固态硬盘(SSD ):用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH 芯片、DRAM 芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,

    在产品外形和尺寸上也与普通硬盘一致。

    ③ 比较:

    相较于HDD ,SSD 在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD 传输速率性能是HDD 的2倍

    相较于SSD ,HDD 在价格、容量、使用寿命上占有绝对优势

    硬盘有价,数据无价,目前SSD 不能完全取代HHD

     

    2、设备文件

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

    ② 不同磁盘标识:a-z,aa,ab…

    /dev/sda, /dev/sdb, ... /dev/sdaa,/dev/sdab...

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

    /dev/sda1, /dev/sda5

    ③ 硬盘存储术语

      head :磁头

      track :磁道

      cylinder:  柱面

      secotr:  扇区,512bytes(最小单位)

     ④ HDD磁盘结构

    CHS

    512bytes    *   64 sector数/track    *    1024  track数/盘面       256   head磁头数(盘面数)   8G

      扇区                 扇区数/磁道                       磁道/盘面                       

    ( 512bytes    *   64 sector数/track    *   256 )一个柱面的大小:8M  * 1024磁道 =8G

    单位:B KB MB GB TB PB EB ZB YB BB NB DB

    3、如何使用分区空间?(后边会详细讲解每一步)

    ① 设备识别

    ② 设备分区

    ③ 文件系统类型格式化

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

    ⑤ mount 挂载新的文件系统

    4、为什么分区?

    ① 优化I/O 性能

    ② 实现磁盘空间配额限制

    ③ 提高修复速度

    ④ 隔离系统和程序

    ⑤ 安装多个OS

    ⑥ 采用不同文件系统

    5、两种寻址方法:CHS和LBA

     CHS:

      采用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 寻址方式

    二、分区介绍

    两种分区方式:MBR ,GPT

    1、MBR

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

    (1)如何分区:按柱面

      0 磁道0 扇区:512bytes

      446bytes: boot loader

      64bytes :分区表

        16bytes:  标识一个分区

      2bytes: 55AA,结束标志

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

     

    (3)分区表(DPT)结构

     

    (4)硬盘主引导记录MBR 主要由 3 个部分组成

    ① 主引导程序(偏移地址0000H--0088H ),它负责从活动分区中装载,并运行系统引导程序。

    出错信息数据区,偏移地址0089H--00E1H 为出错信息,00E2H--01BDH 全为0 字节。

    ② 分区表(DPT,Disk Partition Table )含4 个分区项,偏移地址01BEH--01FDH, 每个分区表项长16 个字节,共64 字节为

    分区项1 、分区项2 、分区项3 、分区项4

    ③ 结束标志字,偏移地址01FE--01FF 的2 个字节值为结束标志 55AA

     

    2、GPT分区

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

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

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

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

     

      第一篇基础就这些了,下一篇就是精彩的操作了,不要错过~~~

    linux 磁盘管理三部曲——(2)管理分区,文件系统类型格式化

     
    分类: Linux基础篇

    上篇小编给大家讲解了磁盘结构和分区的介绍,这篇小编就给大家演示如何管理分区和文件系统类型格式化。

    小编上篇已经提到如何使用磁盘,今天这两步,就是其中很重要的两步。(前几天写的有点急,有点乱,今天又整理了下)

    一、管理分区  

    列出块设备 lsblk

             fdisk -l /dev/sda

             cat /proc/partitions

    创建分区使用的命令:

    (1) fdisk  创建MBR 分区(7里也可以创建GPT 分区,但不推荐,contos 6 -l 时候gpt多个分区只显示1个)

      ①  fdisk  -l  /dev/sdX 查看硬盘分区信息

         -c(centos6 默认是dos) 打开或禁用dos模式  -u  (centos6 默认是柱面为单位) 切换显示的单位(扇区/柱面)

         -c (centos7 默认是非dos) -c=dos -c=nondos  -u  (centos7 默认是扇区为单位)  -u=cylinders(柱面)  -u=sectors(扇区)

      ② fdisk /dev/sdX 进行分区(交互式),建立分区时  

       m 帮助

       n 建立分区,建立分区时先选择 p主分区primary partition 或e 选择扩展分区extended,建议前3个建立逻辑分区,最后把所有空间给4扩展分区,有扩展分区可以创建多个逻辑分区。

       d 删除分区

        p 显示分区信息

       t 转换分区类型

       a 将指定分区设置/取消 活动分区   第一位为80活动

       L 查看分区类型

       o 重建分区表

       v 验证分区表,显示剩余没有被分区划分的扇区数量

       g 创建GPT格式的分区(centos7)不推荐使用,最好用gdisk

       q 退出不保存

       w 退出并保存,不保存,所有的修改都不生效

    :因为fdisk 是交互式创建分区,所以写入脚本时需要:

      echo -e "n p 1 +1G w " |fdisk /dev/sdb 来实现非交互创建分区

    (2) gdisk  创建GPT 分区(用法和fdisk相似)

        n创建分区时,直接从2-128进行分区,不分主分区,扩展分区

    (3) parted  高级分区操作(创建、复制、调整大小等等)实时性,小心使用,不用再w已经保存,可以直接非交互式创建分区,aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop 都能创建。(不常用)

      parted /dev/sdX

        help 寻求帮助,有很清晰的帮助的信息。

        mklabel help 有mklabel使用帮助信息

        mklabel msdos 选择msdos 方式分区

        mkpart 开始创建分区

        rm 删除分区

        p 查看分区信息

        q 退出

    (4)重置内存中分区信息(当系统正在使用的分区修改时,内存不会改变)

       partprobe   新增分区,删除分区都可以,centos 5和7可以使用,centos 6中有bug

       新增分区时,同步 partx -a /dev/sdX 或 kpartx -a /dev/sdX -f

       删除分区时,同步 partx -d /dev/sdX   所有系统都能用,centos 6也可以

     

    二、文件系统

    (1)查看支持的文件系统:/lib/modules/`uname –r`/kernel/fs

     

    (2)文件系统类型

    Linux 文件系统:ext2(Extended file system), ext3,ext4, xfs (SGI ), btrfs (Oracle ), reiserfs, jfs(AIX), swap

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

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

      非日志文件系统: ext2, vfat

    光盘:iso9660

    Windows :FAT32, exFAT,NTFS

    Unix: FFS (fast ), UFS (unix ), JFS2

    网络文件系统:NFS, CIFS

    集群文件系统:GFS2, OCFS2 (oracle) 例:11.11 淘宝

    分布式文件系统: fastdfs,ceph, moosefs, mogilefs,glusterfs, Lustre

    RAW:未经处理或者未经格式化产生的文件系统

    (3)创建文件系统

    (1)mkfs 命令

      mkfs.   能创建很多类文件系统 例:mkfs.xfs /dev/sda1 给/dev/sda1创建xfs类型的文件系统

          ext#   xfs   btrfs   vfa

      mkfs -t 是个c写的脚本,就是调用mkfs. 命令 例:mkfs -t ext4 /dev/sda1 给/dev/sda1创建ext4类型的文件系统

               -f  强制重建,如果这个设备已经分过其他格式的文件系统了

    (2)mke2fs 创建文件系统,ext系列文件系统专用管理工具,例:mke2fs -t ext4 -L test /dev/sdc1 给/dev/sdc1创建ext4卷标为test的文件系统

      -t {ext2|ext3|ext4} 格式

      -b {1024|4096} block快大小

      -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 禁用指定特性

    (3)tune2fs修改文件系统信息,重新设定ext 系列文件系统可调整参数的值  例:tune2fs -o acl /dev/sdb2 开启/dev/sdb2的acl功能

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

      -L 'LABEL' :修改卷标(ext)

        mkfs -L 'LABEL'  或  mke2fs -L 'LABEL' 创建时设置卷标

        e2label /dev/sd# 查看卷标

        e2label /dev/sd# 'LABEL' 重命名卷标

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

      -j:  将ext2 升级为ext3

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

      -o:  调整文件系统的默认挂载选项,–o ^acl (centos7里默认开启acl   6 默认不开启)

      -U UUID:  修改UUID号

     

    (4)查看信息

      blkid:块设备属性信息查看(centos 7里默认显示sr0    6 里需blkid /dev/sr0显示光盘)

        -U UUID:  根据指定的UUID 来查找对应的设备

        -L LABEL :根据指定的LABEL

       findfs:查找分区(ext)

        findfs [options] LABEL=<label>

        findfs [options] UUID=<uuid>

       dumpe2fs /dev/sda# 查看文件系统信息:superblock信息及block group信息

        -h :查看超级块,不显示block group而只显示superblock 与tune2fs -l一致

    小知识:超级块就是文件系统的内置,指定文件系统类型

        block group 0里有super block ,后奇数组都有备份,能用于修复

    (5)文件系统检测和修复

      常发生于死机或者非正常关机之后,挂载为文件系统有几率标记为“no clean” ”

     注意:一定不要在挂载状态下修复(centos6,7都禁止挂载下修复,5里可以修复)

    fsck(都可用) / e2fsck(ext)先卸载再修复(6里默认交互式修复,7非交互)

      -y 自动回答yes

      -t filetype  指定文件系统类型

      -f 强制修复(当破坏太小时,强制扫描一遍修复)

     

     这篇的东西有些多,但其实经常用的命令也就:fdisk/gdisk、mkfs./mke2fs/tune2fs、blkid 这几个命令。下一篇就是磁盘管理最重要的一步了,mount挂载,敬请期待!!

    linux 磁盘管理三部曲——(3)mount挂载,/etc/fstab配置文件

     
    分类: Linux基础篇

    当我们分完区,并做好文件系统格式化,就到了最后的挂载mount了,挂载完毕就可以使用磁盘设备了。

    一、什么是挂载,卸载

    任何块设备都不能直接访问,需挂载在目录上访问

    挂载: 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为(挂载的设备必须有文件系统)

    卸载:为解除此关联关系的过程

    mount [-选项] DEVICE(设备) MOUNT_POINT(挂载点)

    (1)device :指明要挂载的设备

      ① 设备文件:例如/dev/sda5

      ② 卷标:-L 'LABEL', 如 例如 -L mage

      ③ UUID, -U 'UUID'

    (2)挂载点下原有文件在挂载完成后会被临时隐藏

      若事先存在:建议使用空目录,进程正在使用中的设备无法被卸载

    (3)/etc/mtab: 文件显示当前已挂载的所有设备(在centos 7中,是/proc/mounts的软连接,查看结果一样,centos 6中,ASCII text,查询结果和/proc/mounts不一样)

    二、mount:挂载常用命令选项(下面有具体的用法示例)

    1、查看挂载情况

    ① findmnt  查看所有设备挂载情况(树状结构显示)

      findmnt 设备   查看单个设备的挂载情况

    ② mount :查看所有设备挂载情况

    ③ cat /proc/mounts:查看内核追踪到的已挂载的所有设备

    2、mount 语法

    mount -选项 设备 挂载点

      -t:vsftype :指定要挂载的设备上的文件系统类型(不常用,不加-t默认自带自己的文件系统类型),有时,系统报错提示,没指定文件系统类型,-t指定后,仍然有错。(注释1)

      -r:readonly ,只读挂载,不能进行其他操作,和权限无关,介质只能读,多用于冷备份。在mount 查询时时显示 ro

      -w:read and write,  读写挂载(defaults默认)

      -n:隐藏挂载信息不显示 ,但在/proc/mounts可以查到,卸载只能 umount /app/sdb2(挂载点)

      -a:自动挂载/etc/fstab文件没有挂载的设备( 定义在了/etc/fstab文件中,且挂载选项中有auto 功能,默认中包括) ,不看已挂载过的设备,如果在/etc/fstab里挂载过的设备修改了设置,不刷新;

    如果想刷新修改过已挂载的设备,mount -o remount /dev/sdX(挂载点)

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

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

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

    例: mount -B /var/ftp/pub /app/apache     /app/apache就是显示 /var/ftp/pub目录的东西

       -o options:( 挂载文件系统的选项) ,多个选项使用逗号分隔

        async(defaults),sync  异步,同步,内存更改时,同时写磁盘(可以用于重要数据)

        atime(defaults),noatime  是否在读访问时更新atime

        diratime(defaults),nodiratime  目录的访问时间戳

        auto(defaults)/noauto 写在/etc/fstab当中的分区,是否在mount -a时被挂载

        exec(defatuls)/noexec 在该分区所挂载的目录中的脚本是否可以执行。

        dev(defaults)/nodev:是否支持在此文件系统上使用设备文件

        suid(defaults)/nosuid:是否支持suid和sgid权限

        ro:只读 rw:读写(defaults)

        nouser(defaults)/user:是否允许普通用户挂载此设备,默认管理员才能挂载

        acl(centos 7)/^acl(centos 6以下):启用/禁用此文件系统上的acl功能

        defaults 默认,见以上中的(defaults)

      -o remount,选项:重新挂载,修改功能选项(和/etc/fstab选项冲突,则覆盖,不冲突就增加)  例:mount -o remount,ro /dev/sdb1

    例:mount -r /dev/sdb1 /app/sdb1 将/dev/sdb1只读挂载到/app/sdb上

    三、umount 卸载

    卸载时,若有正在进行的进程,不能卸载

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

      lsof 设备或挂载点都可以

      fuser -v 挂载点

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

      fuser -km 设备或挂载点都可以

     终止完所有进程就可以卸载: umount DEVICE

    四、/etc/fstab 文件挂载配置文件

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

    mount -a 自动挂载/etc/fstab文件没有挂载的设备,不管已挂载过的设备

      如果想刷新修改过已挂载的设备,mount -o remount /dev/sdX(或挂载点)

    swpon -a 自动激活/etc/fstab文件没有激活的交换(扩展)空间 ,不管已激活的扩展空间

      如果想刷新修改过已激活的扩展设备,mount -o remount /dev/sdX(或挂载点)

    系统重启开机时读取此文件,可以开机自动开启文件中的设置

    (2)格式(6列):

    ① 要挂载的设备或伪文件系统:设备名称,LABEL,UUID,伪文件系统名称

    ② 挂载点(扩展为swap)

    ③ 文件系统类型(auto 寻找默认的),

      普通设备挂载:ext#/xfs 等文件系统类型

      交换分区 swap:swap

      网络挂载地址 linux之间:nfs,windos挂载:cifs

      光盘 iso9660,文件 cifs

    ④ 挂载选项:defaults 有需要的功能可以添加,不能为空

    ⑤ 转储频率: 0:不做备份 1:每天转储 2:每隔一天转储

    ⑥ 开机时自检(非0),自检次序:(如果开机系统自检不过,就无法正常开机)

    0:不自检 1:最先自检,一般为/ 2...:数越小优先级最大

    问题:如果设备不小心被破坏,开机自检不过,无法正常启用,该怎么办?

    原理很简单,只需要修复一下文件系统就好了,(如果不能修复,可以去/etc/fstab中把自检改为0)具体操作如下:

    ① 手动破坏设备 dd if=/dev/zero of=/dev/sdc1 bs=1 count=2048

    ② 开机过程,遇到错误提示

    ③ 进入shell 操作,进行修复

    五、实验:迁移/home 家目录

    到此我们已经对磁盘管理了解的差不多了,我们可以做个小实验,迁移 /home ,从 / 下移到另一个磁盘,如/dev/sda6

    ① init 1 进入单用户模式,防止自己在迁移时,其他用户进行操作,导致迁移后缺失东西。

    ② 分区 /dev/sda6   fdisk

    ③ 文件系统格式化 mkfs.ext4 /dev/sda6

    ④ 挂载在临时目录上/mnt ,把/home 下东西cp -a 到/mnt 目录

    ⑤ 把现有/home 东西移走,卸载 /mnt ,把/dev/sda6 挂到 /home 下,并写入/etc/fstab,开机自动挂载。

      UUID=328a3f17-3e4e-426d-9538-c44be3e6465b   /home    ext4    defaults        0  2

    ⑥ reboot或init 5 完成/home 搬迁

     到这里关于磁盘管理的过程就全部讲完了。

  • 相关阅读:
    《将博客搬至CSDN》
    java-FileUtils(复制文件夹、复制文件、字符串直接写入文件中)(新手)
    java-FileUtils(读取、判断、获取)-(新手)
    一.MySQL入门基础
    二.压缩指令的应用
    一.档案与目录管理
    四.mysql演示银行转账
    三.实例演示insert/update/delect更新数据库
    二.数据库游标对象cursor与实例
    一.数据库连接对象connection
  • 原文地址:https://www.cnblogs.com/dengbingbing/p/10390382.html
Copyright © 2011-2022 走看看