马哥博客作业六周
磁盘管理
1.磁盘分区
1. 两种分区方式:MBR,GPT MBR 最大不能超过2T GPT可以支持超过2T的大空间
2. 创建分区命令:
Fidsk 管理MBR分区 msdos
Gdisk 管理GPT分区
Parted 统称管理两种分区 ,但执行时会立即生效 慎用
Partprobe 可以刷新新加的硬盘 在系统中可以用lsblk查看 用于centos7.8
创建分区:使用MBR分区就用fidsk创建 使用GPT分区就用gdisk创建 parted可以对两个分区都可以创建
parted /dev/sdb mklabel gpt | msdos 指定分区的类型
parted /dev/sdb print 列出分区表
parted /dev/sdb mkpart 指定区分的内存
n创建分区 指定内存+4G或其他 添加编号 L可以查看可用编号 t是更改编号 w 保存退出 q不保存退出
parted /dev/sdb rm 1 可以用rm 删除指定分区 后边跟分区的编号
parted –l 列出所有硬盘分区信息
如增加新的分区后 分区是不同步的 用partx -a /dev/sda 同步分区表
创建文件系统 常见的文件系统 ext2 3 4 xfs swap
2. mkfs -t ext4 /dev/sdb1 给sdb1添加ext4文件系统
-L设置卷标 -b指定块的大小 -N指定分区中创建多少个节点编号
-m默认5%,为管理人员预留空间占总空间的百分比
3.tune2fs 可以查看块设备属性信息
-l 查看指定文件系统的超级快信息
-L 修改卷标
-m 修改给管理员预留的空间百分比
-j ext2升级为ext3
4. dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
-h查看超级块信息,不显示分组信息
5. xfs_info:显示示挂载或已挂载的 xfs 文件系统信息
6.文件的系统检测和修复 注意 一定不要在挂载状态下修复 fsck命令
分区的挂载 mount挂载 umount删除挂载
挂载点目录必须事先存在,建议使用空目录 可以用mkdir 常见一个空目录
mkdir /mut创建空目录
mount /dev/sdb1 /mut 在挂载上去 lsblk –f可以查看挂载
-t vsftype 指定要挂载的设备上的文件系统类型
-r readonly,只读挂载
-w read and write, 读写挂载
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有
auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下
atime/noatime 包含目录和文件
diratime/nodiratime 目录的访问时间戳
auto/noauto 是否支持开机自动挂载,是否支持-a选项
exec/noexec 是否支持将文件系统上运行应用程序
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 是否支持suid和sgid权限
remount 重新挂载
ro/rw 只读、读写
user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
acl/noacl 启用此文件系统上的acl功能
loop 使用loop设备
_netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统
defaults 相当于rw, suid, dev, exec, auto, nouser, async
mount持久挂载
把文件写在 /etc/fstab 下
每一个挂载的文件系统都有六项
UUID
设备名
文件系统类型(ext4 xfs)
挂载选项 defaults ,acl,bind
转储频率:0:不做备份 1:每天转储 2:每隔一天转储
fsck检查的文件系统的顺序:允许的数字是0 1 2
添加新的挂载用 用mount -a 才能生效
xfs-info 查看xfs已挂载的文件系统
losf 或fuser -v 查看正在访问文件系统的进程
fuser -km 终止正在访问的进程
首先需要创建一个分区在更改为swap
swap分区 用free -h 查看当前的swap分区情况 buffers是缓冲区 cache是缓存 在centos8和7上已经合并
buffers相当于文件从磁盘上读取文件出来的一个中间区
cache相当于把文件网磁盘上存放的一个中间区
cat /etc/sys/vm/swappiness 查看内存使用到多少才会启动swap 有一个相应的数值会显示
给swap分配文件系统 mkswap /dev/sda 想要持久保存 写到文件中 /etc/fstab
swapon -s 查看是有那个分区分配的swap空间 -a 保存到文件中后同问文件系统
禁用swap 用swapoff /dev/sda1 再用 -a 同步
df 命令 -h以二进制显示文件大小 -H以十进制显示文件大小 -T显示文件系统类型 -i显示文件的节点编号 -P对齐格式
du 命令显示文件目录的大小 -h 以K为单位显示 -s 显示总文件大小
dd 命令 实现转换和文件的复制
格式:dd if=文件 of=/文件 bs=# count=#
if=file 从所命名文件读取而不是从标准输入
of=file 写到所命名的文件而不是到标准输出
ibs=size 一次读size个byte
obs=size 一次写size个byte
bs=size block size, 指定块大小(既是是ibs也是obs)
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块
seek=blocks 从开头忽略blocks个obs大小的块
count=n 复制n个bs
conv=conversion[,conversion...] 用指定的参数转换文件
conversion 转换参数:
ascii 转换 EBCDIC 为 ASCII
ebcdic 转换 ASCII 为 EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
fdatasync 写完成前,物理写入输出文件
范例:
[root@centos8 ~]#cat f1.txt;
abcdef
[root@centos8 ~]#cat f2.txt
123456789
[root@centos8 ~]#dd if=f1.txt of=f2.txt bs=1 count=2 skip=3 seek=4
2+0 records in
2+0 records out
2 bytes copied, 6.6515e-05 s, 30.1 kB/s
[root@centos8 ~]#cat f2.txt
1234de[root@centos8 ~]#echo 123456789 > f2.txt
[root@centos8 ~]#cat f2.txt
123456789
[root@centos8 ~]#cat f1.txt
abcdef
[root@centos8 ~]#cat f1.txt; cat f2.txt
abcdef
123456789
[root@centos8 ~]#dd if=f1.txt of=f2.txt bs=1 count=2 skip=3 seek=4 conv=notrunc
2+0 records in
2+0 records out
2 bytes copied, 7.6153e-05 s, 26.3 kB/s
[root@centos8 ~]#cat f2.txt
1234de789
范例:#备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
#破坏MBR中的bootloader
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
#有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有
fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
#将本地的/dev/sdx整盘备份到/dev/sdy
dd if=/dev/sdx of=/dev/sdy
#将/dev/sdx全盘数据备份到指定路径的image文件
dd if=/dev/sdx of=/path/to/image
#备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
dd if=/dev/sdx | gzip >/path/to/image.gz
#将备份文件恢复到指定盘
dd if=/path/to/image of=/dev/sdx
#将压缩的备份文件恢复到指定盘
gzip -dc /path/to/image.gz | dd of=/dev/sdx
#将内存里的数据拷贝到root目录下的mem.bin文件
dd if=/dev/mem of=/root/mem.bin bs=1024
#拷贝光盘数据到root文件夹下,并保存为cdrom.iso文件
dd if=/dev/cdrom of=/root/cdrom.iso
#销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1
#通过比较dd指令输出中命令的执行时间,即可确定系统最佳的block size大小
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
dd if=/dev/zero of=/root/1Gb.file bs=2048 count=500000
dd if=/dev/zero of=/root/1Gb.file bs=4096 count=250000
#测试硬盘写速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
#测试硬盘读速度
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
RAID 把相同大小的磁盘以不同的方式组合在一起
常用的 RAID 0 RAID 1 RAID 5 RAID 6 RAID 10
RAID 0 读写性能提升 把一个文件分为多块每一块存在一个硬盘中
容错性低 如果有一个硬盘损坏 文件就确实一部分 相当于损坏 无法访问 最少磁盘数2 2+
RAID 1 读性能提升 写性能略微下降 把一个文件存入磁盘中 另一个磁盘同步备份 利用率只能达到%50
损坏一块硬盘 但另外一块还能访问文件 最少磁盘磁盘数 2 2N
RAID 4 多块硬盘组合 把文件存入第一个硬盘和第二硬盘中 第三个硬盘相当于第一和第二硬盘的总校验
如果有一个快硬盘损坏 可以用另外两块算出损坏的那一块硬盘 最少磁盘数 3
RAID 5 多块硬盘组合 把文件存入其中两块硬盘 第三块硬块是校验位 但总校验位这块硬盘是多块硬盘轮流担当
只允许有一块磁盘损坏 最少磁盘数 3 3+
RAID 6 多块硬盘组合 把文件存入其他硬盘 有两个校验位 每两个硬盘轮流担当
最多可允许损坏两块硬盘 最少磁盘数 4 4+
RAID 10 相当于多块RAID 1 组合成RAID 0 每组最多损坏一块 磁盘数最少4 4+
RAID 01 相当于多块RAID 0 组合成RAID 1 每组最多损坏一块 磁盘数最少4 4+
逻辑卷管理器 LVM 需要安装lvm2包
1.将物理磁盘整合成物理卷
2.把物理卷组合成卷组 卷组VG
3.把卷组在分成多个逻辑卷 逻辑卷LV
1.pvcreate /dev/sdb /dev/sdc1 同时对硬盘和分区创建物理卷 pvremove 删除物理卷 pvdisplay 显示目前存在的物理卷 pvs
2.Vgcreate vg_卷组名字 /dev/sdb /dev/sdc1 对两块空间创建卷组 vgdisplay 显示目前存在的卷组 vgs
3.lvcreate -n lv_逻辑卷名字 -l是PE个数 -L以(多少M)分配个数 如有多个卷组指定卷组名 lvdisplay 显示目前存在的逻辑卷 lvs
4.创建文件系统 mkfs.ext4 /dev/卷组名/lv_逻辑卷名字
5.创建文件 挂载 mkdir.... 在/etc/fstab 中写入 保存 mount -a 挂载生效
6.扩展逻辑卷大小 lvextend -l -L 后边跟逻辑卷名称 lvextend -r 可以对不同的文件系统进行扩展
7.resize2fs 后边跟逻辑卷名称 同步新增加的空间 此命令只针对于ext系列文件系统
xfs_growfs 后边跟挂载点名称
8.如卷组空间没有剩余 需要从新从硬盘上分配空间
再重新在物理磁盘上分配一个逻辑卷空间 fdisk... 8e是逻辑分区
在对分配的硬盘进行创建物理卷
vgextend 对卷组进行扩展 vgextend 卷组名 新增加的物理卷名
如果有一块硬盘坏掉 需要更换新的硬盘 需要先把硬盘上的逻辑卷挪到别的硬盘中的逻辑卷 可以使信息不丢失
pvmove /dev/sdb1 拆除那块硬盘 就挪走那块硬盘上的逻辑卷的信息 自动会吧当前逻辑卷的内容分配的别的硬盘的逻辑卷上
lvreduce 卷组名 /硬盘名称 把卷组从当前硬盘清除
pvremove /dev/sdb1 吧物理卷从磁盘上移除
gdisk dev/sdb 再把分区删除 就可以拔掉硬盘 换新的硬盘上去

浙公网安备 33010602011771号