zoukankan      html  css  js  c++  java
  • Linux系统磁盘管理

    1.磁盘基本概述

    1.1Linux中磁盘命名方式

    Linux中磁盘的命名方式与磁盘的接口有关,规则如下:

    传统IDE接口硬盘:/dev/hd[a-z]
    SCISI接口硬盘:/dev/sd[a-z]
    虚拟化硬盘:/dev/vd[a-z]
    在设备名称的定义规则如下, 其他的分区可以以此类推
    系统的第一块SCSI接口的硬盘名称为/dev/sda
    系统的第二块SCSI接口的硬盘名称为/dev/sdb
    系统中分区由数字编号表示, 1-4留给主分区使用和扩展分区, 逻辑分区从5开始

    
    //第一块磁盘
    /dev/sda
    //第一块磁盘的第一个分区
    /dev/sda1
    //第二块磁盘的第一个分区
    /dev/sdb1
    

    1.2MBR与GPT

    在使用新磁盘之前,你必须对其进行分区。MBR(Master Boot Record)和GPT(GUID Partition Table)是在磁盘上存储分区信息的两种不同方式。这些分区信息包含了分区从哪里开始的信息,这样操作系统才知道哪个扇区是属于哪个分区的,以及哪个分区是可以启动的。在磁盘上创建分区时,你必须在MBR和GPT之间做出选择

    MBR是Master Boot Record的简称,也就是主引导记录,是位于磁盘最前边的一段引导(Loader)代码,主要用来引导操作系统的加载与启动

    特点:

    MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘
    只支持最多4个主分区。若想要更多分区,需要创建扩展分区,并在其中创建逻辑分区

    GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准

    特点:

    GPT对磁盘大小没有限制
    最多可以创建128个分区
    注意:MBR与GPT之间互相转换会导致数据丢失

    2.磁盘容量检查

    使用df命令查看磁盘容量,不加参数以k为单位:

    
    df -i   //查看inode使用情况
    df -h   //以G或者T或者M人性化方式显示
    df -T   //查看文件类型
    
    //使用df命令查看磁盘,下面分别介绍每列什么含义
    [root@liping ~]# df -Th
    文件系统 类型 容量 已用 可用 已用% 挂载点
    /dev/mapper/rhel-root xfs 17G 1.1G 16G 7% /
    devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs tmpfs 1.9G 8.7M 1.9G 1% /run
    tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sda1 xfs 1014M 143M 872M 15% /boot
    tmpfs tmpfs 378M 0 378M 0% /run/user/0
    

    使用lsblk查看分区情况:

    [root@liping ~]# lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 20G 0 disk 
    ├─sda1 8:1 0 1G 0 part /boot
    └─sda2 8:2 0 19G 0 part 
      ├─rhel-root 253:0 0 17G 0 lvm /
      └─rhel-swap 253:1 0 2G 0 lvm [SWAP]
    sdb 8:16 0 20G 0 disk 
    sdc 8:32 0 20G 0 disk 
    sdd 8:48 0 20G 0 disk 
    sr0 11:0 1 3.8G 0 rom  
    

    使用du命令查看目录或者文件的容量,不加参数以k为单位:

    du -sh opt  //人性化输出显示大小
    -s:列出总和
    -h:人性化显示容量信息
    [root@liping ~]# du -sh /etc
    31M	/etc
    

    3.磁盘分区

    分区之前, 需要先给虚拟机添加一块磁盘,以便于我们做后续的实验vmware虚拟机,请按如下进行操作:

    1.找到对应虚拟主机点击右键, 选择设置
    2.在硬件向导里面点击添加按钮, 在硬件类型中选中“硬盘”, 点击下一步
    3.磁盘类型选择默认, 然后创建新虚拟磁盘, 调整大小(不要勾选立即分配空间)
    4.最后点击下一步, 完成即可

    分区工具有fdiskgdisk,当硬盘小于2T的时候我们应该用fdisk来分区,而当硬盘大于2T的时候则应用gdisk来进行分区

    3.1 fdisk分区

    [root@localhost ~]# fdisk  /dev/sdb
    Command (m for help): m //输入m列出常用的命令
    Command action
       a   toggle a bootable flag   //切换分区启动标记
       b   edit bsd disklabel     //编辑sdb磁盘标签
       c   toggle the dos compatibility flag    //切换dos兼容模式
       d   delete a partition     //删除分区
       l   list known partition types   //显示分区类型
       m   print this menu      //显示帮助菜单
       n   add a new partition  //新建分区
       o   create a new empty DOS partition table   //创建新的空白分区表
       p   print the partition table       //显示分区表的信息
       q   quit without saving changes  //不保存退出
       s   create a new empty Sun disklabel //创建新的Sun磁盘标签
       t   change a partition's system id   //修改分区ID,可以通过l查看id
       u   change display/entry units       //修改容量单位,磁柱或扇区
       v   verify the partition table       //检验分区表
       w   write table to disk and exit     //保存退出
       x   extra functionality (experts only)   //拓展功能
    
    1P1E6L
    [root@liping ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    Device does not contain a recognized partition table
    使用磁盘标识符 0x8a096506 创建新的 DOS 磁盘标签。
    
    命令(输入 m 获取帮助):n
    Partition type:
       p primary (0 primary, 0 extended, 4 free)
       e extended
    Select (default p): p
    分区号 (1-4,默认 1):
    起始 扇区 (2048-41943039,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+100M
    分区 1 已设置为 Linux 类型,大小设为 100 MiB
    
    命令(输入 m 获取帮助):n
    Partition type:
       p primary (1 primary, 0 extended, 3 free)
       e extended
    Select (default p): e
    分区号 (2-4,默认 2):
    起始 扇区 (206848-41943039,默认为 206848):
    将使用默认值 206848
    Last 扇区, +扇区 or +size{K,M,G} (206848-41943039,默认为 41943039):
    将使用默认值 41943039
    分区 2 已设置为 Extended 类型,大小设为 19.9 GiB
    
    命令(输入 m 获取帮助):n
    Partition type:
       p primary (1 primary, 1 extended, 2 free)
       l logical (numbered from 5)
    Select (default p): l
    添加逻辑分区 5
    起始 扇区 (208896-41943039,默认为 208896):
    将使用默认值 208896
    Last 扇区, +扇区 or +size{K,M,G} (208896-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
    起始 扇区 (4405248-41943039,默认为 4405248):
    将使用默认值 4405248
    Last 扇区, +扇区 or +size{K,M,G} (4405248-41943039,默认为 41943039):+2G
    分区 6 已设置为 Linux 类型,大小设为 2 GiB
    
    命令(输入 m 获取帮助):n
    Partition type:
       p primary (1 primary, 1 extended, 2 free)
       l logical (numbered from 5)
    Select (default p): l
    添加逻辑分区 7
    起始 扇区 (8601600-41943039,默认为 8601600):
    将使用默认值 8601600
    Last 扇区, +扇区 or +size{K,M,G} (8601600-41943039,默认为 41943039):+2G
    分区 7 已设置为 Linux 类型,大小设为 2 GiB
    
    命令(输入 m 获取帮助):n
    Partition type:
       p primary (1 primary, 1 extended, 2 free)
       l logical (numbered from 5)
    Select (default p): l
    添加逻辑分区 8
    起始 扇区 (12797952-41943039,默认为 12797952):
    将使用默认值 12797952
    Last 扇区, +扇区 or +size{K,M,G} (12797952-41943039,默认为 41943039):+2G
    分区 8 已设置为 Linux 类型,大小设为 2 GiB
    
    命令(输入 m 获取帮助):n
    Partition type:
       p primary (1 primary, 1 extended, 2 free)
       l logical (numbered from 5)
    Select (default p): l
    添加逻辑分区 9
    起始 扇区 (16994304-41943039,默认为 16994304):
    将使用默认值 16994304
    Last 扇区, +扇区 or +size{K,M,G} (16994304-41943039,默认为 41943039):+2G
    分区 9 已设置为 Linux 类型,大小设为 2 GiB
    
    命令(输入 m 获取帮助):n
    Partition type:
       p primary (1 primary, 1 extended, 2 free)
       l logical (numbered from 5)
    Select (default p): l
    添加逻辑分区 10
    起始 扇区 (21190656-41943039,默认为 21190656):
    将使用默认值 21190656
    Last 扇区, +扇区 or +size{K,M,G} (21190656-41943039,默认为 41943039):+2g
    不支持的后缀:“g”。
    支持:10^N: KB (千字节), MB (兆字节), GB (吉字节)
                2^N: K (约千字节), M (约兆字节), G (约吉字节)
    Last 扇区, +扇区 or +size{K,M,G} (21190656-41943039,默认为 41943039):+2G
    分区 10 已设置为 Linux 类型,大小设为 2 GiB
    
    命令(输入 m 获取帮助):p
    
    磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x8a096506
    
       设备 Boot Start End Blocks Id System
    /dev/sdb1 2048 206847 102400 83 Linux
    /dev/sdb2 206848 41943039 20868096 5 Extended
    /dev/sdb5 208896 4403199 2097152 83 Linux
    /dev/sdb6 4405248 8599551 2097152 83 Linux
    /dev/sdb7 8601600 12795903 2097152 83 Linux
    /dev/sdb8 12797952 16992255 2097152 83 Linux
    /dev/sdb9 16994304 21188607 2097152 83 Linux
    /dev/sdb10 21190656 25384959 2097152 83 Linux
    
    命令(输入 m 获取帮助):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    [root@liping ~]# partprobe /dev/sdb
    [root@liping ~]# lsblk 
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 20G 0 disk 
    ├─sda1 8:1 0 1G 0 part /boot
    └─sda2 8:2 0 19G 0 part 
      ├─rhel-root 253:0 0 17G 0 lvm /
      └─rhel-swap 253:1 0 2G 0 lvm [SWAP]
    sdb 8:16 0 20G 0 disk 
    ├─sdb1 8:17 0 100M 0 part 
    ├─sdb2 8:18 0 1K 0 part 
    ├─sdb5 8:21 0 2G 0 part 
    ├─sdb6 8:22 0 2G 0 part 
    ├─sdb7 8:23 0 2G 0 part 
    ├─sdb8 8:24 0 2G 0 part 
    ├─sdb9 8:25 0 2G 0 part 
    └─sdb10 8:26 0 2G 0 part 
    sdc 8:32 0 20G 0 disk 
    sdd 8:48 0 20G 0 disk 
    

    3.2 gdisk分区

    [root@liping ~]# gdisk /dev/sdc
    GPT fdisk (gdisk) version 0.8.6
    
    Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: not present
    
    Creating new GPT entries.
    
    Command (? for help): n
    Partition number (1-128, default 1): 
    First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 
    Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +500M
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): 
    Changed type of partition to 'Linux filesystem'
    
    Command (? for help): n
    Partition number (2-128, default 2): 
    First sector (34-41943006, default = 1026048) or {+-}size{KMGTP}: 
    Last sector (1026048-41943006, default = 41943006) or {+-}size{KMGTP}: +500M
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): 
    Changed type of partition to 'Linux filesystem'
    
    Command (? for help): p
    Disk /dev/sdc: 41943040 sectors, 20.0 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): A98A3D7C-7723-46AA-8E0A-2AEEF884F903
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 41943006
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 39894973 sectors (19.0 GiB)
    
    Number Start (sector) End (sector) Size Code Name
       1 2048 1026047 500.0 MiB 8300 Linux filesystem
       2 1026048 2050047 500.0 MiB 8300 Linux filesystem
    
    Command (? for help): w
    
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    
    Do you want to proceed? (Y/N): Y
    OK; writing new GUID partition table (GPT) to /dev/sdc.
    The operation has completed successfully.
    [root@liping ~]# partprobe /dev/sdc
    [root@liping ~]# lsblk 
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 20G 0 disk 
    ├─sda1 8:1 0 1G 0 part /boot
    └─sda2 8:2 0 19G 0 part 
      ├─rhel-root 253:0 0 17G 0 lvm /
      └─rhel-swap 253:1 0 2G 0 lvm [SWAP]
    sdb 8:16 0 20G 0 disk 
    ├─sdb1 8:17 0 100M 0 part 
    ├─sdb2 8:18 0 1K 0 part 
    ├─sdb5 8:21 0 2G 0 part 
    ├─sdb6 8:22 0 2G 0 part 
    ├─sdb7 8:23 0 2G 0 part 
    ├─sdb8 8:24 0 2G 0 part 
    ├─sdb9 8:25 0 2G 0 part 
    └─sdb10 8:26 0 2G 0 part 
    sdc 8:32 0 20G 0 disk 
    ├─sdc1 8:33 0 500M 0 part 
    └─sdc2 8:34 0 500M 0 part 
    sdd 8:48 0 20G 0 disk 
    sr0 11:0 1 3.8G 0 rom /mnt
    

    4. 磁盘格式化

    使用mkfs命令格式化磁盘,创建文件系统

    //mkfs常用的选项有
    -b  //设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块。
    -t  //用来指定什么类型的文件系统,可以是ext3,ext4, xfs
    -i  //设定inode的大小
    -N  //设定inode数量,防止Inode数量不够导致磁盘不足
    -L  //预设该分区的标签label
    [root@liping ~]# mkfs.
    mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
    [root@liping ~]# blkid
    /dev/sda1: UUID="b9283078-2957-4615-82f6-897dac4cd6f5" TYPE="xfs" 
    /dev/sda2: UUID="SKZXLA-7mfq-Mi7R-6Vi9-DuJu-WVwW-7sNZOe" TYPE="LVM2_member" 
    /dev/sdc1: PARTLABEL="Linux filesystem" PARTUUID="c2517223-78ee-464b-83a6-36ab7c5f1e1f" 
    /dev/sdc2: PARTLABEL="Linux filesystem" PARTUUID="862524e8-6da5-4d88-a942-0917efb218f5" 
    /dev/sr0: UUID="2017-07-11-01-39-24-00" LABEL="RHEL-7.4 Server.x86_64" TYPE="iso9660" PTTYPE="dos" 
    /dev/mapper/rhel-root: UUID="b2622c5c-07de-413a-8861-1728ff65674a" TYPE="xfs" 
    /dev/mapper/rhel-swap: UUID="bfecd432-5935-4d8b-b2fb-795233927098" TYPE="swap" 
    [root@liping ~]# 
    [root@liping ~]# mkfs.ext4 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=1024 (log=0)
    分块大小=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    25688 inodes, 102400 blocks
    5120 blocks (5.00%) reserved for the super user
    第一个数据块=1
    Maximum filesystem blocks=33685504
    13 block groups
    8192 blocks per group, 8192 fragments per group
    1976 inodes per group
    Superblock backups stored on blocks: 
     8193, 24577, 40961, 57345, 73729
    
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (4096 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成 
    
    [root@liping ~]# blkid
    /dev/sda1: UUID="b9283078-2957-4615-82f6-897dac4cd6f5" TYPE="xfs" 
    /dev/sda2: UUID="SKZXLA-7mfq-Mi7R-6Vi9-DuJu-WVwW-7sNZOe" TYPE="LVM2_member" 
    /dev/sr0: UUID="2017-07-11-01-39-24-00" LABEL="RHEL-7.4 Server.x86_64" TYPE="iso9660" PTTYPE="dos" 
    /dev/mapper/rhel-root: UUID="b2622c5c-07de-413a-8861-1728ff65674a" TYPE="xfs" 
    /dev/mapper/rhel-swap: UUID="bfecd432-5935-4d8b-b2fb-795233927098" TYPE="swap" 
    /dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4" 
    /dev/sdc1: PARTLABEL="Linux filesystem" PARTUUID="c2517223-78ee-464b-83a6-36ab7c5f1e1f" 
    /dev/sdc2: PARTLABEL="Linux filesystem" PARTUUID="862524e8-6da5-4d88-a942-0917efb218f5" 
    

    5. 磁盘挂载

    挂载分区前需要创建挂载点, 挂载点以目录形式出现
    如果往挂载点目录写入数据, 实际上会写入到该分区
    挂载点建议是空目录, 不是也不影响挂载分区的使用,但是会隐藏原有的文件

    5.1 临时挂载磁盘

    命令:mount挂载磁盘,实质为文件系统指定访问入口
    mount -t       //指定文件系统挂载分区,如ext3,ext4, xfs
    mount -a       //重新读取/etc/fstab配置文件的所有分区
    mount -o       //指定挂载参数
    [root@liping ~]# mkdir /opt/sdb
    [root@liping ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    /dev/mapper/rhel-root 17G 1.1G 16G 7% /
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs 1.9G 8.7M 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sda1 1014M 143M 872M 15% /boot
    tmpfs 378M 0 378M 0% /run/user/0
    /dev/sr0 3.8G 3.8G 0 100% /mnt
    [root@liping ~]# mount /dev/sdb1 /opt/sdb
    [root@liping ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    /dev/mapper/rhel-root 17G 1.1G 16G 7% /
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs 1.9G 8.7M 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sda1 1014M 143M 872M 15% /boot
    tmpfs 378M 0 378M 0% /run/user/0
    /dev/sr0 3.8G 3.8G 0 100% /mnt
    /dev/sdb1 93M 1.6M 85M 2% /opt/sdb
    

    5.2 永久挂载磁盘

    //使用blkid命令获取各分区的UUID
    [root@liping ~]# blkid |grep "sdb1"
    /dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4" 
    

    //可以把下面这行写到/etc/fstab中,永久挂载, 开机自动挂载

    [root@liping ~]# blkid |grep "sdb1"
    /dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4" 
    [root@liping ~]# vi /etc/fstab 
    
    
    #
    # /etc/fstab
    # Created by anaconda on Fri Oct 11 00:36:04 2019
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/rhel-root / xfs defaults 0 0
    UUID=b9283078-2957-4615-82f6-897dac4cd6f5 /boot xfs defaults 0 0
    /dev/mapper/rhel-swap swap swap defaults 0 0
    UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" /opt/sdb ext4 defaults 0 0
    [root@liping ~]# mount -a
    [root@liping ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    /dev/mapper/rhel-root 17G 1.1G 16G 7% /
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs 1.9G 8.7M 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sda1 1014M 143M 872M 15% /boot
    tmpfs 378M 0 378M 0% /run/user/0
    /dev/sr0 3.8G 3.8G 0 100% /mnt
    /dev/sdb1 93M 1.6M 85M 2% /opt/sdb
    

    5.3 卸载挂载磁盘

    umount -lf  //强制卸载挂载
    [root@liping ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    /dev/mapper/rhel-root 17G 1.1G 16G 7% /
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs 1.9G 8.7M 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sdb1 93M 1.6M 85M 2% /opt/sdb
    /dev/sda1 1014M 143M 872M 15% /boot
    tmpfs 378M 0 378M 0% /run/user/0
    [root@liping ~]# umount -lf /dev/sdb1
    [root@liping ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    /dev/mapper/rhel-root 17G 1.1G 16G 7% /
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 0 1.9G 0% /dev/shm
    tmpfs 1.9G 8.7M 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sda1 1014M 143M 872M 15% /boot
    tmpfs 378M 0 378M 0% /run/user/0
    
  • 相关阅读:
    归并排序
    二分查找
    分治 递归 引用 求一个数组中的最大和最小元素
    插入排序
    Poj 2503
    SELinux 基础命令
    Zend Framework中的MVC架构
    phpfpm详解
    CentOS 6 minimal 安装
    php 5.3.3 中的phpfpm配置
  • 原文地址:https://www.cnblogs.com/liping0826/p/11655047.html
Copyright © 2011-2022 走看看