2023-06-03    2024-01-10    2870 字  6 分钟

本章节主要解释磁盘分区,磁盘阵列等磁盘相关知识。

磁盘分区

为主机分别添加一个1T4T的磁盘。

可以通过查看/dev下面的设备或者lsblk命令确认磁盘是否添加成功。

1
2
3
4
5
6
7
8
shell
[root@localhost ~]# ll /dev/sd* brw-rw----. 1 root disk 8, 0 Aug 19 19:32 /dev/sda brw-rw----. 1 root disk 8, 1 Aug 19 19:32 /dev/sda1 brw-rw----. 1 root disk 8, 2 Aug 19 19:32 /dev/sda2 brw-rw----. 1 root disk 8, 3 Aug 19 19:32 /dev/sda3 # /dev/sdb /dev/sdc为新添加的磁盘 brw-rw----. 1 root disk 8, 16 Aug 19 19:32 /dev/sdb brw-rw----. 1 root disk 8, 32 Aug 19 19:32 /dev/sdc

lsblk 是一个用于列出块设备信息的命令。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
shell
[root@localhost ~]# 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 800M 0 part [SWAP] └─sda3 8:3 0 18.2G 0 part / # /dev/sdb /dev/sdc为新添加的磁盘 sdb 8:16 0 1T 0 disk sdc 8:32 0 4T 0 disk sr0 11:0 1 4.3G 0 rom

分区概念

Linux中,分区分为主分区,扩展分区和逻辑分区。

主分区:在Linux中,分区表有64个字节的限制,而每个分区条目的大小为16字节,所以最多只能有4个分区,这4个分区就是我们说的主分区。

扩展分区:为了突破一个物理硬盘只能有4个分区的限制,引入了扩展分区。扩展分区和主分区的地位相当,但是扩展分区本身不能被直接使用,然而可以被继续划分成多个逻辑分区。

逻辑分区:逻辑分区可以有任意多个,但是不能独立存在。

fdisk工具

fdisk仅可针对2T以下的磁盘进行分区操作。

通过fdisk创建主分区。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
shell
[root@localhost ~]# 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. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xaa8a2dfe. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) # p为主分区 e extended # e为扩展分区 Select (default p): # 默认为p Using default response p Partition number (1-4, default 1): First sector (2048-2147483647, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-2147483647, default 2147483647): +10G #选择创建的分区大小 Partition 1 of type Linux and of size 10 GiB is set Command (m for help): p Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes, 2147483648 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: 0xaa8a2dfe Device Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux

创建扩展分区。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
shell
Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): e Partition number (2-4, default 2): First sector (20973568-2147483647, default 20973568): Using default value 20973568 Last sector, +sectors or +size{K,M,G} (20973568-2147483647, default 2147483647): Using default value 2147483647 Partition 2 of type Extended and of size 1014 GiB is set Command (m for help): p Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes, 2147483648 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: 0xaa8a2dfe Device Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux /dev/sdb2 20973568 2147483647 1063255040 5 Extended

创建逻辑分区。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
shell
Command (m for help): n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l Adding logical partition 5 First sector (20975616-2147483647, default 20975616): Using default value 20975616 Last sector, +sectors or +size{K,M,G} (20975616-2147483647, default 2147483647): +20G Partition 5 of type Linux and of size 20 GiB is set Command (m for help): p Disk /dev/sdb: 1099.5 GB, 1099511627776 bytes, 2147483648 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: 0xaa8a2dfe Device Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux /dev/sdb2 20973568 2147483647 1063255040 5 Extended /dev/sdb5 20975616 62918655 20971520 83 Linux

保存分区信息。

1
2
3
4
5
shell
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.

查看分区信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
shell
[root@localhost ~]# 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 800M 0 part [SWAP] └─sda3 8:3 0 18.2G 0 part / sdb 8:16 0 1T 0 disk ├─sdb1 8:17 0 10G 0 part ├─sdb2 8:18 0 1K 0 part └─sdb5 8:21 0 20G 0 part sdc 8:32 0 4T 0 disk sr0 11:0 1 4.3G 0 rom

格式化磁盘。ext4xfs是最常用的文件系统,如果需要处理大文件和大容量存储,并且对性能要求较高,XFS可能是更合适的选择。对于一般用途和通用性能要求,ext4是一个可靠且广泛支持的选项。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
shell
[root@localhost ~]# mkfs.xfs /dev/sdb1 # 将/dev/sdb1格式化为xfs格式 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621440, 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 [root@localhost ~]# mkfs.xfs /dev/sdb5 # 将/dev/sdb5格式化为xfs格式 meta-data=/dev/sdb5 isize=512 agcount=4, agsize=1310720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242880, 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

挂载。

[root@localhost ~]# mkdir /sdb1
[root@localhost ~]# mkdir /sdb5
[root@localhost ~]# mount /dev/sdb1 /sdb1
[root@localhost ~]# mount /dev/sdb5 /sdb5

查看挂载后的空间。

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G   19G   33M 100% /
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm
tmpfs           487M  7.7M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda1      1014M  127M  888M  13% /boot
tmpfs            98M     0   98M   0% /run/user/0
/dev/sdb1        10G   33M   10G   1% /sdb1
/dev/sdb5        20G   33M   20G   1% /sdb5

gdisk工具

大于2T的磁盘,需要使用gdisk进行分区。

安装gdisk

1
shell
[root@localhost ~]# yum install gdisk

通过gdisk对磁盘进行分区。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
shell
[root@localhost ~]# gdisk /dev/sdc Command (? for help): n # 新建分区 Partition number (1-128, default 1): First sector (2048-8589934558, default = 2048) or {+-}size{KMGTP}: Last sector (2048-8589934558, default = 8589934558) or {+-}size{KMGTP}: +2T #创建2T的分区 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 (4294969344-8589934558, default = 4294969344) or {+-}size{KMGTP}: Last sector (4294969344-8589934558, default = 8589934558) 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' 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@localhost ~]# lsblk 
sdc      8:32   0    4T  0 disk 
├─sdc1   8:33   0    2T  0 part 
└─sdc2   8:34   0    2T  0 part  

格式化分区。

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

创建挂载点,并将分区挂载到指定的目录。

[root@localhost ~]# mkdir -p /data/sdc1 /data/sdc2
[root@localhost ~]# mount /dev/sdc1 /data/sdc1
[root@localhost ~]# mount /dev/sdc2 /data/sdc2

检查挂载详情。

[root@localhost ~]# df -h
/dev/sdc1       2.0T   33M  2.0T   1% /data/sdc1
/dev/sdc2       2.0T   33M  2.0T   1% /data/sdc2

挂载文件系统

挂载与卸载

mount 命令用于将文件系统挂载到指定的挂载点上,使得该文件系统可以在指定位置访问。

通过设备名称或者UUID挂载设备。

1
2
3
4
5
6
7
8
9
shell
# 通过设备名称挂载 [root@localhost ~]# mount /dev/sdc1 /data/sdc1 # 通过UUID称挂载 [root@localhost ~]# blkid /dev/sdc2 /dev/sdc2: UUID="a78ece78-4570-4555-bbd5-7f3c723a5f56" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="569cd012-bb0a-4a87-8471-e056ced2d214" [root@localhost ~]# mount UUID="a78ece78-4570-4555-bbd5-7f3c723a5f56" /data/sdc2 [root@localhost ~]# df -h /dev/sdc1 2.0T 33M 2.0T 1% /data/sdc1 /dev/sdc2 2.0T 33M 2.0T 1% /data/sdc2

卸载设备。

[root@localhost ~]# umount /dev/sdc1
[root@localhost ~]# umount /data/sdc2

设置开机自动挂载

查看设备的UUID

[root@localhost ~]# blkid /dev/sdc1
/dev/sdc1: UUID="fb268812-69fc-4b4f-b4e6-1dd60351059e" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="e176d454-9b18-49d9-873b-477ab33943e5"
[root@localhost ~]# blkid /dev/sdc2
/dev/sdc2: UUID="a78ece78-4570-4555-bbd5-7f3c723a5f56" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="569cd012-bb0a-4a87-8471-e056ced2d214" 

编辑/etc/fstab文件,添加要挂载的设备信息。

[root@localhost ~]# tail -2 /etc/fstab
UUID=fb268812-69fc-4b4f-b4e6-1dd60351059e /data/sdc1 xfs defaults 0 0
UUID=a78ece78-4570-4555-bbd5-7f3c723a5f56 /data/sdc2 xfs defaults 0 0

加载/etc/fstab文件,并同时检验语法是否存在错误。

[root@localhost ~]# mount -a

重启服务器,验证结果。

[root@localhost ~]# reboot
[root@localhost ~]# df -h
/dev/sdc1       2.0T   33M  2.0T   1% /data/sdc1
/dev/sdc2       2.0T   33M  2.0T   1% /data/sdc2

/etc/fstab文件含义。

要挂载的设备 挂载点 文件系统 挂载参数 是否备份 是否检查
UUID= /data/sdc2 xfs defaults 0 0

swap交换分区

当内存不够时,swap分区会充当内存,防止系统出现OOM (OutOfMemroy)故障。 但是如果使用了swap分区,系统会变的特别卡。

swap分区进行操作。 创建分区,并格式化为swap格式。

[root@localhost ~]# fdisk /dev/sdb
[root@localhost ~]# lsblk /dev/sdb 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  300G  0 disk 
└─sdb1   8:17   0    1G  0 part

[root@localhost ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old xfs signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=ff384ce5-9132-4f52-8af8-be2c8724057a

扩展swap分区。

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972          95         739           7         137         718
Swap:           799           0         799

[root@localhost ~]# swapon /dev/sdb1
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972          95         738           7         137         717
Swap:          1823           0        1823

缩小swap分区。

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         103         691           7         177         688
Swap:          1823           0        1823
[root@localhost ~]# swapoff /dev/sdb1
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         102         692           7         177         689
Swap:           799           0         799

关闭所有的swap

[root@localhost ~]# swapoff -a
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         103         691           7         177         688
Swap:             0           0           0

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

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

磁盘阵列

RAID0:条带卷,最少需要两块硬盘,读写性能好,但是没有容错机制。 RAID0

RAID1:镜像卷,读写性能一般,有容错机制,磁盘利用率为50%。 RAID1

RAID5:校验卷,至少3块硬盘,仅允许坏一块硬盘,硬盘的利用率为(n-1)/n,读写较快。 RAID5

RAID10:RAID0和RAID1的组合,具有RAID0的读写速度和RAID1的容错机制,但是磁盘利用率为50%。 RAID10


image-20231028232834657
阅读全文