Linux系统存储管理1
一.基本分区
1.磁盘简介
-
名词:磁盘/硬盘/disk是同一个东西,不同于内存的是容量比较大。
-
类型:机械和固态
1.机械:机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。
2.固态:固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘。
-
尺寸:3.5英寸、2.5英寸、1.8英寸
-
接口:早期IDE , 现在SATA
-
转速:5400rpm,7200rpm(常见),10000rpm,15000rpm
-
厂商:西部数据,希捷,三星/日立/金士顿
-
术语:
1.盘片:一块硬盘有若干盘片,每个盘片有可以存储数据的上、下两盘面(Side)。这些盘面堆叠在主轴上高速旋转,它们从上至下从“0”开始依次编号。
2.磁道:每个盘面被划分成许多同心圆,这些同心圆轨迹叫做磁道;磁道从外向内从0开始顺序编号。
3.扇区:将一个盘面划分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区。每个扇区中的数据作为一个单元同时读出或写入。硬盘的第一个扇区,叫做引导扇区。
4.所有盘面上的同一磁道构成一个圆柱,称作柱面
5.图示:
6.命名:
IDE(并口),过去接口,/dev/hda,/dev/hdb
SATA(串口),/dev/sda,/dev/sdb
/dev设备文件目录
sda是一个文件
s代表sata就是串口
d代表磁盘
a第一块7.分区方式:
MBR:
主引导记录(MBR,Master Boot Record)是位于磁盘最前边的一段引导,MBR支持最大的磁盘容量是 <2TB。设计时分配4个分区,如果希望超过4个分区,需放弃主分区,改为扩展分区和逻辑分区。fdisk命令。
GPT:
全局唯一标识分区表(GUIDPartition Table,缩写:GPT)是一个实体硬盘的分区表的结构布局的标准。GPT 支持大于2T的硬盘,支持128个分区
2.管理磁盘
2.1添加磁盘
1.先关闭虚拟机电源
2.编辑虚拟机设置
3.增加磁盘
2.2管理磁盘三部曲
新硬盘:分区(MBR或者GPT) ➡ 格式化/文件系统 Filesystem ➡ 挂载mount
1.查看磁盘信息
//第一种方法
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 7月 31 18:30 /dev/sda
brw-rw----. 1 root disk 8, 1 7月 31 18:30 /dev/sda1
brw-rw----. 1 root disk 8, 2 7月 31 18:30 /dev/sda2
brw-rw----. 1 root disk 8, 16 7月 31 18:30 /dev/sdb
brw-rw----. 1 root disk 8, 32 7月 31 18:30 /dev/sdc
brw-rw----. 1 root disk 8, 48 7月 31 18:30 /dev/sdd
brw-rw----. 1 root disk 8, 64 7月 31 18:30 /dev/sde
brw-rw----. 1 root disk 8, 80 7月 31 18:30 /dev/sdf
//
/dev/sdb
/dev/sdc
/dev/sdd 相当于购买的新磁盘。
//第二种方法
[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 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
sdc 8:32 0 5G 0 disk
sdd 8:48 0 5G 0 disk
sde 8:64 0 5G 0 disk
sdf 8:80 0 5G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
//名称 设备类型 序号 是否可移动设备 大小 是否只读 磁盘或分区 挂载点
2.创建分区
//启动分区工具
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):
//敲击字母“n”键,新建分区
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
//敲击字母“p”键选择主分区,或扩展分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
//敲击数字“1”键或者回车默认1,选择分区号
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
//敲击回车键,选择磁盘开始的扇区
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
//输入分区大小“+1G” 后回车
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
//输入w保存分区信息,自动退出分区工具
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3.刷新分区表
[root@localhost ~]# partprobe /dev/sdb
4.查看分区结果
//第一种方法
[root@localhost ~]# fdisk -l /dev/sdb
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb830b0f4
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
//第二种方法
[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 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
└─sdb1 8:17 0 1G 0 part //划分磁盘完毕,/dev/sdb1
sdc 8:32 0 5G 0 disk
sdd 8:48 0 5G 0 disk
sde 8:64 0 5G 0 disk
sdf 8:80 0 5G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
4.创建文件系统
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
5.挂载mount
[root@localhost ~]# mkdir /mnt/disk1
[root@localhost ~]# mount -t ext4 /dev/sdb1 /mnt/disk1 //-t ext4 可以不用
6.查看挂载信息
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.6M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 5.5G 12G 33% /
/dev/sda1 xfs 1014M 171M 844M 17% /boot
tmpfs tmpfs 98M 28K 98M 1% /run/user/0
/dev/sr0 iso9660 4.4G 4.4G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 ext4 976M 2.6M 907M 1% /mnt/disk1
//dd if=/dev/zero of=/mnt/disk1/1.txt bs=1M count=200
此为抄写一个200M文件到磁盘,可用于检查磁盘使用。
7.重启后的影响
//永久挂载fstab
[root@localhost ~]# vim /etc/fstab
//在最后一行添加编辑信息
/dev/sdb1 /mnt/disk1 ext4 defaults 0 0 //磁盘 挂载点 文件系统类型 默认选项 优先级 优先级
//使用立刻挂载命令
[root@localhost ~]# mount -a
8.磁盘分区数量超过4时,放弃一个主分区,选择扩展分区
//主分区已创建并使用
//1.先卸载
[root@localhost ~]# umount /dev/sdb4
//2.删除分区
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):4
分区 4 已删除
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
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)
正在同步磁盘。
//3.创建扩展分区
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (6293504-10485759,默认为 6293504):
将使用默认值 6293504
Last 扇区, +扇区 or +size{K,M,G} (6293504-10485759,默认为 10485759):
将使用默认值 10485759
分区 4 已设置为 Extended 类型,大小设为 2 GiB
//4.创建逻辑分区
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (6295552-10485759,默认为 6295552):
将使用默认值 6295552
Last 扇区, +扇区 or +size{K,M,G} (6295552-10485759,默认为 10485759):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB
二.逻辑卷LVM
1.LVM目的
管理磁盘的一种方式,性质与基本磁盘无异,特点是随意扩张大小。
2.术语
LVM是 Logical Volume Manager(逻辑卷管理)
PV:物理卷(Physical volume):一块硬盘,或多块硬盘
VG:卷组(Volume Group):一堆磁盘的统称
LV:逻辑卷(Logical Volume):一个逻辑分区,一个分区
3.创建LVM
//1.准备物理磁盘
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 7月 31 18:30 /dev/sda
brw-rw----. 1 root disk 8, 1 7月 31 18:30 /dev/sda1
brw-rw----. 1 root disk 8, 2 7月 31 18:30 /dev/sda2
brw-rw----. 1 root disk 8, 16 7月 31 20:05 /dev/sdb
brw-rw----. 1 root disk 8, 17 7月 31 20:05 /dev/sdb1
brw-rw----. 1 root disk 8, 18 7月 31 20:05 /dev/sdb2
brw-rw----. 1 root disk 8, 19 7月 31 20:05 /dev/sdb3
brw-rw----. 1 root disk 8, 20 7月 31 20:05 /dev/sdb4
brw-rw----. 1 root disk 8, 32 7月 31 18:30 /dev/sdc
brw-rw----. 1 root disk 8, 48 7月 31 18:30 /dev/sdd
brw-rw----. 1 root disk 8, 64 7月 31 18:30 /dev/sde
brw-rw----. 1 root disk 8, 80 7月 31 18:30 /dev/sdf
//2.将物理磁盘,分区,转换成物理卷-PV
[root@localhost ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
//3.查看pv信息
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdc lvm2 --- 5.00g 5.00g
//4.创建卷组-VG
[root@localhost ~]# vgcreate vg1 /dev/sdc
Volume group "vg1" successfully created
//5.查看vg卷组信息
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 1 0 0 wz--n- <5.00g <5.00g
//6.创建逻辑卷-LV
[root@localhost ~]# lvcreate -L 200M -n lv1 vg1
Logical volume "lv1" created.
//7.查看LV信息
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
lv1 vg1 -wi-a----- 200.00m
//8.创建文件系统
[root@localhost ~]# mkfs.ext4 /dev/vg1/lv1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 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: 完成
//9.创建挂载点
[root@localhost ~]# mkdir /mnt/lv1
//10.挂载
[root@localhost ~]# mount /dev/vg1/lv1 /mnt/lv1
//11.查看挂载结果
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.6M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 5.5G 12G 33% /
/dev/sda1 xfs 1014M 171M 844M 17% /boot
tmpfs tmpfs 98M 28K 98M 1% /run/user/0
/dev/sr0 iso9660 4.4G 4.4G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 ext4 976M 2.6M 907M 1% /mnt/disk1
/dev/sdb2 ext4 976M 2.6M 907M 1% /mnt/disk2
/dev/sdb3 ext4 976M 2.6M 907M 1% /mnt/disk3
/dev/mapper/vg1-lv1 ext4 190M 1.6M 175M 1% /mnt/lv1
4.VG管理
//扩大vg,环境:/dev/vg1 容量由5G 扩容到 10G。
//1.创建PV。
[root@localhost ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created.
//2.扩展vg
[root@localhost ~]# vgextend vg1 /dev/sdd
Volume group "vg1" successfully extended
//3.查看vg
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 2 1 0 wz--n- 9.99g <9.80g
5.LV扩容
//1.查看vg空间
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 2 1 0 wz--n- 9.99g <9.80g
//2.LV扩容
[root@localhost ~]# lvextend -L +200M /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 400.00 MiB (100 extents).
Logical volume vg1/lv1 successfully resized.
//3.观察当前容量
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.6M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 5.5G 12G 33% /
/dev/sda1 xfs 1014M 171M 844M 17% /boot
tmpfs tmpfs 98M 28K 98M 1% /run/user/0
/dev/sr0 iso9660 4.4G 4.4G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 ext4 976M 2.6M 907M 1% /mnt/disk1
/dev/sdb2 ext4 976M 2.6M 907M 1% /mnt/disk2
/dev/sdb3 ext4 976M 2.6M 907M 1% /mnt/disk3
/dev/mapper/vg1-lv1 ext4 190M 1.6M 175M 1% /mnt/lv1
//4.FS扩容
[root@localhost ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/vg1/lv1 is now 409600 blocks long.
//5.查看当前容量
[root@localhost ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 470M 0 470M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 8.6M 478M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 5.5G 12G 33% /
/dev/sda1 xfs 1014M 171M 844M 17% /boot
tmpfs tmpfs 98M 28K 98M 1% /run/user/0
/dev/sr0 iso9660 4.4G 4.4G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 ext4 976M 2.6M 907M 1% /mnt/disk1
/dev/sdb2 ext4 976M 2.6M 907M 1% /mnt/disk2
/dev/sdb3 ext4 976M 2.6M 907M 1% /mnt/disk3
/dev/mapper/vg1-lv1 ext4 384M 2.3M 360M 1% /mnt/lv1 //成功扩容
6.命令汇总
三.分区的区别
四.交换分区管理Swap
1.简介
作用: ‘提升’ 内存的容量,防止OOM(Out Of Memory),推荐设置交换分区大小为内存的2倍。
生产时,大于 4GB 而小于 16GB 内存的系统,最小需要 4GB 交换空间;
大于 16GB 而小于 64GB 内存的系统,最小需要 8GB 交换空间;
大于 64GB 而小于 256GB 内存的系统,最小需要 16GB 交换空间。
2.查看当前交换分区
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 972 565 82 15 323 250
Swap: 2047 130 1917
3.增加交换分区
//1.准备分区
[root@localhost ~]# fdisk /dev/sdd
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xda13a311 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# partprobe /dev/sdd
[root@localhost ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 8月 1 08:36 /dev/sda
brw-rw----. 1 root disk 8, 1 8月 1 08:36 /dev/sda1
brw-rw----. 1 root disk 8, 2 8月 1 08:36 /dev/sda2
brw-rw----. 1 root disk 8, 16 8月 1 08:36 /dev/sdb
brw-rw----. 1 root disk 8, 17 8月 1 08:36 /dev/sdb1
brw-rw----. 1 root disk 8, 18 8月 1 08:36 /dev/sdb2
brw-rw----. 1 root disk 8, 19 8月 1 08:36 /dev/sdb3
brw-rw----. 1 root disk 8, 20 8月 1 08:36 /dev/sdb4
brw-rw----. 1 root disk 8, 21 8月 1 08:36 /dev/sdb5
brw-rw----. 1 root disk 8, 32 8月 1 08:36 /dev/sdc
brw-rw----. 1 root disk 8, 48 8月 1 09:10 /dev/sdd
brw-rw----. 1 root disk 8, 49 8月 1 09:10 /dev/sdd1
brw-rw----. 1 root disk 8, 64 8月 1 08:36 /dev/sde
brw-rw----. 1 root disk 8, 80 8月 1 08:36 /dev/sdf
//2.格式化
[root@localhost ~]# mkswap /dev/sdd1
mkswap: /dev/sdd1: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=3e06438e-0d4b-4351-8df8-0ce9c84f9f52
//3.挂载
[root@localhost ~]# swapon /dev/sdd1
//4.验证
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 972 516 157 15 299 300
Swap: 3071 199 2872