Linux之存储管理

存储管理

基本分区管理

分区(基本分区)---------->格式化------------>挂载

1.查看新设备是否发现

[root@localhost ~]# ll /dev/sd* //查看Kernel识别到的设备
brw-rw----. 1 root disk 8, 0 7月 7 16:34 /dev/sda
brw-rw----. 1 root disk 8, 1 7月 7 16:34 /dev/sda1
brw-rw----. 1 root disk 8, 2 7月 7 16:34 /dev/sda2
brw-rw----. 1 root disk 8, 3 7月 7 16:34 /dev/sda3
主设备号:表示为同一种设备类型,或者是说kernel使用的是相同的驱动
从设备号:在同一类型设备中内核找到他们的一个顺序的编号
[root@server0 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 10G 0 disk
└─vda1 253:1 0 10G 0 part /
vdb 253:16 0 10G 0 disk
vdc 252:32 0 8G 0 disk

2.使用工具分区

fdisk

MBR 14个分区(4个主分区,扩展分区,逻辑分区)

1.创建分区

fdisk /dev/vdb

Command (m for help): m---------------------------------获得帮助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
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
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n---------------------------------添加分区
Command action
e extended ------------------------------------------------添加主分区
p primary partition (1-4) ------------------------------添加扩展分区

fdisk -l /dev/vdb

partprobe /dev/vdb

ll /dev/vdb*

80/214
brw-rw----. 1 root disk 253, 16 11月 30 15:13 /dev/vdb
brw-rw----. 1 root disk 253, 17 11月 30 15:13 /dev/vdb1
brw-rw----. 1 root disk 253, 18 11月 30 15:13 /dev/vdb2

gdisk

GPT 128个主分区

1.创建分区

gdisk -l /dev/vdc

gdisk /dev/vdc

partprobe /dev/vdc

ll /dev/vdc*

brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/vdc
brw-rw----. 1 root disk 253, 33 Jun 6 17:38 /dev/vdc1
brw-rw----. 1 root disk 253, 34 Jun 6 17:38 /dev/vdc2

parted

-s 以脚本方式执行parted命令,不提示用户进行确认。
mklabel 类型 设置硬盘分区表类型。常见的类型有msdos(即MBR)、gpt等。
mkpart primary 起始容量 截止容量 创建主分区。默认容量单位是M,可用单位有K、M、G、T、P、E
mkpart extend 起始容量 截止容量 创建扩展分区。默认容量单位是M,可用单位有K、M、G、T、P、E
mkpart logical 起始容量 截止容量 创建逻辑分区。默认容量单位是M,可用单位有K、M、G、T、P、E
p 即print,显示此硬盘的分区表。例:parted -s /dev/sdb p
rm 数字 删除指定的分区。例:parted -s /dev/sdb rm 1
说明:msdos(也称MBR分区表)分区表最多只能分4个主分区,只能管理2TB以内的硬盘。 GPT分区表可以创建多达128个主分区,可以管理2TB以上的硬盘。

1.创建分区

设置分区表类型为 msdos parted -s /dev/sdb mklabel msdos

创建第1个主分区,容量是2GB parted -s /dev/sdb mkpart primary 1 2G

创建第2个主分区,使用所有剩余空间 parted -s /dev/sdb mkpart primary ‘2G -1’

查看sdb硬盘的分区信息 fdisk -l |grep sdb

cfdisk

cfdisk用法 cfdisk 磁盘设备 例如:cfdisk /dev/sdc
cfdisk的常用命令 红色字是快捷键 help帮助,new创建分区,delete删除分区,print打印分区表,quit退出,Write保存,Unit容量单位type类型(83――Linux分区,82――swap分区,8e――LVM分区,fd—-raid分区),logical逻辑分区
1、 用cfdisk命令给sdd硬盘创建2个主分区,一个3G,另一个使用所有剩余空间(即2G)。
查看分区表 用cfdisk给sdc硬盘分区 fdisk -l |grep sd 或 lsblk cfdisk /dev/sdc 参考操作方法如下
创建第1个3G的主分区 创建第2个主分区 n新建==>p主分区==>3G回车==>beginning回车==>W保存==>yes回车 选free空闲空间==> n新建==>p主分区==>直接回车==>W保存==>yes回车==>q键退出
2、 用mkfs.ext4格式化sdd硬盘的2个分区
格式化此分区ext4文件系统 格式化此分区ext4文件系统 mkfs.ext4 /dev/sdd1 mkfs -t ext4 /dev/sdd2
3、 创建挂载点
在根目录下创建b1和b2目录 mkdir -pv /d1 /d2
4、 手动挂载sdd1、sdd2分区到/d1、/d2目录
将sdd1挂载到/d1目录 将sdd2挂载到/d2目录 依次查看2个目录的文件列表 查看已挂载的设备状态 查看硬盘空间使用状态 mount /dev/sdb1 /d1 mount /dev/sdb2 /d2 ls /d1 /d2 mount df -hT
5、 写入文件测试
在/b1目录下创建3个空文件 复制3个文件到/d2目录中 依次查看2个目录的文件列表 touch /d1/{a,b,c,d} cp /etc/{hosts,passwd,group} /d2/ ls /d1 /d2
6、 配置fstab自动功能
依次卸载sdd1、sdd2分区 查看硬盘空间使用状态 依次查看2个目录的文件列表 编辑fstab自动挂载配置文件 umount /dev/sdd1 /dev/sdd2 df -hT ls /d1 /d2 vi /etc/fstab 添加下行的内容
sdd1的挂载设置 sdd2的挂载设置 /dev/sdd1 /d1 ext4 defaults,noexec 0 0 /dev/sdd2 /d2 ext4 defaults 0 0
fstab文件功能说明 设备 挂载点 类型 选项 dump备份 是否fsck
7、 做自动挂载测试
查看挂载状态 挂载fstab中的所有设备 mount mount -av df -hT ls /d1 /d2
项目任务:参考sdd硬盘分区、格式化、挂载的方法,对sde硬盘进行管理,平均分成3个分区。

3.格式化(创建文件系统)

Windwos: FAT,FAT32,NTFS
Linux:  VFAT,Ext2,Ext3,Ext4,GFS,GFS2
[root@ever ~]# mkfs.ext4 /dev/sdb1 //100M的分区
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0) //文件系统分配最小单元,单位是B,分区大小不同,默
认大小也不同
Fragment size=1024 (log=0)
25688 inodes, 102400 blocks
9765 blocks (5.00%) reserved for the super user
[root@ever ~]# mkfs.ext4 /dev/sdb2 //1G的分区
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2) //块大小4096B (4K)
Fragment size=4096 (log=2)
65536 inodes, 262144 blocks
12207 blocks (5.00%) reserved for the super user
[root@ever ~]# mkfs -t xfs /dev/vdb2
[root@ever ~]# mkfs.xfs /dev/vdb2
block size: 文件存储的最小单元

4.挂载

建立挂载点

mkdir /mnt/disk1 //建立挂载点,建议空目录

mkdir /mnt/disk2

==手动: 临时
[root@ever ~]# mount -o ro -t ext4 /dev/sdb1 /mnt/disk1
[root@ever ~]# mount /dev/sdb2 /mnt/disk2
[root@ever ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
81/214
/dev/sdb1 97M 5.6M 87M 7% /mnt/disk1
/dev/sdb2 1008M 34M 924M 4% /mnt/disk2
[root@ever ~]# mount
/dev/sdb1 on /mnt/disk1 type ext4 (ro)
/dev/sdb2 on /mnt/disk2 type ext4 (rw)

==开机自动挂载 /etc/fstab、/etc/rc.local
1./etc/rc.local 进入系统前的最后一个执行脚本
mount /dev/sdb1 /opt
2.[root@ever ~]# umount /dev/sdb1
[root@ever ~]# blkid
/dev/sdb1: UUID="653a949d-ebf5-4543-9f67-4b71cbe5cf2b" TYPE="ext4"
/dev/sdb2: UUID="7ca49b1d-5359-413f-83aa-ed51c7421877" TYPE="ext4"
[root@ever ~]# vim /etc/fstab
UUID="653a949d-ebf5-4543-9f67-4b71cbe5cf2b" /mnt/disk1 ext4 ro,noauto 0 0
UUID="7ca49b1d-5359-413f-83aa-ed51c7421877" /mnt/disk2 ext4 defaults 0 0
[root@ever ~]# mount -a //读取/etc/fstab并挂载

逻辑卷LVM

逻辑卷-------->文件系统--------->mount

一、创建逻辑卷

创建物理卷PV(整个硬盘或者是分区[建立在raid之上])
[root@ever ~]# pvcreate /dev/sdc

创建卷组VG
[root@ever ~]# vgcreate vg01 /dev/sdc
创建VG时,指定PE的size(默认为4M)
[root@ever ~]# vgcreate -s 64M vg02 /dev/sdd //-s 指定的PE大小,2的幂数

创建逻辑卷LV
[root@ever ~]# lvcreate -L 400M -n lv02 vg01
[root@ever ~]# lvcreate -l 200 -n lv03 vg01
[root@ever ~]# lvscan
ACTIVE '/dev/vg02/lv02' [400.00 MB] inherit
-L : 指定尺寸
-l : 指定PE(physical extend)个数

[root@ever ~]# lvcreate -l 50%VG -n lv02 vg01 //总空间的50%

[root@ever ~]# lvcreate -l 100%FREE -n lv03 vg01 //剩余空间的100%

创建文件系统并挂载
[root@ever ~]# mkfs.ext4 /dev/vg01/lv01
[root@ever ~]# mkfs.xfs /dev/vg01/lv02
[root@ever ~]# vim /etc/fstab
/dev/vg01/lv01 /mnt/lv01 auto defaults 0 0
/dev/vg01/lv02 /mnt/lv02 xfs defaults 0 0
[root@ever ~]# mkdir /mnt/lv01
[root@ever ~]# mkdir /mnt/lv02
[root@ever ~]# mount -a
[root@ever ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01
396672 10544 365648 3% /mnt/lv01

二、卷组管理

第一种情况:在线扩大vg

pv
[root@ever ~]# pvcreate /dev/sdb3

vgextend
[root@ever ~]# vgextend vg01 /dev/sdb3
[root@ever ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 1.88g 1.00g

第二种情况:在线减小vg

1.查看当前的VG中PV的使用情况
[root@ever ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdc1 vg02 lvm2 a-- 196.00m 96.00m
/dev/vdc2 vg02 lvm2 a-- 196.00m 196.00m
/dev/vdc3 vg02 lvm2 a-- 396.00m 396.00m

将数据移动到同一卷组的其它PV(数据迁移会增加IO负担)
a.指定设备移动
[root@ever ~]# pvmove /dev/vdc1 /dev/vdc2
b.不指定设备移动
[root@ever ~]# pvmove /dev/vdc2
[root@ever ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdc1 vg02 lvm2 a-- 196.00m 96.00m
/dev/vdc2 vg02 lvm2 a-- 196.00m 196.00m
/dev/vdc3 vg02 lvm2 a-- 396.00m 396.00m
3.缩小VG
[root@ever ~]#vgreduce vg02 /dev/vdc3
Removed "/dev/vdc3" from volume group "vg02"
[root@ever ~]# vgs
[root@ever ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdc1 vg02 lvm2 a-- 196.00m 96.00m
/dev/vdc2 vg02 lvm2 a-- 196.00m 196.00m
/dev/vdc3 lvm2 a-- 400.00m 400.00m

三、在线扩展逻辑卷

第一种情况:

lv所在的卷组还有足够用于扩展的空间
[root@ever ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv02 vg02 -wi-ao 400.00M
lv03 vg02 -wi-ao 800.00M
[root@ever ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg02 1 2 0 wz--n- 100.00G 98.82G
[root@ever ~]# lvextend -L 1G /dev/vg02/lv02
[root@ever ~]# lvextend -L +1G /dev/vg02/lv03
[root@ever ~]# lvscan
ACTIVE '/dev/vg02/lv02' [1.00 GB] inherit
ACTIVE '/dev/vg02/lv03' [800.00 MB] inherit
[root@ever ~]# df -Th
EXT2/3/4文件系统扩展:
[root@ever ~]# resize2fs /dev/vg02/lv02
[root@ever ~]# df -Th
XFS文件系统扩展:
[root@ever ~]# xfs_growfs /dev/vg1/lv2
[root@ever ~]# df -Th

第二种情况:

lv所在的卷组没有足够的空间
[root@ever ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 4 0 wz--n- 9.97G 0
vg02 1 2 0 wz--n- 100.00G 98.21G
[root@ever ~]# pvcreate /dev/sdd //建立PV
[root@ever ~]# vgextend vg02 /dev/sdd //扩展卷组
[root@ever ~]# lvextend -L 100T /dev/vg02/lv02  //扩展逻辑卷
[root@ever ~]# resize2fs /dev/vg02/lv02  //扩文件系统

四、删除LV,VG

停止应用程序对该相应文件系统的访问

卸载文件系统,包括/etc/fstab

lvremove

vgremove

pvremove

处于不激活的状态能直接删掉,处于激活的状态会询问你是否确实删除

[root@ever ~]# umount /dev/vg01/lv01
[root@ever ~]# lvremove /dev/vg01/lv01
[root@ever ~]# lvremove -f /dev/vg01/lv01
[root@ever ~]# vgremove vg01
[root@ever ~]# pvremove /dev/sdb{1,2,3,5}

激活VG/LV[了解] :

[root@ever ~]# lvchange -an /dev/vg01/lv01 //单独关闭激活某一个卷
[root@ever ~]# lvscan
inactive '/dev/vg01/lv01' [128.00 MiB] inherit
ACTIVE '/dev/vg01/lv02' [128.00 MiB] inherit
ACTIVE '/dev/vg01/lv03' [128.00 MiB] inherit
[root@ever ~]# vgchange -an vg01 //关闭激活某一个卷组,会影响下面的所有卷
0 logical volume(s) in volume group "vg01" now active
[root@ever ~]# lvscan
inactive '/dev/vg01/lv01' [128.00 MiB] inherit
inactive '/dev/vg01/lv02' [128.00 MiB] inherit
inactive '/dev/vg01/lv03' [128.00 MiB] inherit
[root@ever ~]# vgchange -ay(激活) vg01
[root@ever ~]# lvscan
ACTIVE '/dev/vg01/lv01' [128.00 MiB] inherit
ACTIVE '/dev/vg01/lv02' [128.00 MiB] inherit
ACTIVE '/dev/vg01/lv03' [128.00 MiB] inherit

五、逻辑卷快照snapshot

逻辑卷的快照只拷贝元数据,速度是非常快的,且逻辑卷做完快照后,对原卷的任何操作

都不影响快照卷

用途:应用于mysql的一致性的备份/恢复

锁表————快照————解锁,整个过程花费的时间是比较少的,且锁表之后不影响查询,只是不能写

cow技术 copy on write

准备一些数据到原卷中

[root@kvm1 ~]# cp /etc/passwd /etc/group /etc/hosts anaconda-ks.cfg /etc/shadow /mnt/lv01/
86/214

实现快照

[root@ever ~]# lvscan
ACTIVE '/dev/vg1/lv1' [12.00 GiB] inherit
[root@ever ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy%Sync Convert
lv1 vg1 -wi-ao--- 12.00g
[root@ever ~]# lvcreate -s -L 100M -n lv01-snap /dev/vg01/lv01 //-s是快照
注:100M:快照卷所使用的空间是和原卷是同一卷组的空间
[root@ever ~]# lvscan
ACTIVE Original '/dev/vg1/lv1' [12.00 GiB] inherit/usr/local/mysql/data
ACTIVE Snapshot '/dev/vg1/lv1-snap' [104.00 MiB] inherit

挂载快照,尽量使用ro的方式,将不会破坏快照卷中的数据

[root@ever ~]# mkdir /mnt/lv01-snap
EXT2/3/4:
[root@ever ~]# mount -o ro /dev/vg01/lv01-snap /mnt/lv01-snap
XFS:
[root@ever ~]# mount -o nouuid,norecovery,ro /dev/vg1/lv1-snap /mnt/lv1-snap/
[root@ever ~]# df -ThP //T类型,P在一行显示
文件系统 类型 容量 已用 可用 已用%% 挂载点
/dev/mapper/vg1-lv1 ext4 12G 954M 11G 9% /mnt/lv01
/dev/mapper/vg1-lv1--snap ext4 12G 954M 11G 9% /mnt/lv01-snap
[root@ever ~]# ls /mnt/lv01
anaconda-ks.cfg hosts install.log lost+found network passwd shadow
[root@ever ~]#
[root@ever ~]# ls /mnt/lv01-snap/
anaconda-ks.cfg hosts install.log lost+found network passwd shadow

快照原理:

[root@ever ~]# lvscan
ACTIVE Original '/dev/vg1/lv1' [12.00 GiB] inherit
ACTIVE Snapshot '/dev/vg1/lv1-snap' [104.00 MiB] inherit
[root@ever ~]# ll /dev/mapper/vg1-lv1*
lrwxrwxrwx 1 root root 7 6月 10 14:56 /dev/mapper/vg1-lv1 -> ../dm-2
lrwxrwxrwx 1 root root 7 6月 10 14:56 /dev/mapper/vg1-lv1-real -> ../dm-5
lrwxrwxrwx 1 root root 7 6月 10 14:56 /dev/mapper/vg1-lv1--snap -> ../dm-4
lrwxrwxrwx 1 root root 7 6月 10 14:56 /dev/mapper/vg1-lv1--snap-cow -> ../dm-6
[root@ever ~]# dmsetup ls --tree
vg01-lv01 (253:2)
└─vg1-lv01-real (253:5)
├─ (252:48)
└─ (252:32)
vg01-lv01--snap (253:4)
87/214
├─vg01-lv01--snap-cow (253:6)
│ └─ (252:48)
└─vg01-lv01-real (253:5)
├─ (252:48)
└─ (252:32)

注意事项:

快照卷和原卷使用同一VG空间

快照卷大小问题 (快照卷空间使用完将自动失效)

a. 根据数据变化速率

b. 设置初始大小,自动增长

[root@ever ~]# vim /etc/lvm/lvm.conf
snapshot_autoextend_threshold = 70 //快照自动增长的阈值
snapshot_autoextend_percent = 20 //达到之后自动增长原来的百分之20
centos7
[root@kvm1 lv01]# systemctl start lvm2-monitor
[root@kvm1 lv01]# systemctl enable lvm2-monitor
centos6
[root@ever ~]# service lvm2-monitor start
[root@ever ~]# chkconfig lvm2-monitor on

交换分区swap

增加交换分区

作用: ‘提升‘ 内存的容量,防止OOM(Out Of memory),但是毕竟是用硬盘做的,永远不能替换内存

一、查看现有的交换分区

[root@ever ~]# free -m
total used free shared buffers cached
Mem: 1010 874 135 0 51 560 //物理内存
-/+ buffers/cache: 262 747
Swap: 1023 0 1023 //交换分区的内存
[root@ever ~]# swapon -s //查看交换分区
Filename Type Size Used Priority
/dev/mapper/vg01-lv_swap partition 1048568 0 -1
[root@ever ~]# cat /proc/swaps

二、增加交换分区

方法一:

使用分区或逻辑卷创建

建立分区或LVM

[root@ever ~]# fdisk /dev/sda
88/214
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap / Solaris)
Command (m for help): p
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 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 identifier: 0x948febe7
Device Boot Start End Blocks Id System
/dev/sda1 2048 2448 200+ 83 Linux
/dev/sda2 2449 821648 409600 83 Linux
/dev/sda3 821649 2460048 819200 82 Linux swap / Solaris
[root@ever ~]# partx -a /dev/sda
[root@ever ~]# fdisk l /dev/sda //交换分区的id值为82
/dev/sda7 27423862 28423862 500000+ 82 Linux swap / Solaris

初始化交换分区

[root@ever ~]# mkswap /dev/sda7

激活交换分区

[root@ever ~]# vim /etc/rc.local
swapon /dev/sda7
[root@ever ~]# vim /etc/fstab
/dev/sda7 swap swap defaults 0 0
[root@ever ~]# swapon -a
[root@ever ~]# swapon -s
Filename Type Size Used Priority
/dev/mapper/vg01-lv_swap partition 1048568 0 -1
/dev/sda7 partition 499992 0 -2
[root@ever ~]# free -m
total used free shared buffers cached
Mem: 482 369 112 0 15 82
-/+ buffers/cache: 272 210
Swap: 1391 4 1387

方法二:

使用文件创建

[root@ever ~]# dd if=/dev/zero of=/swap1.img bs=1M count=512 //单位1M,一共512块
[root@ever ~]# mkswap /swap1.img -f //-f强制
Setting up swapspace version 1, size = 536866 kB
[root@ever ~]# vim /etc/fstab
/swap1.img swap swap defaults 0 0
[root@ever ~]# swapon -a
[root@ever ~]# swapon -s
Filename Type Size Used Priority
/dev/mapper/vg01-lv_swap partition 1048568 0 -1
/dev/sda7 partition 499992 0 -2
/swap1.img file 524280 0 -3
[root@ever ~]# free -m
total used free shared buffers cached
Mem: 482 370 111 0 15 82
-/+ buffers/cache: 272 209
Swap: 1891 4 1887

三、测试交换分区

[root@ever ~]# dd </dev/zero > /aaa.txt bs=1G count=2
[root@ever ~]# swapon -s

四、对交换分区调优

多个交换分区分布在不同的磁盘,挂载时,使用相同的优先级

[root@ever ~]# vim /etc/fstab
/dev/sda3 swap swap defaults,pri=1 0 0
/file1 swap swap defaults,pri=1 0 0
[root@ever ~]# swapoff -a
[root@ever ~]# swapon -a
[root@ever ~]# dd </dev/zero > /aaa.txt bs=1G count=2
[root@ever ~]# swapon -s

磁盘阵列RAID

RAID(Redundant Arrays of Inexpensive Disks)

RAID:廉价磁盘冗余阵列

作 用:容错、提升读写速率

RAID类型 个数 利用率 优缺点

---------------------------------------------

RAID0 条带集 2+ 100% 读写速率快,不容错

RAID1 镜像集 2+ 50% 读写速率一般,容错

RAID5 带奇偶校验条带集 3+ (n-1)/n 读写速率快,容错,允许坏一块

RAID6 带奇偶双校验条带集 4+ (n-2)/n 读写快,容错,允许坏两块

RAID01

RAID10 RAID1的安全+RAID0的高速 4 50% 读写速率快,

容错

RAID50 RAID5的安全+RAID0的高速 6 (n-2)/n 读写速率快,容错

RAID60 RAID6的安全+RAID0的高速 8 (n-4)/n 读写速率快,容错

一、不同场景RAID的使用

RAID 实现方式

硬RAID: 需要RAID卡,有自己的CPU,处理速度快,分为有电池和无电池的

软RAID: 通过操作系统实现,比如Windows、Linux

二、RAID5 (3块硬盘) + 热备(1块硬盘)

准备4块硬盘

[root@ever ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 48 Jan 13 16:07 /dev/sdd
brw-rw---- 1 root disk 8, 64 Jan 13 16:07 /dev/sde

brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdf
brw-rw---- 1 root disk 8, 80 Jan 13 16:07 /dev/sdg

创建RAID

[root@ever ~]# yum -y install mdadm //确保mdadm命令可用
[root@ever ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{d,e,f,g}
mdadm: array /dev/md0 started.
-C 创建RAID
/dev/md0 第一个RAID设备
-l5  RAID5
-n RAID成员的数量
-x 热备磁盘的数量

格式化,挂载

[root@ever ~]# mkfs.ext4 /dev/md0 md0在RAID上
[root@ever ~]# mkdir /mnt/raid5
[root@ever ~]# mount /dev/md0 /mnt/raid5
[root@ever ~]# for i in {1..50}; do cp -rf /etc /mnt/raid5/etc${i}; done

查看RAID信息

[root@ever ~]# mdadm -D /dev/md0 //-D 查看详细信息
/dev/md0:
Version : 1.2
Creation Time : Mon Jan 13 16:28:47 2014
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jan 13 16:34:51 2014
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Number Major Minor RaidDevice State
0 8 48 0 active sync /dev/sdd
1 8 64 1 active sync /dev/sde
4 8 80 2 active sync /dev/sdf
3 8 96 - spare /dev/sdg(系统选择的热备盘)
[root@localhost ~]# mdadm -Ds -Ds 显示扫描
ARRAY /dev/md0 metadata=1.2 name=sxl1.com:0 UUID=c6761621:8878498f:f5be209e
[root@raid ~]# time dd if=/dev/zero of=/file1 bs=1M count=500
[root@raid ~]# time dd if=/dev/zero of=/mnt/raid5/file1 bs=1M count=500

设置RAID开机生效

[root@ever ~]# mdadm -Ds > /etc/mdadm.conf

模拟一块硬盘损坏,并移除

终端一:

[root@ever ~]# watch -n 0.5 'mdadm -D /dev/md0' //watch持续查看

终端二:

[root@ever ~]# mdadm /dev/md0 -f /dev/sde -r /dev/sde //模拟坏了并移除
-f --fail
-r --remove

恢复之后:

...
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
3 8 64 1 active sync /dev/sde
4 8 48 2 active sync /dev/sdd

为md0添加新的热备盘(可以加多块)

[root@localhost ~]# mdadm /dev/md0 -a /dev/sdc
mdadm: added /dev/sdc
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdf
mdadm: added /dev/sdf
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
...
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
3 8 64 1 active sync /dev/sde
4 8 48 2 active sync /dev/sdd
5 8 32 - spare /dev/sdc
6 8 80 - spare /dev/sdf

===删除raid

[root@localhost ~]# umount /dev/md0
[root@localhost ~]# mdadm -S /dev/md0 //停止
[root@localhost ~]# rm -rf /dev/md0
[root@localhost ~]# mdadm --zero-superblock /dev/sdb1
[root@localhost ~]# mdadm --zero-superblock /dev/sdb2
[root@localhost ~]# mdadm --zero-superblock /dev/sdb3

[root@localhost ~]# rm -rf /etc/mdadm.conf

[root@localhost ~]# mdadm -A /dev/md0 /dev/sdb{1,2,3} 停止之后再激活

mdadm选项:
-s --scan
-S --stop
-D --detail
-C --create
-f --fail
-r --remove
104/214
-n --raid-devices=3
-x --spare-devices=1
-l --level=5
-A 停止之后重新激活

-a 添加热备盘

参考:

Update Time : Mon Aug 4 22:47:47 2014
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 3% complete
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 3df9624c:138a5b3e:2f557132:59a43d04
Events : 41
Number Major Minor RaidDevice State
0 252 16 0 active sync /dev/sdb
3 252 64 1 spare rebuilding /dev/sde
4 252 48 2 active sync /dev/sdd

RAID+lv

实验要求:

分5个分区 创建一个raid5 和 一个raid0

将raid5和raid0做成lv0

实现lv0的自动挂载

删除lv 删除raid5和raid0

1、分区

2、创建md0和md5

mdadm -C /dev/md5 -l 5 -n 3 /dev/sdb{1,2,3}
mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb{5,6}
mdadm -Ds

3、设置开机生效

vim /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf

4、将md0和md5做成pv,再做vg,最后做lv

pvcreate /dev/md5
pvcreate /dev/md0
vgcreate vg0 /dev/md0 /dev/md5
lvcreate -L 400M -n lv0 vg0
lvs

5、创建文件系统

mkfs.ext4 /dev/vg0/lv0

6、挂载

mount /dev/vg0/lv0 /mnt/
df -Th
vim /etc/rc.local

7、删除raid0和raid5

umount /mnt/
lvremove /dev/vg0/lv0
vgremove vg0
pvremove /dev/md0 /dev/md5
mdadm -S /dev/md0
mdadm -S /dev/md5
rm -rf /dev/md5
rm -rf /dev/md0
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
mdadm --zero-superblock /dev/sdb5
mdadm --zero-superblock /dev/sdb6
rm -rf /etc/mdadm.conf

raid10

[root@localhost ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 8月 3 16:25 /dev/sda
brw-rw---- 1 root disk 8, 16 8月 3 16:25 /dev/sdb
brw-rw---- 1 root disk 8, 32 8月 3 16:25 /dev/sdc
brw-rw---- 1 root disk 8, 48 8月 3 16:25 /dev/sdd
brw-rw---- 1 root disk 8, 64 8月 3 16:25 /dev/sde
[root@localhost ~]# mdadm -C /dev/md1 -l1 -n2 /dev/sda /dev/sdb
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost ~]# ll /dev/md1
brw-rw---- 1 root disk 9, 1 8月 3 19:45 /dev/md1
[root@localhost ~]# mdadm -C /dev/md2 -l1 -n2 /dev/sd{c,d}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
[root@localhost ~]#
[root@localhost ~]# ll /dev/md*
brw-rw---- 1 root disk 9, 1 8月 3 19:45 /dev/md1
brw-rw---- 1 root disk 9, 2 8月 3 19:45 /dev/md2
[root@localhost ~]# mdadm -C /dev/md0 -l0 -n2 /dev/md1 /dev/md2
mdadm: /dev/md1 appears to contain an ext2fs file system
size=2095104K mtime=Wed Aug 3 16:05:26 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# ll /dev/md0
brw-rw---- 1 root disk 9, 0 8月 3 19:46 /dev/md0
[root@localhost ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
130816 inodes, 523264 blocks
26163 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]#
[root@localhost ~]# mount /dev/md0 /mnt/raid^C
[root@localhost ~]# mkdir /mnt/raid10
[root@localhost ~]# mount /dev/md0 /mnt/raid10/
[root@localhost ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda2 7923120 696364 6817620 10% /
tmpfs 122076 0 122076 0% /dev/shm
/dev/vda1 194241 25700 158301 14% /boot
/dev/md0 2027408 3072 1919684 1% /mnt/raid10
[root@localhost ~]#
[root@master ~]# mdadm -C /dev/md10 -l10 -n4 /dev/sda{1,2,3,5}

raid50

[root@kvm1 ~]# mdadm -C /dev/md51 -l5 -n3 /dev/sda{1,2,3}
[root@kvm1 ~]# mdadm -C /dev/md52 -l5 -n3 /dev/sda{5,6,7}
[root@kvm1 ~]#
[root@kvm1 ~]# ll /dev/md51 /dev/md52
brw-rw---- 1 root disk 9, 51 Aug 8 09:20 /dev/md51
brw-rw---- 1 root disk 9, 52 Aug 8 09:21 /dev/md52
[root@kvm1 ~]# mdadm -C /dev/md50 -l0 -n2 /dev/md51 /dev/md52
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md50 started.
[root@kvm1 ~]# mdadm -Ds >> /etc/mdadm.conf
[root@kvm1 ~]# mkfs.xfs /dev/md50
[root@kvm1 ~]# mkdir /mnt/raid50
[root@kvm1 ~]# mount /dev/md50 /mnt/raid50

磁盘容量配额

quota的磁盘配额可以限制用户的硬盘可用空间或最大创建文件数量,并且还有软/硬限制的区别:

soft软限制:当达到软限制时会提示用户,但允许用户在规定期限内继续使用。

hard硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。

block块:限制用户能使用的容量。

inode索引号:限制用户能创建的文件数量

应用场合:

公司内部的文件共享服务,网络云环境中网盘(百度网盘、微云)空间限制。广泛应用在云存储、文件共享、邮件、Web网站等服务器。

磁盘配额实验流程:

(只有root用户才能设置quota限额参数)

0、临时关闭Selinux安全功能:setenforce 0 查状态:getenforce

1、对磁盘分区指定quota选项(usrquota,grpquota):手动mount或更改fstab文件再挂载

3、扫描并生成quota配置文件:quotacheck -cvug 挂载点

4、开启quota配额方案:quotaon 挂载点

2、创建用户、组

5、为用户、组设置配额参数:edquota [-u -g]

6、做文件写入测试,验证配额是否生效:touch dd cp……

7、查看当前用户的quota使用状态:quota

root用户查看某个用户的quota使用状态:quota -u 用户名

查看quota软件的工作状态:quotastats

quota精简版本

说明:以下是对sdf硬盘创建一个主分区,然后对这个分区的文件系统做quota磁盘配额控制。

lsblk    显示块设备
parted  -s  /dev/sdf   mklabel  msdos    设置分区表格式标签为msdos(即MBR分区表)
parted  -s  /dev/sdf   mkpart  primary  '1  -1 '    创建主分区,使用所有容量
lsblk    显示块设备
mkfs.ext4   /dev/sdf1     格式化sdf1分区为ext4文件系统
mkdir  -pv  /f1     创建挂载点目录
mount  -o  usrquota,grpquota  /dev/sdf1   /f1     手动挂载sdf1设备,并使用磁盘配额功能
setenforce  0     临时关闭Selinux安全功能
getenforce        查selinux的工作状态
quotacheck  -cvug   /f1     生成quota主配置文件
ls   /f1       显示/f1目录的文件名列表
quotaon  -v  /f1    激活quota功能,如果未激活,后期切换到用户后,用quota查状态会出没有权限
useradd  -Db  /f1     修改useradd创建用户时的用户家目录的基目录为/f1
useradd   fa     创建fa用户
repquota  -av    显示quota配额状态信息报表
edquota  -u  fa   给fa用户设置文件数量配额,软限制为15个文件,硬限制为18个文件。

su  -  fa   切换到fa用户
quota      显示当前用户的quota配额使用状态信息
touch  {1..5}    会提示quota  exceeded配额超出,即超出了软限制。
touch  {6..10}   会提示超出磁盘限额,无法创建。即超出了硬限制。
exit    退出当前用户

edquota命令补充:
将fa用户的配额方案复制给fb用户:edquota   -p  fa  zk

文件系统、软、硬链接(新版)

文件系统(file system):

磁盘上组织文件的方法,成为文件系统。

文件系统是对存储空间的管理和分配,负责文件的存储并对存入的文件进行保护和检索的系统

数据在磁盘或分区的存储形式。用来管理文件存储的体系结构。把整个的硬盘按照文件系统的规格分为一个个等大小的block。

硬盘的存储结构: 分区----》文件系统(文件名标题、inode编号)----》block数据块----》sector扇区

用户访问硬盘上的文件的流程:cat /etc/hosts

文件名/etc/hosts----> inode节点号----》正文(多个block数据块)

注:默认一个block块是4KB(等于512byte*8),即一个块占用8个扇区(sector)。

0.windows的文件系统:fat fat32 ntfs

fat:是文件分配表(File Allocation Table)的缩写。即格式化时自动生成的文件系统表。

fat32的缺点:只能存储单个小于4G的文件,如果做文件共享安全性差。

ntfs的优点:是新技术文件系统(new technology file system)的缩写。支持存储单个大于4G的文件,安全性高,可以对每个文件单独设置权限(FACL)。

windows中将fat32转成ntfs,且不会丢失数据的方法:在cmd下用convert 盘符 /fs:ntfs

例:convert /?

convert x: /fs:ntfs

磁盘扫描和自动修复错误:chkdsk 盘符 例:chkdsk d: /f /f是强制扫描并修复

1.linux的文件系统:ext2 ext3 ext4 xfs

ext: EXT是延伸文件系统(英语:Extended file system,缩写为 ext或 ext1),也译为扩展文件系统,一种文件系统,于1992年4月发表,是为linux核心所做的第一个文件系统。

文件系统结构:

super block: 超级块,不同的文件系统不相同,记录该文件系统的整体信息,包括inode/block总量,使用量,剩余量以及文件系统的格式及相关信息等。 超级块坏了,分区的文件系统就不能挂载使用。

注意:super block损坏的话,可以用磁盘扫描命令工具进行扫描和修复。如e2fsck、xfs_ncheck、xfs_repair就是扫描和修复的命令。

inode(i节点,索引节点):即书籍目录的页码,记录文件的属性(文件的大小,权限,时间,i节点的编号等),inode对应的文件名是记录在block数据块中。一个文件占用一个i节点号,同时i节点要记录文件数据所对应的block编号。

inode的数量和你能够创建文件的数量有关

如果多个文件的i节点相同,说明他们是相同的文件

block(数据块):实际记录文件的内容的,一个文件可能占用多个block。

文件名1 ―――〉1号inode----〉block数据块(正文)―――>扇区

文件名2―――/

ln链接文件

硬链接:

hard link,是指建立inode号和文件名之间的链接关系。同一个inode号可以对应多个文件名。

硬链接的创建:ln 源文件名 新文件名

硬链接访问文件的过程:硬链接文件名—>inode号—>block数据块――〉sector扇区

硬链接的缺点:1.目录不能创建硬链接 2.硬链接不能跨分区来创建

硬链接的应用场景:可以通过硬链接功能来实现文件的备份功能,这种备份方法可以节省一定的磁盘空间。

注意:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow是无法用ln命令硬链接方式来备份的,因为创建和删除用户后,这几个文件的inode号是会发生变化的。

软链接:

soft link

 又被称作符号链接、快捷方式。快捷方式的作用是方便用户快速访问到路径过于复杂(文件路径太长)的文件。快捷方式可以用于文件、目录,还可以跨分区创建快捷方式。快捷方式中保存的是文件的访问路径信息。

软链接命令:ln -s 目标文件路径 软链接文件名

软链接访问文件的过程:软链接文件名—>目标文件名—>inode号—>block数据块――-〉sector扇区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值