Linux入门攻坚——7、磁盘管理——文件系统挂载管理及RAID、LVM

已经安装文件系统的分区需要经过挂载才能使用。

一切文件系统的使用都是从根开始,根是文件系统的起始点。

计算机启动过程:加电自检——bootloader——kernel——rootfs——/sbin/init

kernel第一步要加载根系统。

 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录作为其他文件访问入口的行为称之为挂载;
解除此关联关系的过程称之为卸载;
把设备关联挂载点:mount point
mount
卸载时:可使用设备,也可以使用挂载点
umount

注意:挂载点下原有文件在挂载完成后会被临时隐藏;

挂载方法:mount DEVICE MOUNT_POINT
mount :通过查看/etc/mtab文件 显示当前系统已挂载的所有设备
    mount [-fnrsvw] [-t vfstype] [-o options] device dir
    device:指明要挂载的设备
        (1)设备文件:例如/dev/sda5
        (2)卷标:-L 'LABEL',如 -L 'MYDATA'
        (3)UUID:-U 'UUID',例如:-U '6a5d8ae3-5aba-4630-826a-1332dba38771'
        (4)伪文件系统名称:proc,sysfs,devtmpfs,configfs
    dir:挂载点
        事先存在:建议使用空目录:
        进程正在使用中的设备无法被卸载
    常用命令选项:
        -t vsftype:指定要挂载的设备上的文件系统类型;
        -r:readonly,只读挂载
        -w:read and write,读写挂载
        -n:不更新/etc/mtab
        -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能);
        -L 'LABEL':以卷标指定挂载设备
        -U UUID:以UUID指定要挂载的设备
        -B,--bind:绑定目录到另一个目录上。

查看内核追踪到的已挂载的所有设备:cat /proc/mounts

    -o options : 挂载文件系统的选项
        async:异步模式 (CoW,Copy on Write,写时拷贝)
        sync:同步模式
        atime/noatime:更新访问时间/不更新访问时间,包含目录和文件
        diratime/nodiratime:目录的访问时间戳
        auto/noauto:是否支持自动挂载
        exec/noexec:是否支持将文件系统上应用程序运行为进程
        dev/nodev:是否支持在此文件系统上使用设备文件
        suid/nosuid:
        remount:重新挂载
        ro:只读
        rw:读写
        user/nouser:是否允许普通用户挂载此设备
        acl:启用此文件系统上的acl功能

    注意:上述选项可多个同时使用,彼此使用逗号分隔;
              默认挂载选项:defaults——rw,suid,dev,exec,auto,nouser,and async

卸载命令:
    umount DEVICE
    umount MOUNT_POINT



当挂载设备忙时(有进程正在访问的设备),无法卸载:

所以,查看内核追踪到的已挂载的所有设备,使用:cat /proc/mounts
以上是Centos6上的实验结果,在Centos7上,-n选项挂载,mount,cat /etc/mtab中都显示挂载结果。

查看正在访问指定文件系统的进程:
    fuser -v MOUNT_POINT
终止所有正在访问指定的文件系统的进程:
    fuser -km MOUNT_POINT

挂载交换分区:
    启用:swapon [OPTION]...[DEVICE]
        -a:激活所有的交换分区
        -p PRIORITY:指定优先级;
    禁用:swapoff [OPTION]... [DEVICE]

内存空间使用状态:
free [OPTION]
    -m:以MB为单位
    -g:以GB为单位

文件系统空间占用等信息的查看工具:
df:disk free
    -h:human-readable
    -i:inodes instead of blocks
    -P:以POSIX兼容的格式输出;

查看某目录总体空间占用状态
    du [OPTION]... /dir
        -h:human-readable
        -s:summary

文件挂载的配置文件:/etc/fstab
每行定义一个要挂载的文件系统;

要挂载的设备或伪文件系统、挂载点、 文件系统类型、挂载选项、 转储频率、 自检次序

要挂载的设备或伪文件系统:
    设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc,sysfs)
挂载选项:defaults
转储频率:0,不做备份;1,每天转储;2,每隔一天转储;
自检次序:0,不自检;1,首先自检,一般只有rootfs才用1;2,...

文件系统上的其他概念:

Inode:Index Node,索引节点
    地址指针:直接指针、间接指针、三级指针
    inode bitmap:对位标识每个inode空闲与否的状态信息;

链接连接:
    硬链接:不能够对目录进行;不能跨分区进行;指向同一个inode的多个不同路径,创建文件的硬链接即为inode创建新的引用路径,因此会增加其引用计数;
    符号链接:可以对目录进行;可以跨分区进行;指向的是另一个文件的路径,其大小为指向的路径字符串的长度,不增加或减少目标文件inode的引用计数。
ln [-sv] SRC DEST
    -s:symbolic link
    -v:verbose

文件管理操作对文件的影响:
    文件删除:
    文件复制:
    文件移动:

bash脚本编程:用户交互
    read [option]...[name ...]
        -p 'PROMPT':
        -t TIMEOUT:

bash -n /path/to/some_script:检测脚本中的语法错误
bash -x /path/to/some_script :调试(单步)执行

#!/bin/bash
# Version:0.0.1
# Author:zz
# Description: read testingread -p "Enter a disk special file:" diskfile
[ -z "$diskfile" ] && echo "Fool" && exit 1if fdisk -l | grep "^Disk $diskfile" &> /dev/null; thenfdisk -l $diskfile
elseecho "Wrong disk special file."exit 2
fi   

RAID:Redundant Arrays of Inexpensive(Independent) Disks,廉价磁盘冗余阵列(独立磁盘冗余阵列)

提高IO能力——多个磁盘并行读写、提高耐用性——磁盘冗余实现;

级别:多块磁盘组织在一起的工作方式有所不同;

RAID实现方式:
    外接式磁盘阵列:通过扩展卡提供适配能力
    内接式RAID:主板集成RAID控制器
    Software RAID:软件实现的RAID
级别:level,0,1,2,3,4,5,6,10,01
    RAID0:条带卷,strip;读、写性能提升,无容错能力,最少磁盘数2,可用空间N*min();
    RAID1:镜像带,mirror;读性能提升、写性能略有下降,可用空间1*min(),有冗余能力,最少磁盘2;
    RAID4:单块盘作为校验盘,性能瓶颈,读写压力大    
    RAID5:读写性能提升、可用空间(N-1)*min()、有容错能力,1块磁盘,最少磁盘3
    RAID6:读写性能提升,可用空间(N-2)*min()、有容错能力,2块磁盘,最少磁盘4
    RAID10:读写性能提升,可以空间N*min()/2、有容错能力,每组做多1块,最少磁盘数4
    RAID01:
    JBOD:Just a Bunch Of Disks,将多块磁盘的空间合并成一个大的连续空间使用

常用级别:RAID0,RAID1,RAID5,RAID10,RAID50,JBOD
实现方式:    硬件实现方式、软件实现方式

Centos6上的软件RAID的实现:
    结合内核中的md(multi devices)
    mdadm:模式化的工具
        命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
            支持的RAID级别:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10
        模式:
            创建:-C
            装配:-A
            监控:-F
            管理:-f,-r,-a
            <raiddevice>:/dev/md#
            <component-device>:任意块设备
        -C:创建模式
            -n # :使用#个块设备来创建此RAID;
            -l # :指明要创建的RAID的级别;
            -a {yes|no}:自动创建目标RAID设备的设备文件
            -c CHUNK_SIZE:指明块大小;
            -x #:指明空闲盘的个数;
        -D:显示raid的详细信息,mdadm -D /dev/md#
        管理模式:
            -f:标记指定磁盘为损坏;
            -a:添加磁盘;
            -r:移除磁盘;
        观察md的状态:cat /proc/mdstat
       
停止md设备:mdadm -S /dev/md#
        watch命令:watch -n # 'COMMAND'
            -n # :刷新间隔,单位是秒,
        如:创建一个10G可用空间的RAID5:
        使用/dev/sdb磁盘剩余的空间创建分区
            

调整类型为fd:Linux raid auto

需要在添加一个分区设备作为空闲磁盘。现在有5,6,7,8四个分区

使用mdadm创建raid5

使用,类似分区,先要安装文件系统,即格式化

将一个磁盘标注为错误:

再坏一块,也可以工作,降级使用:

可以移除坏掉的设备:

设备修复后,添加新设备

使用mdadm /dev/md0 -a /dev/sdb5,提示错误:

先停用:

重新装配

然后再增加

此时:

没有空闲磁盘了,再添加:

LVM2    LVM:Logic Volume Manager,Version:2

dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;
    /dev/dm-#

/dev/mapper/VG_NAME-LV_NAME
    /dev/mapper/vol0-root 
/dev/VG_NAME/LV_NAME
    /dev/vol0/root

.

使用LVM:

物理卷pv的管理:
1、先创建分区,并调整分区类型为8e:

2、可用的pv命令,pv管理工具
pvs:简要pv信息显示
pvdisplay:显示pv的详细信息

3、创建
pvcreate /dev/DEVICE

4、删除
pvremove /dev/DEVICE

卷组vg的管理
5、vg常用命令:

6、创建vg
vgcreate [-s #[bBsSkKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath  [PhysicalDe-vicePath...]

此时再看pv:

7、扩展vg
vgextend VG_NAME PV_NAME

8、vg缩减
减少pv设备,减少前,需要将pv上的数据移走,使用pvmove
pvmove PV_NAME
vgreduce VG_NAME PV_NAME...

逻辑卷lv的管理
9、lv的常用命令

10、创建lv
lvcreate -L #[mMgGtT] -n NAME VolumeGroup

创建的lv,有三个路径:/dev/dm-0,实际文件,两个链接路径:/dev/mapper/myvg-mylv和/dev/myvg/mylv

11、使用lv
lv就相当于一个分区,使用前要高级格式化,如格式化成ext4

12、挂载使用

13、扩展逻辑卷
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

虽然命令执行成功,但是看挂载后的空间没有改变,需要扩展文件系统:
resize2fs

14、缩减lv,先缩减文件系统大小(必须先卸载),然后缩减lv
umount /dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

以上是ext系统,其他系统会有不同。

快照:snapshot

创建一个快照卷,保存某一时刻对应卷的快照,即元数据,并同时监控对应卷的数据,如果数据要改变,则在改变前拷贝其到快照卷。
lvcreate -L #[mMgGtT] -p r -s -n SnapshotLogicalVolume OriginalLogicalVolumeName

lvremove:删除逻辑卷
vgremove:删除卷组
pvremove:删除物理卷

光盘设备的挂载:
    光盘设备文件:
        IDE:/dev/hdc
        Sata:/dev/sr0
        符号链接文件:
            /dev/cdrom
            /dev/cdrw
            /dev/dvd
            /dev/dvdrw
        mount -r /dev/cdrom /media/cdrom

dd命令:convert and copy a file
    用法:
        dd if=/PATH/FROM/SRC of=?PATH/TO/DEST 
            bs=#:block size ,复制单元大小;
            count=#:复制多少个bs;
    磁盘拷贝:
        dd if=/dev/sda of=/dev/sdb
    备份MBR:
        dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
        dd if=/tmp/mbr.bak of=dev/sda bs=512 count=1

两个特殊设备:
/dev/null:数据黑洞
/dev/zero:吐零机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/209603.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Selenium自动化测试:通过cookie绕过验证码的操作

验证码的处理 对于web应用&#xff0c;很多地方比如登录、发帖都需要输入验证码&#xff0c;类型也多种多样&#xff1b;登录/核心操作过程中&#xff0c;系统会产生随机的验证码图片&#xff0c;进行验证才能进行后续操作 ​解决验证码的方法如下&#xff1a; 1、开发做个万…

Ubuntu20.04使用SVN(Rabbitvcs)

原文&#xff1a;https://blog.csdn.net/u014552102/article/details/129914787 1.安装Rabbitvcs sudo apt-get install rabbitvcs-nautilus sudo reboot 安装完后&#xff0c;选中一个文件夹右键&#xff0c;即可看到相关操作&#xff0c;没有的可以重启一下。 2.添加这个p…

数字化转型失败率为什么这么高?

引言 数字化转型已成为当今商业环境中的重要议题。它指的是企业通过采用数字技术&#xff0c;对业务流程、文化和客户体验进行全面变革&#xff0c;以适应数字化时代的需求和趋势。 然而&#xff0c;尽管数字化转型的重要性日益凸显&#xff0c;但令人担忧的是&#xff0c;许多…

C++ 红黑树的封装

一.map/set的封装 在实现了红黑树的部分功能后&#xff0c;我们可以便可以将红黑树作为底层结构来封装map 和 set &#xff0c;但是问题也随之而来。我们都知道map是k-v的数据模型&#xff0c;而set是k的数据模型&#xff0c;我们难道要去使用两棵红黑树来封装吗&#xff1f;显…

【jupyter notebook中插件 nbextensions 安装失败分析与解决方法】

文章目录 问题描述分析与解决总结 问题描述 一开始在安装 notebook 中的插件 nbextensions 时根本没有注意到版本的适配问题&#xff0c;都是进行默认的安装&#xff0c;结果安装是最新版本的 notebook7.x&#xff0c;恰好 notebook7.x 版本不再适应插件 nbextensions&#xf…

降本增笑?滴滴史上最严重服务故障,裁员真不能裁测试

2023 年 11 月 27 日晚间&#xff0c;滴滴因系统故障导致 App 服务异常&#xff0c;不显示定位且无法打车。11 月 27 日晚&#xff0c;滴滴出行进行了回复&#xff1a;非常抱歉&#xff0c;由于系统故障。 2023 年 11 月 28 日早间&#xff0c;滴滴出行消息称&#xff0c;网约…

在高德地图SDK上加载五层十五级瓦片的方法

目录 前言实现思路加载高德SDK,显示地图加载GroundOverlay类加载五层十五级瓦片清除瓦片总结前言 因为项目需求,需要在高德地图上加载五层十五级瓦片。这八竿子打不着的结合,着实没有思路。好在高德地图SDK提供了一个加载地表覆盖物的接口(GroundOverlay),这就为加载五层…

antv x6填坑指南: 部分节点拖拽和操作撤销重做不生效问题、使用Stencil过滤时过滤后分组的显示高度无法根据过滤节点自适应问题

问题1. 部分分组中节点拖拽添加或操作后撤销重做操作不生效。 前提&#xff1a;使用Stencil插件&#xff0c;创建画布侧边栏的 UI 组件&#xff0c;同时使用其分组、折叠能力。分组包含固定分组、后台接口获取的动态分组和组件。 //固定分组初始化 initStencil (graph, stenc…

Ubuntu Server 20.04.6安装Anaconda3

下载安装包 去下面的网页找到自己想要安装的对应版本的链接&#xff1a; https://repo.anaconda.com/archive/ 我安装的版本链接如下&#xff1a; https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh 复制这个链接后使用如下命令下载&#xff1a; wget …

国内的几款强大的AI智能—AI语言模型

R5Ai智能助手是一款由百度研发的文心一言&#xff0c;它支持gpt4 / gpt-3.5 / claude&#xff0c;也支持AI绘画&#xff0c;每天提供十次免费使用机会&#xff0c;无需魔法。该智能助手具有以下优点&#xff1a;会画画&#xff0c;没有使用次数限制&#xff0c;可以在界面上找到…

YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)

一、本文介绍 本文给大家带来的改进机制是RFAConv&#xff0c;全称为Receptive-Field Attention Convolution&#xff0c;是一种全新的空间注意力机制。与传统的空间注意力方法相比&#xff0c;RFAConv能够更有效地处理图像中的细节和复杂模式(适用于所有的检测对象都有一定的…

矩阵元素求和:按行、按列、所有元素np.einsum()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 矩阵元素求和&#xff1a; 按行、按列、所有元素 np.einsum() [太阳]选择题 下列说法正确的是&#xff1a; import numpy as np A np.array([[1, 2],[3, 4]]) print("【显示】A") p…

修改TV app卸载页面选中样式(GuidedStepFragment)

1.源码位置 packages\apps\PackageInstaller2.解决方案 1.继承Theme.Leanback.GuidedStep <style name"Theme.Settings.GuidedStep" parent"style/Theme.Leanback.GuidedStep"><item name"guidedStepBackground">color/settings_…

新手零基础学习彩铅画,彩铅快速入门教程合集

一、教程描述 画画是很美好的一件事情&#xff0c;你可以把你想到的&#xff0c;或者看到的都画下来&#xff0c;照相机可以拍下任何你看到的&#xff0c;但是你想到的任何事物&#xff0c;只能通过绘画的方式来表达。本套教程是非常不错的&#xff0c;彩铅的小视频教程&#…

动手学深度学习笔记

1. 深度学习基础与MLP 1.1 框架&#xff1a; 线性回归&#xff1b; Softmax回归&#xff08;实际上用于分类问题&#xff09;&#xff1b; 感知机与多层感知机&#xff1b; 模型选择&#xff1b; 权重衰退&#xff08;weight decay&#xff09;&#xff1b; 丢弃法&…

es6 语法 解构 拼接 扩展运算 数组降为 symbol 迭代器 生成器 定时器 map 映射 对象字面量 私有属性 构造函数继承

es6 语法 解构 拼接 扩展运算 数组降为 symbol 迭代器 生成器 定时器 map 映射 对象字面量 私有属性 构造函数继承 promise async await 解构 // 解构var character {name:Brucezzz,pseudonym:Bruce,metadata:{age:32,gender:male,airbags: "说两句啊",airconditio…

深入理解Zookeeper系列-4.Watcher原理

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…

【LeetCode热题100】【双指针】盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 示例…

如何往excel中写子表?

with pd.ExcelWriter("C:/last_date.xlsx") as writer:for i in range(0, 10):df pd.DataFrame()df.to_excel(writer, indexFalse, sheet_namestr(days[i 1]))