zoukankan      html  css  js  c++  java
  • 磁盘和文件系统管理

              硬盘管理

    硬盘分区由主分区、扩展分区和逻辑分区组成

    在一块硬盘上,如果是MBR分区方式,那么它的主分区最多只能有4个,或者3个主分区和1个扩展分区;在扩展分区上我们可以创建多个逻辑分区

    分区编号:主分区1-4 ,逻辑分区5+

    LINUX规定:逻辑分区必须建立在扩展分区之上,而不是建立在主分区上

    分区作用:

    主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上
    扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中
    如果你用的是GPT的分区方式,那么它没有限制主分区个数
    注意:从MBR转到GPT分区或者说从GPT转到MBR会导致数据全部丢失

    FDISK 命令

      ~]# fdisk /dev/sdb

    常用命令
          n :创建分区
          d :删除分区
          t :修改分区类型
          l :查看所有分区id种类
          w :保存退出
          q :不保存退出
          p :查看分区信息

          创建一个主分区

          欢迎使用 fdisk (util-linux 2.23.2)。

          更改将停留在内存中,直到您决定将更改写入磁盘。
          使用写入命令前请三思。


          命令(输入 m 获取帮助):


          命令(输入 m 获取帮助):n 输入n创建新分区
          Partition type:
          p primary (0 primary, 0 extended, 4 free) 创建主分区
          e extended 创建扩展分区
          Select (default p): p
          分区号 (1-4,默认 1):1 选择分区号 主,扩展 1-4 逻辑5+
          起始 扇区 (2048-41943039,默认为 2048):
          将使用默认值 2048
          Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G 使用+*G的方法划定分区大小
          分区 1 已设置为 Linux 类型,大小设为 10 GiB


          再创建一个扩展分区


          命令(输入 m 获取帮助):n
          Partition type:
          p primary (1 primary, 0 extended, 3 free)
          e extended
          Select (default p): e
          分区号 (2-4,默认 2):
          起始 扇区 (20973568-41943039,默认为 20973568):
          将使用默认值 20973568
          Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):
          将使用默认值 41943039
          分区 2 已设置为 Extended 类型,大小设为 10 GiB

          创建逻辑分区

          命令(输入 m 获取帮助):n
          Partition type:
          p primary (1 primary, 1 extended, 2 free)
          l logical (numbered from 5)
          Select (default p): l
          添加逻辑分区 5
          起始 扇区 (20975616-41943039,默认为 20975616):
          将使用默认值 20975616
          Last 扇区, +扇区 or +size{K,M,G} (20975616-41943039,默认为 41943039):+2G
          分区 5 已设置为 Linux 类型,大小设为 2 GiB

          命令(输入 m 获取帮助):N
          Partition type:
          p primary (1 primary, 1 extended, 2 free)
          l logical (numbered from 5)
          Select (default p): L
          添加逻辑分区 6
          起始 扇区 (25171968-41943039,默认为 25171968):
          将使用默认值 25171968
          Last 扇区, +扇区 or +size{K,M,G} (25171968-41943039,默认为 41943039):+3G
          分区 6 已设置为 Linux 类型,大小设为 3 GiB

       最后查看分区情况


          命令(输入 m 获取帮助):P

          磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
          Units = 扇区 of 1 * 512 = 512 bytes
          扇区大小(逻辑/物理):512 字节 / 512 字节
          I/O 大小(最小/最佳):512 字节 / 512 字节
          磁盘标签类型:dos
          磁盘标识符:0xaeb746d7

          设备 Boot Start End Blocks Id System
          /dev/sdb1 2048 20973567 10485760 83 Linux
          /dev/sdb2 20973568 41943039 10484736 5 Extended
          /dev/sdb5 20975616 25169919 2097152 83 Linux
          /dev/sdb6 25171968 31463423 3145728 83 Linux

       最后保持退出

          命令(输入 m 获取帮助):w
          The partition table has been altered!

          Calling ioctl() to re-read partition table.
          正在同步磁盘。

    注意:在已经挂载的某个磁盘上创建新分区,内核在创建完成后无法正常读取

    需要重读分区表 partx 磁盘

        [root@localhost ~]# partx /dev/sdb
        NR START END SECTORS SIZE NAME UUID
        1 2048 20973567 20971520 10G
        2 20973568 41943039 20969472 10G
        5 20975616 25169919 4194304 2G
        6 25171968 31463423 6291456 3G

        [root@localhost /]# cat /proc/partitions 此文件是内核识别的分区信息
        major minor #blocks name

        8 0 20971520 sda
        8 1 1048576 sda1
        8 2 19921920 sda2
        8 16 20971520 sdb
        8 17 10485760 sdb1
        8 18 1 sdb2
        8 21 2097152 sdb5
        8 22 3145728 sdb6
        11 0 4415488 sr0
        253 0 17821696 dm-0
        253 1 2097152 dm-1

        ~]# mkfs.xfs /dev/sdb1
        ~]# mount /dev/sdb1 /tmp/1
        逻辑分区5和6同理,查看挂载信息
        ~]# mount
        ...
        /dev/sdb1 on /tmp/1 type xfs (rw,relatime,attr2,inode64,noquota)
        /dev/sdb5 on /tmp/5 type xfs (rw,relatime,attr2,inode64,noquota)
        /dev/sdb6 on /tmp/6 type xfs (rw,relatime,attr2,inode64,noquota)

        硬盘挂载后再创建一个分区


        命令(输入 m 获取帮助):n
        Partition type:
        p primary (1 primary, 1 extended, 2 free)
        l logical (numbered from 5)
        Select (default p): l
        添加逻辑分区 7
        起始 扇区 (31465472-41943039,默认为 31465472):
        将使用默认值 31465472
        Last 扇区, +扇区 or +size{K,M,G} (31465472-41943039,默认为 41943039):
        将使用默认值 41943039
        分区 7 已设置为 Linux 类型,大小设为 5 GiB

        命令(输入 m 获取帮助):
        命令(输入 m 获取帮助):
        命令(输入 m 获取帮助):
        命令(输入 m 获取帮助):p

    磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xaeb746d7

    设备 Boot Start End Blocks Id System
    /dev/sdb1 2048 20973567 10485760 83 Linux
    /dev/sdb2 20973568 41943039 10484736 5 Extended
    /dev/sdb5 20975616 25169919 2097152 83 Linux
    /dev/sdb6 25171968 31463423 3145728 83 Linux
    /dev/sdb7 31465472 41943039 5238784 83 Linux

    命令(输入 m 获取帮助):w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    正在同步磁盘。


    因为磁盘已经挂载出于安全所以内核不去同步

    ~]# cat /proc/partitions
    major minor #blocks name

    8 0 20971520 sda
    8 1 1048576 sda1
    8 2 19921920 sda2
    8 16 20971520 sdb
    8 17 10485760 sdb1
    8 18 0 sdb2
    8 21 2097152 sdb5
    8 22 3145728 sdb6
    11 0 4415488 sr0
    253 0 17821696 dm-0
    253 1 2097152 dm-1

     

     使用命令重读

    ~]# partx -a /dev/sdb
    NR START END SECTORS SIZE NAME UUID
    1 2048 20973567 20971520 10G
    2 20973568 41943039 20969472 10G
    5 20975616 25169919 4194304 2G
    6 25171968 31463423 6291456 3G
    7 31465472 41943039 10477568 5G


    ~]# partx -a /dev/sdb
    partx: /dev/sdb: error adding partitions 1-2
    partx: /dev/sdb: error adding partitions 5-6

    ~]# partx -a /dev/sdb
    partx: /dev/sdb: error adding partitions 1-2
    partx: /dev/sdb: error adding partitions 5-7

    ~]# cat /proc/partitions
    major minor #blocks name

    8 0 20971520 sda
    8 1 1048576 sda1
    8 2 19921920 sda2
    8 16 20971520 sdb
    8 17 10485760 sdb1
    8 18 0 sdb2
    8 21 2097152 sdb5
    8 22 3145728 sdb6
    8 23 5238784 sdb7
    11 0 4415488 sr0
    253 0 17821696 dm-0
    253 1 2097152 dm-1

    重读成功


    文件系统管理

    格式化
      低级格式化(分区之前进行,划分磁道)
      高级格式化(分区之后对分区进行,创建文件系统)

    元数据 inode
      大小 权限 属主属组 时间戳 指向数据块

      链接文件 设备文件 不占用block只占用i节点
    数据区 block
      存放数据

    创建文件系统的工具 mkfs命令

    ~]# mkfs 有很多一样的命令后面的.xxx就是格式化后创建的文件系统
    mkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs

    ~]# mkfs.ext4 /dev/sdb5
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签= (文件系统卷标)
    OS type: Linux (操作系统类型)
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    131072 inodes, 524288 blocks (此分区一共多少inode和blocks)
    26214 blocks (5.00%) reserved for the super user (预留给管理员的空间)
    第一个数据块=0 (第一个数据块的编号)
    Maximum filesystem blocks=536870912 (最大文件系统块编号)
    16 block groups (一共多少块组)
    32768 blocks per group, 32768 fragments per group (每个组有多少blocks)
    8192 inodes per group (每个block有多少inode)
    Superblock backups stored on blocks: (超级快的编号)
    32768, 98304, 163840, 229376, 294912

    Allocating group tables: 完成
    正在写入inode表: 完成
    Creating journal (16384 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成

    常用选项

    -f 强制格式化 (如果磁盘是extx 无法直接格式化 需要强制格式化创建)

     

    ~]# mkfs.xfs /dev/sdb5
    mkfs.xfs: /dev/sdb5 appears to contain an existing filesystem (ext4).
    mkfs.xfs: Use the -f option to force overwrite.

    ~]# mkfs.xfs -f /dev/sdb5
    meta-data=/dev/sdb5 isize=512 agcount=4, agsize=131072 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=524288, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=2560, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
    [root@localhost ~]#
    [root@localhost ~]#
    [root@localhost ~]# blkid /dev/sdb5
    /dev/sdb5: UUID="52a76dc7-8fd9-410b-818a-ac2ca03dbfec" TYPE="xfs"


    查看对应的文件系统属性 blkid 分区

    ~]# blkid /dev/sdb5

    常用选项
    -L 指明卷标 查找此卷标的文件系统
    -U 根据UUID 定位文件系统

    /dev/sdb5: UUID="e7416257-5c2c-4405-95d2-909a7feac074" TYPE="ext4"
    分区名 - UUID - 文件系统类型


    ext系列卷标的查看与设置
        查看 e2label 分区
        设定 e2label 分区 卷标

    ~]# e2label /dev/sdb5

    ~]# e2label /dev/sdb5 yang
    ~]# e2label /dev/sdb5
    yang


    fsck 用于检测文件系统
    当磁盘意外中止或崩溃 可能造成文件损坏,此时应该修复文件系统 建议离线进行(umount)


    常用选项
    -a 无需交互自动修复所有错误
    -f 交互式修复

    swap文件系统
    linux上交换分区必须要使用独立的文件系统
    且文件系统的system id 必须为 82

    mkswap [选项] 磁盘
    -L 指明卷标
    -f 强制

    挂载 mount

    挂载点用作与作为另一个文件系统的访问入口
    1.事先存在的目录
    2.应该使用未被使用或不会被其他进程使用的目录
    3.挂载点下的原文件会被隐藏


    mount [-nrw] [-t vfstype] [-o options] device dir

    [-nrw]

    -r : 只读挂载
    -w : 读写挂载
    -n : 默认情况下挂载或卸载会同步跟新到/etc/mtab/下 -n禁止

    [-t vfstype]

    -t :指明要挂载设备上的文件系统(多数可省略)
    -U : 指明磁盘的UUID挂载

    [-o options]

    sync / async 同步 / 异步
    atime / noatime 文件或目录在访问是是否跟新访问时间戳
    diratime / nodiratime 目录在访问是是否跟新访问时间戳
    remount 重新挂载

    查看挂载信息
    ~]# mount
    ~]# cat /etc/mtab
    ~]# cat /proc/mounts

    ~]# mount 他会输出以下信息
    sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
    proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
    devtmpfs on /dev type devtmpfs (rw,nosuid,size=486032k,nr_inodes=121508,mode=755)
    securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
    文件系统 on 挂载点 type 类型 权限

    权限的种类

    ro 只读
    rw 读写
    dev / nodev 此设备上是否允许创建设备文件
    exec / noexec 是否允许运行此设备上的程序文件
    auto / noauto 是否决定自动挂载
    user / nouser 是否允许普通用户挂载此文件系统
    suid / nosuid 是否使suid生效

    defaults Use default options: rw, suid, dev, exec, auto, nouser, and async.


    一个使用技巧:


    可以将一个目录绑定至另一个目录,作为其临时访问入口  mount --bind
    ~]# ls /mnt/
    hgfs

    ~]# mount --bind /etc/ /mnt/

    ~]# ls /mnt/fstab
    /mnt/fstab

    ~]# umount /mnt/
    ~]# ls /mnt/
    hgfs


    挂载光盘:
    mount -r cdrom dir

    光盘设备文件: 有时候是/dev/cdrom或者/dev/dvd 其实他们都是链接文件都指向sr0
    sr0 是一个sata接口的光驱设备,真正的设备其实是这个


    umount 磁盘 | 目录


    注意:正在被访问和进程使用的挂载点无法被卸载;

     

    可以使用命令确定是谁在使用挂载点
      lsof 挂载点

      fuser -v 挂载点

    当你有权限时你可以使用
      fuser -km 挂载点 (把在使用的用户踢出去。。。)

    注意踢出去后那个用户的远程终端也会挂掉(一般别使用)

    挂载本地的回环设备
      mount -o loop 回环设备文件 挂载点


        交换分区的启用和禁用
        swapon swap分区 开启swap
        -a 启用所有在/etc/fstab文件中swap设备

        swapoff swap分区 禁用swap

        记得用free -m 查看一下


        除了/文件系统外 其他文件系统能够开机自动挂载必须在/etc/fstab/中指明


        ~]# cat /etc/fstab

        /dev/mapper/centos-root / xfs defaults 0 0

        这个文件下每行定义一个要挂载的文件系统及属性

    6个字段
    1. 要挂载的设备
    设备文件名
    LABEL
    UUID
    伪文件系统

    2,挂载点
    swap的挂载点为swap

        3,文件系统类型

        4,挂载选项
        defaults 默认使用的挂载选项
        如果使用多个挂载选项用,分开

        5,转储频率

        0 从不备份
        1 每天备份1次
        2 每隔一天备份

        6,自检次序
        0 不自检
        1 首先自检,通常是能是跟文件系统可用1
        2 次级
        ....

    两个命令

    df 查看挂载后各磁盘分区的使用状态

       常用选项
        -l 只显示本地文件系统
        -h 人性化显示
        -i 显示inode


    du 查看目录或文件的大小

        常用选项
          -s 显示目录下所有文件大小之和
          -h 人性化显示

    lvm命令

    首先磁盘的分区需要时linux lvm 符号为8e 才可以创建为 pv
    创建PV的命令时

    [root@xuexi ~]# pvcreate /dev/sdb{1,2,3,4}
    WARNING: xfs signature detected on /dev/sdb1 at offset 0. Wipe it? [y/n]: y
    Wiping xfs signature on /dev/sdb1.
    Physical volume "/dev/sdb1" successfully created.
    Physical volume "/dev/sdb2" successfully created.
    Physical volume "/dev/sdb3" successfully created.
    Physical volume "/dev/sdb4" successfully created.


    pv查看物理卷信息

    [root@xuexi ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/sdb1 lvm2 --- 2.00g 2.00g
    /dev/sdb2 lvm2 --- 2.00g 2.00g
    /dev/sdb3 lvm2 --- 2.00g 2.00g
    /dev/sdb4 lvm2 --- 2.00g 2.00g


    pv详细信息
    [root@xuexi ~]# pvdisplay /dev/sdb1
    "/dev/sdb1" is a new physical volume of "2.00 GiB"
    --- NEW Physical volume ---
    PV Name /dev/sdb1
    VG Name
    PV Size 2.00 GiB
    Allocatable NO
    PE Size 0
    Total PE 0
    Free PE 0
    Allocated PE 0  //PE使用情况
    PV UUID BKr1CG-91rH-0Dsq-vGol-UTO6-xP83-hV7FTZ


    创建vg卷组
    [root@xuexi ~]# vgcreate vg1 /dev/sdb1
    Volume group "vg1" successfully created
    [root@xuexi ~]# vgcreate -s 16M vg2 /dev/sdb2
    Volume group "vg2" successfully created


    查看vg卷组
    [root@xuexi ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 1 0 0 wz--n- <2.00g <2.00g
    vg2 1 0 0 wz--n- 1.98g 1.98g

    vg详细信息
    [root@xuexi ~]# vgdisplay vg1
    --- Volume group ---
    VG Name vg1
    System ID
    Format lvm2
    Metadata Areas 1
    Metadata Sequence No 1
    VG Access read/write
    VG Status resizable
    MAX LV 0
    Cur LV 0
    Open LV 0
    Max PV 0
    Cur PV 1
    Act PV 1
    VG Size <2.00 GiB
    PE Size 4.00 MiB  //可以看到vg1的PE大小为4M
    Total PE 511
    Alloc PE / Size 0 / 0
    Free PE / Size 511 / <2.00 GiB
    VG UUID N0HBAX-50lM-3tJ3-xIho-pLrx-7hAh-1T1T0g

    lv创建

    [root@xuexi ~]# lvcreate -n lv1 -L 64M vg1
    Logical volume "lv1" created.
    [root@xuexi ~]# lvcreate -n lv2 -l 16 vg1
    Logical volume "lv2" created.


    查看lv信息

    [root@xuexi ~]# lvs  //因为vg1的PE大小是4M所以lv1与lv2的大小相等
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    lv1 vg1 -wi-a----- 64.00m
    lv2 vg1 -wi-a----- 64.00m


    vg动态扩容

    [root@xuexi ~]# vgextend vg1 /dev/sdb3
    Volume group "vg1" successfully extended


    lv动态扩容
    [root@xuexi ~]# lvextend -L +100M /dev/vg1/lv1  // +100M是增加100M
    Size of logical volume vg1/lv1 changed from 64.00 MiB (16 extents) to 164.00 MiB (41 extents).
    Logical volume vg1/lv1 successfully resized.
    [root@xuexi ~]# lvextend -L 100M /dev/vg1/lv2  //直接使用100M是增加到100M
    Size of logical volume vg1/lv2 changed from 64.00 MiB (16 extents) to 100.00 MiB (25 extents).
    Logical volume vg1/lv2 successfully resized.
    [root@xuexi ~]# lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    lv1 vg1 -wi-ao---- 164.00m
    lv2 vg1 -wi-a----- 100.00m

    文件系统也需要扩容。

    ext4文件系统扩容使用 "resize2fs [逻辑卷名称]"

    xfs文件系统扩容使用 "xfs_growfs [逻辑卷名称]"

  • 相关阅读:
    Python 操作Excel之通过xlutils实现在保留原格式的情况下追加写入数据
    【转载】Python字符串操作之字符串分割与组合
    【转】Python判断字符串是否为字母或者数字
    Appium 在测试android混合应用时,关于webview页面切换的那些事儿
    使用pip install XX 命令时报错
    Appium笔记(二) 丶Appium的安装
    Android SDK的下载与安装
    KlayGE 4.4中渲染的改进(五):OpenGL 4.4和OpenGLES 3
    最先进的开源游戏引擎KlayGE 4.4发布
    KlayGE 4.4中渲染的改进(四):SSSSS
  • 原文地址:https://www.cnblogs.com/linuxys/p/13089073.html
Copyright © 2011-2022 走看看