[关闭]
@mrz1 2017-12-14T07:29:13.000000Z 字数 9672 阅读 1437

2017-12-4课程笔记(挂载,RAID)

笔记


挂载mount

  1. 挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访 问入口的行为
  2. 卸载:为解除此关联关系的过程
  3. 把设备关联挂载点:mount Point
    mount
  4. 卸载时:可使用设备,也可以使用挂载点
    umount
  5. 挂载点下原有文件在挂载完成后会被临时隐藏
  6. 挂载点目录一般为空
  7. 查看挂载 cat /etc/mtab``df``lsblk``mount

用mount命令挂载文件系统

  1. 挂载方法:mount DEVICE MOUNT_POINT
  2. mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
  3. mount [-fnrsvw] [-t vfstype] [-o options] device dir
    device:指明要挂载的设备;
    (1) 设备文件:例如/dev/sda5
    (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
    (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
    (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
    dir:挂载点
    事先存在;建议使用空目录
    进程正在使用中的设备无法被卸载

mount常用命令选项

  1. -t vsftype:指定要挂载的设备上的文件系统类型 (通常不用写;设备能自己识别)
  2. -r: readonly,只读挂载
  3. -w: read and write, 读写挂载(一般不谢 默认)
  4. -n: 不更新/etc/mtabmount不可见
  5. -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
  6. -L 'LABEL': 以卷标指定挂载设备
  7. -U 'UUID': UUID指定要挂载的设备
  8. -B, --bind: 绑定目录到另一个目录上
  9. -o options:(挂载文件系统的选项),多个选项使用逗号分隔
  10. async:异步模式(默认)
  11. sync:同步模式,内存更改时,同时写磁盘
  12. atime/noatime:包含目录和文件(适合网站文件不更新)
  13. diratime/nodiratime:目录的访问时间戳
  14. auto/noauto:是否支持自动挂载,是否支持-a选项
  15. exec/noexec:是否支持将文件系统上运行应用程序(是否禁用可运行脚本)
  16. dev/nodev:是否支持在此文件系统上使用设备文件
  17. suid/nosuid:是否支持suidsgid权限
  18. remount:重新挂载(即时生效)
  19. ro:只读
  20. rw:读写
  21. user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
  22. acl:启用此文件系统上的acl功能
  23. loop: 使用loop设备(contos7不需要;添加loop设备/boot/grub/grub.confkernel最后添加max_loop=100;默认100个)
  24. defaults:相当于rw, suid, dev, exec, auto, nouser, async
  1. stat 文件 // 查看三个时间
  2. mount -o noatime /dev/sdb2 /mnt/sdb2 atime 时间不会更新

设置acl权限

  1. centos6 安装系统后,手工分区ext文件系统无ACL功能
  2. tune2fs -o acl /dev/sdb2 //加acl 永久生效
  3. tune2fs -o ^acl /dev/sdb2 //取消acl
  4. mount -o remount,acl /mnt/sdb2 //加acl 临时生效

卸载命令

  1. 查看挂载情况 (是挂载点的话?=1)
    findmnt MOUNT_POINT|device
    查看内核追踪到的已挂载的所有设备
    cat /proc/mounts
  2. 查看正在访问指定文件系统的进程
    lsof MOUNT_POINT
    fuser -v MOUNT_POINT
  3. 终止所有在正访问指定的文件系统的进程
    fuser -km MOUNT_POINT
  4. 卸载
    umount DEVICE
    umount MOUNT_POINT
  5. 取消挂载 假如别的用户正在使用

    [root@centos6 ~]#umount /dev/sdb2 //有用户正在使用 无法删除
    umount: /mnt/sdb2: device is busy.
    (In some cases useful info about processes that use
    the device is found by lsof(8) or fuser(1))
    [root@centos6 ~]#lsof /mnt/sdb2/ // 查看当前是谁在使用
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    bash 3005 root cwd DIR 8,18 4096 2 /mnt/sdb2
    [root@centos6 ~]#fuser -v /mnt/sdb2 // 查看当前是谁在使用
    USER PID ACCESS COMMAND
    /mnt/sdb2: root 3005 ..c.. bash
    [root@centos6 ~]#w //查看当前谁在登录使用
    07:40:23 up 59 min, 2 users, load average: 0.07, 0.03, 0.01
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root pts/0 192.168.109.1 07:14 0.00s 0.60s 0.09s w
    root pts/1 192.168.109.1 07:35 3:21 0.05s 0.05s -bash
    [root@centos6 ~]#echo Please get out > /dev/pts/1 //发消息给pts/1 请离开
    [root@centos6 ~]#fuser -km /mnt/sdb2 // 强势踢走使用的用户
    USER PID ACCESS COMMAND
    /mnt/sdb2: root 3005 ..c.. bash

挂载点和/etc/fstab

配置文件系统体系
被mount、fsck和其它程序使用
系统重启时保留文件系统体系
可以在设备栏使用文件系统卷标
使用mount -a 命令挂载/etc/fstab中的所有文件系统

文件挂载配置文件

  1. /etc/fstab每行定义一个要挂载的文件系统
  2. 要挂载的设备或伪文件系统
    设备文件
    LABEL:LABEL=""
    UUID:UUID=""(推荐)
    伪文件系统名称:proc, sysfs
  3. 挂载点
  4. 文件系统类型
  5. 挂载选项:defaults
  6. 转储频率:0:不做备份 1:每天转储 2:每隔一天转储
  7. 自检次序: 0:不自检 1:首先自检;一般只有rootfs才用1
  8. 2 3 4 5 6 7

处理交换文件和分区

  1. 交换分区是系统RAM的补充
  2. 基本设置包括:
    • 创建交换分区或者文件
    • 使用mkswap写入特殊签名
    • 在/etc/fstab文件中添加适当的条目
    • 使用swapon -a 激活交换空间
    • 使用swapon -s 查看交换空间

挂载交换分区

  1. 启用:swaponswapon[OPTION]... [DEVICE]
    -a:激活所有的交换分区;
    -p PRIORITY:指定优先级
    /etc/fstab:pri=value
  2. 禁用:swapoff[OPTION]... [DEVICE]

SWAP的优先级

  1. 可以指定swap分区0到32767的优先级,值越大优先级越高
  2. 如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从-1开始,每加入一个新的 没有用户指定优先级的swap,会给这个优先级减一(pri=10)
  3. 先添加的swap的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级(是正数)永 远高于核心缺省指定的优先级(是负数)
  4. 优化性能:分布存放,高性能磁盘存放

新建swap分区

  1. 1 创建分区
  2. fdisk n
  3. t
  4. 82
  5. 2 文件系统
  6. mkswap /dev/sdd1 -L SWAP_SDD1
  7. 3 配置文件修改优先级
  8. vim /etc/fstab
  9. UUID=2979b3c4-c0c5-44b1-bf21-a213f90d80a0 swap swap pri=10 0 0
  10. 4 生效
  11. swapon -a
  12. swapon -s 查看
  13. 5 删除 swap
  14. 1)swapoff /dev/sdd1 先禁用它
  15. 2)vim /etc/fstab
  16. 删除对应行
  17. 3fdisk /dev/sdd 删除分区

移动介质

  1. 挂载意味着使外来的文件系统看起来如同是主目录树的一部分(swapoff /dev/sdd1 先禁用它)
  2. 访问前、介质必须被挂载
  3. 摘除时,介质必须被卸载
  4. 按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)
  5. 挂载点通常在/media 或/mnt下

使用光盘

  1. 在图形环境下自动启动挂载/run/media//
  2. 否则就必须被手工挂载mount /dev/cdrom/ mnt/
  3. eject命令卸载或弹出磁盘;eject -t 弹入
  4. 创建ISO文件
    cp /dev/cdrom /root/centos7.iso
    mkisofs -r -o /root/etc.iso /etc //把一个目录打包成iso

    两个包下载下来制作yum源可以,但制作iso文件缺少但是驱动不了;
    官方脚本制作ISO 脚本(这个是centos6的。因为contos7都已经安装好了,不需要) https://wiki.centos.org/zh-tw/TipsAndTricks/CDtoDVDMedia?highlight=%28mkdvd%29
    过程-下载缺少包-之后 --help查看帮助

  5. 刻录光盘
    wodim –v –eject centos.iso

挂载USB介质

  1. 查看USB设备是否识别
    lsusb
  2. 被内核探测为SCSI设备
    /dev/sdaX、/dev/sdbX、或类似的设备文件
  3. 在图形环境中自动挂载
    图标在[计算机]窗口中创建
    挂载在/run/media//
  4. 手动挂载
    mount /dev/sdb1 /mnt
    sync //强迫把缓冲区数据写到磁盘

常见工具

  1. 内存空间使用状态:
  2. free [OPTION]
  3. -m: MB为单位
  4. -g: GB为单位
  5. [root@centos7 ~]#free
  6. total used free shared buff/cache available
  7. Mem: 1075496 648732 74716 8004 352048 204696
  8. Swap: 2097148 576 2096572
  9. total(总)used(已经)free(剩余)shared(共享)buff/cache(缓冲与缓存)available(真正可用)
  10. 文件系统空间占用等信息的查看工具:
  11. df[OPTION]... [FILE]...
  12. -H 1000为单位
  13. -T 文件系统类型
  14. -h: human-readable
  15. -iinodes instead of blocks
  16. -P: Posix兼容的格式输出
  17. 查看某目录总体空间占用状态:
  18. du [OPTION]... DIR
  19. -h: human-readable
  20. -s: summary (总大小)
  21. --max-depth=N (层级)

缓冲与缓存

工具dd

  1. dd命令:convert and copy a file
  2. 用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
  3. bs=#:block size, 复制单元大小
  4. count=#: 复制多少个bs
  5. of=file 写到所命名的文件而不是到标准输出
  6. if=file 从所命名文件读取而不是从标准输入
  7. bs=size 指定块大小(既是是ibs也是obs)
  8. ibs=size 一次读sizebyte
  9. obs=size 一次写sizebyte
  10. cbs=size 一次转化sizebyte
  11. skip=blocks 从开头忽略blocksibs大小的块
  12. seek=blocks 从开头忽略blocksobs大小的块
  13. count=n只拷贝n个记录
  1. conv=conversion[,conversion...] 用指定的参数转换文件
  2. 转换参数:
  3. ascii 转换EBCDIC ASCII
  4. ebcdic 转换ASCII EBCDIC
  5. lcase 把大写字符转换为小写字符
  6. ucase 把小写字符转换为大写字符
  7. nocreat 不创建输出文件(必须有文件)
  8. noerror 出错时不停止
  9. notrunc 不截短输出文件
  10. sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
  11. 备份MBR
  12. dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
  13. 破坏MBR中的bootloader
  14. dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
  15. 有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,实现如下:
  16. #dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
  17. 备份:
  18. dd if=/dev/sdx of=/dev/sdy
  19. 将本地的/dev/sdx整盘备份到/dev/sdy
  20. dd if=/dev/sdx of=/path/to/image
  21. 将/dev/sdx全盘数据备份到指定路径的image文件
  22. dd if=/dev/sdx | gzip >/path/to/image.gz
  23. 备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
  24. 恢复:
  25. dd if=/path/to/image of=/dev/sdx
  26. 将备份文件恢复到指定盘
  27. gzip -dc /path/to/image.gz | dd of=/dev/sdx
  28. 将压缩的备份文件恢复到指定盘
  29. 拷贝内存资料到硬盘(/dev/mem内存)
  30. dd if=/dev/mem of=/root/mem.bin bs=1024
  31. 将内存里的数据拷贝到root目录下的mem.bin文件
  32. 从光盘拷贝iso镜像
  33. dd if=/dev/cdrom of=/root/cd.iso
  34. 拷贝光盘数据到root文件夹下,并保存为cd.iso文件
  35. 销毁磁盘数据
  36. dd if=/dev/urandom of=/dev/sda1
  37. 利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据,执行此操作以后,/dev/sda1将无法挂载,创建和拷贝操作无法执行
  38. 得到最恰当的block size
  39. dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
  40. dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
  41. dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
  42. 通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小
  43. 测试硬盘写速度dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
  44. 测试硬盘读速度dd if=/root/1Gb.file bs=64k | dd of=/dev/null
  45. 修复硬盘
  46. dd if=/dev/sda of=/dev/sda
  47. 当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的

练习

  1. 创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项

  2. 写一个脚本,完成如下功能:
    (1)列出当前系统识别到的所有磁盘设备
    (2)如磁盘数量为1,则显示其空间使用信息否则,则显示最后一个磁盘上的空间使用信息

  3. 将CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.8-x86_64-Everything.iso文件,并将其配置为yum源

迁移home到独立分区

  1. 1. 新建分区
  2. 2. 建立文件系统
  3. 3. mkdir /mnt/home
  4. 4. mount /dev/sda6 /mnt/home 挂载
  5. 5. cp -av /home/* /mnt/home 复制
  6. 6. tar cvf /app/home.tar /home 打包 scp remote 发送到远程
  7. 7. init 1 断开网络,自己在远程就不要执行。通知用户
  8. 8. rm -rf /home/*
  9. 9. vim /etc/fstab UUID=a0b529ef-85f3-49ce-89d2-3469ad16692c /home ext4 defaults 0 0
  10. 10. mount -a
  11. 11. umount /mnt/home
  12. 12. init -5 换到原有模式
  13. 13. 发送通知 迁移完毕

实现配额

  1. 1. 启用配额功能
  2. 修改磁盘配额 UUID=a0b529ef-85f3-49ce-89d2-3469ad16692c /home ext4 usrquota,grpquota 0 0
  3. mount -o remount /home/ 重新挂载生效
  4. 2. 创建配额数据库
  5. quotacheck -cug /home/ 创建数据库
  6. [root@centos6 home]#getenforce
  7. Permissive
  8. 如果创建失败 查看下它是否是Permissive,不是修改/etc/sysconfig/selinux或者/etc/selinux/c onfig当时不会生效;执行 setenforce 0 立即生效
  9. 3. 启用数据库
  10. [root@centos6 home]#quotaon /home/ //启用
  11. [root@centos6 home]#quotaon -p /home/ //查看数据库是否启用
  12. group quota on /home (/dev/sda6) is on
  13. user quota on /home (/dev/sda6) is on
  14. 4. 指定用户空间限制
  15. edquota fei
  16. Filesystem blocks soft hard inodes soft hard
  17. /dev/sda6 922844 800000 1000000 206 215 219
  18. 所有者是谁 占得空间就是谁的 前面是空间 后面是文件个数
  19. edquota -p fei zhang 复制fei 设置zhang的空间配额
  20. setquota fei 100000 200000 100 200 设置fei 配额;非交互式式命令
  21. [root@centos6 home]#repquota /home/ //默认文件超过限额7天没事,超过七天就不能创建了
  22. Block grace time: 7days; Inode grace time: 7days
  23. 设置组的配额
  24. edquota -g 组名
  25. 删除配额
  26. quotaoff /home 禁用
  27. 删除数据库
  28. 删除UUID=a0b529ef-85f3-49ce-89d2-3469ad16692c /home ext4 usrquota,grpquota 0 0
  29. mount -o remount /home/ 重新挂载生效

配置配额系统

  1. 综述
  2. 在内核中执行
  3. 以文件系统为单位启用
  4. 对不同组或者用户的策略不同
  5. 根据块或者节点进行限制
  6. 执行软限制(soft limit
  7. 硬限制(hard limit
  8. 初始化
  9. 分区挂载选项:usrquotagrpquota
  10. 初始化数据库:quotacheck
  11. 为用户设定配额执行
  12. 开启或者取消配额:quotaonquotaoff
  13. 直接编辑配额:edquota username
  14. shell中直接编辑:setquota usename 4096 5120 40 50 /foo
  15. 定义原始标准用户edquota -p user1 user2
  16. 报告配额状态报告
  17. 用户调查:quota username
  18. 配额概述:repquota /mountpoint
  19. 其它工具:warnquota

实现RAID

RAID:Redundant Arrays of Inexpensive(Independent)Disks(廉价的磁盘阵列)
1988年由加利福尼亚大学伯克利分校(University of California-Berkeley)"A Case for Redundant Arrays of Inexpensive Disks"
多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

提高IO能力:磁盘并行读写
提高耐用性;磁盘冗余来实现
级别:多块磁盘组织在一起的工作方式有所不同

RAID实现的方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器安装OS前在BIOS里配置
软件RAID:通过OS实现

RAID-0

RAID-0

读、写性能提升;
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2, 2

它代表了所有RAID级别中最高的存储性能。RAID-0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

特点:使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择。
缺点:是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。

RAID-4

最少三块
只能坏一块
RAID-4:多块数据盘异或运算值存于专用校验盘
校验位只放在最后一个硬盘 但是坏的几率大,企业淘汰了之后就是RAID-5

RAID-5

RAID-5

读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:允许最多1块磁盘损坏
最少磁盘数:3, 3+(利用率n分之n-1)不太重要东西用
校验位是随机在每块硬盘都有

RAID-6

此处输入图片的描述

读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:允许最多2块磁盘损坏
最少磁盘数:4, 4+(利用率n分之n-2)
四块硬盘两块放校验位(磁盘利用率低比5)

RAID-1

此处输入图片的描述

读性能提升、写性能略有下降;
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2, 2N(利用率50%)
防止物理损坏,不防止操作;两个硬盘数据一样删除都删除始终同步。

RAID-01

http://zhangqifei.top/picture/linux/RAID/0.png

最少磁盘数:4, 4+(利用率50%)(有钱企业)(三分之二的失败几率)
多块磁盘先实现RAID0,再组合成RAID1

RAID-10

RAID-10

读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块(容错率高于RAID-01)
最少磁盘数:4, 4+(利用率50%)(有钱企业)(三分之一的失败几率)

RAID-50

RAID-50

多块磁盘先实现RAID5,再组合成RAID0

JBOD

JBOD

JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用可用空间:sum(S1,S2,...)

RAID7

可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式

常用级别:

RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

制作RAID-0

第一步:创建分区

  1. 准备硬盘大小相等
  2. 硬盘分区fdist /dev/sda
  3. n +10G RAID记得改ID
  4. t 7(7的意思是sda7) L fd
  5. w
  6. dd if=/dev/sda7 of=/dev/sdc bs=q count=512
  7. partx -a /dev/sda ...同步

第二步:创建RAID

  1. mdadm -C /dev/md0 -a yes -l 0 -c 32 -n 3 /dev/sd{a7,b1,c1}
  2. -C: 创建模式
  3. -a {yes|no}:自动创建目标RAID设备的设备文件
  4. -l #:指明要创建的RAID的级别
  5. -c CHUNK_SIZE: 指明块大小
  6. -n #: 使用#个块设备来创建此RAID
  7. mdadm -D /dev/md0 //查看创建过程详细
  8. cat /proc/mdstat //也可以看RAID
  9. blkid 查看的话 有两个uuid 第一个是raid的总id第二个是子id
  10. mdadm -Ds > /etc/mdadm.conf //生成这个文件这样开机的话才能找到这个设备

第二步:创建RAID系统

  1. mkfs.ext4 /dev/md0 //创建系统
  2. vim /etc/fatab 编辑 --->uuid 挂载点 ext4 defaults 0 0
  3. 创建挂载点 -->挂载 --> 完成
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注