设为首页 收藏本站
查看: 1249|回复: 0

[经验分享] #10 Linux硬盘管理

[复制链接]

尚未签到

发表于 2018-5-18 07:35:53 | 显示全部楼层 |阅读模式
  1.存储管理
  传统的磁盘分区
  RAID技术,软RAID的实现
  LVM
  文件系统管理
  ext,xfs,btrfs(了解)
  2.程序包管理
  rpm、yum、dnf
  3.sed、gawk
  4.进程管理
  5.网络管理
  网络基础只是(Cisco CCNA+CCNP)
  网络的属性管理
  网络参数监测
  6.Linux内核管理
  内核编译和安装
  内核的裁剪
  定制内核
  7.Linux系统启动流程
  centos5、6、7
  8.系统安装
  kickstart、dhcp、pxe
  9.shell脚本的完善
  

  Linux储存管理
  磁盘的接口类型:
  IDE:并口,来源于ATA,133Mbps
  SCSI:并口,
  UltraSCSI320:320Mbps
  UltraSCSI640:640Mbps
  窄带:7  14
  宽带:15 30
  SATA:serial ATA,串口
  SATA1 2 3 6Gbps
  SAS:串口
  6Gbps
  USB:
  1.0 1.1 2.0 3.0:480Mbps 3.1:10Gbps
  

  双通道:160Mbps
  

  IOPS:每秒IO次数
  

   IDE:机械硬盘,50IOPS
  SCSI:机械硬盘,100-200IOPS
  固态硬盘,400左右
  SATA:机械硬盘,100左右
  固态硬盘,400左右
   SAS:机械硬盘,200左右
   固态硬盘,800左右
  

  PCI-E固态硬盘:100000+ ES3000 DEC
  

  IDE:主板上两个接口,4块IDE硬盘
  SATA:4-6接口,4-6块硬盘
  SCSI:7 15
  SAS:16384块硬盘
  

  写一个脚本,向每个默认shell为bash的用户问好,如:Hi root
  #!/bin/bash
  #
  for I in $(grep "bash$" /etc/passwd | cut -d: -f1) ; do
  echo "Hi $I"
  done
  

  机械硬盘:
  track:磁道,
  sector:扇区,512bytes,现在所说的扇区,实际上是平均值;
  cylinder:柱面,从磁道向所有盘片做投影;
  partition:分区,分区就是基于柱面来划分的储存空间;
  head:磁头,每个磁盘表面都有一个磁头;
  

  设备文件:/dev
  设备文件是关联到硬件设备的驱动程序和设备的访问入口;
  

  设备号:
  major:主设备号,区分设备的类型,用于标明设备所需的驱动程序;
  minor:次设备号,区分同种类型下的不同设备,是特定设备的访问入口;
  

  mknod命令:
  mknod - make block or character special files
  mknod [OPTION]... NAME TYPE [MAJOR MINOR]
  -m, --mode=MODE;指定文件权限
  块设备为b
  字符设备为c
  

  设备类型:
  块设备:用于随机访问的设备,数据存储和交换的单位是块;
  字符设备:用于线性访问的设备,数据的交换单位一般是字符;
  

  设备文件名:IANA-->ICANN
  ICANN的命名标准为:所有的设备都放在/dev/
  /dev/
  IDE:hd[a-d]
  SCSI/SATA/SAS/USB:sd[a-z] sda sdaa
  

   RHEL6、centos6开始:
   所有的接口类型的硬盘设备统一命名为sd[a-z]
  

  设备引用方式:
  设备文件名
  卷标(volume lable)
  UUID:全局唯一标识符,128bit
  

  如何使用一个新的硬盘设备?
  分区
  创建文件系统(格式化)
  挂在分区
  

  为何分区?
  1.优化I/O性能
  2.实现磁盘空间的配额限制
  3.进行高速修复
  4.隔离系统文件和其他程序文件
  5.安装多个操作系统
  

  如何分区?
  MBR:硬盘空间小于2TB
  MBR:master(main) boot record,主引导记录,起源于1982年,
  0磁道0扇区:512byte
  446bytes:boot loader,引导加载程序,grub
  64bytes:partition
  table,分区表,每16bytes表明一个分区的内容,因此一共有四个主分区;
  注意:
  1.主分区+扩展分区,最多可以有4个,其分区表位的编号依次为:1,2,3,4
  2.逻辑分区的编号从5考试,不管前面的四个数字编号是否被占用;
  2bytes:结束标记,55AA
  

  GPT:硬盘空间大于2TB
  guide partition table,guid分区表,支持128个分区
  uefi(统一扩展固件接口)的硬件可以支持GPT,boot legacy
  

  通常使用的分区工具,
  fdisk:
  用于创建和管理MBR分区,对于一块硬盘,最多只能管理15个分区;
  

  gdisk:gun disk
  用于创建和管理gpt分区,
  

  如果使用fdisk或gdisk命令对于已经有分区并挂载的磁盘的剩余空间进行再次分区,分区的信息即便是保存了,也不会被内核重新读取;如果要让内核识别此类分区:
  1.重启计算机
  2.partprobe命令或者partx命令,强制内核重读分区表;
  centos5/7:partprobe -a [device]
  如果省略了设备名,则表示重读所有磁盘的分区表
  centos6/7:partprobe -a [device]
   partx -af [device]
  

  fdisk分区示例:
  fdisk - Partition table manipulator for Linux
  

  fdisk -l [-u] [device...]
  查看指定磁盘的分区表,如果省略device参数,则显示所有磁盘设备的分区表;
  

  fdisk device
  对于指定设备进行分区管理;
  

  fdisk子命令:
  d  delete a partition
  l  list known partition types
  m  print this menu
  n  add a new partition
  e   extended
  p   primary partition(1-4)
  l   logical
  p  print the partition table
    q  quit without saving changes
  t  change a partition's system id
  w  write table to disk and exit
  

  

  parted:gun
  高级分区工具,实时生效;
  parted - a partition manipulation program
  

  parted [options] [device [command [options...]...]]
  

  parted /dev/sdb mklabel gpt|modos
  parted /dev/sdb print
  parted /dev/sdb mkpart primary 1 200
  parted /dev/sdb rm 1
  

  echo '- - -' > /sys/class/scsi_host/host2/scan
  强制内核识别在开机状态下插上的SCSI接口的磁盘
  

  写一个脚本,将一个命令所依赖的共享库文件复制到/mnt/sysroot/lib64目录中,如果库文件已经存在于目标目录中,就不复制。
  #!/bin/bash
  #
  DEST=/mnt/sysroot/lib64
  if [ ! -d $DEST ] ; then
  mkdir -p $DEST
  fi
  

  until [ "$CMD" == 'quit' ] ; do
  read -p "give me a command: " CMD
  if which --skip-alias $CMD &> /dev/null ; then
  for I in $(ldd $(which --skip-alias $CMD) | grep -o "/[^[:space:]]\+") ; do
  SRCLIB=$(basename $I)
  if [ ! -e ${DEST}${SRCLIB} ] ; then
  cp $I $DEST
  fi
  done
  else
  echo "Command not invalid."
  fi
  done
  

  创建文件系统:

  FHS /bin /dev /cet
  权限
  文件的命名规则
  

  为什么要创建文件系统?
  一百万册图书
  平面分类管理
  想要搜索需要的图书,需要遍历;
  空间分类管理
  门类
  几次有限的但有效的查找即可;
  

  创建文件系统实际上就是给分区进行储存空间的逻辑编制;
  

  格式化:
  低级格式化:
  物理层面完成格式化,在磁盘设备出厂时,通过低级格式化来创建磁道;
  主要作用:划分磁道
  

  高级格式化:
  分区之后进行,
  主要作用:用来创建文件系统,为分区构建逻辑编制单元,Windows系统逻辑单元=簇,Linux系统逻辑单元=块,无论是簇还是块,都是将一个或多个扇区组织在一起,共同完成数据存储;
  簇:512b 1024 2048 4096 8192 16384 32768 65536
  块:1024 2048 4096
  

  注意:
  1.一个块只能放置一个文件的内容,一个文件可以占用多个块;
  2.如果在某个分区中,将创建大量的小文件,把块划分的小一些;反之,块就大些
  3.如果分区空间比较大,块也应该大一些;
  

  在一个分区中创建了文件系统:
  首先,会将分区划分成大小相等的若干块;
  元数据块
  元数据——inode(index node)
  文件的属性:
  文件的大小
  文件权限
  文件所有者
  文件时间戳
  数据块指针
  

  存放元数据的固定的存储空间,称为inode;
  

  每个inode都有其对应的inode编号
  

  数据块
  存放文件中所包含的流式数据
  

  特殊文件:
  设备文件:block special 或 character special
  仅仅是将元素数据中的数据块指针换成了设备号;
  符号链接文件:symbolic link
  仅仅是将元数据中的数据块指针换成了另一个文件的访问路径;
  

  这类文件只占元数据区域,没有数据块占用:
  

  随着磁盘空间越来越大,划分的块的数量也越来越多,管理起来很不方便
  

  划分快租可以解决该问题
  

  块组:
  每个块组中有独立的元数据块和数据块
  存放数据的时候,以块组内的数据块优先选择,如果块组内的数据块不够,可以通过存储策略来请多个块组协同存储;
  

  超级块:
  主要定义了有多少个块组,以及每个块组的边界。
  

  为了防止超级块发生故障导致整个文件系统崩溃,对超级块进行冗余备份
  

  日志块:
  对于数据的写入操作做记录的块;
  

  防止数据不一致;
  

  数据不一致通常都是由不洁关机,不断电导致;
  

  一个完整的文件系统:
  超级块,inode,inode bitmap,block bitmap,data block,journal block
  

  想要查找/var/log/messages文件的内容,是怎样的过程?
  

  首先查找/目录inode编号,从元数据区域中找到对应的inode,再读取inode中的数据块指针,找到/目录的数据块;
  然后,在数据块中查找名称为var的文件名,如果有,就定位其inode编号,再到元数据区域中查找对应编号的inode,再根据数据块指针找到保存var目录内容的数据块;
  再然后,在该数据块中查找名称为log的文件名,如果有,就定位其inode编号,再到元数据区域中查找对应编号的inode,再根据数据块指针找到log目录内容的数据块;
  之后,在该数据块中查找名称为messages的文件名,如果有,就定位其inode编号,再到元数据区域总查找对应编号的inode,再根据数据块指针找到messages文件对应的数据块,就可以读取数据;
  

  系统调用
  

  Linux支持的文件系统:
  位于内核空间中的文件系统驱动
  1.内核一部分
  2.内核模块
  位于用户空间中的文件系统管理应用程序
  管理命令
  

  Linux自己的文件系统:
  ext ext2 ext3 ext4(最大分区50TB,可以做根分区,可以做启动分区)
  xfs(企业级64位文件系统,最大分区500TB,可以做根和启动分区)
  reiserfs(良好的反删除功能)
  btrts(技术预览版)
  

  光盘文件系统:iso9660
  网络文件系统:NFS、CIFS
  集群文件系统:gfs2、ocfs2
  内核级的分布式文件系统:ceph
  伪文件系统:proc、sysfs、tmpfs、hugepagefs
  

  Windows的文件系统:vfat、ntfs
  

  Unix的文件系统:ufs、ffs、jfs、zfs
  

  交换分区文件系统:swap
  

  用户空间中的分布式文件系统:mogilefs、moosefs、glusterfs
  

  对于不同的发行版的Linux,都有其默认的文件系统选择:
  RHEL、centos
  5:ext3
  6:ext4
  7:xfs
  

  文件系统的管理工具:
  

  写一个脚本,如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中;
  #!/bin/bash
  #
  if who | grep -q "\<hacker\>" ; then
  for I in $(who | grep "\<hacker\>" | cut -d ' ' -f3-5 --output-delimiter=' '); do
  echo -n $I >> /var/log/login.log
  done
  fi
  

  管理文件系统:
  创建文件系统:
  mkfs
  mkfs.ext2,mkfs.ext3,mkfs.ext4,mkfs.xfs,mkfs.btrfs,...
  

  文件系统检测和修复工具
  fsck
  fsck.ext2,fsck.ext3,fsck.ext4,fsck.xfs, ...
  

  文件系统属性查看工具
  dump2fs
  

  文件系统的属性调整工具
  tune2fs
  

  创建文件系统工具:
  mkfs命令:
  mkfs - build a Linux filesystem
  mkfs [options] [-t type] [fs-options] device [size]
  

  mkfs -t ext2 /dev/sdb1
  

  注意:
  1.不要使用磁盘设备名称和扩展分区设备名称作为mkfs命令的参数;
  如果使用磁盘设备作为mkfs的参数,所有的分区都将被删除
  如果使用扩展分区作为mkfs的参数,所有的逻辑分区都将被删除
  2.能够作为mkfs命令参数的设备,是主分区设备和逻辑分区设备;
  

  如果只是计划创建ext系列文件系统的话,可以使用mke2fs命令:
  mke2fs
  mke2fs - create an ext2/ext3/ext4 filesystem
  常用选择:
  -b block-size:在创建文件系统时,调整块大小;
  -i bytes-per-inode:指明inode与字节的比率,即:多少个字节可以建一个inode,默认值为16384;
  -I inode-size:直接指明inode的大小
  -j:创建有日志功能的文件系统,就是ext3
  -N number-of-inodes:直接指明要给此文件系统创建的inode的数量;
  -m reserved-blocks-percentage:指定为超级用户root预留的磁盘空间的百分比;默认值是5
  -t fs type:指定文件系统类型,ext2 ext3 ext4,默认是ext2
  -O [^]feature[,...]:关闭或开启文件系统的特性
  -L volume-label:为文件系统指定卷标;
  

  如果只计划修改ext系列文件系统的卷标,可以使用e2label命令:
  e2label:
  e2label - Change the label on an ext2/ext3/ext4 filesystem
  e2label device [ new-label ]
  

  注意:如果不加卷标信息,表示查看指定设备卷标;
  如果添加了卷标信息,表示修改指定设备的卷标;
  

  如果想要修改ext系列文件系统的属性,可以使用tune2fs命令
  tune2fs:
  tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems
  调整那些在ext2,3,4文件系统上的可修改的参数;
  常用选择:
  -j:将ext2文件系统修改为ext3(不能从ext3修改为ext2)
  -m reserved-blocks-percentage:修改为超级用户root预留的磁盘空间的百分比;
  -o [^]mount-options[,...]  :修改文件系统的默认挂载选择;
  -r reserved-blocks-count:修改为超级用户预留的磁盘空间的块的数量;
  -L  vol-ume-name:修改文件系统的卷标
  -O [^]feature[,...]:修改文件系统的特性,将其关闭或启用;
  -l:显示超级块的内容相当于dumpe2fs -h
  

  文件系统的检测修改工具:
  fsck
  -t fstype:指定要检测的文件系统类型;
  -a:无需交互,自动修复所有问题
  -r:交互式修复问题
  

  ext系列文件系统专门的检测修复工具:
  e2fsck
  -y:在交互过程的所有的问题,都是以“yes”回答;
  -f:强制检测修复;即使文件系统处于clean状态;
  

  blkid:
  blkid - command-line utility to locate/print block device attributes
  blkid -L label:根据卷标查找
  blkid -U uuid:根据UUID查找
  

  findfs:
  findfs - Find a filesystem by label or UUID
  findfs LABEL=label
  findfs UUID=uuid
  

  创建swap文件系统
  前提:分区类型必须是swap类型
  修改的方法是:在fdisk交互模式中,使用t命令将指定分区的类型修改为82即可:
  mkswap:
  mkswap - set up a Linux swap area
  -L label:设置交互分区的卷标
  -f:强制执行
  

  使用文件系统——挂载
  FHS
  

  根文件系统之外的其他文件系统如果想要被访问;都必须通过某种方式关联到根文件系统上,具体做法就是把其他文件系统装载到根文件系统中的某个目录之中;这个过程为“挂载”,用于关联其他文件系统的那个目录,称为挂载点;
  

  挂载点:mount point,也是其他文件系统的访问入口;例如:/boot
  要求:
  1.作为挂载点的目录必须事先存在;
  2.作为挂载点的目录应该是没有被使用或不能被其他进程使用的目录;
  3.作为挂载点的目录一旦挂载文件系统,其内原有的文件将被隐藏;
  

  完成挂在操作,使用mount命令:
  mount
  mount - mount a filesystem
  mount [-fnrsvw] [-t vfstype] [-o options] device dir
  常用选项:
  -r, --read-only:以只读的方式挂载目标文件系统;光盘
  -w, --read and write:以读写的方式挂载目标文件系统;
  -n, --no-mtab:默认情况下,设备挂载或卸载的操作会同步更新到/etc/mtab中,如果在挂载时使用了-n选择,则表示我们要禁用此特性,即便挂载成功,也不会更新到/etc/mtab中;
  -t, --types:指明要挂载的设备上创建的文件系统类型;如果省略该选项,mount命令会通过blkid来判断要挂载的目标设备的文件类型;
  -L label:挂载文件系统时,使用卷标代替设备名称
  -U uuid:挂载文件系统时,使用UUID代替设备名称
  -a:mount -a:按照/etc/fstab文件中填写的设备进行自动挂载;
  -o option:
  sync/nosync:同步/异步操作
  atime/noatime:文件或目录被读取访问时,是否更新访问时间戳;
  diratime/nodiratime:目录被读取访问时,是否更新访问时间戳;
  ro/rw:是以只读/读写的方式挂载文件系统;
  dev/nodev:在此文件系统中是否允许创建设备文件;
  exec/noexec:在此文件系统中是否允许运行程序文件;
  auto/noauto:是否允许使用mount -a 方式挂载/etc/fstab中的文件系统;
  user/nouser:是否允许普通用户挂载此文件系统;
  suid/nosuid:是否允许程序上的suid和sgid特殊权限生效;
  relatime/norelatime:是否参考inode访问时间来修改其修改时间和改变时间
  remount:不经卸载实现重新挂载,可以应用新的挂载选项;
  acl:可以使文件系统支持facl功能;
  defaults:默认选项包括:rw, suid, dev, exec, auto, nouser, async, and relatime
  defaults,ro,nosuid
  loop:使用环回设备;将镜像文件挂载到挂载点上
  -B, --bind:将某个目录绑定至另一个目录;
  mount --bind|-B 源目录 目标目录
  

  卸载文件系统:
  umount: umount_point|device
  

  挂载光盘:
  1.保证光盘镜像文件放入虚拟机光驱
  2.保证光驱处于“已连接”状态
  3.创建光盘挂载点,
  

  挂载U盘:
  需要事先让系统识别U盘设备,然后根据设备名进行挂载:/dev/sdc1
  

  挂载交换分区:
  swaponm,swapoff
  swapon, swapoff - enable/disable devices and files for paging and swapping
  

  -a:自动挂载存储于/etc/fstab文件中的交互分区设备;
  

  df
   -h -T -P
  free
   -k -m -g
  

  /etc/fstab文件的格式:
  共6个字段,使用空白字符分隔:
  1.要挂在的设备名:
  设备文件吗
  LABEL
  UUID
  伪文件系统
  2.挂载点:
  swap设备无需挂载点,指定swap即可
  3.文件系统类型:
  4.挂载选项:defaults
  5.转储频路:
  使用dump命令备份分区的频路
  0:表示不备份
  1:每天备份一次
  2:每隔一天备份一次
  6.自检次序:
  0:不自检
  1:优先自检,通常只设置在根文件系统上
  2:次级自检
  ...
  9:最低优先级自检
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461495-1-1.html 上篇帖子: 什么是linux,linux的应用与发展 下篇帖子: Linux unit15
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表