1.磁盘基本概述
1.1Linux中磁盘命名方式
Linux中磁盘的命名方式与磁盘的接口有关,规则如下:
传统IDE接口硬盘:/dev/hd[a-z]
SCISI接口硬盘:/dev/sd[a-z]
虚拟化硬盘:/dev/vd[a-z]
在设备名称的定义规则如下, 其他的分区可以以此类推
系统的第一块SCSI接口的硬盘名称为/dev/sda
系统的第二块SCSI接口的硬盘名称为/dev/sdb
系统中分区由数字编号表示, 1-4留给主分区使用和扩展分区, 逻辑分区从5开始
//第一块磁盘
/dev/sda
//第一块磁盘的第一个分区
/dev/sda1
//第二块磁盘的第一个分区
/dev/sdb1
1.2MBR与GPT
在使用新磁盘之前,你必须对其进行分区。MBR(Master Boot Record)和GPT(GUID Partition Table)是在磁盘上存储分区信息的两种不同方式。这些分区信息包含了分区从哪里开始的信息,这样操作系统才知道哪个扇区是属于哪个分区的,以及哪个分区是可以启动的。在磁盘上创建分区时,你必须在MBR和GPT之间做出选择
MBR是Master Boot Record的简称,也就是主引导记录,是位于磁盘最前边的一段引导(Loader)代码,主要用来引导操作系统的加载与启动
特点:
MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘
只支持最多4个主分区。若想要更多分区,需要创建扩展分区,并在其中创建逻辑分区
GPT磁盘是指使用GUID分区表的磁盘,GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准
特点:
GPT对磁盘大小没有限制
最多可以创建128个分区
注意:MBR与GPT之间互相转换会导致数据丢失
2.磁盘容量检查
使用df命令查看磁盘容量,不加参数以k为单位:
df -i //查看inode使用情况
df -h //以G或者T或者M人性化方式显示
df -T //查看文件类型
//使用df命令查看磁盘,下面分别介绍每列什么含义
[root@liping ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root xfs 17G 1.1G 16G 7% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 143M 872M 15% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
使用lsblk查看分区情况:
[root@liping ~]# 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 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sr0 11:0 1 3.8G 0 rom
使用du命令查看目录或者文件的容量,不加参数以k为单位:
du -sh opt //人性化输出显示大小
-s:列出总和
-h:人性化显示容量信息
[root@liping ~]# du -sh /etc
31M /etc
3.磁盘分区
分区之前, 需要先给虚拟机添加一块磁盘,以便于我们做后续的实验vmware虚拟机,请按如下进行操作:
1.找到对应虚拟主机点击右键, 选择设置
2.在硬件向导里面点击添加按钮, 在硬件类型中选中“硬盘”, 点击下一步
3.磁盘类型选择默认, 然后创建新虚拟磁盘, 调整大小(不要勾选立即分配空间)
4.最后点击下一步, 完成即可
分区工具有fdisk和gdisk,当硬盘小于2T的时候我们应该用fdisk来分区,而当硬盘大于2T的时候则应用gdisk来进行分区
3.1 fdisk分区
[root@localhost ~]# 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 partition's 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) //拓展功能
1P1E6L
[root@liping ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x8a096506 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+100M
分区 1 已设置为 Linux 类型,大小设为 100 MiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (206848-41943039,默认为 206848):
将使用默认值 206848
Last 扇区, +扇区 or +size{K,M,G} (206848-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 19.9 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (208896-41943039,默认为 208896):
将使用默认值 208896
Last 扇区, +扇区 or +size{K,M,G} (208896-41943039,默认为 41943039):+2G
分区 5 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (4405248-41943039,默认为 4405248):
将使用默认值 4405248
Last 扇区, +扇区 or +size{K,M,G} (4405248-41943039,默认为 41943039):+2G
分区 6 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 7
起始 扇区 (8601600-41943039,默认为 8601600):
将使用默认值 8601600
Last 扇区, +扇区 or +size{K,M,G} (8601600-41943039,默认为 41943039):+2G
分区 7 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 8
起始 扇区 (12797952-41943039,默认为 12797952):
将使用默认值 12797952
Last 扇区, +扇区 or +size{K,M,G} (12797952-41943039,默认为 41943039):+2G
分区 8 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 9
起始 扇区 (16994304-41943039,默认为 16994304):
将使用默认值 16994304
Last 扇区, +扇区 or +size{K,M,G} (16994304-41943039,默认为 41943039):+2G
分区 9 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 10
起始 扇区 (21190656-41943039,默认为 21190656):
将使用默认值 21190656
Last 扇区, +扇区 or +size{K,M,G} (21190656-41943039,默认为 41943039):+2g
不支持的后缀:“g”。
支持:10^N: KB (千字节), MB (兆字节), GB (吉字节)
2^N: K (约千字节), M (约兆字节), G (约吉字节)
Last 扇区, +扇区 or +size{K,M,G} (21190656-41943039,默认为 41943039):+2G
分区 10 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x8a096506
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 206847 102400 83 Linux
/dev/sdb2 206848 41943039 20868096 5 Extended
/dev/sdb5 208896 4403199 2097152 83 Linux
/dev/sdb6 4405248 8599551 2097152 83 Linux
/dev/sdb7 8601600 12795903 2097152 83 Linux
/dev/sdb8 12797952 16992255 2097152 83 Linux
/dev/sdb9 16994304 21188607 2097152 83 Linux
/dev/sdb10 21190656 25384959 2097152 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@liping ~]# partprobe /dev/sdb
[root@liping ~]# 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 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 100M 0 part
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
├─sdb7 8:23 0 2G 0 part
├─sdb8 8:24 0 2G 0 part
├─sdb9 8:25 0 2G 0 part
└─sdb10 8:26 0 2G 0 part
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
3.2 gdisk分区
[root@liping ~]# gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.6
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +500M
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 (34-41943006, default = 1026048) or {+-}size{KMGTP}:
Last sector (1026048-41943006, default = 41943006) or {+-}size{KMGTP}: +500M
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): p
Disk /dev/sdc: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): A98A3D7C-7723-46AA-8E0A-2AEEF884F903
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 39894973 sectors (19.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 1026047 500.0 MiB 8300 Linux filesystem
2 1026048 2050047 500.0 MiB 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.
[root@liping ~]# partprobe /dev/sdc
[root@liping ~]# 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 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 100M 0 part
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
├─sdb7 8:23 0 2G 0 part
├─sdb8 8:24 0 2G 0 part
├─sdb9 8:25 0 2G 0 part
└─sdb10 8:26 0 2G 0 part
sdc 8:32 0 20G 0 disk
├─sdc1 8:33 0 500M 0 part
└─sdc2 8:34 0 500M 0 part
sdd 8:48 0 20G 0 disk
sr0 11:0 1 3.8G 0 rom /mnt
4. 磁盘格式化
使用mkfs命令格式化磁盘,创建文件系统
//mkfs常用的选项有
-b //设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块。
-t //用来指定什么类型的文件系统,可以是ext3,ext4, xfs
-i //设定inode的大小
-N //设定inode数量,防止Inode数量不够导致磁盘不足
-L //预设该分区的标签label
[root@liping ~]# mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
[root@liping ~]# blkid
/dev/sda1: UUID="b9283078-2957-4615-82f6-897dac4cd6f5" TYPE="xfs"
/dev/sda2: UUID="SKZXLA-7mfq-Mi7R-6Vi9-DuJu-WVwW-7sNZOe" TYPE="LVM2_member"
/dev/sdc1: PARTLABEL="Linux filesystem" PARTUUID="c2517223-78ee-464b-83a6-36ab7c5f1e1f"
/dev/sdc2: PARTLABEL="Linux filesystem" PARTUUID="862524e8-6da5-4d88-a942-0917efb218f5"
/dev/sr0: UUID="2017-07-11-01-39-24-00" LABEL="RHEL-7.4 Server.x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/rhel-root: UUID="b2622c5c-07de-413a-8861-1728ff65674a" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="bfecd432-5935-4d8b-b2fb-795233927098" TYPE="swap"
[root@liping ~]#
[root@liping ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@liping ~]# blkid
/dev/sda1: UUID="b9283078-2957-4615-82f6-897dac4cd6f5" TYPE="xfs"
/dev/sda2: UUID="SKZXLA-7mfq-Mi7R-6Vi9-DuJu-WVwW-7sNZOe" TYPE="LVM2_member"
/dev/sr0: UUID="2017-07-11-01-39-24-00" LABEL="RHEL-7.4 Server.x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/rhel-root: UUID="b2622c5c-07de-413a-8861-1728ff65674a" TYPE="xfs"
/dev/mapper/rhel-swap: UUID="bfecd432-5935-4d8b-b2fb-795233927098" TYPE="swap"
/dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4"
/dev/sdc1: PARTLABEL="Linux filesystem" PARTUUID="c2517223-78ee-464b-83a6-36ab7c5f1e1f"
/dev/sdc2: PARTLABEL="Linux filesystem" PARTUUID="862524e8-6da5-4d88-a942-0917efb218f5"
5. 磁盘挂载
挂载分区前需要创建挂载点, 挂载点以目录形式出现
如果往挂载点目录写入数据, 实际上会写入到该分区
挂载点建议是空目录, 不是也不影响挂载分区的使用,但是会隐藏原有的文件
5.1 临时挂载磁盘
命令:mount挂载磁盘,实质为文件系统指定访问入口
mount -t //指定文件系统挂载分区,如ext3,ext4, xfs
mount -a //重新读取/etc/fstab配置文件的所有分区
mount -o //指定挂载参数
[root@liping ~]# mkdir /opt/sdb
[root@liping ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
[root@liping ~]# mount /dev/sdb1 /opt/sdb
[root@liping ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/sdb1 93M 1.6M 85M 2% /opt/sdb
5.2 永久挂载磁盘
//使用blkid命令获取各分区的UUID
[root@liping ~]# blkid |grep "sdb1"
/dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4"
//可以把下面这行写到/etc/fstab中,永久挂载, 开机自动挂载
[root@liping ~]# blkid |grep "sdb1"
/dev/sdb1: UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" TYPE="ext4"
[root@liping ~]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Oct 11 00:36: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
#
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=b9283078-2957-4615-82f6-897dac4cd6f5 /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
UUID="c57619a1-eeaf-4e1b-8c73-b77943dc1d0a" /opt/sdb ext4 defaults 0 0
[root@liping ~]# mount -a
[root@liping ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/sdb1 93M 1.6M 85M 2% /opt/sdb
5.3 卸载挂载磁盘
umount -lf //强制卸载挂载
[root@liping ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sdb1 93M 1.6M 85M 2% /opt/sdb
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
[root@liping ~]# umount -lf /dev/sdb1
[root@liping ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 17G 1.1G 16G 7% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.7M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0