【1】、Linux常用的分区格式
-
在新增磁盘后要对其进行分区,分区后才可以去存储数据
-
MBR分区格式:比较古老的分区格式,只能划分4个主分区,如果四个分区划分完成后,硬盘空间还有剩余,那剩余的分区也不能够使用。后来新增加扩展分区(容器)功能,可在扩展分区内划分出更多的逻辑分区,最大支持2.2.T磁盘容量
- 扩展分区可以没有,至多有一个,扩展分区不能存储数据,只可以作为逻辑分区的基础
- IDE接口硬盘逻辑分区最多可以划分59个
- SCSI接口硬盘逻辑分区最多可以划分11个
- 最大支持2.2T以内的磁盘容量
- 使用
fdisk 设备路径
命令去进行MBR磁盘分区
-
GPT分区格式:可以划分128个主分区,最大支持18EB磁盘容量
【2】、磁盘分区和挂载
1、分区类型
-
Linux来说无论有几个分区,分给哪一目录使用,他归根结底只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
-
当我们拿到一张大白纸,首先为了使用方便要裁剪,然后为了书写工整要画格。
-
“白纸”表示原始的硬盘,“裁剪”意味着分区,“画格”意味着格式化,最后写入数据,即新安装一块硬盘设备后,为了更充分、安全的利用硬盘空间首先要进行分区,然后格式化,最后挂载使用。
-
主分区、扩展分区和逻辑分区的区别
-
主分区
- 主分区主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上;
-
扩展分区
-
扩展分区是不能使用的,它只是做为逻辑分区的容器存在的,先创建一个扩展分区,在扩展分区之上创建逻辑分区;
-
除去主分区所占用的容量以外,剩下的容量就被认定为扩展分区(也可以这么讲:一块硬盘除去主分区外的容量后,如果对剩下的容量进行了再分区,那么,这个再分区就是扩展分区)
-
扩展分区是不能进行格式化的,扩展分区本身也是不能使用的,他的作用仅仅是逻辑分区的容器
-
/dev/nvme0n2p3 1640448 10485759 8845312 4.2G 5 Extended major minor #blocks name 259 0 62914560 nvme0n1 259 1 1048576 nvme0n1p1 259 2 61864960 nvme0n1p2 259 3 5242880 nvme0n2 259 5 307200 nvme0n2p1 259 4 512000 nvme0n2p2 259 6 0 nvme0n2p3 # 扩展分区的容量从我们的角度看是0
-
-
逻辑分区
-
扩展分区可以分成若干个逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分——扩展分区如果不再进行分区了,那么扩展分区就是逻辑分区了
-
逻辑分区在使用上和主分区完全相同
-
/dev/nvme0n2p3 1640448 10485759 8845312 4.2G 5 Extended /dev/nvme0n2p5 1642496 3076095 1433600 700M b W95 FAT32
-
查看分区类型
parted命令
{24-06-02 23:07}bogon:~ root# parted /dev/sdc print Model: VMware, VMware Virtual S (scsi) Disk /dev/sdc: 21.5GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 2149MB 2147MB primary 2 2149MB 4296MB 2147MB primary 3 4296MB 6443MB 2147MB primary 4 6443MB 21.5GB 15.0GB extended 5 6445MB 8592MB 2147MB logical 6 8593MB 10.7GB 2147MB logical 7 10.7GB 12.9GB 2147MB logical 8 12.9GB 15.0GB 2147MB logical 9 15.0GB 21.5GB 6436MB logical
-
2、磁盘分区(MBR)
当我们在分区的时候,默认使用MBR进行分区
-
磁盘分区
-
磁盘首先要进行分区才可以进行挂载
-
给虚拟机添加一块硬盘
-
[root@localhost ~]# fdisk -l | grep nv Disk /dev/nvme0n1: 60 GiB, 64424509440 bytes, 125829120 sectors /dev/nvme0n1p1 * 2048 2099199 2097152 1G 83 Linux /dev/nvme0n1p2 2099200 125829119 123729920 59G 8e Linux LVM Disk /dev/nvme0n2: 5 GiB, 5368709120 bytes, 10485760 sectors # 新增的硬盘
-
对新增的磁盘进行分区
-
[root@localhost ~]# fdisk /dev/nvme0n2 # 进入磁盘分区界面 Welcome to fdisk (util-linux 2.32.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-10485759, default 2048): # 由于磁盘的引导文件会占用空间,因此第一个扇区的起始位置是从2048开始 Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): +200M Created a new partition 1 of type 'Linux' and of size 200 MiB. The signature will be removed by a write command. Command (m for help): p Disk /dev/nvme0n2: 5 GiB, 5368709120 bytes, 10485760 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 Disklabel type: dos Disk identifier: 0x7a7b9c31 Device Boot Start End Sectors Size Id Type /dev/nvme0n2p1 2048 411647 409600 200M 83 Linux Filesystem/RAID signature on partition 1 will be wiped. Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (2-4, default 2): First sector (411648-10485759, default 411648): Last sector, +sectors or +size{K,M,G,T,P} (411648-10485759, default 10485759): +500M Created a new partition 2 of type 'Linux' and of size 500 MiB. The signature will be removed by a write command. Command (m for help): p Disk /dev/nvme0n2: 5 GiB, 5368709120 bytes, 10485760 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 Disklabel type: dos Disk identifier: 0x7a7b9c31 Device Boot Start End Sectors Size Id Type /dev/nvme0n2p1 2048 411647 409600 200M 83 Linux /dev/nvme0n2p2 411648 1435647 1024000 500M 83 Linux Filesystem/RAID signature on partition 1 will be wiped. Filesystem/RAID signature on partition 2 will be wiped. #保存退出
-
重新加载硬盘,因为内核在读取硬盘的状态时,是读取开机时的状态,我们后续对硬盘进行了分区操作后,需要强制重启硬盘,让内核重新读取硬盘的信息
-
[root@localhost ~]# partprobe /dev/nvme0n2 [root@localhost ~]# cat /proc/partitions major minor #blocks name 259 0 62914560 nvme0n1 259 1 1048576 nvme0n1p1 259 2 61864960 nvme0n1p2 259 3 5242880 nvme0n2 259 6 204800 nvme0n2p1 259 7 512000 nvme0n2p2
-
3、磁盘分区(GPT)
GPT分区使用和MBR相同
{24-06-02 23:21}bogon:~ root# fdisk /dev/sdd
Command (m for help): g
Created a new GPT disklabel (GUID: EEA1265E-7679-0446-BFB7-A3DD6605FB7D).
Command (m for help): n
Partition number (1-128, default 1):
4、格式化磁盘
-
将磁盘分区完成后,进行格式化(赋予空间文件系统的过程)
-
[root@localhost ~]# mkfs.ext4 /dev/nvme0n2p1 mke2fs 1.45.6 (20-Mar-2020) Creating filesystem with 204800 1k blocks and 51200 inodes Filesystem UUID: c93d6606-57de-4d63-949a-db4034c47d3b Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
-
[root@localhost ~]# mkfs.xfs /dev/nvme0n2p2 meta-data=/dev/nvme0n2p2 isize=512 agcount=4, agsize=32000 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=128000, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=1368, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
-
检查是否格式化成功
{24-06-02 18:30}bogon:~ root# blkid /dev/sdb2 /dev/sdb2: UUID="2c55e9d9-9f5c-4536-97af-c821625328ec" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="2af2b43a-02"
-
5、磁盘挂载
-
创建挂载点
-
[root@localhost ~]# mkdir /mnt/etx /mnt/xfs
-
通过mount命令进行挂载
-
[root@localhost ~]# mount -a
-
进行永久挂载,在/etc/fstab中写入
设备路径 挂载点目录 文件系统类型 参数(defaults)
/dev/nvme0n2p1 /mnt/ext ext4 defaults 0 0 /dev/nvme0n2p2 /mnt/xfs xfs defaults 0 0
-
查看挂载情况
-
[root@localhost ~]# df -TH | grep -v tmp Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/rhel-root xfs 40G 21G 20G 52% / /dev/sr0 iso9660 14G 14G 0 100% /mnt/cdrom /dev/nvme0n2p2 xfs 519M 31M 489M 6% /mnt/xfs /dev/mapper/rhel-home xfs 20G 170M 20G 1% /home /dev/nvme0n1p1 xfs 1.1G 208M 856M 20% /boot /dev/nvme0n2p1 ext4 198M 15k 183M 1% /mnt/ext
-
至此,挂载成功
【3】、文件系统
文件系统:数据在空间中的存放规则
Windows默认文件系统:NTFS
-
分类
- vfat文件系统
- vfat是Linux对DOS,Windows系统下的FAT(包括fat16和Fat32)文件系统的一个统称
- NFS文件系统
- NFS即网络文件系统,用于在UNIX系统间通过网络进行文件共享,用户可将网络中NFS服务器提供的共享目录挂载到本地的文件目录中,从而实现操作和访问NFS文件系统中的内容
- swap
- 在Linux中,使用整个交换分区来提供虚拟内存,其分区大小一般应是系统物理内存的2倍,在安装Linux操作系统时,就应创分交换分区,它是Linux正常运行所必需的,其类型必须是swap,交换分区由操作系统自行管理。
- ext4文件系统
- EXT4是第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)是Linux系统下的日志文件系统,是ext3文件系统的后继版本。
- xfs文件系统
- XFS 特别擅长处理大文件,同时提供平滑的数据传输。
- vfat文件系统
-
对于不同的文件系统来说,虽然在使用中没有过大的差距,但是依旧存在着一些小的不同
-
对于ext4文件系统来说,我们在挂载完成收,就会自动生成一个目录
-
[root@localhost ~]# ll /mnt/ext/ total 12 drwx------. 2 root root 12288 Mar 29 02:28 lost+found
-
但是对于xfs文件系统来说,就不会生成
-
[root@localhost ~]# ll /mnt/xfs total 0
-
当我格式化好一个分区后,我想重新格式化文件系统,对于xfs和ext4文件系统的提示是不同的
# 现在是xfs文件系统,我想重新格式化为ext4格式
{24-06-02 18:39}bogon:~ root# mkfs.ext4 /dev/sdb2
mke2fs 1.45.6 (20-Mar-2020)
/dev/sdb2 contains a xfs file system
Proceed anyway? (y,N) y
# 现在是ext4文件系统,我想格式化为xfs文件系统,使用-f强制重新格式化
{24-06-02 18:40}bogon:~ root# mkfs.xfs /dev/sdb2
mkfs.xfs: /dev/sdb2 appears to contain an existing filesystem (ext4).
mkfs.xfs: Use the -f option to force overwrite.
{24-06-02 18:40}bogon:~ root# mkfs.xfs -f /dev/sdb2
【4】、磁盘数据迁移
如果目录没有被挂载的文件系统,那么默认占用的是根分区的容量
例如/opt目录
若/opt目录下的数据特别大,我们该如何实现数据的迁移,来缓解根分区的负担
# 我们首先将一块新的磁盘挂载
mount /dev/sdb1 /mypart1
# 然后将/opt的数据移动到/mypart1下,此时/opt中就没有数据了,以此减轻了根分区的负担,但是有一些服务的相关配置文件会在/opt目录下。现在我们将数据移走了,服务会找不到配置文件,导致服务无法启动
mv /opt/* /mypart1
# 现在/opt中的数据已经在sdb磁盘的sdb1分区中,我们将sdb1取消挂载
umount /mypart1
# 将sdb1挂载到/opt目录下
mount /dev/sdb1 /opt
# 此时/opt目录下又重新恢复了数据
{24-06-02 22:32}bogon:~ root# ls /opt
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt lost+found
# 至此完成了数据的迁移