1 分区工具fdisk

fdisk -l [-u] [device...]   查看分区
fdisk [device...]   管理MBR分区

子命令:

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

2 Linux常用文件系统

  • ext2:Extended file system适用于那些分区容量不是太大,更新也不频繁的情况,例如/boot分区
  • ext3:是ext2的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常中恢复
  • ext4:是ext文件系统的最新版。提供了很多新的特性,包括纳秒级的时间戳、创建和使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
  • xfs:SGI,支持最大8EB的文件系统
  • swap
  • iso9660光盘
  • btrfs(oracle)
  • reiserfs

常用的文件系统特性

  • FAT32:最多只能支持16TB的文件系统个4G的文件

  • NTFS:最多只能支持16EB的文件系统和16EB的文件

  • EXT3:

    • 最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
    • Ext3目前只支持32000个子目录
    • Ext3文件系统使用32位空间记录快数量和inode数量
    • 当数据写入到Ext3文件系统时,Ext3的数据块分配器每次只能分配一个4kb的快
  • EXT4:

    • EXT4是linux系统下的日志文件系统,是EXT3文件系统的后续版本
    • Ext4的文件系统容量达到1EB,而单个文件则达到16TB
    • 理论上支持无线数量的子目录
    • Ext4文件系统使用64位空间记录快数量和inode数量
    • Ext4的多块分配器支持一次第哦啊用分配多个数据块
    • 修复速度更快
  • XFS:

    • 根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
    • 用优化算法,日志记录对整体文件操作影响非常小
    • 是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件达到8EB
    • 能以接近裸设备I/O的性能存储数据

3 创建文件系统工具:

  • mkfs命令:

    • mkfs.FS_TYPE /dev/DEVICE
      ext4
      xfs
      btrfs
      vfat

    • mkfs -t .FS_TYPE /dev/DEVICE
      -L 'LABEL' 设置卷标

  • mke2fs:ext系列文件系统专用管理工具

常用选项:

  • -t {ext2|ext3|ext4|xfs} 指定文件系统类型
  • -b {1024|2048|4096} 指定块block大小
  • -L 'LABEL' 设置卷标
  • -j 相当于 -t ext3,mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
  • -i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
  • -N # 指定分区中创建多少个inode
  • -I 一个inode记录占用的磁盘空间大小,128---4096
  • -m # 默认位5%,位管理人员预留的空间占总空间的百分比,可以为小数
  • -o FEATURE [...] 启用指定特性
  • -o ^FEATURE 关闭指定特性

4 挂载

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

卸载:为解除此关联关系的过程

把设备关联挂载点:mount Point

挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空

进程正在使用中的设备无法被卸载

4.1 挂载文件系统mount

格式:

mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint

device:指明要挂载的设备

  • 设备文件:例如:/dev/sda5
  • 卷标:-L 'LABEL',例如 -L 'MYDATA'
  • UUID:-U 'UUID':例如:-U d25d54cf-a6a9-4cd8-842a-2fac98f6bd72
  • 伪文件系统名称,proc,sysfs,devtmpfs,configfs

mountpoint:挂载点目录必须事先存在,建议使用空目录

mount常用命令选项:

  • -t fstype 指定要挂载的设备上的为你教案系统类型,如:ext4,xfs
  • -r readonly,只读挂载
  • -w read and write,读写挂载
  • -n 不更新/etc/mtab,mount不可见
  • -a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
  • -L 'LABEL' 以卷标指定挂载设备
  • -u 'UUID' 以UUID指定要挂载的设备
  • -B,--bind 绑定到目录到另一目录上
  • -o 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

挂载规则:

  • 一个挂载点同—时间只能挂载一个设备
  • 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
  • —个设备可以同时挂载到多个挂载点
  • 通常挂载点一般是已存在空的目录

4.2 卸载文件系统umount

卸载时:可使用设备,也可以使用挂载点

umount 设备名|挂载点

5 逻辑卷管理器(LVM)

5.1 LVM介绍

LVM: Logical Volume Manager可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,允许在多个物理设备间重新组织文件系统

LVM可以弹性的更改LVM的容量

通过交换PE来进行资料的转换,将原来的LV内的PE转移到其他的设备中来降低LV的容量,或将其他设备中的PE加到LV中以加大容量

实现过程

  • 将设备指定为物理卷
  • 用一个或者多个物理卷来创建一个卷组,物理卷使用固定大小的物理区域(Physical Extend,PE)来定义的
  • 在物理卷上创建的逻辑卷,是由物理区域(PE)组成
  • 可以在逻辑卷上创建文件系统并挂载

第一个路基卷对应的设备名:/dev/dm-#

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

软连接:

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

5.2 实现逻辑卷

[root@centos8 ~]# yum install lvm2 -y   # 安装工具包
5.2.1 pv管理工具

显示pv信息

pvs:简要pv信息显示
pvdisplay

创建pv

pvcreate /dev/DEVICE

删除pv

pvremove /dev/DEVICE
5.2.2 vg管理工具

显示卷组

vgs
vgdisplay

创建卷组

vgcreate [-s #[kKmMgGtTpPeE]] voluemeGroupName PhysicalDevicePath [PhysicalDevicePath...]
# 示例
vgcreate -s 16M vg0 /dev/sdb /dev/sdc # 指定PE的大小,默认为4M

管理卷组

vgextend voluemeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce voluemeGroupName PhysicalDevicePath [PhysicalDevicePath...]

删除卷组

  • 先做pvmove
  • 再做vgremove
5.2.3 lv管理工具

显示逻辑卷

lvs
lvdisplay

创建逻辑卷

lvcreate -L #[mMgGtT] -n name volumegroup

lvcreate -l 60%VG -m mylv testvg lvcreate -l 100%FREE -n yourlv testvg

删除逻辑卷

lvremove /dev/VG_NAME/LV_NAME

重设文件系统大小

fsadm [options] resize <device> [<new_size>[BKMGTPE]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
xfs_growfs /mountpoint

# 创建物理卷
pvcreate /dev/sda3
# 为卷组分配物理卷
vgcretae vg0 /dev/sda3
# 从卷组创建逻辑卷
lvcreate -L 256M -n data vg0
#  mkfs.xfs /dev/vg0/data
# 挂载
mount /dev/vg0/data /mnt/data
5.2.4 扩展和缩减逻辑卷
5.2.4.1 在线扩展逻辑卷
# 两步实现
# 第一步实现逻辑卷的空间扩展
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
#第二步实现文件系统的扩展
# 针对ext系列
resize2fs /dev/VG_NAME/LV_NAME
# 针对xfs
xfs_growfs mountpoint

# 一步实现空间和文件系统的扩展
lvresize -r -1 +100%FREE /dev/VG_NAME/LV_NAME
5.2.4.2 缩减逻辑卷

注意:缩减有数据损坏的风险,建议先备份再缩减,xfs文件系统不支持缩减

# 先取消挂载
umount /dev/VG_NAME/LV_NAME
# 检查文件系统完整性
e2fsck -f /dev/VG_NAME/LV_NAME
# 缩减文件系统
resize2fs /dev/VG_NAME/LV_NAME #[nMgGTt]
# 缩减逻辑卷
lvreduce -L [-]#[nMgGtT] /dev/VG_NAME/LV_NAME
# 恢复挂载
mount /dev/VG_NAME/LV_NAME mountpoint

练习题:

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

echo 'n\np\n\n\n+2G\nw'|fdisk /dev/sda
mkfs.ext4 -b 2048 -m 1 -L TEST /dev/sda1
vim /etc/fstab
UUID= /test ext4 defaults,acl 0 0
mount -a

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

[root@centos8 ~]# pvcreate /dev/sdd1 /dev/sde1 
  Physical volume "/dev/sdd1" successfully created.
  Physical volume "/dev/sde1" successfully created.
[root@centos8 ~]# vgcreate testvg -s 16M /dev/sdd1 /dev/sde1
  Volume group "testvg" successfully created
[root@centos8 ~]# lvcreate -n testlv -L 5G /dev/testvg
  Logical volume "testlv" created.
[root@centos8 ~]# mkfs.ext4 /dev/testvg/testlv 
mke2fs 1.44.6 (5-Mar-2019)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: 856ed22e-d4cc-49f8-90b6-948c9e491870
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

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

[root@centos8 ~]# mkdir /users
[root@centos8 ~]# echo 'UUID=856ed22e-d4cc-49f8-90b6-948c9e491870 /users ext4 defaults 0 0' >> /etc/fstab
[root@centos8 ~]# mount -a
[root@centos8 ~]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/testvg-testlv  4.9G   20M  4.6G   1% /users
[root@centos8 ~]# vgdisplay 
  --- Volume group ---
  VG Name               testvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <19.97 GiB
  PE Size               16.00 MiB
  Total PE              1278
  Alloc PE / Size       320 / 5.00 GiB
  Free  PE / Size       958 / <14.97 GiB
  VG UUID               pX1vzh-UlQp-fomv-aWyZ-oPcx-xdkt-lCj80Q
[root@centos8 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/testvg/testlv
  LV Name                testlv
  VG Name                testvg
  LV UUID                wqJVJk-0mLx-pgve-62FD-Up6N-i2ii-x3m3i2
  LV Write Access        read/write
  LV Creation host, time centos8, 2021-03-28 18:32:30 +0800
  LV Status              available
  # open                 1
  LV Size                5.00 GiB
  Current LE             320
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3