zoukankan      html  css  js  c++  java
  • 16、磁盘、分区、格式化、挂载

    1.磁盘的基本概念

    了解下如何写入数据

    2.磁盘的基本结构

    机械磁盘
     磁道: 由磁头磁化磁道上的金属颗粒,形成金属块,就会产生电流,正负极,就能表示 0 1 0 1
     扇区: 512字节sector

    3.磁盘的预备知识

    磁盘接口
      IDE   out 75MB
      SCSCI out
      SATA III  6Gbps/s 750MB/s 个人使用
      SAS   6Gbps/s 8Gbps/s 1000MB/s    企业使用
      msata
    sata顶用sas   经济 实惠

    ssd 固态盘 个人|企业 强烈 -->贵

    1.M.2接口是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来的mSATA接口。
      尺寸小,传输性能高
    
    2.ssd的m.2接口支持两种通道协议
      SATA  便宜,通常主板都支持, 慢
      PCIE  贵,是否支持需要看主板, 块
    3.优势: 块 纯电子 小巧 没噪音 抗摔(抗震)

    磁盘基本术语

    容量  kb MB GB TB PB EB ......
    转速  5400(out) SATA 7200 SAS 15000
    IOPS    input/output    I/O

    磁盘在linux下的命名规则

    无论是SATA还是SAS都是存放在/dev/sd[a-z]   /dev/sdaa-/dev/sdzz
    IDE /dev/hda
    
    设备名称    分区信息    设备类型
    /dev/sda    /dev/sda1   第一块物理磁盘第一分区
    /dev/sdb    /dev/sdb2   第二块物理磁盘第二个分区
    /dev/vdd    /dev/vdd4   第四块虚拟磁盘的第四个分区
    
    分区仅能分配4个主要分区
     主引导程序即主引导记录MBR  
      0柱面0磁道1扇区的前446字节  
      分区最多占用64字节(4个主分区) 
      结束标注2个字节
       分区方式: 比如需要分配6个分区  
        4个主
         3主+1扩展(逻辑分区)
         2主+1扩展(2逻辑分区)

    了解下如何查看磁盘的大小文件内容的大小

    [root@www ~]# du -sh /etc/
    38M /etc/
    
    [root@www ~]# df -h    #查看磁盘使用情况
    [root@www ~]# lsblk    #查看设备详情,以及分区的情况

    4.磁盘基本分区Fdisk

    1.先准备磁盘
    由于没有真实的服务器,只能添加虚拟的磁盘

    2.分区fdisk --->分低于2TB的磁盘

     [root@www ~]# ll /dev/sd*
     brw-rw---- 1 root disk 8, 0 5月 5 19:21 /dev/sda
     brw-rw---- 1 root disk 8, 1 5月 5 19:21 /dev/sda1
     brw-rw---- 1 root disk 8, 2 5月 5 19:21 /dev/sda2
     brw-rw---- 1 root disk 8, 16 5月 5 19:21 /dev/sdb
     brw-rw---- 1 root disk 8, 32 5月 5 19:21 /dev/sdc
     [root@www ~]# lsblk 
     NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
     sda 8:0 0 40G 0 disk 
     ├─sda1 8:1 0 1G 0 part /boot
     └─sda2 8:2 0 39G 0 part 
       ├─centos-root 253:0 0 37G 0 lvm /
       └─centos-swap 253:1 0 2G 0 lvm [SWAP]
     sdb 8:16 0 20G 0 disk 
     sdc 8:32 0 4T 0 disk 
    
     [root@xuliangwei ~]# 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 partitions 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) #拓展功能
    
     分配1个分区
     [root@www ~]# fdisk /dev/sdb 
     Command (m for help): n    
     Partition type:
        p primary (0 primary, 0 extended, 4 free)
        e extended
     Select (default p): p  #选择分配主分区
     Partition number (1-4, default 1):         
     First sector (2048-41943039, default 2048): #开始的扇区 回车即可
     Using default value 2048
     Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G #当前分区的大小
     Partition 1 of type Linux and of size 1 GiB is set
    
     Command (m for help): p    #查看当前磁盘的分区情况
    
     Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
     Units = sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
     Disk label type: dos
     Disk identifier: 0x44d0ef75
    
        Device Boot Start End Blocks Id System
     /dev/sdb1 2048 2099199 1048576 83 Linux
    
    
     分配2个分区
     Command (m for help): n  
     Partition type:
        p primary (1 primary, 0 extended, 3 free)
        e extended
     Select (default p): 
     Using default response p
     Partition number (2-4, default 2): 
     First sector (2099200-41943039, default 2099200): 
     Using default value 2099200
     Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +2G
     Partition 2 of type Linux and of size 2 GiB is set
    
     Command (m for help): p
    
     Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
     Units = sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
     Disk label type: dos
     Disk identifier: 0x44d0ef75
    
        Device Boot Start End Blocks Id System
     /dev/sdb1 2048 2099199 1048576 83 Linux
     /dev/sdb2 2099200 6293503 2097152 83 Linux
    
    
    
     分配6个分区 (超出了4个主分区,最佳 3p+1e+3l 2p+1e+4l)
     Device Boot Start End Blocks Id System
     /dev/sdb1 2048 2099199 1048576 83 Linux
     /dev/sdb2 2099200 6293503 2097152 83 Linux
     /dev/sdb3 6293504 10487807 2097152 83 Linux
     /dev/sdb4 10487808 41943039 15727616 5 Extended
     /dev/sdb5 10489856 20975615 5242880 83 Linux
     /dev/sdb6 20977664 31463423 5242880 83 Linux
     /dev/sdb7 31465472 41943039 5238784 83 Linux
    
    
     检查分区情况
     sdb 8:16 0 20G 0 disk 
      |-sdb1 8:17 0 1G 0 part 
      |-sdb2 8:18 0 2G 0 part 
      |-sdb3 8:19 0 2G 0 part 
      |-sdb4 8:20 0 1K 0 part 
      |-sdb5 8:21 0 5G 0 part 
      |-sdb6 8:22 0 5G 0 part 
      `-sdb7 8:23 0 5G 0 part 

    3.格式化->创建文件系统(装修)

    [root@www ~]# mkfs.xfs /dev/sdb1

    4.挂载

    [root@www /]# mount /dev/sdb1 /soft/    #将/soft作为/dev/sdb1分区的一个入口目录
    [root@www /]# touch /soft/1111  #添加111文件,实际上是在/dev/sdb1分区上添加的数据
    [root@www /]# ls /soft/
    1111
    [root@www /]# umount /soft/ #卸载/soft挂载信息
    [root@www /]# ls /soft/ #soft又回到了原来的目录属性
    nginx nginx-1.16.0
    
    ---------注意: 原来写入到/dev/sdb1分区的数据不会被删除,当重新挂载一个新的目录,文件还会回来.
    [root@www /]# mkdir /data
    [root@www /]# mount /dev/sdb1 /data/
    [root@www /]# ls /data/
    1111

    5.实现永久挂载,写入配置文件/etc/fstab 以实现开机时,自动挂载

    [root@www ~]# cat /etc/fstab
     #设备名称  挂载的位置   文件系统类型  挂载的参数   是否备份    是否检查
     /dev/sdb1  /data   xfs defaults 0  0
    
    #请先卸载挂载的信息,然后再mount -a
    [root@www ~]# mount -a

    5.磁盘的基本分区Gdisk

    GPT 支持分配大于2个TB以上的磁盘,    同时支持N多个主分区
    
    [root@www ~]# yum install gdisk -y
    [root@www ~]# gdisk /dev/sdc
     ?
     n
       --->设定大小
     p
     wq
    [root@www ~]# mkfs.xfs /dev/sdc1
    [root@www ~]# mkdir /datac
    [root@www ~]# mount /dev/sdc1 /datac/
    准备一个大于2TB的磁盘, 分5个分区 每个分区500GB --->GDISK

    6.磁盘挂载方式Mount

    临时操作

    1.通过mount进行挂载,但重启将会失效。我们称为临时生效。

    # 选项:-t指定文件系统挂载分区 -a 挂载/etc/fstab中的配置文件 -o 指定挂载参数
    # 挂载/dev/sdb1至db1目录
    [root@xuliangwei ~]# mkdir /db1
    [root@xuliangwei ~]# mount.xfs /dev/sdb1 /db1/
    [root@xuliangwei ~]# mount -t xfs /dev/sdb1 /db1/

    2.挂载的磁盘,如果不想使用可以使用umount进行卸载。

    #选项: -l 强制卸载
    
    #1.卸载目录方式
    [root@xuliangwei ~]# umount /db1
    
    #2.卸载设备方式
    [root@xuliangwei ~]# umount /dev/sdb1
    
    #3.umount不能卸载的情况
    [root@xuliangwei db1]# umount /db1  
    umount: /db1: device is busy.
      (In some cases useful info about processes that use
       the device is found by lsof(8) or fuser(1)
    
    #PS: 如上情况解决办法有两种, 
    1.切换至其他目录 
    2.使用'-l'选项强制卸载    
    [root@student db1]# umount -l /db1

    永久操作 /etc/fstab

    格式
    
    /etc/fstab配置文件编写格式
     要挂载的设备 挂载点(入口) 文件系统类型  挂载参数    是否备份    是否检查
     /dev/sdb1  /db1    xfs defaults    0   0
    
    第四列:挂载参数。挂载参数有很多,在这块我们了解即可,不必深究。
    参数  含义
    async/sync  是否为同步方式运行。默认async
    user/nouser 是否允许普通用户使用mount命令挂载。默认nouser
    exec/noexe  是否允许可执行文件执行。默认exec
    suid/nosuid 是否允许存在suid属性的文件。默认suid
    auto/noauto 执行mount -a 命令时,此文件系统是否被主动挂载。默认auto
    rw/ro   是否以只读或者读写模式进行挂载。默认rw
    defaults    具有rw,suid,dev,exec,auto,nouser,async等默认参数的设定
    
    
    演示临时挂在时参数的使用,只读文件系统
    [root@www ~]# mount -o ro /dev/sdc1 /datac/
    
    
    
    第五列:是否进行备份。通常这个参数的值为0或者1
    选项  含义
    0   代表不做备份
    1   代表要每天进行备份操作
    2   代表不定日期的进行备份操作
    
    
    第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整
    选项  含义
    0   不要检验磁盘是否有坏道
    1   检验
    2   校验 (当1级别检验完成之后进行2级别检验) 

    建议挂在时使用UUID,UUID

    1.怎么磁盘分区的UUID 
    [root@www ~]# blkid|grep sdc1
    /dev/sdc1: UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b"
    
    2.手动测试是否能正常的挂载
    [root@www ~]# mount UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac
    
    3.将信息写入到/etc/fstab文件中,保证下次启动系统自动挂载
    UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac xfs defaults 0 0 
    
    4.卸载/datac 挂载信息, 然后使用 mount -a 检查/etc/fstab文件是否ok
    [root@www ~]# mount -a
    
    PS: 如果不检查写错了直接重启, 会导致系统无法启动. 无法启动-->提示-->输入密码-->修改配置-->保存-->重启

    7.虚拟磁盘介绍SWAP

    物理内存不够用会使用SWAP
    如果没有配置SWAP,系统则会随机KILL掉占用内存较大的进程.
    如果配有SWAP,当程序内存不足时,会大量使用SWAP,此时系统又会特别的缓慢

    1.创建分区,并格式化为swap分区。

    [root@xuliangwei ~]# fdisk /dev/sdb #分1个G大小
    [root@xuliangwei ~]# mkswap /dev/sdb1 #格式化为swap

    2.查看当前swap分区大小,然后进行扩展和缩小

    [root@xuliangwei ~]# free -m
                  total used free shared buff/cache available
    Mem: 1980 1475 80 10 424 242
    Swap: 2047 4 2043
    
    #1.扩展swap分区大小
    [root@xuliangwei ~]# swapon /dev/sdb2
    [root@xuliangwei ~]# free -m
                  total used free shared buff/cache available
    Mem: 1980 1475 80 10 424 242
    Swap: 3047 4 2043
    
    #2.缩小swap分区大小
    [root@xuliangwei ~]# swapoff /dev/sdb1
    [root@xuliangwei ~]# free -m
                  total used free shared buff/cache available
    Mem: 1980 1475 80 10 424 242
    Swap: 2047 4 2043
    [root@xuliangwei ~]# swapoff -a #代表关闭所有的swap

    3.检查当前swap分区有哪些设备

    [root@xuliangwei ~]# swapon -s
    文件名 类型 大小 已用 权限
    /dev/dm-1 partition 2097148 4616 -2
    /dev/sdb1 partition 1048572 0 -2

    4.如果磁盘没有过多的分区可用,也可以通过文件增加SWAP空间,本质上还是磁盘

    [root@xuliangwei ~]# dd if=/dev/zero of=/opt/swap_file bs=1M count=500
    [root@xuliangwei ~]# chmod 0600 /opt/swap_file
    [root@xuliangwei ~]# mkswap -f /opt/swap_file 
    [root@xuliangwei ~]# swapon /opt/swap_file
    [root@xuliangwei ~]# free -m
    
    PS: 如果希望swap开机自动挂载,将swap信息追加至/etc/fstab即可。




  • 相关阅读:
    .net程序调用检测和性能分析工具——DotTrace
    HR系统邮件审批功能总结
    添加AD验证(域身份验证)到现有网站
    【事务】:数据库事务隔离级别、脏读、幻读、不可重复读
    【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败
    【Anaconda】:科学计算的Python发行版
    【Junit4】:要点随笔
    【ElasticSearch】:elasticsearch.yml配置
    【ElasticSearch】:Windows下ElasticSearch+版本安装head
    ArrayList、Vector、HashMap、HashTable、HashSet的默认初始容量、加载因子、扩容增量
  • 原文地址:https://www.cnblogs.com/Forever-x/p/8335efbc4bc1f50e2689034ca1cb3883.html
Copyright © 2011-2022 走看看