磁盘存储和文件系统实验
磁盘存储和文件系统1.备份MBR分区表2 操作系统的单用户模式救援模式和紧急模式有什么区别分别怎么进入2.1 单用户模式single User Mode2.2 紧急模式Emergency Mode2.3 救援模式 Rescue Mode2.4 三种模式使用注意事项3.1 CentOS7,8/etc/fstab的分区UUID错误无法启动3.2 CentOS6/etc/fstab的分区UUID错误无法启动3.3 OpenEuler系统/etc/fstab的分区UUID错误无法启动以及破解密码3.3.1 fstab分区错误解决办法3.3.2 破解密码4.模拟新加硬盘5.制作文件系统并挂载使用6.制作GPT分区7.制作swap分区并挂载8.LVM(缩减lv时要备份)9.创建一个2G的文件系统块大小为2048byte预留1%可用空间文件系统ext4,卷标TEST要求此分区开机后自动挂载至/test目录且默认有acl挂载选项9.1修改/dev/sda6的标签10.写一个脚本完成如下功能11.将CentOS6的CentOS -6.10-x86_64-bin-DVD.iso和CentOS-6.10-X86_64-bin-DVD2.iso两个文件合并成一个CentOS-6.10-x86_64-Everything.iso文件并将其配置为yum源12.LVM逻辑卷实验13.创建一个至少有两个PV组成的大小为20G的名为testvg的VG要求PE大小为16MB而后在卷组中创建大小为5G的逻辑卷testlv挂载至/users目录。14.新建用户archlinux要求其家目录为/users/archlinux,而后su切换至archlinux用户复制/etc/pam.d目录至自己的家目录15.拓展testlv至7G要求archlinux用户的文件不能丢失16.收缩testlv至3G,要求archlinux用户的文件不能丢失17.对testlv创建快照并尝试基于快照备份数据验证快照的功能。1.备份MBR分区表1.备份分区表,注意分区表必须备份到异地ddif/dev/sdaof/data/mbr.bakbs1count64skip446***穿插skip表示跳过多少块开始备份 seek表示跳过第多少块开始写***scp/data/mbr.bak root10.0.0.105:/data/#破坏分区表在mbr即sda分区的第446位开始写0ddif/dev/zeroof/dev/sdabs1count64seek446#重启无效reboot#用光盘启动进入救援模式并获得shell此时为无网络状态可以选择配置网络或者U盘插入挂载。手动配置网络ifconfigens3310.0.0.109/24ipa a10.0.0.109/24 /dev/ens33scproot10.0.0.105:/data/mbr.bakddifmbr.bakof/dev/sdabs1count64seek446reboot成功还原2 操作系统的单用户模式救援模式和紧急模式有什么区别分别怎么进入2.1 单用户模式single User Mode功能与用途核心作用用于系统维护和故障修复允许用户以root权限直接登录系统无需经过完整的启动流程。使用场景1.忘记root密码时重置密码。2.修复文件系统错误如磁盘损坏。3.执行系统级别的配置修改如修改启动参数。启动特点1.启动流程仅加载必要的内核和文件系统不启动网络服务、图形界面等额外服务。2.权限状态直接获取root权限无需输入密码部分可能需要验证。进入方式在GRUB引导菜单中编辑启动项修改启动参数2.2 紧急模式Emergency Mode功能与用途核心作用 当系统启动过程中出现严重错误如关键服务无法启动、配置文件损坏时自动进入的故障处理模式。使用场景1系统失败时的紧急修复。2修复导致系统无法正常启动的关键问题如init进程故障。限制仅挂载根文件系统/为只读模式部分服务无法使用。启动特点1.启动流程比单用户模式更简化仅启动最低限度的系统服务。2.交互方式进入后显示紧急Shell如sh需手动修复问题如重新挂载文件系统为可写mount -n -o remount,rw /。进入方式系统失败时自动触发或通过修改GRUB启动参数。linux 一行末尾增加systemd.unitemergency.target_2.3 救援模式 Rescue Mode核心作用用于修复系统严重故障如根文件系统损坏、内核无法加载相当于系统急救箱。试用场景系统完全无法启动时如引导加载程序损坏。需要从外部介质如Live CD/USB挂载本地文件系统进行修复。特点可加载外部工具和驱动支持更复杂的修复操作。进入方式通过修改GRUB启动参数。linux一行末尾增加 system.unitrescue.target_2.4 三种模式使用注意事项注意事项操作风险三种模式均需具备root权限错误操作可能导致系统进一步损坏建议提前备份数据。模式选择根据故障严重程度选择模式——单用户模式用于一般维护紧急模式用于启动错误救援模式用于系统崩溃。不同发行版差异如CentOS、Ubuntu等系统的进入方式和功能可能略有不同需参考具体文档操作。3.1 CentOS7,8/etc/fstab的分区UUID错误无法启动3.2 CentOS6/etc/fstab的分区UUID错误无法启动3.3 OpenEuler系统/etc/fstab的分区UUID错误无法启动以及破解密码官网https://docs.openeuler.openatom.cn/zh/docs/25.09/server/maintenance/troubleshooting/troubleshooting.html若GRUB设置了密码默认为root/openEuler#123.3.1 fstab分区错误解决办法现象重启机器后一直卡住ls处理办法重启在此行按“e”键并输入GRUB密码,默认为 root/openEuler#12 进入如下图进入grub界面在linux行加入init/bin/sh按ctrlx进入界面执行mount -o remount,rw /vim /etc/fstab ,编辑开机挂载文件并更改错误信息修改完毕后退出并在shell命令行exit命令退出3.3.2 破解密码首先使用单用户模式和上述fstab错误进入单用户模式操作一致然后输入passwd root修改密码如果selinux是enforcing则需要再运行touch /.autorelabel如果是disabled则不需要最终修改完密码重启命令如下此模式下reboot命令不存在exec /sbin/init4.模拟新加硬盘1.新加硬盘后查看硬盘lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:00200G0disk ├─sda18:102G0part /boot ├─sda28:20100G0part / ├─sda38:302G0part[SWAP]├─sda48:401K0part └─sda58:5050G0part /data sdb8:16010G0disk sdc8:32010G0disk sr011:01942M0romfdisk-lDisk /dev/sdb:10.7GB,10737418240bytes,20971520sectors Unitssectors of1*512512bytes Sector size(logical/physical):512bytes /512bytes I/O size(minimum/optimal):512bytes /512bytes Disk /dev/sdc:10.7GB,10737418240bytes,20971520sectors Unitssectors of1*512512bytes Sector size(logical/physical):512bytes /512bytes I/O size(minimum/optimal):512bytes /512bytes2.硬盘分区成功识别新增硬盘后对该硬盘分区分区有两种类型一种是mbr分区表一种是gpt分区表二者的区别是mbr分区表只支持单个分区最大空间为2TB可划分4个主分区或3个主分区一个拓展分区拓展分区可以有多个逻辑分区。而gpt分区则无4个主分区限制。场景对sdb硬盘进行分区硬盘10G,第一个1G二2G三3G。fdisk/dev/sdb Command(mforhelp): m p11G n p22G n p33G lsblk sdb8:16010G0disk ├─sdb18:1701G0part ├─sdb28:1802G0part └─sdb38:1903G0part通知内核读取更新的分区表partprobe /dev/sdb查看分区表是否更新cat/etc/proc/partitions major minor#blocks name80209715200sda812097152sda182104857600sda2832097152sda3841sda48552428800sda581610485760sdb8171048576sdb18182097152sdb28193145728sdb383210485760sdc110964608sr05.制作文件系统并挂载使用对新建硬盘分区创建文件系统对sdb1分区进行制作xfs文件系统mkfs.xfs /dev/sdb1 meta-data/dev/sdb1isize512agcount4,agsize65536blkssectsz512attr2,projid32bit1crc1finobt0,sparse0databsize4096blocks262144,imaxpct25sunit0swidth0blks namingversion2bsize4096ascii-ci0ftype1loginternal logbsize4096blocks2560,version2sectsz512sunit0blks, lazy-count1realtimenoneextsz4096blocks0,rtextents0查看/dev/sdb1分区类型blkid\/dev/sdb1:UUID26c15e53-d677-4d0f-b14d-7f1ea07ec737TYPExfs挂载文件系统并使用挂载新文件系统创建dev/sdb1分区的挂载点mkdir/panda_datamount/dev/sdb1 /panda_datadf-h配置开机自动挂载挂载完成后一定要写在/etc/fstab配置文件里。使其新增磁盘分区在开机后能自动挂载。查看设备UUIDblkid /dev/sdb1:UUID26c15e53-d677-4d0f-b14d-7f1ea07ec737TYPExfsvim/etc/fstabUUID26c15e53-d677-4d0f-b14d-7f1ea07ec737 /panda_data xfs defaults00检查配置文件语法:mount-a如果没有报错说明配置文件正确。6.制作GPT分区1.对sdc硬盘进行gpt分区GPTfdisk(gdisk)version0.8.10 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command(?forhelp): 同fdisk类似。7.制作swap分区并挂载一、利用分区制作swap#新增分区fdisk/dev/sda n 2G wfdisk-llsblk partprobemkswap/dev/sda3 blkid /dev/sda3vim/etc/fstab#将新加的swap/dev/sda3优先级别设置为2初始从-1开始d到32767数字越大优先级被越高/dev/sda3 swap swappri200df-h#开启swap分区swapon-a#查看swap分区swapon-s#关闭swapswapoff-a#查看swap优先级cat/proc/swaps二、以文件实现swap功能#因为swap本身是一个文件因此可以通过制作文件的形式制作swap分区ddif/dev/zeroof/swapfilebs1Mcount1024maswap /swapfile blkid /swapfiile/etc/fstabvim/etc/fstab#在这里不能用文件/swapfile的UUID要在fstab配置文件里面写入swapfile的文件路径。chmod600/swapfileswapon-aswap-s8.LVM(缩减lv时要备份)9.创建一个2G的文件系统块大小为2048byte预留1%可用空间文件系统ext4,卷标TEST要求此分区开机后自动挂载至/test目录且默认有acl挂载选项fdisk/dev/sda n\n\n2G\nw partprobe mkfs.ext4-b2048-LTEST-m1/dev/sda6mkdir/testmount/dev/sda6 /testdf-hblkid /dev/sda6vim/etc/fstabUUID1e1c3ae6-661f-47f9-b7f0-15e11baac363 /test ext4 acl009.1修改/dev/sda6的标签#查看/dev/sda6的lable dumpe2fs/dev/sda6|head-n5 #e2lable是专门修改ext系列文件系统标签 e2lable/dev/sda6 gaga10.写一个脚本完成如下功能1列出当前系统识别到的所有磁盘设备。2如磁盘数量为1则显示其空间使用信息否则则显示最后一个磁盘上的空间使用信息echo---/sys/class/scsi_host/host0/scan echo---/sys/class/scsi_host/host1/scan echo---/sys/class/scsi_host/host2/scan ll/dev/* |grep ^b11.将CentOS6的CentOS -6.10-x86_64-bin-DVD.iso和CentOS-6.10-X86_64-bin-DVD2.iso两个文件合并成一个CentOS-6.10-x86_64-Everything.iso文件并将其配置为yum源ddifCentOS-6.10-x86_64-bin-DVD.iso ofCentOS-6.10-x86_64-Everything.iso ddifCentOS-6.10-X86_64-bin-DVD2.iso ofCentOS-6.10-x86_64-Everything.iso seek*****vim/etc/yum.repo.d/CentOS6-Base.repo...url///CentOS-6.10-x86_64-Everything.iso...12.LVM逻辑卷实验#删除逻辑卷之前请先确认逻辑卷所挂载的挂载点是否被占用13.创建一个至少有两个PV组成的大小为20G的名为testvg的VG要求PE大小为16MB而后在卷组中创建大小为5G的逻辑卷testlv挂载至/users目录。#环境新加两块10G大小的硬盘[rootlocalhost ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:00200G0disk ├─sda18:101G0part /boot └─sda28:20152G0part ├─cl-root253:00100G0lvm / ├─cl-swap253:102G0lvm[SWAP]└─cl-data253:2050G0lvm /data sdb8:16010G0disk sdc8:32010G0disk sr011:016.7G0rom#将两块硬盘PE化pvcreate /dev/sdb /dev/sdc Physical volume/dev/sdbsuccessfully created. Physical volume/dev/sdcsuccessfully created.#创建卷组testvg,并指定PE大小为16Mvgcreate-s16testvg /dev/sdb /dev/sdc#查看卷组testvgVG Name testvg PE Size16.00MiB#新建逻辑卷testlvlvcreate-ntestlv-L5G testvg Logical volumetestlvcreated. lvs testlv testvg -wi-a-----5.00g#创建目录mkdir/users#创建文件系统mkfs.ext4 /dev/testvg/testlv#挂载mountdev/testvg/testlv /users#查看df-h /dev/mapper/testvg-testlv4.9G 20M4.6G1% /users#设置开机挂载vim/etc/fstabUUID41a8d98b-2941-4c65-be7e-d25c582965cf /users ext4 defaults0014.新建用户archlinux要求其家目录为/users/archlinux,而后su切换至archlinux用户复制/etc/pam.d目录至自己的家目录useradd -d /users/archlinux archlinux cp -r /etc/pam.d/ /users/archlinux/15.拓展testlv至7G要求archlinux用户的文件不能丢失#卸载挂载umount/users#逻辑卷扩容lvextend-L2G /dev/testvg/testlv#文件系统扩容e2fsck-f/dev/testvg/testlv resize2fs /dev/testvg/testlvmount/dev/testvg/testlv /usersdf-h/dev/mapper/testvg-testlv6.9G 23M6.5G1% /users16.收缩testlv至3G,要求archlinux用户的文件不能丢失#卸载挂载umount/users#缩减文件系统大小e2fsck-f/dev/testvg/testlv resize2fs /dev/testvg/testlv 4G#缩减逻辑卷大小lvreduce-L-4G/dev/testvg/testlv lvs testlv testvg -wi-a-----3.00g resize2fs /dev/testvg/testlvmount/dev/testvg/testlv /usersdf-h/dev/mapper/testvg-testlv2.9G 16M2.8G1% /users17.对testlv创建快照并尝试基于快照备份数据验证快照的功能。lvcreata-s-l64-n>-pr /dev/testvg/testlvmkdir-p/mnt/snapmount-oor /dev/testvg/data-snapshot /mnt/nsap#恢复快照umount/dev/testvg/testlvumount/mnt/snap lvconvert--merge/dev/testvg/data-snapshot#删除快照umount/mnt/snap lvremove /dev/testvg/data-snapshot