文件系统和磁盘管理

MBR分区和GPT分区

1.MBR分区

MBR:Master Boot Record,主引导记录,是硬盘的第一个扇区,位于硬盘的0柱面0磁头1扇区处。主引导记录(512字节)由三个部分组成:引导程序(前446字节,偏移0——1BDH),分区表(随后的64字节,偏移1BEH——1FDH),结束标志“55AA”(最后的两个字节,偏移1FEH——1FFH)。

MBR分区方式用16个字节标识一个分区,由于分区表只有64个字节,所以MBR分区中一块硬盘最多只能有4个主分区,也可以3个主分区加1个扩展分区(N个逻辑分区)。MBR分区方式最多只能识别2TB的硬盘空间。

2.GPT分区

GPT:GUID(Globals Unique Identififiers) partition table,全局唯一标识磁盘分区表,它是UEFI 规范的一部分 。支持128个分区,能够识别2TB以上的硬盘空间。GPT分区结构分为4个区域:GPT头、分区表、GPT分区、GPT备份。

3.分区管理工具

  1. lsblk:列出块设备

  2. partprobe:重置内存中的分区表版本

  3. parted:高级分区操作,可以是交互式或者非交互式(parted的操作都是实时生效的,要小心使用)

    格式:parted [选项]... [设备 [命令 [参数]...]...]例:(使用-h或--help选项查看帮助)parted /dev/sdb mklabel gpt|msdosparted /dev/sdb print parted /dev/sdb mkpart primary 1 200 (默认M)parted /dev/sdb rm 1parted –l   列出所有硬盘分区信息
  4. fdisk和gdisk

    gdisk [device...]    类似fdisk的GPT分区工具fdisk [options] <disk> change partition table    管理MBR分区fdisk [options] -l [<disk>] list partition table(s)

    交互式方式子命令

    p 分区列表t 更改分区类型n 创建新分区d 删除分区v 校验分区u 转换单位w 保存并退出q 不保存并退出

文件系统

1.文件系统概念

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

2.常见文件系统类型

2.1Linux常用文件系统:

  • ext2:Extended file system 适用于那些分区容量不是太大,更新也不频繁的情况,例如 /boot 分区

  • ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复

  • ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升

  • xfs:SGI研发,支持最大8EB的文件系统

  • swap

  • iso9660:光盘

Windows常用文件系统:

  • FAT32
  • NTFS

网络文件系统:

  • NFS
  • CIFS

2.2文件系统管理工具

  1. mkfs:创建文件系统

    格式:mkfs.FS_TYPE /dev/DEVICE    例:mkfs.ext4 /dev/sda4
    选项说明
    -t指定文件系统类型(ext2、ext3、ext4、xfs)
    -b指定块block大小(1024、2048、4096)
    -L Label设置卷标
    -m指定为管理人员预留空间占总空间的百分比,默认为5%
  2. blkid:查看块设备的UUID等信息

    格式:blkid [OPTION]... [DEVICE] -U UUID 根据指定的UUID来查找对应的设备-L LABEL 根据指定的LABEL来查找对应的设备
  3. dumpe2fs:显示ext文件系统信息,将磁盘块分组管理

    格式:dumpe2fs /dev/DEVICE    例:dumpe2fs /dev/sda4
  4. xfs_info:显示挂载或已挂载的 xfs 文件系统信息

    格式:xfs_info /dev/DEVICE    例:xfs_info /dev/sda4
  5. fsck:文件系统检测修复(不要在挂载状态下执行命令)

    文件系统故障常发生于死机或非正常关机后,挂载为文件系统标记为“no clean”。

    fsck.FS_TYPEfsck -t FS_TYPE    FS_TYPE要与分区上的文件类型相同
  6. e2fsck:ext系列文件系统专用的检测修复工具

    -y 自动回答为yes-f 强制修复-p 自动进行安全的修复文件系统问题
  7. xfs_repair:xfs文件系统专用检测修复工具

    -f 用文件表示的设备-n 只检查-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot

挂载

挂载:将额外的文件系统与根文件系统现存的某个目录建立起关联关系,进而使得此目录做为文件访问入口的行为。

卸载:解除此关联关系。

注意:挂载点必须是一个目录;一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。

1.mount挂载文件系统

格式:mount [OPTIONS] DEVICE DIR说明:DEVICE:要挂载的设备,例如,/dev/sda1DIR:挂载点,必须存在,一般使用空目录,进程正在使用中的设备无法被卸载-L 'LABEL':以卷标指定挂载设备,例如,-L 'data'-U 'UUID':以UUID指定要挂载的设备-t fstype:指定要挂载的设备上的文件系统类型-r:readonly,只读挂载-w:read and write,读写挂载-n:不更新/etc/mtab,mount不可见-a:自动挂载所有支持自动挂载的设备(定义在/etc/fstab文件中,且挂载选项中有auto功能)-B,--bind:绑定目录到另一个目录上-o options:挂载文件系统的选项,多个选项使用逗号分隔    可用的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

2.umount卸载文件系统

卸载时既可以使用设备名也可以使用挂载点

格式:umount 设备名|挂载点

如果用户正在访问某个目录或文件,使得卸载一直显示busy,使用fuser -v DIR可以知道谁正在访问该目录或文件。然后用-k选项结束正在使用的目录或文件的进程,使用-km选项结束文件系统上的所有进程,然后再umount。

[root@centos8~]#fuser -v /mnt/cdrom[root@centos8~]#fuser -km /mnt/cdrom

3.开机自动挂载

通过将挂载选项写入到/etc/fstab中,系统在开机时自动挂载文件中的配置项。也可以在启动后的系统中手动执行mount -a命令挂载文件中的配置项。/etc/fstab文件的格式查看man 5 fstab。

/etc/fstab文件中每一行定义一个挂载的文件系统,每行包括6项:

  • 挂载的设备或伪文件系统

    设备文件名

    UUID

    LABEL

    伪文件系统名称:proc、sysfs

  • 挂载点:必须是事先存在的目录

  • 文件系统类型:ext4,xfs,iso9660,nfs,none,swap

  • 挂载选项:defaults,acl,bind

  • 转储频率:0(不做备份)、1(每天备份)、2(每隔一天备份)

  • fsck检查:0(不自检)、1(首先自检,一般只有rootfs采用)、2(非rootfs使用)添加了新的挂载项后,需要执行mount -a命令才能生效。

RAID技术

1.RAID概念

磁盘阵列:Redundant Arrays of Independent Disks(RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。

RAID技术主要有以下三个基本功能:

  • 通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
  • 通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
  • 通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。

RAID的实现方式:

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

2.RAID级别

多块磁盘可以通过多种方式组织在一起工作,这就是RAID的不同级别。SNIA、Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。但是标准 RAID 等级各有优势和不足,实际中把多个 RAID 等级组合起来,实现优势互补,从而达到在性能、数据安全性等指标上更高的 RAID 系统。实际得到较为广泛应用的RAID组合等级只有 RAID01 和 RAID10 两个等级。当然,组合等级的实现成本一般都非常昂贵,只是在 少数特定场合应用。

  1. RAID0

    RAID0也称为条带卷(striping)。它是将多块硬盘串联在一起当作一块大硬盘使用,数据依次存储到每个硬盘当中,存储容量是所有硬盘容量总和,读写能力随磁盘数量增加成倍提升,没有冗余能力,空间利用率100%,至少需要两块硬盘,如果其中一块硬盘损坏则整个数据都会受到破坏。用于数据安全性不高的场合。

  2. RAID1

    RAID1 也称为镜像卷(mirror),它将数据完全一致地分别写到工作磁盘和镜像磁盘,它的磁盘空间利用率为 50% 。RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。RAID1提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。用于数据安全性比较高的场合。

  3. RAID4

    RAID4级别最少需要3块硬盘,其中一块固定的硬盘用来保存校验位,数据以数据块为单位分别存储在不同的硬盘上。RAID4在不同磁盘上的同级数据块使用XOR校验,结果存储在校验盘中。RAID4提供了非常好的读性能,但单一的校验盘往往成为系统性能的瓶颈。所以RAID4在主流存储产品中使用较少。

  4. RAID5

    RAID5类似于RAID4,不同之处在于没有使用专门的独立校验盘,校验数据分布在阵列中的所有数据盘上。

  5. RAID6

    RAID6引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。

  6. RAID10和RAID01

    RAID10和RAID01不是RAID独立的级别。RAID10先将2块硬盘组成RAID1,再将2个RAID1组成RAID0。RAID01先将2块硬盘组成RAID0,再将2个RAID0组成RAID1。RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。

逻辑卷管理器LVM

1.逻辑卷原理

LVM是逻辑盘卷管理器(Logical Volume Manager)的简称,它是Linux系统对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上、硬盘和文件系统之间的一个逻辑层,来提高磁盘分区管理的灵活性。

逻辑卷实现过程:

  • 将物理设备指定为物理卷(pv:physical volume),物理卷用固定大小的物理区域(PE:physical extend)组成
  • 用一个或多个物理卷创建一个卷组(vg:volume group)
  • 基于vg创建逻辑卷(lv:logical volume)
  • 在逻辑卷lv上格式化文件系统,然后就可以进行使用

2.逻辑卷管理工具

LVM涉及到了pv、vg、lv三个层次,每个层次都有对应的命令来管理,虽然数量可能比较多,但是命令名称、用法大多类似。

2.1PV管理工具

管理pv的工具:pvs、pvscan、pvdisplay、pvcreate、pvremove、pvmove

  1. 显示pv信息

    pvs [OPTIONS]pvdispaly [OPTIONS]pvs显示简要的pv信息,pvdisplay详细显示pv信息
  2. 创建pv

    pvcreate [OPTIONS]
  3. 删除pv

    pvremove [OPTIONS]
  4. 检查pv

    pvscan [OPTIONS]

2.2VG管理工具

管理vg的工具:vgs、vgscan、vgdisplay、vgcreate、vgreduce、vgextend

  1. 显示vg信息

    vgs 显示vg简要信息vgdisplay 显示vg详细信息
  2. 创建vg

    vgcreate [-s [kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath
  3. 扩展vg

    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
  4. 缩减vg

    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
  5. 删除vg

    vgremove VolumeGroupName注意:删除vg时,要先执行pvmove,后执行vgremove,以确保数据文件完整不被损坏

2.3LV管理工具

管理lv的工具:lvs、lvscan、lvdisplay、lvcreate、lvremove、lvreduce、lvextend、lvresize

  1. 显示lv信息

    lvs 显示lv简要信息lvdisplay 显示lv详细信息
  2. 创建lv

    lvcreate -L [mMgGtT] -n NAME VolumeGroup
  3. 删除lv

    lvremove /dev/VG_NAME/LV_NAME
  4. 扩展lv

    lvextend -L [+SIZE][mMgGtT] /dev/VG_NAME/LV_NAME注意:扩展lv后要配合同步文件系统的命令才能使扩展生效针对ext文件系统resize2fs /dev/VG_NAME/LV_NAME针对xfs文件系统 xfs_growfs MOUNTPOINT
  5. 缩减lv

    lvreduce -L [-SIZE][mMgGtT] /dev/VG_NAME/LV_NAME注意:缩减lv时,先执行umount命令卸载,然后进行文件系统检查,再重置文件系统大小,最后再执行lvreduce命令。一定要按照这个顺序进行执行。umount /dev/VG_NAME/LV_NAMEe2fsck -f /dev/VG_NAME/LV_NAMEresize2fs /dev/VG_NAME/LV_NAME lvreduce -L [-SIZE][mMgGtT] /dev/VG_NAME/LV_NAMEmount

实例

1.破坏mbr表并修复

第一步:备份10.0.0.201主机的分区表,并拷贝到10.0.0.202的主机上。

第二步:破坏10.0.0.201的分区表,重启后发现无法正常启动。

第三步:进入rescue模式。

通过光盘启动,并选择Troubleshoting,然后选择rescue模式

第三步:要远程从10.0.0.202主机上获取分区表,但是此时10.0.0.201主机在rescue模式下没有ip地址,所以要先配上ip地址,然后再从202主机上将分区表备份拷过来。

第四步:恢复分区表,然后重启,此时10.0.0.201主机可以正常启动。

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

第一步:用fdisk创建一个大小为2G的新的分区

第二步:在这个新分区上创建文件系统

第三步:创建/test目录,并将配置写进/etc/fstab文件实现自动挂载

3.创建一个至少有两个PV组成的大小为20G的名为testvg的VG;要求PE大小 为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录

第一步:创建两个分区/dev/sda6、/dev/sda7,加起来大小为20G,注意分区类型为LVM。用这两个分区创建PV

第二步:创建名为testvg的VG,指定PE大小为16MB

第三步:在卷组中创建大小为5G的逻辑卷testlv

第四步:在逻辑卷testlv上创建文件系统,并挂载至/users目录

©著作权归作者所有:来自51CTO博客作者玩玩而已_的原创作品,如需转载,请注明出处,否则将追究法律责任