zoukankan      html  css  js  c++  java
  • Linux磁盘及文件系统管理初步

    (一)Linux系统管理

    • 磁盘分区及文件系统管理
    • RAID
    • LVM
    • 网络属性管理
    • 程序包管理
    • sed and awk
    • 进程查看和管理
    • 内核管理(编译和安装)
    • 系统启动流程
    • 定制、编译内核、busybox
    • 系统安装:kickstart,dhcp,pxe
    • shell脚本编程

    (二)磁盘分区及文件系统管理

    • 计算机组成:CPU,Memory(RAM),I/O
      • 对于服务器来说,I/O主要包括:Disks,EhterCard
      • Disks:持久存储数据
      • 磁盘的接口类型
        • IDE(ata,二者不完全等同):并口,133MB/s;iops:100次
        • SCSI:并口,UltraSCSI320:320MB/s; UltraSCSI640:640MB/s;iops:150次
        • SATA:串口,6gbps,处以8后单位才和IDE一致,一个是字节,一个是位;iops:100次
        • SAS:串口,6gbps;iops:150次
        • SATA是IDE的升级版
        • SAS是SCSI的升级版
        • IDE和SATA设计为桌面应用,在服务器上使用很快会损坏
        • USB:串口,3.0:480MB/s
        • 并口:同一线缆可以接多块设备
          • IDE:两个,主,从
          • SCSI
            • 宽带:16个设备-1,因为有一个接口被使用
            • 窄带:8个设备-1
        • 串口:同一线缆只能接一个设备
      • 硬盘的存储机制
        • 机械硬盘
        • 固态硬盘:PCI-E接口的固态硬盘iops可以达到几十万,高端服务器使用;普通桌面固态硬盘使用SATA接口,速度比机械硬盘提高三到五倍
      • 机械硬盘工作原理
        • track/磁道:同心圆
        • 平均寻道时间:5000rpm,7200rpm,10000rpm,15000rpm;rotation per minute
          • 旋转如此之快,必须真空封装,否则一粒灰尘就像巨石一样
        • sector/扇区:512bytes
        • cylinder/柱面:像一个薄薄的铁桶
          • 分区的划分基于柱面。越靠外的分区性能越好,因为单位时间内划过的距离大,C盘在最外层。
    • Linux哲学思想:一切皆文件
      • 设备类型
        • 块设备(block):随机访问,数据交换单位是“块”
        • 字符设备(character):线性访问,数据交换单位是字符
      • 设备文件
        • /dev
        • 关联至设备的驱动程序;设备的访问入口
        • 没有大小,只有设备号
          • major:主设备号,区分设备类型;用于标明设备所需要的驱动程序
          • minor:次设备号,区分同种类型下的不同设备;是特定设备的访问入口
        • mknod命令:创建块或字符的特殊文件(设备文件,虽然二者不完全等同)
          • mknod [OPTION]... NAME TYPE [MAJOR MINOR];TYPE指块(b)还是字符(c)。例如:mknod /var/testdev c 111 1
            • -m MODE:创建后的设备文件的权限
        • 设备文件名:由“ICANN/互联网名称地址分配机构”决定
          • IDE:/dev/hd[a-z]
          • SCSI, SATA, USB, SAS:/dev/sd[a-z]
          • 分区是设备名加数字,例如:/dev/sda1
          • 注意:CentOS 6和7将硬盘设备文件统统标识为sd
          • 以上命名在每次开机时,顺序有可能变,因此引用设备采用下面的方式
          • 引用设备的方式
            • 设备文件名
            • 卷标
            • UUID
        • 磁盘分区两种类型:MBR,GPT
          • MBR:Master Boot Record/主引导记录,编号为0的扇区,512bytes。分为三个部分
            • 前446bytes:bootloader,引导启动操作系统的程序
            • 64bytes:分区表,每16bytes标识一个分区,所以一共只能有四个分区
              • 可以再拿出一个分区包含一个新分区表
              • 主分区,扩展分区,逻辑分区
              • 4个主分区
              • 3个主分区1个扩展分区,扩展分区里包括N个逻辑分区
            • 2bytes:MBR区域的有效性标识:55AA表示有效,否则为无效
            • 主分区和扩展分区的标识:1-4,如sda1
            • 逻辑分区只能从5开始,即使1-4没用完
          • GPT:课外作业
        • fdisk:分区命令
          • 查看磁盘的分区信息:fdisk -l [-u] [device...]:列出指定磁盘设备上的分区情况
          • 管理分区:fdisk device
            • fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘,直到使用w命令保存到磁盘上
            • 子命令:
              • m:获取帮助
              • n:添加新分区
              • d:删除分区
              • t:改一个分区的system id
                • 主分区:83
                • 扩展分区:5
                • 逻辑分区:82
              • l:列出已知的分区类型
              • p:显示现有分区信息
              • w:保存退出
              • q:不保存退出
            • 注意:在已经分区,并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建后无法直接直接识别
              • 查看内核是否已经识别新分区的方法是:cat /proc/partitions
              • 通知内核强制重读磁盘分区表
                • CentOS 5:partprobe [device];如果device省略,则强制重读所有设备的分区表
                • CentOS 6/7:partx,kpartx
                  • partx -a [device]
                  • kpartx -af [device
              • 可能需要多次通知强制读取才能有效
        • 其它分区创建工具:parted,sfdisk

    实际操作的一个列子:

    第一步:fdisk /dev/sda

    第二步:键入“P”,分区信息

    第三步:键入“n”,添加一个新分区

    • 自动给定分区编号(5已经有了,所以新分区编号为6)
    • 指定起始扇区,直接按回车表示使用默认值
    • 指定扇区大小(结束扇区):+size。直接按回车表示使用默认值
    • 再次键入“P”查看一下
    • 键入“d”
    • 键入“6”,把刚才的分区删除

    第四步:再次键入“n”,添加一个新分区

    第五步:再次键入“n”,添加一个新分区

    第六步:键入“w”,保存退出

        • 文件系统
          • 格式化
            • 低级格式化:出厂时,由硬件生产商进行的,在分区之前进行,作用是划分磁道
            • 高级格式化:在分区之后对分区进行,不是对磁盘进行,作用是创建文件系统
          • 元数据区,数据区
            • 元数据区:
              • 文件元数据:inode(index node)
                • 大小,权限,属主属组,时间戳,数据块指针(限制了文件的大小),等等。但是不包含文件名。
              • 因为inode大小都是一样的,所以高级格式化的时候,会直接创建好所有的inode,只不过都是空的
            • 数据区:包含了若干个block块
              • 每个文件只能包含整数个block,会有一定的浪费;这就是为什么文件的总大小和使用的总空间有时候会不一致;
              • 如果文件包含的block都是不连续的,说明碎片很多
              • 数据区里需要有一段预留空间,供管理人员移动文件等管理操作时使用
            • 不同的文件系统设计,导致了各个的特点不同
            • 块和inode的比率,需要根据经验值来判断,让浪费不要太多
            • 符号链接文件:元数据中,数据块指针里存储的是真实文件的访问路径
            • 设备文件:元数据中,数据块指针里存储的是设备的主设备号和次设备号
          • bitmap index / 位图索引:在元数据区,有两段存储空间,每一位对应一个inode或者block,表示该inode或者block是否被使用
          • 实际中,每个分区被分成了很多个块组,每个块组包含自己元数据区和数据区,
            • 块组信息存储在超级块中,超级块和它的冗余备份分别存储在块组中
            • 每个块组的元数据区中有块组描述符 / group descriptor,记录了该块组的信息
            • 位图索引都是在块组级别实现的
          • ls -i:查看文件的inode编号
          • 目录机制:
            • 目录也是文件
            • 数据块中存储的是内部的一级子目录和文件对应的inode
          • VFS:virtual file system,屏蔽底层不同的文件系统的差异
          • 各种文件系统
            • Linux的文件系统
              • ext2,ext3(CentOS 5),ext4(CentOS 6),该系列的文件系统表现不佳,接近于废弃状态
              • xfs(CentOS 7),企业级的64位文件系统,单个文件大小没有上限
              • reiserfs,反删除功能非常好,很容易将删除的文件找回来。但是领导者入狱,所以江河日下。
              • btrfs:目前仍然处于测试实验型阶段
            • 光盘的文件系统:iso9660
            • 网络文件系统:nfs,cifs
            • 集群文件系统:gfs2,ocfs2
            • 内核级分布式文件系统:ceph
            • windows文件系统:vfat,ntfs
            • 伪文件系统:proc,sysfs,tmpfs,hugepagefs
            • Unix文件系统:UFS,FFS,JFS
            • 交换文件系统:swap(虚拟内存和真实内存进行数据交换时使用)
            • 用户空间的分布式文件系统:mogilefs,moosefs,glusterfs
          • 文件系统管理工具
            • 创建文件系统的工具
              • mkfs
                • 具体实现各不相同,mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat...
                • 或者统一使用mkfs -t命令,例如mkfs -t ext2 /dev/sda3
            • 检测及修复文件系统的工具
              • fsck
                • fsck.ext2, fsck.ext3...
            • 查看文件系统属性的工具
              • ext系列文件系统:dumpe2fs,tune2fs
              • 其它各个文件系统工具各不相同
            • 调整文件系统特性的工具
              • ext系列文件系统:tune2fs
              • 其它各个文件系统工具各不相同
          • journal/日志
            • 文件系统可以分为有日志的文件系统和无日志的文件系统
              • ext2无日志,其它linux的文件系统都有日志
            • 日志原理是,除了元数据区和数据区,再划分一个日志区,在创建一个文件的时候,先把元数据放到日志区,如果创建成功,再把元数据移到元数据区。如果中间出现断电等问题,查看日志区即可知道哪些文件的创建有问题
          • 链接文件:访问同一个文件的不同路径
            • 硬链接:指向同一个inode的多个文件路径
              • 目录不支持硬链接,避免循环链接
              • 硬链接不能跨文件系统
              • 创建硬链接会增加inode的引用计数
              • 创建方式:ln SourceFile LinkFile
                • -v:verbose,显示过程
            • 软链接/符号链接:指向一个文件路径的另一个文件路径;即inode的数据指针里存放了一个字符串(一个路径)
              • 软链接文件与源文件是两个独立的文件,各自有自己的inode
              • 支持对目录创建符号链接
              • 可以跨文件系统
              • 删除软链接文件不影响源文件;但删除源文件,软链接会变成无效链接
              • 创建软链接不会增加源文件inode的引用计数
              • 文件大小为其指向的源文件路径字符串的字节数
              • 软链接文件的权限通常为777,但是这不是源文件的权限
              • 创建方式:ln -s SourceFile LinkFile
                • -v:verbose,显示过程
  • 相关阅读:
    我的学习记录-JAVA SE 03
    我的学习记录-JAVA SE 02
    我的学习记录-JAVA SE 01
    我的mysql的学习记录
    Hibernate4学习一
    java3
    java5
    java基础4
    java2
    java
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7690064.html
Copyright © 2011-2022 走看看