7、文件系统挂载、ext文件系统及read命令、Linux RAID、lvm应用

文件系统管理

​ 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载;解除此关联关系的过程称之为卸载。

​ 把设备关联挂载点:mount;卸载时,可使用设备或过载点:umount

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

挂载方法:mount DEVICE MOUNT_POINT

​ mount:通过查看 /etc/mtab 文件显示当前系统已挂载的所有设备

​ mount [-fnrsvw] [-t vfstype] [-o options] device dir

​ device:指明要挂载的设备
​ (1)设备文件:
​ (2)卷标:
​ (3)UUID,-U ‘UUID’:
​ (4)伪文件系统名称:

​ dir:挂载点
​ 事先存在,建议使用空目录;进程正在使用中的设备无法被卸载

​ 常用命令选项:

​ -t vsftype:指定要挂载的设备上的文件系统类型
​ -r:只读挂载
​ -w:读写挂载
​ -n:不更新 /etc/mtab
​ -a:自动挂载所有支持自动挂载的设备(定义在 /etc/fstab 文件中,挂载选项中有 “自动挂载” 功能)
​ -L ’LABEL‘:以卷标指定挂载设备
​ -U ‘UUID’:以 UUID 指定要挂载的设备
​ -B --bind:绑定目录到另一个目录上

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

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

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

卸载命令:
# umount DEVICE
# umount MOUNT_POINT
查看正在访问指定文件系统的进程:# fuser -v MOUNT_POINT
终止所有正在访问指定的文件系统进程:# fuser -km MOUNT_POINT

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

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

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

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

文件挂载的配置文件:/etc/fstab,系统初始化的脚本会读取此文件,并尝试使用 mount 命令分析其中的每一行,每一行用来定义一个要挂载的文件系统

​ 注:swap 的挂载点就叫 swap,无专门挂载的目录,而且 swap 设备是用 swapon 命令激活,而不是用 mount 命令挂载

[root@localhost ~]# cat /etc/fstab 
# 要挂载的设备或伪文件系统 	挂载点 	文件系统类型  	挂载选项 	转储频率  	自检次序
#
# /etc/fstab
# Created by anaconda on Mon Aug 30 01:57:41 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=1f63fd17-4235-44d3-bb4e-bf002ace7f7c /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

​ 要挂载的设备或伪文件系统:
​ 设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)

​ 过载选项:defaults

​ 转储频率:
​ 0:不做备份
​ 1:每天转储
​ 2:每隔一天转储

​ 自检次序:0,不自检;1,首先自检,一般只有 rootfs 采用 1

文件系统上其它概念:

​ 超级块用来描述整个文件系统的大图景结构的组织形式,有多少块组、挂载选项等信息,也就是使用 tune2fs -l DEVICE 所能够看到的信息(超级块中的信息),若使用 dumpe2fs DEVICE,不仅能够显示自己文件系统的超级块信息,还能够显示每一个组的信息,这些组信息都是保存在这个组的叫组自己的描述块中。

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

链接文件:
硬链接:两个文件路径指向同一个 inode 编号
任何一个要访问的文件的路径的基名要求和 inode 在同一个分区下,所以硬链接不能够跨分区进行
不能够对目录进行,会造成循环引用
指向同一个inode的多个不同路径;创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数

​ 符号链接:
​ 可以对目录进行
​ 可以跨分区
​ 指向的是另一个文件的路径,其大小为指向的路径字符串的长度,不增加或减少目标文件 inode 的引用计数

​ ln [-sv] SRC DEST
​ -s: symbolic link
​ -v: verbose

练习:
1、创建一个 20G 的文件系统,块大小为2048,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项;
(1) 创建20G分区;
(2) 格式化:
mke2fs -t ext4 -b 2048 -L ‘TEST’ /dev/DEVICE
(3) 编辑/etc/fstab文件
LABEL=‘TEST’ /testing ext4 defaults,acl 0 0

​ 2、创建一个5G的文件系统,卷标HUGE,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext3;

​ 3、写一个脚本,完成如下功能:
​ (1) 列出当前系统识别到的所有磁盘设备;
​ (2) 如磁盘数量为1,则显示其空间使用信息;
​ 否则,则显示最后一个磁盘上的空间使用信息;
​ if [ $disks -eq 1 ]; then
​ fdisk -l /dev/[hs]da
​ else
​ fdisk -l $(fdisk -l /dev/[sh]d[a-z] | grep -o “^Disk /dev/[sh]d[a-]” | tail -1 | cut -d’ ’ -f2)
​ fi

bash脚本编程之用户交互:
read [option]… [name …]
-p ‘PROMPT’
-t TIMEOUT

bash -n /path/to/some_script
检测脚本中的语法错误

bash -x /path/to/some_script
调试执行

示例:

#!/bin/bash

		# Description: read testing

		read -p "Enter a disk special file: " diskfile
		[ -z "$diskfile" ] && echo "Fool" && exit 1

		if fdisk -l | grep "^Disk $diskfile" &> /dev/null; then
		    fdisk -l $diskfile
		else
		    echo "Wrong disk special file."
		    exit 2
		fi

RAID

​ 提高IO能力:磁盘并行读写;
​ 提高耐用性:磁盘冗余来实现
​ 级别:多块磁盘组织在一起的工作方式有所不同
​ RAID 实现的方式:
​ 外接式磁盘阵列:通过扩展卡提供适配能力 (硬件方式)
​ 内接式RAID:主板集成 RAID 控制器 (硬件方式)
​ SoftWare RAID (软件方式)

级别:

​ RAID-0:读写性能提升;可用空间:可用空间:N*min(S1,S2,…);无容错能力;最少磁盘数:2,2+
​ 将多块硬盘平行组织起来当一块硬盘来实现 I/O 并行组织的磁盘组织结构。将数据条带化后分别存储在组织起来的多块硬盘中。

​ RAID-1:读性能提升、写性能略有下降;可用空间:1*min(S1,S2,…);有冗余能力;最少磁盘数:2, 2+
​ 最少两块硬盘,数据在磁盘中各存取一份

​ RAID-4
​ 将3块或3块以上的硬盘组织成 RAID,在存储数据时其中有一块盘用来存储校验码,其余两块存储数据。
​ 单块盘专门用于校验盘,访问压力较大,容易成为性能瓶颈,但允许损坏一块盘以降级方式工作。

​ RAID-5:读写性能提升;可用空间:(N-1)*min(S1,S2,…);有容错能力:1块磁盘;最少磁盘数:3, 3+
​ 采用循环做校验盘的机制

​ RAID-6:读写性能提升;可用空间:(N-2)*min(S1,S2,…);有容错能力:2块磁盘;最少磁盘数:4, 4+
​ 用两块盘做校验盘,而且做循环校验

混合类型
RAID-10:读写性能提升;可用空间:N*min(S1,S2,…)/2;有容错能力:每组镜像最多只能坏一块;最少磁盘数:4, 4+
先两两一组做成 RAID-1,在将一堆 RAID-1 做成 RAID-0

​ RAID-01:
​ 先将硬盘分成两组,每组做成 RAID-0;在将每组做成 RAID-1

​ RAID-50、RAID-7

​ JBOD:可用空间:sum(S1,S2,…)
​ 功能:将多块磁盘的空间合并一个大的连续空间使用;

​ CentOS 6上的软件RAID的实现:
​ 结合内核中的md(multi devices)

​ mdadm:模式化的工具
​ 命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
​ 支持的RAID级别:LINEAR, RAID-0, RAID-1, RAID-4, RAID-5, RAID-6, RAID-10;

​ 模式:
​ 创建:-C
​ 装配: -A
​ 监控: -F
​ 管理:-f, -r, -a

​ <raiddevice>: /dev/md#
​ <component-devices>: 任意块设备

​ -C: 创建模式
​ -n #: 使用#个块设备来创建此RAID;
​ -l #:指明要创建的RAID的级别;
​ -a {yes|no}:自动创建目标RAID设备的设备文件;
​ -c CHUNK_SIZE: 指明块大小;
​ -x #: 指明空闲盘的个数;

​ 例如:创建一个10G可用空间的RAID-5;

​ -D:显示raid的详细信息;
​ mdadm -D /dev/md#

​ 管理模式:
​ -f: 标记指定磁盘为损坏;
​ -a: 添加磁盘
​ -r: 移除磁盘

​ 观察md的状态:
​ cat /proc/mdstat

​ 停止md设备:
​ mdadm -S /dev/md#

​ watch命令:
​ -n #: 刷新间隔,单位是秒;

​ watch -n# ‘COMMAND’

​ 练习1:创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录;
​ 练习2:创建一个可用空间为10G的RAID-10设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录;

LVM2

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

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

pv管理工具:
pvs:简要pv信息显示
pvdisplay:显示pv的详细信息

​ pvcreate /dev/DEVICE: 创建pv

vg管理工具:
vgs
vgdisplay

​ vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
​ vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
​ vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
​ 先做 pvmove

vgremove

lv管理工具:
lvs
lvdisplay

​ lvcreate -L #[mMgGtT] -n NAME VolumeGroup

​ lvremove /dev/VG_NAME/LV_NAME

扩展逻辑卷:

lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

resize2fs /dev/VG_NAME/LV_NAME // 重置 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

mount

快照:snapshot
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

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

练习2: 新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;

练习3:扩展testlv至7G,要求archlinux用户的文件不能丢失;

练习4:收缩testlv至3G,要求archlinux用户的文件不能丢失;

练习5:对testlv创建快照,并尝试基于快照备份数据,验正快照的功能;

文件系统挂载使用:
挂载光盘设备:
光盘设备文件:
IDE: /dev/hdc
SATA: /dev/sr0

​ 符号链接文件:
​ /dev/cdrom
​ /dev/cdrw
​ /dev/dvd
​ /dev/dvdrw

​ mount -r /dev/cdrom /media/cdrom
​ umount /dev/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=c/tmp/mbr.bak bs=512 count=1

​ 破坏MBR中的bootloader:
​ dd if=/dev/zero of=/dev/sda bs=256 count=1

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

LVM简单步骤

1、创建分区并调整分区类型为8e
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): e                // 直接创建扩展分区
Partition number (1-4, default 1): 
First sector (2048-10485759, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): 
Using default value 10485759
Partition 1 of type Extended and of size 5 GiB is set

Command (m for help): n           
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): l                              // 在扩展分区上创建逻辑分区5,6,7,8,9
Adding logical partition 6
First sector (1030144-10485759, default 1030144): 
Using default value 1030144
Last sector, +sectors or +size{K,M,G} (1030144-10485759, default 10485759): +500M
Partition 6 of type Linux and of size 500 MiB is set

Command (m for help): t                             // 调整分区类型             
Partition number (1,5-9, default 9): 5
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p
Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5372fd24
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10485759     5241856    5  Extended
/dev/sdb5            4096     1028095      512000   8e  Linux LVM
/dev/sdb6         1030144     2054143      512000   8e  Linux LVM
/dev/sdb7         2056192     3080191      512000   8e  Linux LVM
/dev/sdb8         3082240     5179391     1048576   8e  Linux LVM
/dev/sdb9         5181440    10485759     2652160   8e  Linux LVM

Command (m for help): w               // 保存退出
The partition table has been altered!
	
2、刷新分区
[root@localhost ~]# partprobe /dev/sdb
[root@localhost ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0    5G  0 disk 
├─sdb1   8:17   0    1K  0 part 
├─sdb5   8:21   0  500M  0 part 
├─sdb6   8:22   0  500M  0 part 
├─sdb7   8:23   0  500M  0 part 
├─sdb8   8:24   0    1G  0 part 
└─sdb9   8:25   0  2.5G  0 part 

3、创建 pv
[root@localhost ~]# pvcreate /dev/sdb{5,6,7}
  Physical volume "/dev/sdb5" successfully created.
  Physical volume "/dev/sdb6" successfully created.
  Physical volume "/dev/sdb7" successfully created.
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <19.00g      0 
  /dev/sdb5         lvm2 ---  500.00m 500.00m
  /dev/sdb6         lvm2 ---  500.00m 500.00m
  /dev/sdb7         lvm2 ---  500.00m 500.00m

4、创建 VG
[root@localhost ~]# vgcreate myvg /dev/sdb{5,6}
  Volume group "myvg" successfully created
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n- <19.00g      0 
  myvg     2   0   0 wz--n- 992.00m 992.00m
[root@localhost ~]# vgextend myvg /dev/sdb7								// 扩展vg
  Volume group "myvg" successfully extended

5、创建 LV
[root@localhost ~]# lvcreate -L 400M -n mylv myvg       // -L 大小 -n lv_name vg_name
  Logical volume "mylv" created.
[root@localhost ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
  mylv myvg   -wi-a----- 400.00m 
  
6、创建文件系统
[root@localhost ~]# mke2fs -t ext4 -b 1024 -L MYLV /dev/myvg/mylv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=MYLV
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
102400 inodes, 409600 blocks
20480 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=34078720
50 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

7、挂载
[root@localhost ~]# mount /dev/myvg/mylv /mnt/mylv.mount/
[root@localhost mapper]# lsblk /dev/sdb
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb             8:16   0    5G  0 disk 
├─sdb1          8:17   0    1K  0 part 
├─sdb5          8:21   0  500M  0 part 
│ └─myvg-mylv 253:2    0  400M  0 lvm  /mnt/mylv.mount
├─sdb6          8:22   0  500M  0 part 
├─sdb7          8:23   0  500M  0 part 
├─sdb8          8:24   0    1G  0 part 
└─sdb9          8:25   0  2.5G  0 part 

可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This may be useful if you have installed both Windows and Linux as a dual boot environment on your computer. What features are supported? Complete reading and writing access to files and directories of volumes with theExt2 orExt3 file system. Supports features which are specific to the I/O-system of Windows: Byte Range Locks, Directory Notfication (so the Explorer updates the view of a directory on changes within that directory), Oplocks (so SMB clients are able to cache the content of files). Allows Windows to run with paging files on Ext2 volumes. UTF-8 encoded file names are supported. The driver treats files with file names that start with a dot "." character ashidden. Supports GPT disks if the Windows version used also does. Supports use of the Windows mountvol utility to create or delete drive letters for Ext2 volumes (except on Windows NT 4.0). See also section"Can drive letters also be configured from scripts?". What features are *not* supported? Inodes that are larger than 128 bytes are not supported. Access rights are not maintained. All users can access all the directories and files of an Ext2 volume. If a new file or directory is created, it inherits all the permissions, the GID and the UID from the directory where it has been created. There is one exception to this rule: a file (but not a directory) the driver has created always has cleared "x" permissions, it inherits the "r" and the "w" permissions only. See also section"What limitations arise from not maintaining access rights?". The driver does not allow accessing special files at Ext2 volumes, the access will be always denied. (Special files are sockets, soft links, block devices, character devices and pipes.) Alternate 8.3-DOS names are not supported (just because there is no place to store them in an Ext2 file system). This can prevent legacy DOS applications, executed by the NTVDM of Windows, from accessing some files or directories. Currently the driver does not implement defragging support. So defragmentation applications will neither show fragmentation information nor defragment any Ext2 volume. This software does not achieve booting a Windows operating system from an Ext2 volume. LVM volumes are not supported, so it is not possible to access them.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值