作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
Linux磁盘涉及到的命令不是很多,但是在实际运维中的作用却很大,因为Linux系统及业务都会承载到硬盘上。如果磁盘使用和配置不合理,可能会引起系统无法启动或者业务系统无法提供预期的服务。
主要从以下几个方面来介绍:
1.分区介绍
2.创建分区
3.MBR&GPT
4.格式化&挂载(本章节)
5.inode&硬连接
6.磁盘操作命令
7.小结
开始之前,我们如何知道我们的分区是MBR,还是GPT呢?
#安装的时候选择中文,才可以用中文过滤,dos就是MBR,gpt就会GPT.
[root@localhost ~]# fdisk -l |grep "磁盘标签"
磁盘标签类型:dos
磁盘标签类型:gpt
本章就是把我们使用MBR和GPT创建出来的分区进行格式化及挂载。
[root@localhost ~]# 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 19.5G 0 part /
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
sdc 8:32 0 3T 0 disk
└─sdc1 8:33 0 3T 0 part
sr0 11:0 1 942M 0 rom
在Windows里面我们格式化的时候,有2种文件系统:NTFS和FAT32。而在Linux系统里面目前用得最多的系统是ext4和xfs,这里我们有2块盘分别用不同的方式进行格式化。
小知识:在ext4前面当然还有ext3,ext2。当然在其他类型的Linux里面也还有更多的文件系统。
1.格式化ext4
[root@localhost ~]# mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
196608000 inodes, 786431488 blocks
39321574 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2933915648
24000 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
2.格式化xfs
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242624, 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
3.挂载磁盘
前面说过,磁盘可以挂载到任何目录,但是系统自带的目录一般都是安装系统的时候就已经完成配置,一般都不要去动他。这里我们就创建2个新目录进行挂载。有挂载也就有卸载,卸载使用的命令是umount
。
[root@localhost ~]# mkdir /data /data1
[root@localhost ~]# mount /dev/sdb1 /data
[root@localhost ~]# mount /dev/sdc1 /data1
[root@localhost ~]# 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 19.5G 0 part /
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part /data
sdc 8:32 0 3T 0 disk
└─sdc1 8:33 0 3T 0 part /data1
sr0 11:0 1 942M 0 rom
###[root@localhost ~]# umount /data1
###卸载最容易遇到的问题就是磁盘正在被使用,无法卸载。
###这里可能会会涉及到2个命令lsof和fuser,有兴趣可以去了解下。
4.配置fstab
如果挂载以后直接使用也没有问题,但是如果主动或者被动重启了系统,你会发现磁盘会被还原到未挂载的情况,那怎么实现开机自动挂载呢?这里就需要知道在Linux里面有下面这个一个文件,你的磁盘是否自动挂载都写到这里。
在刚刚挂载的时候,我们用的是直接用的是输入的设备地址,而下面配置文件写的是一串UUID,他们之间有什么区别呢?我如何知道每个盘的UUID呢?这里需要知道一个命令blkid
,他会告诉你每个盘的UUID。
他们之间有什么区别呢?每个盘的UUID是不会变的,所以用UUID是可靠的,但是如果用设备名字,这个是可能出现问题的,比如原来有3个盘,其中一个盘坏了,他们的盘符是可能会发生变化的,如果因为磁盘故障,外加重启就可能导致盘符出现变化,这个时候可能会出现我们意想不到的问题。
确认好怎么配置以后,参考上面的格式进行配置即可,配置完成以后最好重启一下,如果配置错误可以在还未开始应用的时候修复,避免正式使用以后遇到重启在引发的问题。
一个良好的运维习惯是需要养成的。
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jun 7 19:56:34 2024
#
# 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=fb21e404-5ed7-400f-b936-ce2d8b631bfe / xfs defaults 0 0
UUID=15251c96-cf20-46c3-ac06-c5b86c4afe70 /boot xfs defaults ms, by reference, are maintained under '/dev/disk'
[root@localhost ~]# blkid
/dev/sda1: UUID="15251c96-cf20-46c3-ac06-c5b86c4afe70" TYPE="xfs"
/dev/sda2: UUID="fb21e404-5ed7-400f-b936-ce2d8b631bfe" TYPE="xfs"
/dev/sdb1: UUID="9fcb9c55-b38c-472e-b8b7-07db7b243e4f" TYPE="xfs"
/dev/sdc1: UUID="53e67bf0-fe14-4cd0-bcd9-8b9720e2360b" TYPE="ext4" PARTLABEL="primary" PARTUUID="cea97c50-59e7-4f79-9454-5b86fd67b7a0"
/dev/sr0: UUID="2019-09-11-19-02-53-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTY
#可以,但是不推荐的方式
/dev/sdb1 /data xfs defaults 0 0
#推荐的挂载方式
UUID=53e67bf0-fe14-4cd0-bcd9-8b9720e2360b /data1 ext4 defaults 0 0