Linux磁盘管理
1、本地存储设备的识别
fdisk -l ##列出真实存在的设备(包括系统无法识别的设备)
cat /proc/partitions ##系统识别的设备
blkid ##系统可以使用的设备
df ##系统正在挂载的设备
df -h ##显示挂载设备的总容量,已使用容量,未使用容量(1kb=1024b)
df -H ##显示挂载设备的总容量,已使用容量,未使用容量(1kb=1000b)
Filesystem Size Used Avail Use% Mounted on
1 2 3 4 5 6
1:设备名称
2:设备总容量
3:已经使用的空间
4:剩余的空间
5:磁盘的使用率
6:磁盘挂载的目录
设备文件的位置为‘/dev'下
/dev/sda1或/dev/hda1或/dev/vda1...
文件名的前两位为设备的类型,并口硬盘是hd,串口硬盘或SCSI硬盘为sd,虚拟机的硬盘是vd
文件名的第三位是该类型设备的顺序号,主盘hda,从盘hdb,abc...表示
文件名的第四位是该硬盘的分区号1-4,5和之后的是逻辑分区
2、设备的挂载和卸载
mount 设备文件的路径 挂载目录
mount -o ro 设备文件的路径 挂载目录 ##以只读挂载
mount -o remount,rw 设备文件的路径 挂载目录 ##以读写重挂载
umount 挂载目录或umount 设备文件的路径都可以卸载
当卸载时出现设备被占用的情况
fuser -vm 挂载目录 ##查看在使用设备的情况
fuser -kvm 挂载目录 ##查看并结束使用
或
lsof 挂载目录 ##查看占用挂载目录的进程
查看进程是否重要
kill -9 PID ##结束进程
3、磁盘管理
1)新建磁盘
2)磁盘分区
1、磁盘0磁道1扇区的512字节内容(主引导扇区)
512=446+64+2
446:mbr(主引导记录)
64:mpt(主分区表)
2:磁盘的有效性标示
fdisk /dev/vda ##开始对磁盘vda进行分区
wq ##保存并退出 partprobe ##同步分区表
查看磁盘的分区情况,vdc有一个分区1
dd if=/dev/vdc of=/mnt/mbr bs=512 count=1
拷贝vdc磁盘主引导扇区的分区表到/mnt/mbr(新建文件)
hexdump -C /mnt/mbr
用16进制显示文件内容(两位一字节)
"20"是标志位,可以看到磁盘完成4个主分区后,分区表中每个分区项占16个字节
3)磁盘挂载
开机自动挂载设备:vim /etc/fstab
设备名称 挂载点 文件系统类型 挂载参数 是否备份 是否检测
/dev/vda1 /mnt xfs defaults 0 0
mount -a ##测试设备是否被挂载
fstab比rc.local快,内核启动时,这个文件就会被优先读取,设备就会被挂载
4)磁盘配额
mount -o usrquota /dev/vda1 /pub ##挂载时添加配额参数(默认没有)
edquota -u 用户名 ##打开配额文件
soft:软限度,超过此限度警告
hard:硬限度,是最大额度
单位均为KB
在指定用户下:dd if=/dev/zero of=/pub/student bs=1M count=30 ##尝试拷贝30M硬盘信息
30M>30000KB 超过了给用户的配额(硬限度)
5)磁盘加密
cryptsetup lucksFormat /dev/vdd1 ##为指定磁盘的指定分区加密(未建立文件系统)
Are you sure?输入为大写YES
cryptsetup open /dev/vdd1 liu ##虚拟一个分区liu
ll /dev/mapper/liu
可以看到虚拟的liu链接着原有分区
mkfs.xfs /dev/mapper/liu ##建立文件系统
mount /dev/mapper/liu /mnt ##正常挂载
umount /mnt ##正常卸载
cryptsetup close liu ##相当于启动加密
这时/dev/mapper看不到加密的分区和虚拟的liu,挂载原始设备/dev/vdd1也是被拒绝的
cryptsetup open /dev/vdd1 liu ##相当于解开对分区的加密
这时分区就可见并且可以挂载
mount /dev/mapper/liu /mnt
去掉加密可以强制格式化分区:mkfs.xfs -f /dev/vdd1
6)磁盘阵列(RAID)
fdisk /dev/vdd ##为一块新磁盘分区
分为三个区 再为分区设定标签:fd
三个分区都为RAID
watch -n 1 cat /proc/mdstat
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdd{1..3}
-C:建立磁盘阵列
-a yes:如果/dev/md0不存在则自动创建
-l ride:工作方式
-x:备用几块
mkfs.xfs /dev/md0 ##建立.xfs文件系统
mount /dev/md0 /mnt ##挂载
模拟一块硬盘出错:mdadm -f /dev/md0 /dev/vdd3
vdd2会替换vdd3和vdd1数据同步
mdadm -D /dev/md0 ##查看信息
mdadm -r /dev/md0 /dev/vdd3 ##删除vdd3
mdadm -a /dev/md0 /dev/vdd3 ##恢复vdd3
mdadm -S /dev/md0 ##结束RAID服务
7)LVM动态管理卷
LVM(逻辑卷);将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态地对分区扩大和缩小
pv ##物理卷;pvcreate命令处理过的物理分区
vg ##物理组卷
LVM ##直接使用的设备,可以增大所见并保持原有的数据不变
pe ##物理扩展 lvm设备的最小存储单元,lvm是pe的整数倍
LVM的建立:
fdisk /dev/vdc ##设定分区为LVM(8e)
watch -n 1 'pvs;vgs;lvs;df h' ##监控
pvcreate /dev/vdc1 ##创建物理卷
vgcreate vg0 /dev/vdc1 ##创建组
lvcreate -L 20M -n lv0 vg0 ##创建一个20M大小的逻辑卷
mkfs.xfs /dev/vg0/lv0 ##建立一个文件系统
mount /dev/vg0/lv0 /mnt ##挂载
vg的扩容和减少
pvcreate /dev/vdc2 ##先创建物理卷
vgextend vg0 /dev/vdc2 ##用vdc2扩容vg0物理卷组
vgreduce vg0 /dev/vdc2 ##从物理卷组vg0移除vdc2
LVM的拉伸
LVM支持热拉伸:lvextend -L 50M /dev/vg0/lv0 ##拉伸原有的lv0为50M
只拉伸LVM是不会改变实际容量的还需要相应地拉伸文件系统
xfs_growfs /dev/vg0/lv0 ##拉伸lv0的文件系统
vg中容量不足时,再为其创建一个物理卷:pvcreate /dev/vdd2
vgextend vg0 /dev/vdd2 ##扩容物理卷组
lvextend -L 500M /dev/vg0/lv0 ##物理卷组容量充足,可拉伸更多lv0容量
xfs_growfs /dev/vg0/lv0 ##拉伸lv0的文件系统
LVM的缩减
LVM不支持热缩减且仅针对ext格式(xfs文件系统不支持缩减)
umount /mnt
mkfs.ext* /dev/vg0/lv0 ##格式化为ext*
e2fsck -f /dev/vg0/lv0 ##缩减文件系统
resize2fs /dev/vg0/lv0 20M ##缩减为20M
lvreduce -L 20M /dev/vg0/lv0 ##缩减lv
mount /dev/vg0/lv0 /mnt
*缩减时注意先缩减文件系统后缩减设备,否则会毁坏文件
vg物理卷的数据迁移
pvmove /dev/vdc1 /dev/vdc2 ##将vdc1的数据移动到vdd2中
vgreduce vg0 /dev/vdc1 ##将vdc1从vg0物理卷组移除
pvremove /dev/vdc1 ##彻底删除vdd1下的物理卷
LVM快照
lvcreate -L 50M -n lv0-backup -s /dev/vg0/lv0 ##创建lv0大小为50M快照
mount /dev/vg0/lv0-backup /mnt
实际容量不是102M而是建立的快照的大小
dd if=/dev/zero of=/mnt/file bs=1M count=60 ##当拷贝数据大小超过快照大小时,会破坏设备
再次挂载快照会报错
删除快照和lvm并还原硬盘
umount /mnt ##卸载
lvremove /dev/vg0/lv0-backup ##删除快照
lvremove /dev/vg0/lv0 ##删除lvm
vgremove vg0 ##删除vg
pvremove /dev/vdc2 ##删除pv
再fdisk /dev/vdc删除分区
4、文件系统
文件系统定义:操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统;对系统来说,文件系统就是对文件存储空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统
文件系统组成:和文件管理有关的软件 被管理的文件以及实施文件管理所需要的数据结构
安装文件系统:mkfs.xfs /dev/vda1 ##为vda的第一个分区安装xfs的文件系统
**网络文件系统(nfs):网络文件系统是Linux系统和网络存储文件管理常用的文件系统,允许多个客户端访问共享文件,可用于提供对二进制文件的共享访问,也允许同一工作组的用户从不同的客户端访问其文件
服务器端:
mkdir /shareclient ##创建共享文件目录
mount /dev/vda1 /shareclient ##将vda磁盘的第一个分区挂载在共享目录下(分区已有文件系统)
yum install nfs-utils -y ##安装nfs
systemctl start nfs-server ##启动nfs
sysytemctl stop firewalld ##关闭防火墙
sysytemctl disable firewalld ##关闭防火墙自启动
vim /etc/exports ##指定客户端的访问方式
*(sync)不设定权限
exportfs -rv ##刷新并显示
客户端:
mount 服务器端ip地址:/shareclient 挂载目录
sysytemctl stop firewalld ##关闭防火墙
sysytemctl disable firewalld ##关闭防火墙自启动
客户端成功挂载共享目录
**nfs自动挂载
客户端:
yum install autofs -y ##安装autofs
system start autofs
ls -ld /net ##安装nfs后自动创建的目录
cd /net/服务器端ip地址/shareclient ##这时已自动挂载
自动挂载有时长限制(300s)-->会自动卸载
修改卸载时间:
vim /etc/sysconfig/autofs
TIMEOUT改为指定时长
systemctl restart autofs
退出共享目录后,自动卸载时长过后,就会自动卸载(一直df显示会刷新时长)
**修改nfs默认挂载目录
nfs默认挂载在/net/服务器端ip地址/docs
现在更改默认挂载目录为/opt/nfs/share(可自由设定)
客户端:
vim /etc/auto.master
添加挂载点的上层目录
8行 挂载点上层目录 /etc/文件名.nfs ##任意的文件名 .nfs固定 必须在/etc下
vim /etc/文件名.nfs
挂载点的最后一级目录 -ro(只读) 服务器端ip地址:/共享目录
systemctl restart autofs
ls /opt ##可以看到自动建立的nfs目录
systemctl stop autofs nfs目录就会自动删除
cd /opt/nfs/share ##这时已自动挂载
设定的自动卸载时长依然生效
**修改共享目录的权限
客户端:
cd /opt/nfs/share ##进入到挂载目录
共享目录里的文件不能自由删除和更改
服务器端:
vim /etc/exports 将*(sync)更改为*(rw,sync)-->有读写权限
chmod 777 /shareclient(共享目录)-->共享目录改为满权限
exportfs -rv ##刷新
客户端:
vim /etc/auto.nfs
systemctl restart autofs
现在客户端在挂载目录下(共享目录)可以读写
5、swap分区的管理
建立swap分区
1)设定分区的标签为swap(82)
2)创建swap分区:mkswap /dev/vda2
3)让系统识别swap分区:swapon -a /dev/vda2
4)查看系统中的swap分区:swapon -s
5)设置开机自动加载swap分区
vim /etc/fstab
删除swap分区
1)删除开机自动加载(vim /etc/fstab)
2)将分区格式改回其他格式:mkfs.xfs -f /dev/vda2 ##格式化就是再建立一次文件系统
3)删除swap分区:swapoff /dev/vda2
4)查看是否删除:swapon -s