磁盘基础与LVM介绍
1. 磁盘基础介绍
什么是磁盘 什么是软盘 什么是硬盘
磁盘的基本结构
盘片
磁道
扇区 512B
柱面
磁头
磁盘的接口:
IDE SCSI #淘汰了
SATA III SAS #企业级
SSD( SATA III PCIE )
M2 超极本的接口标准 MSATA
机械硬盘 HDD 固态硬盘 SSD
容量大价格低 容量小价格贵
抗击打能力弱 抗击打能力强
读写速度慢 读写速度快
数据损坏恢复易 数据恢复难
寿命一直使用 使用期限有一定限制
磁盘的命名方式:
/dev/sda1 #第一块物理硬盘的第一个分区
/dev/sdb3 #第二块物理硬盘的第三个分区
/dev/vdc5 #第三块虚拟硬盘的第5个分区
sd #物理硬盘
vd #虚拟硬盘
磁盘的相关单位和术语
尺寸: 2.5英寸 3.5英寸
数据大小: bit B KB MB GB TB PB EB
单位换算: 1024 1B=8b
转速: RPM 转/每分钟 5400 7200 10k 15k
IOPS 衡量磁盘读写 IO的单位 每秒的输入输出
MBR的位置: 0磁头0磁道1扇区 512字节
446字节 MBR引导记录
64字节4个主分区
2字节分区结束标识符
分区工具:
fdisk #适用于2TB的分区 MBR 只能有4个主分区
gdisk #适用于2TB以上 GPT 128个主分区
2. Fdisk分区
MBR 2T下 只能有4个主分区
[@mm@qls ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 97.5G 0 part /
sr0 11:0 1 4.3G 0 rom /mnt
[root@2021 ~]# 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 18G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 4.3G 0 rom
#显示某块磁盘的分区信息
[root@2021 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 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: 0x99a12600
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
#1. 进行分区 创建分区
[root@2021 ~]# 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):
Command action
d delete a partition #删除分区
l list known partition types #显示分区文件系统类型
m print this menu #菜单
n add a new partition #创建一个新分区
p print the partition table #打印分区表信息
q quit without saving changes #不保存退出
w write table to disk and exit #保存退出
Command (m for help): n #创建分区 #主分区的编号是1-4 逻辑分区从5开始
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #创建主分区
Partition number (1-4, default 1): 1 #主分区的编号
First sector (2048-209715199, default 2048): #扇区的起始位置
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +10G #扇区的结束位置
Partition 1 of type Linux and of size 10 GiB is set
#查看分区
[root@2021 ~]# 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 18G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 10G 0 part
sr0 11:0 1 4.3G 0 rom
#2. 创建文件系统 格式化
[root@2021 ~]# mkfs.xfs /dev/sdb1
mkfs.xfs: /dev/sdb1 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@2021 ~]# mkfs.xfs -f /dev/sdb1
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
#3. 创建挂载点
[root@mm~]# mkdir /abc
#4. 挂载使用
[root@mm~]# mount /dev/sdb1 /abc
[root@mm~]# df -h | grep '/abc‘
/dev/sdb1 1G 39M 5G 1% /abc
#测试是否可用
[root@mm~]# dd if=/dev/zero of=/abc bs=100M count=10
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 10.8088 s, 97.0 MB/s
[root@mm~]# df -h | grep '/abc'
/dev/sdb1 10G 1.1G 9.0G 11% /fdisk01
#5. 实现永久挂载
###第一种方法
[root@mm~]# tail -1 /etc/fstab
/dev/sdb1 /fdisk01 xfs defaults 0 0
[root@mm~]#
[root@mm~]# mount -a #重新挂载/etc/fstab文件中的挂载列表
###第二种方法
[root@2021 ~]# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
###第三种方法
[root@2021 ~]# blkid
/dev/sda1: UUID="fcce261d-0285-4492-85bf-18f3050d90c1" TYPE="xfs"
/dev/sda2: UUID="DaBcBB-B9Jb-kP16-4u00-uTT1-IRHM-g8VZTu" TYPE="LVM2_member"
/dev/sdb1: UUID="403856aa-cb22-49fa-96ea-24f6ee2e52e2" TYPE="xfs"
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="6759ff83-5d16-4815-82d4-4a49111c10c7" TYPE="xfs"
/dev/mapper/centos-swap: UUID="12e4e503-8469-4330-9199-8f338b691c39" TYPE="swap"
#数据是跟着设备走的 目录只是一个挂载点 就是入口
[root@mm~]# umount /dev/sdb1
[root@mm~]# df -h
[root@2021 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 16G 1.5G 92% /
/dev/sda1 1014M 163M 852M 17% /boot
tmpfs 199M 0 199M 0% /run/user/0
[root@mm~]# mount -a (重新挂载)
[root@mm~]# mount -l (强制卸载)
### 3. Gdisk分区
```bash
[root@mm~]# yum install -y gdisk (同上)
4. 磁盘的挂载方式
在Linux系统中,所有的设备必须挂载才能使用
mount #挂载的命令
选项:
-t #指定文件系统 网络协议 nfs
-o #指定挂载的参数
-l #强制卸载
-a #重新挂载/etc/fstab文件中的挂载列表
[root@mm~]# mount -t xfs /dev/sdb1 /fdisk01/
[root@mm~]# mount -o ro /dev/sdb1 /fdisk01/
[root@2021 ~]# tail -3 /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
UUID=fcce261d-0285-4492-85bf-18f3050d90c1 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
#以空白字符为分隔符,分为6列:
第一列: 挂载的设备 挂载的地址 网络设备地址
第二列: 挂载点 挂载的目录 空目录
第三列: 文件系统的类型 xfs 7默认的 ext4 6默认的 nfs gfs
第四列: 挂载的参数 defaults
第五列: 是否允许dump进行备份
0 #不备份
1 #每天备份
2 #不定期备份
第六列: 是否通过fsck命令检查磁盘
0 #不检查
1 #检查 检查顺序 先检查 /
2 #检查顺序
### 5. Swap虚拟内存
```bash
Out of memory
OOM #内存溢出 内存不足
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 133 1625 9 221 1672
Swap: 1023 0 1023
[root@mm~]# swapoff -a
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 132 1627 9 220 1673
Swap: 0 0 0
虚拟内存
#添加一个swap分区
#创建一个1G的分区
[root@mm~]# 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.
[root@mm~]# partprobe #通知内核,系统分区表发生变化
#将这个分区变为swap分区
[root@mm~]# mkswap /dev/sdb3
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=8a9c926b-de0d-4b49-bcb8-39a9c0b834a8
#把这个分区加入到swap
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 77 1819 0 84 1774
Swap: 2047 69 1978
[root@mm~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2097148 71168 -2
[root@mm~]# swapon /dev/sdb3
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 78 1818 0 84 1773
Swap: 3071 69 3002
[root@mm~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2097148 70912 -2
/dev/sdb3 partition 1048572 0 -3
#移除swap
[root@mm~]# swapoff /dev/sdb3
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 78 1818 0 84 1773
Swap: 2047 69 1978
#禁用swap
[root@mm~]# swapoff -a
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 128 1759 9 92 1715
Swap: 0 0 0
#启用swap
[root@mm~]# swapon -a
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 129 1758 9 92 1713
Swap: 2047 0 2047
#生成一个大文件 作为swap
[root@mm~]# dd if=/dev/zero of=/root/swap.txt bs=100M count=10
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 8.33166 s, 126 MB/s
[root@mm~]# ll
total 1024000
-rw-r--r-- 1 root root 1048576000 Aug 3 11:21 swap.txt
[root@mm~]# mkswap swap.txt
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=51e07b8a-971a-47ec-972e-36f8273ec3cd
[root@mm~]# ll
total 1024000
-rw-r--r-- 1 root root 1048576000 Aug 3 11:22 swap.txt
[root@mm~]# file swap.txt
swap.txt: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, UUID=51e07b8a-971a-47ec-972e-36f8273ec3cd
[root@mm~]# chmod 600 swap.txt
[root@mm~]# swapon /root/swap.txt
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 132 727 9 1120 1663
Swap: 3047 0 3047
[root@mm~]# swapoff swap.txt
[root@mm~]# free -m
total used free shared buff/cache available
Mem: 1980 130 729 9 1120 1665
Swap: 2047 0 2047
6. RAID基本介绍
磁盘阵列技术
做磁盘阵列的好处:
1. 获得更高的容量
2. 获得更高的性能
3. 让数据更安全 冗余
如何做RAID:
软件实现 软RAID 不推荐 mdadm
硬件RAID RAID卡实现的 推荐
做RAID什么时候做:
在装系统之前做
RAID的级别:
级别 别名 硬盘数量 容量 性能 容错性
RAID0 条带卷 至少两块 N*单块 读写最快 0
RAID1 镜像卷 只能两块 损失一半 写慢 读一般 50%
RAID5 校验卷 至少3块 浪费一块 读写一般 N分之一 只能坏一块
RAID10 镜像阵列条带卷 至少4块 浪费一半 读写很快 50%
7. LVM概述
逻辑卷管理
PV #物理卷 硬盘 分区
VG #卷组 多个硬盘 多个分区组成
LV #逻辑卷 分区 逻辑分区
PE #基本单元 4MB 一个LV只能分配65534个PE
8. 硬盘故障
[root@mm~]# 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): n
Partition type:
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p):
Using default response p
Selected partition 4
First sector (127928320-209715199, default 127928320):
Using default value 127928320
Last sector, +sectors or +size{K,M,G} (127928320-209715199, default 209715199): +2G
Partition 4 of type Linux and of size 2 GiB is set
Command (m for help): p
Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 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: 0x5b8d3e75
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
/dev/sdb2 20973568 125831167 52428800 5 Extended
/dev/sdb3 125831168 127928319 1048576 83 Linux
/dev/sdb4 127928320 132122623 2097152 83 Linux
/dev/sdb5 20975616 62918655 20971520 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@mm~]#
#准备2G的分区
[root@mm~]# dd if=/dev/zero of=/opt/test.log bs=100M count=21
dd: error writing ‘/opt/test.log’: No space left on device
21+0 records in
20+0 records out
2099183616 bytes (2.1 GB) copied, 3.34918 s, 627 MB/s
[root@mm~]# echo "123" >> /opt/file.txt
-bash: echo: write error: No space left on device #磁盘空间不足
#解决:
检查磁盘空间
[root@mm~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G 6.4G 92G 7% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/sdb1 10G 1.1G 9.0G 11% /fdisk01
/dev/sdb4 2.0G 2.0G 20K 100% /opt
#找到这个大文件 确认好之后在删
[root@mm~]# du -sh /opt/* | grep 'G'
2.0G /opt/test.log
一级一级往下找
[root@mm~]# echo "123" >>/opt/test.txt
-bash: /opt/test.txt: No space left on device
[root@2021 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 16G 1.5G 92% /
/dev/sda1 1014M 163M 852M 17% /boot
tmpfs 199M 0 199M 0% /run/user/0
[root@2021 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 250508 402 250106 1% /dev
tmpfs 253485 1 253484 1% /dev/shm
tmpfs 253485 766 252719 1% /run
tmpfs 253485 16 253469 1% /sys/fs/cgroup
/dev/mapper/centos-root 3235512 105031 3130481 4% /
/dev/sda1 524288 333 523955 1% /boot
tmpfs 253485 1 253484 1% /run/user/0
[root@mm~]# find /opt/ -type d -size +2M | xargs ls -lhd
drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test01
drwxr-xr-x 2 root root 3.8M Aug 3 12:27 /opt/test/test02
[root@mm~]# find /opt/ -type d -size +1M | xargs ls -lhd
drwxr-xr-x 2 root root 1.2M Aug 3 12:25 /opt/test/data01
drwxr-xr-x 2 root root 1.2M Aug 3 12:25 /opt/test/data02
[root@mm~]# ll /opt/test/data01 | wc -l
50001
#找到之后,确认在删除
[root@mm~]# find /opt/test/data01 -type f -delete
[root@mm~]# rm -f /opt/test/test01/*
-bash: /usr/bin/rm: Argument list too long
[root@mm~]# ll /opt/test/test01/ | wc -l
150001