• linux 系统磁盘管理体系


    目录

    linux 系统磁盘管理体系

    一、磁盘的基本概念

    img

    1.什么是磁盘?

    磁盘就像是森林,是所有硬式存储的统称,如最早出现的软盘,现在的硬盘,都是磁盘中的一部分。

    2.什么是软盘?

    磁盘开始指的是1.44MB的3.5英寸磁盘,这是很早时候的电脑储存盘,也叫软盘。

    软盘在如今已经很少被使用了,使用软盘需要安装软盘驱动。软盘容量小,容易损坏。随着数据的大量增长,软盘已经不满足日益所需的数据存储需求,如是,硬盘便被研发出来。

    3.什么是硬盘?

    硬盘就是计算机中的最大的存储装置了,就是将磁盘的储存片装到硬质金属盒子里可以得到更好的保护,而且在使用寿命上也比软盘优越得多,只有低格才对硬盘有很大的伤害,其它的读写是不要紧的,也就叫硬盘。

    4.磁盘与软盘硬盘的关系?

    磁盘是一种统称,即是一开始的软盘,又是现如今的硬盘,但是在现在,说起磁盘,都指的是硬盘。

    二、磁盘的内部结构

    img

    img

    1.磁头(Head)

    盘面数量==磁头数量

    作用:用来写入和读取数据的

    径向运动寻道

    2.磁道(Track)

    从外面到里面最外面是0磁道

    3.扇区(Sector)

    磁道上面的最小的单位

    默认大小512字节

    4.柱面(Cylinder)

    不同盘面上面的相同的磁道组成的圆柱体

    不同盘面上的相同的呼啦圈组成的圆柱体

    磁盘默认是按照柱面进行读写

    磁头之间的切换速度接近于光速

    磁头径向运动-寻道机械运动慢

    5.单元块(Units)

    磁盘是按柱面进行读写的,表示一个柱面的大小

    6.计算磁盘大小

    磁盘大小=柱面的大小*柱面的数量

    柱面的大小=一个磁道的大小*磁头数量

    一个磁道的大小=一个扇区的大小*扇区数量/每个磁道

    fdisk 查看磁盘详细信息

    echo + bc

    awk

    三、磁盘的外部结构

    1.磁盘主轴转速

    rpm(round per minute)
    10k rpm
    15k rpm
    5400 rpm
    7200 rpm

    2.磁盘盘片(用于存储数据)

    3.磁头(用于读取数据)

    四、磁盘的接口及类型

    1.SATA 机械 给自己人使用的时候 备份 性能要求不高 大量容量 线下服务 10k rpm 2T 3T 4T

    2.SAS 服务器标配 线上/生产环境使用 15k 300G 600G 10k 7.2k

    3.PCI-E 大量的读写,要求很高的性能,数据量小

    4.IDE,SCSI (已经被淘汰)

    5.SATA III 与 SAS (企业使用较多)

    M.2接口是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来的mSATA接口。无论是更小巧的规格尺寸,还是更高的传输性能,M.2都远胜于mSATA
    M2接口百度百科

    你了解M.2固态硬盘吗?

    装机到底要不要买M.2接口的SSD?

    SATA、MSATA、PCIE和M2都是什么?

    固态硬盘SATA和MSATA有什么区别?
    https://baike.baidu.com/item/m.2接口
    http://baijiahao.baidu.com/s?id=1604321789851430125&wfr=spider&for=pc
    http://www.sohu.com/a/253988990_610530
    http://www.sohu.com/a/229021919_463982
    https://zhidao.baidu.com/question/754765227221408324.html

    • 机械和固态的对比
    机械(HDD)			固态(SSD)
    容量大价格低		容量小价格高
    抗击打能力弱		抗击打能力高
    读写速度稍慢		读写速度很快
    数据恢复易			数据恢复难
    使用时间无限		使用时间1-2w次
    

    五、fdisk磁盘分区实践

    适用于磁盘小于2TB的磁盘,分区类型MBR,主分区4或主分区3+扩展分区(逻辑分区+…),分区后需要保存后生效

    MBR位置:0磁头0磁道1扇区。
    前446字节 mbr 主引导记录**

    64字节的分区表

    55AA 表示的是结束标记

    第一步:添加硬盘

    模拟环境:

    虚拟机增加一块10GB硬盘

    img

    img

    img

    img

    img

    img

    img

    第二步:重启虚拟机 reboot

    第三步:检查是否识别出磁盘lsblk

    [root@gjy ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   20G  0 disk 
    ├─sda1   8:1    0  500M  0 part /boot
    ├─sda2   8:2    0    1G  0 part [SWAP]
    └─sda3   8:3    0 18.5G  0 part /
    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    7G  0 part 
    ├─sdb4   8:20   0    1K  0 part 
    └─sdb5   8:21   0    5G  0 part 
    sdc      8:32   0    3T  0 disk 
    sdd      8:48   0  200G  0 disk 
    sr0     11:0    1  4.3G  0 rom
    

    第四步 : 开始创建分区 fdisk /dev/sdb

    [root@gjy ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).
    
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    
    Command (m for help):    #如果回复m,每个参数含义
    
    Command (m for help): 
     a   toggle a bootable flag                   #切换分区启动标记
       b   edit bsd disklabel                       #编辑sdb磁盘标签
       c   toggle the dos compatibility flag        #切换dos兼容模式
    ** d   delete a partition                       #删除分区
       g   create a new empty GPT partition table	#创建新的空白GPT分区表
       G   create an IRIX (SGI) partition table		#创建IRIX (SGI)分区表
    ** 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)       #拓展功能   
    
     分区具体过程(分4个主分区)
    
     1. 输入n进行分区
     有时输入信息不正确,利用ctrl+u ctrl+backspace进行错误信息删除
     #创建一个1G 的分区
    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): 
    Using default response 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
    
    
    2. 输入p查看分区
    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: 0x5b38e62c
    
       Device Boot      Start         End      Blocks   Id  System     #一个分区
    /dev/sdb1            2048     2099199     1048576   83  Linux
    
    #创建2G 的分区
    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: 0x5b38e62c
    
       Device Boot      Start         End      Blocks   Id  System    # 变成了2个分区
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         2099200     6293503     2097152   83  Linux
    #创建7G 的分区
    Command (m for help): n
    Partition type:
       p   primary (2 primary, 0 extended, 2 free)
       e   extended
    Select (default p): 
    Using default response p
    Partition number (3,4, default 3): 
    First sector (6293504-41943039, default 6293504): +7G
    Last sector, +sectors or +size{K,M,G} (14680064-41943039, default 41943039): 
    Using default value 41943039
    Partition 3 of type Linux and of size 13 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: 0x5b38e62c
    
       Device Boot      Start         End      Blocks   Id  System #变成了3个分区
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         2099200     6293503     2097152   83  Linux
    /dev/sdb3        14680064    41943039    13631488   83  Linux
    
    #删除第三个分区
    Command (m for help): d
    Partition number (1-3, default 3): 3
    Partition 3 is deleted
    #再次查看分区
    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: 0x5b38e62c
    
       Device Boot      Start         End      Blocks   Id  System     #只剩下前两个分区
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         2099200     6293503     2097152   83  Linux
    
    #创建一个拓展分区,按e 或者默认剩余的全给拓展分区
    Command (m for help): n
    Partition type:
       p   primary (3 primary, 0 extended, 1 free)
       e   extended
    Select (default e): 
    Using default response e
    Selected partition 4
    First sector (20973568-41943039, default 20973568): 
    Using default value 20973568
    Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): 
    Using default value 41943039
    Partition 4 of type Extended and of size 10 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: 0x5b38e62c
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048     2099199     1048576   83  Linux
    /dev/sdb2         2099200     6293503     2097152   83  Linux
    /dev/sdb3       20973568    41943039    10484736    5  Extended
    
    #保存退出
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    

    拓展:

        
    设备名称	分区信息	设备类型
    /dev/sda	/dev/sda1	第一块物理磁盘第一分区
    /dev/sdb	/dev/sdb2	第二块磁盘第二个分区
    /dev/vdd	/dev/vdd4	第四块虚拟磁盘的第四个分区
    
    
    系统中分区由数字编号表示,1-4表示给主分区使用和扩展分区,逻辑分区从5开始
    详细可参考下面网站:
    https://baike.baidu.com/item/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95/7612638
    
    前面我们已经提到过MBR分区表只能分配4个主分区,但现在还有一种新型的分区表GPT,GPT支持分配128个主分区。注意MBR与GPT之间不能互转,会导致数据丢失。
    详细可参考下面网站:
    http://www.360doc.com/content/18/0614/22/6140124_762487520.shtml
    
    
    
    

    显示磁盘分区信息的命令

    [root@gjy ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        48G  3.0G   45G   7% /
    devtmpfs        980M     0  980M   0% /dev
    tmpfs           991M     0  991M   0% /dev/shm
    tmpfs           991M   18M  973M   2% /run
    tmpfs           991M     0  991M   0% /sys/fs/cgroup
    /dev/sda1       197M  105M   93M  54% /boot
    /dev/sr0        4.3G  4.3G     0 100% /mnt
    tmpfs           199M     0  199M   0% /run/user/0
    tmpfs           199M     0  199M   0% /run/user/1011
    [root@gjy ~]# du -sh /etc
    166M	/etc
    [root@gjy ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   50G  0 disk 
    ├─sda1   8:1    0  200M  0 part /boot
    ├─sda2   8:2    0    2G  0 part [SWAP]
    └─sda3   8:3    0 47.8G  0 part /
    sr0     11:0    1  4.3G  0 rom  /mnt
    
    虚拟机添加磁盘分别为20G  3T,添加完成后要重启虚拟机
    [root@gjy ~]# ll /dev/sd*
    brw-rw----. 1 root disk 8,  0 Jul 16 18:33 /dev/sda
    brw-rw----. 1 root disk 8,  1 Jul 16 18:33 /dev/sda1
    brw-rw----. 1 root disk 8,  2 Jul 16 18:33 /dev/sda2
    brw-rw----. 1 root disk 8,  3 Jul 16 18:33 /dev/sda3
    brw-rw----. 1 root disk 8, 16 Jul 16 18:33 /dev/sdb
    brw-rw----. 1 root disk 8, 32 Jul 16 18:33 /dev/sdc
    [root@gjy ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   50G  0 disk 
    ├─sda1   8:1    0  200M  0 part /boot
    ├─sda2   8:2    0    2G  0 part [SWAP]
    └─sda3   8:3    0 47.8G  0 part /
    sdb      8:16   0   20G  0 disk 
    sdc      8:32   0    3T  0 disk 
    sr0     11:0    1  4.3G  0 rom  
    
    fdisk  只支持MBR分区表,适用于2TB以下的分区。
    [root@web ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).
    

    第五步: 格式化分区,并创建文件系统 mkfs.xfs == mkfs -t xfs,只能对分区格式化,不能直接对磁盘格式化

    [root@gjy ~]# mkfs.xfs /dev/sdb1
    meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=262144, 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
                        
    

    第六步: 挂载

    临时挂载 mount /dev/sdb1 /mnt/data2

    [root@web ~]# mkdir   /mnt/data2  创建目录
    [root@web ~]# ll /data2
    total 0
    [root@gjy ~]# mount /dev/sdb1 /mnt/data2   ## 临时挂载
    [root@gjy ~]# df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda3       19399680 1720548  17679132   9% /
    devtmpfs         1012904       0   1012904   0% /dev
    tmpfs            1023744       0   1023744   0% /dev/shm
    tmpfs            1023744    9112   1014632   1% /run
    tmpfs            1023744       0   1023744   0% /sys/fs/cgroup
    /dev/sda1         508580  122100    386480  25% /boot
    tmpfs             204752       0    204752   0% /run/user/0
    /dev/sdb1        1038336   32992   1005344   4% /mnt/data2
    
    

    永久挂载 vim /etc/fstab

    [root@gjy ~]# vim /etc/fstab
    [root@gjy ~]# tail -1 /etc/fstab
    /dev/sdb1 				/data1			  xfs     defaults        0 0
    
    (uid)或者设备名                  挂载点        文件系统类型  默认参数    是否备份   是否检查磁盘
    

    卸载umount

    umount /dev/sdb2
    

    查看df

    df
    

    挂载只读文件mount -r

    mount -r  /dev/sdb2
    

    重新挂载mount -a

    mount -a /dev/sdb2
    

    第七步 :dd if=/dev/zero of=/data2/test.txt bs=10M count=50 可以在挂载的目录下添加文件

    [root@gjy ~]# dd if=/dev/zero of=/data2/test.txt bs=10M count=50
    50+0 records in
    50+0 records out
    524288000 bytes (524 MB) copied, 6.00042 s, 87.4 MB/s
    [root@gjy ~]# ll /data2
    total 512000
    -rw-r--r--. 1 root root 524288000 Jul 16 19:43 test.txt
    
    

    六、gdisk 分区

    分区表是GPT,支持更大的容量分区,128个。

    需要安装 yum install -y gdisk

    第一步:添加硬盘,3TB,在VMware里面添加

    第二步:查看是否能识别出来

    [root@gjy ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   20G  0 disk 
    ├─sda1   8:1    0  500M  0 part /boot
    ├─sda2   8:2    0    1G  0 part [SWAP]
    └─sda3   8:3    0 18.5G  0 part /
    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    7G  0 part 
    ├─sdb4   8:20   0    1K  0 part 
    └─sdb5   8:21   0    5G  0 part 
    sdc      8:32   0    3T  0 disk 
    sdd      8:48   0  200G  0 disk 
    sr0     11:0    1  4.3G  0 rom  
    [root@gjy ~]# ll /dev/sd*
    brw-rw----. 1 root disk 8,  0 Jul 17 00:47 /dev/sda
    brw-rw----. 1 root disk 8,  1 Jul 17 00:47 /dev/sda1
    brw-rw----. 1 root disk 8,  2 Jul 17 00:47 /dev/sda2
    brw-rw----. 1 root disk 8,  3 Jul 17 00:47 /dev/sda3
    brw-rw----. 1 root disk 8, 16 Jul 17 00:47 /dev/sdb
    brw-rw----. 1 root disk 8, 17 Jul 17 00:47 /dev/sdb1
    brw-rw----. 1 root disk 8, 18 Jul 17 00:47 /dev/sdb2
    brw-rw----. 1 root disk 8, 19 Jul 17 00:47 /dev/sdb3
    brw-rw----. 1 root disk 8, 20 Jul 17 00:47 /dev/sdb4
    brw-rw----. 1 root disk 8, 21 Jul 17 00:47 /dev/sdb5
    brw-rw----. 1 root disk 8, 32 Jul 17 00:47 /dev/sdc
    brw-rw----. 1 root disk 8, 48 Jul 17 00:47 /dev/sdd
    
    

    第三步 :进行分区

    [root@gjy ~]# gdisk /dev/sdc
    GPT fdisk (gdisk) version 0.8.10
    
    Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: not present
    
    Creating new GPT entries.
    Command (? for help): ?
    	b   back up GPT data to a file                          #将GPT数据备份到文件中
    	c   change a partition's name                           #更改分区的名称
    **	d   delete a partition                                  #删除分区
    	i   show detailed information on a partition            #显示分区的详细信息
    **	l   list known partition types                          #列出已知的分区类型
    **	n   add a new partition                                 #添加一个新的分区
    	o   create a new empty GUID partition table (GPT)       #创建一个新的空GUID分区表(GPT)
    **	p   print the partition table                           #打印分区表
    **	q   quit without saving changes                         #没有保存更改就退出
    	r   recovery and transformation options (experts only)  #恢复和转换选项(仅限专家使用)
    	s   sort partitions                                     #年代分类分区
    	t   change a partition's type code                      #不要更改分区的类型代码
    	v   verify disk                                         #验证磁盘
    **	w   write table to disk and exit                        #将表写入磁盘并退出
    	x   extra functionality (experts only)                  #额外功能(仅限专家使用)
    **	?   print this menu                                     #打印菜单
    	
    Command (? for help): n                #创建分区
    Partition number (1-128, default 1):   #选择分区表的编号,选择默认,直接回车键
    First sector (34-6442450910, default = 2048) or {+-}size{KMGTP}:   #扇区的开始位置,选择默认,直接回车键
    Last sector (2048-6442450910, default = 6442450910) or {+-}size{KMGTP}:    #该分区扇区的结束位置,选择默认,只做一个分区,直接回车键,最大值。
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300):   #选择默认,直接退出
    Changed type of partition to 'Linux filesystem' 
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): L			#显示其他文件类型
    0700 Microsoft basic data  0c01 Microsoft reserved    2700 Windows RE          
    3000 ONIE boot             3001 ONIE config           4100 PowerPC PReP boot   
    4200 Windows LDM data      4201 Windows LDM metadata  7501 IBM GPFS            
    7f00 ChromeOS kernel       7f01 ChromeOS root         7f02 ChromeOS reserved   
    8200 Linux swap            8300 Linux filesystem      8301 Linux reserved      
    8302 Linux /home           8400 Intel Rapid Start     8e00 Linux LVM           
    a500 FreeBSD disklabel     a501 FreeBSD boot          a502 FreeBSD swap        
    a503 FreeBSD UFS           a504 FreeBSD ZFS           a505 FreeBSD Vinum/RAID  
    a580 Midnight BSD data     a581 Midnight BSD boot     a582 Midnight BSD swap   
    a583 Midnight BSD UFS      a584 Midnight BSD ZFS      a585 Midnight BSD Vinum  
    a800 Apple UFS             a901 NetBSD swap           a902 NetBSD FFS          
    a903 NetBSD LFS            a904 NetBSD concatenated   a905 NetBSD encrypted    
    a906 NetBSD RAID           ab00 Apple boot            af00 Apple HFS/HFS+      
    af01 Apple RAID            af02 Apple RAID offline    af03 Apple label         
    af04 AppleTV recovery      af05 Apple Core Storage    be00 Solaris boot        
    bf00 Solaris root          bf01 Solaris /usr & Mac Z  bf02 Solaris swap        
    bf03 Solaris backup        bf04 Solaris /var          bf05 Solaris /home       
    bf06 Solaris alternate se  bf07 Solaris Reserved 1    bf08 Solaris Reserved 2  
    bf09 Solaris Reserved 3    bf0a Solaris Reserved 4    bf0b Solaris Reserved 5  
    c001 HP-UX data            c002 HP-UX service         ea00 Freedesktop $BOOT   
    eb00 Haiku BFS             ed00 Sony system partitio  ed01 Lenovo system partit
    Press the <Enter> key to see more codes: 		#翻页
    ef00 EFI System            ef01 MBR partition scheme  ef02 BIOS boot partition 
    fb00 VMWare VMFS           fb01 VMWare reserved       fc00 VMWare kcore crash p
    fd00 Linux RAID            
    Hex code or GUID (L to show codes, Enter = 8300): 		#选择默认,直接回车
    Changed type of partition to 'Linux filesystem'
    
    Command (? for help): p     #打印分区表信息
    Disk /dev/sdc: 6442450944 sectors, 3.0 TiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): D741E6D0-5420-4C7E-96EC-C85BC3CAB691
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 6442450910
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048      6442450910   3.0 TiB     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.
    
    

    第四步:格式化,并创建文件系统,centos7系列,统一使用(系统默认)xfs文件系统

    [root@gjy ~]# mkfs.xfs /dev/sdc1
    meta-data=/dev/sdc1              isize=512    agcount=4, agsize=201326527 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=805306107, imaxpct=5
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=393215, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=
    

    第五步:挂载,先创建一个挂载点

    [root@gjy ~]# mkdir /gpt            #创建目录
    [root@gjy ~]# mount /dev/sdc1 /gpt     #挂载sdc1到目录下
    [root@gjy ~]# df -h| grep sdc1       #查看挂载
    /dev/sdc1       3.0T   33M  3.0T   1% /gpt
    [root@gjy ~]# dd if=/dev/zero of=/gpt/test.txt bs=10M count=20        #写入文件
    20+0 records in
    20+0 records out
    209715200 bytes (210 MB) copied, 0.683578 s, 307 MB/s
    [root@gjy ~]# ll -h /gpt         #查看
    total 200M
    -rw-r--r--. 1 root root 200M Jul 17 09:34 test.txt
    [root@gjy ~]# umount /gpt        卸载
    [root@gjy ~]# ll /gpt             查看
    total 0
    [root@gjy ~]# mkdir /data3           #创建目录路
    [root@gjy ~]# mount /dev/sdc1 /data3    #挂载
    [root@gjy ~]# ll /data3                #查看
    total 204800
    -rw-r--r--. 1 root root 209715200 Jul 17 09:34 test.txt
    
    

    永久挂载

    [root@gjy ~]# vim /etc/fstab
    [root@gjy ~]# tail -1 /etc/fstab
    /dev/sdc1                               /data3                    xfs     defaults        0 0
    [root@gjy ~]# mount -a
    [root@gjy ~]# echo $?
    0
    [root@gjy ~]# df -h |grep sdc1
    /dev/sdc1       3.0T  233M  3.0T   1% /data3
    

    七、parted 高级分区工具。了解即可

    挂载方式: mount

    模拟环境:

    虚拟机增加一块100M硬盘(测试使用)

    print 显示磁盘分区信息

    mklabel mktable 创建磁盘分区表

    mkpart 创建分区

    rm 删除分区

    q 退出不保存

    mount 挂载命令

    mount 挂载的命令
    -t 文件系统
    -o 指定挂载的参数
    -a 重新挂载配置/etc/fstab文件的分区表
    示例:
    # -t   指定挂载文件系统
    [root@gjy ~]# umount /dev/sdc1
    [root@gjy ~]# mkdir /data3
    [root@gjy ~]# mount -t xfs  /dev/sdc1 /data3 
    [root@gjy ~]# df -h |grep sdc1
    /dev/sdc1       3.0T  201M  3.0T   1% /data3
    # -o  指定挂载的参数
    [root@gjy ~]# umount /dev/sdc1
    [root@gjy ~]# mkdir /data4
    [root@gjy ~]# mount -o ro /dev/sdc1 /data4
    [root@gjy ~]# df -h |grep sdc1
    /dev/sdc1       3.0T  201M  3.0T   1% /data4
    
    # -a      重新挂载配置/etc/fstab文件的分区表
    [root@gjy ~]# mount -a
    

    umount 卸载命令

    umount 卸载命令
    -l 强制卸载
    -f 勉强下载不一定成功,退出当前目录进行下载
    -l :  强制卸载
    -f  : 勉强的卸载,不一定能卸载成功,最好退出当前目录再卸载
    [root@gjy ~]# umount /dev/sdc1
    [root@gjy ~]# umount -f /data     #勉强的卸载,卸载不成功
    umount: /data: target is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))
    [root@oldboy data]# umount -lf /data   #强制卸载
    [root@oldboy data]# cd
    [root@oldboy ~]# mount -a
    [root@oldboy ~]# cd /data
    [root@oldboy data]# umount /data    #当面目录无法卸载该目录
    umount: /data: target is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))
    [root@oldboy data]# umount -l /data    #强制卸载成功
    

    最好是使用uuid挂载,uuid号都是唯一码

    [root@gjy ~]# blkid|grep sdc
    /dev/sdc1: UUID="1ed78be5-11df-4217-a55e-a24649c838da" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="a58b5210-41b0-438a-ab7a-3de8780fef5d" 
    [root@gjy ~]# mount UUID="1ed78be5-11df-4217-a55e-a24649c838da" /data3
    [root@gjy ~]# df -h|grep sdc
    /dev/sdc1       3.0T  233M  3.0T   1% /data3
    
    

    /etc/fstab 文件的详细信息

    /dev/sdb1   /data1   xfs    defaults   0 0
    
    #第一列:挂载的设备
    #第二列: 挂载点
    #第三列:  文件系统的类型
    #第四列: 挂载的参数,defaults表示默认
    参数	                含义
    async/sync		是否同步方式运行,默认async(异步)。
    user/nouser		是否允许普通用户使用mount命令挂载,默认nouser。
    exec/noexec		是否允许可执行文件执行,默认exec。
    suid/nosuid		是否允许存在suid属性的文件,默认suid。
    auto/noauto		执行mount -a时,此文件系统是否被主动挂载,默认auto。
    rw/ro			是否只读或者读写模式进行挂载。默认rw。
    default			具有rw,suid,exec,auto,nouser,async等默认参数的设定。
    
    #第五列: 是否使用dump 进行备份,默认选择0
    0:不备份
    1:启用备份,每天进行备份
    2: 不定时的进行备份
    
    #第六列: 是否通过fsck这个命令检测,默认是0 
    0:不检查
    1: 检查,如果存在/分区,这个值只能是/分区上
    0:检查。按照
    

    八、swap的介绍

    企业案例:如环境内存不够用,大量占用swap

    方法1 :增加硬盘内存方式:

    第一步:临时增加内存,需要找个1G 的分区

    第二步:使这个分区称为swap

    [root@gjy ~]# mkswap /dev/sdb2
    Setting up swapspace version 1, size = 2097148 KiB
    no label, UUID=5475acbe-2109-477d-ae8d-359c5eee6b8c
    [root@gjy ~]# echo $?
    0
    

    第三步: 扩容swap

    #扩容
    [root@gjy ~]# swapon /dev/sdb2
    

    第四步: 检查

    [root@gjy ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1999         113        1656           8         229        1710
    Swap:          3071           0        3071
    

    第五步: 缩减swap 内存

    #缩减
    [root@gjy ~]# swapoff /dev/sdb2
    [root@gjy ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1999         112        1658           8         229        1711
    Swap:          1023           0        1023
    

    第六步: 禁止所有的swap

    #禁止使用swap
    [root@gjy ~]# swapoff -a
    [root@gjy ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1999         111        1659           8         228        1712
    Swap:             0           0           0
    

    第七步: 恢复swap

    [root@gjy ~]# swapon -a
    [root@gjy ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1980          98        1694           9         187        1697
    Swap:          2047           0        2047
    
    

    第八步:检查swap 在使用的设备

    [root@gjy ~]# swapon -s
    Filename				Type		Size	Used	Priority
    /dev/sda2                              	partition	1048572	0 -2
    
    

    方法2:通过一个大文件的方式添加临时内存

    文件添加swap内存(文件要把权限改为600)
    [root@gjy ~]# dd if=/dev/zero of=/data/swap_file bs=100M count=10     # 当前目录创建100M的文件
    10+0 records in
    10+0 records out
    1048576000 bytes (1.0 GB) copied, 3.42122 s, 306 MB/s
    [root@gjy ~]#  ll /data/swap_file                                  #查看目录下文件
    -rw-r--r--. 1 root root 1048576000 Jul 17 11:04 /data/swap_file
    [root@gjy ~]# file /data/swap_file                               #查看文件类型
    /data/swap_file: data
    [root@gjy ~]# mkswap  -f  /data/swap_file               #将文件格式为swap文件类行,格式文件需要使用 -f 参数
    Setting up swapspace version 1, size = 1023996 KiB
    no label, UUID=d912d4c3-3190-4ab0-bec4-fb839de468ab
    [root@gjy ~]# file /data/swap_file                             #再次查看文件类型
    /data/swap_file: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, UUID=d912d4c3-3190-4ab0-bec4-fb839de468ab
    [root@gjy ~]# free -m                            #查看swap内存
                    total        used        free      shared  buff/cache   available
     Mem:            972          90         167           7         714         708
     Swap:          1023           0        1023
    [root@gjy ~]# swapon /data/swap_file         #添加swap内存
    swapon: /data/swap_file: insecure permissions 0644, 0600 suggested.
    [root@gjy ~]# free -m                              # 再次查看swap内存
                  total        used        free      shared  buff/cache   available
    Mem:           972            90       166           7        714        707
    Swap:          2023           0        2023
    
    
    

    九、单用户模式

    方法1:

    [root@gjy ~]# vim /etc/fstab           #删除uuid的u,颜色变了,保存退出`
    [root@gjy ~]# mount -a   
    [root@gjy ~]# echo $?
    0
    [root@gjy ~]# reboot           #重启
    [root@gjy ~]# vim /etc/fstab    #再次进入编辑
    # /etc/fstab
    # Created by anaconda on Wed Jun 12 20:07: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
    #
    UUID=330703d9-76ae-4cf8-bcfa-664eb11c0a89 /                       xfs     defaults        0 0
    UUID=0d3f41ae-092f-4a16-a401-8f4bc3c4056e /boot                   xfs     defaults        0 0
    UUID=71ba1e2c-5d58-4209-8014-a7fdd4f002d2 swap                    swap    defaults        0 0
    /dev/sdd                                /data                     xfs     defaults        0 0
    /dev/sdc1                               /data3                    xfs     defaults        0 0
    
    ~                                                                                                                                                                                                                                         
    "/etc/fstab"                                                                                         
    "/etc/fstab" E212: Can't open file for writing       #"/etc/fstab" E212:无法打开文件进行写入
    Press ENTER or type command to continue              #按ENTER或type命令继续
    
    
    
    文件系统已经被破坏,保存退出不了,可强制退出
    [root@gjy ~]# vim /etc/fstab         #编辑不了
    [root@gjy ~]# ll /      可以查看
    total 20
    drwxr-xr-x.   3 root root   18 Jun 18 10:57 abc
    drwxr-xr-x.   3 root root   17 Jun 18 10:57 backup
    lrwxrwxrwx.   1 root root    7 Jun 12 20:07 bin -> usr/bin
    ...
    
    [root@gjy ~]# touch 123
    touch: cannot touch ‘123’: Read-only file system   #只读模式,写入不了文件
    [root@gjy ~]# mount -o rw,remount /
    mount: can't find UUID=30703d9-76ae-4cf8-bcfa-664eb11c0a89
    [root@gjy ~]# blkid               #查看原本的uuid,可看出对应的原来的uuid号码
    /dev/sda1: UUID="0d3f41ae-092f-4a16-a401-8f4bc3c4056e" TYPE="xfs" 
    /dev/sda2: UUID="71ba1e2c-5d58-4209-8014-a7fdd4f002d2" TYPE="swap" 
    /dev/sda3: UUID="330703d9-76ae-4cf8-bcfa-664eb11c0a89" TYPE="xfs" 
    /dev/sdb1: UUID="32ec1510-c863-4ff1-bcf3-0af0e151f0eb" TYPE="xfs" 
    /dev/sdb2: UUID="5475acbe-2109-477d-ae8d-359c5eee6b8c" TYPE="swap" 
    /dev/sdc1: UUID="1ed78be5-11df-4217-a55e-a24649c838da" TYPE="xfs" PA
    /dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE
    /dev/sdd: UUID="715a7cea-251b-4f4b-a526-33c198b78aae" TYPE="xfs" 
    [root@gjy ~]# mount -o rw,remount UUID=330703d9-76ae-4cf8-bcfa-664eb11c0a89     #修改成rw,读写模式
    [root@gjy ~]# vim /etc/fstab                           #再改回正确的uuid
    

    方法2:进入单用户模式

    1.点击e 进入单用户模式,这里手速要快点,因为只有5秒钟的时间会跳过

    2.找到Linux16把ro只读 改成rw读写,添加命令解释器( init=/bin/bash ),关闭selinux (enforcing=0)

    3.再按ctrl +x ,启动单用户模式

    4.如要修改用户密码,可passwd username 修改

    5.再输入单用户重启的命令(exec /sbin/init )

    6.进入系统之后

    需编辑selinux配置文件vim /etc/sysconfig/selinx

    SELINUX=enforcing修改为 SELINUX=disabled (即把selinux关闭)

    7.再reboot重启之后,密码也可用(如果不关闭selinux,重启之后原密码和修改之后的密码登陆都进不去)

  • 相关阅读:
    执行 apt-get -f install 提示错误
    Git 命令总结
    git版本控制(一)
    ubuntu设置字体编码GBK和UTF-8
    Method and system for public-key-based secure authentication to distributed legacy applications
    T-SQL 实用函数总结
    T-SQL 实用函数总结
    在程序员面前千万不要说这9句话,我一个同事就死的很惨!
    在程序员面前千万不要说这9句话,我一个同事就死的很惨!
    在程序员面前千万不要说这9句话,我一个同事就死的很惨!
  • 原文地址:https://www.cnblogs.com/gongjingyun123--/p/11196766.html
Copyright © 2020-2023  润新知