zoukankan      html  css  js  c++  java
  • 10.磁盘和文件系统管理

    1.磁盘基础知识

    1.1 磁盘接口类型

    • IDE:133MB/s,并行接口,早期家用电脑
    • SCSI:640MB/s,并行接口,早期服务器
    • SATA:6Gbps,SATA数据端口与电源端口是分开的,即需要两条线,一条数据线,一条电源线
    • SAT:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而 SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入 SAS主板上,反之不成
    • USB
    • M.2

    注意:速度不是由单纯的接口类型决定,支持Nvme协议硬盘速度是最快的

    1.2 硬盘存储术语

    1.2.1 CHS
    • CHS采用 24 bit位寻址
    • 其中前10位表示cylinder,中间8位表示head,后面6位表示sector
    • 最大寻址空间 8 GB
    • head:磁头 磁头数=盘面数
    • track:磁道 磁道=柱面数
    • sector:扇区,512bytes
    • cylinder:柱面 1柱面=512 * sector数/trackhead数=51263*255=7.84M
    1.2.2 LBA(logical block addressing)
    • LBA是一个整数,通过转换成 CHS 格式完成磁盘具体寻址
    • ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到 128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes

    由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方 式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

    2.管理存储

    2.1 磁盘使用三部曲之磁盘分区

    2.1.1 分区的意义
    • 优化I/O性能
    • 实现磁盘空间配额限制
    • 提高修复速度
    • 隔离系统和程序
    • 安装多个OS
    • 采用不同文件系统
    2.1.2 MBR分区

    MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

    MBR分区前512bytes

    ​ 446bytes: boot loader

    ​ 64bytes:分区表,其中每16bytes标识一个分区

    ​ 2bytes: 55AA(表示分区正在被使用)

    MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

    MBR分区:主和扩展分区对应的1--4,/dev/sda3,逻辑分区从5开始,/dev/sda5

    2.1.3 GPT分区

    GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z( 512Byte/block )64Z ( 4096Byte/block)

    使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份, 并有CRC校验位

    UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系统可以 启动

    GPT分区结构分为4个区域:

    • GPT头
    • 分区表
    • GPT分区
    • 备份区域
    2.1.4 查看分区

    lsblk:列出磁盘设备

    lsblk [options] [device...]
    

    查看内核是否已经识别新的分区

    cat /proc/partations
    

    若硬盘添加无法显示可执行如下操作

    [root@centos8 data]# ll /sys/block/sd*
    lrwxrwxrwx. 1 root root 0 Jan 30 23:41 /sys/block/sda -> ../devices/pci0000:00/0000:00:10.0/host11/target11:0:0/11:0:0:0/block/sda
    [root@centos8 data]echo "- - -" > /sys/class/scsi_host/host11/scan
    此时可重新查看添加的硬盘
    
    2.1.5 fdisk和gdisk创建分区

    格式:

    gdisk [device...]             类fdisk 的GPT分区工具
    fdisk -l [-u] [device...]     查看分区
    fdisk [device...]             管理MBR分区
    

    子命令:

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

    分区后重读分区表:

    #Centos6 通知内核重新读取硬盘分区表除了CentOS 6 以外的其它版本 5,7,8
    partprobe
    #Centos6 通知内核重新读取硬盘分区表
    新增分区用
    partx -a /dev/DEVICE
    kpartx -a /dev/DEVICE -f: force
    
    删除分区用
    partx -d --nr M-N /dev/DEVICE
    

    MBR分区推荐使用fdisk命令,GPT推荐使用gdisk命令

    2.1.6 parted 命令分区

    注意:parted的操作与fdisk和gdisk不同的是它是实时生效

    格式:

    parted [选项]... [设备 [命令 [参数]...]...] 
    

    常用选项:

    • -l 列出所有硬盘分区信息
    • -p 进入交互命令模式

    常见命令:

    • mklabel label-type 指定分区方式(GPT或者MBR)
    • mkpart [part-type name fs-type] start end 创建指定大小的分区,默认单位M
    • print 显示所有分区
    • rm 删除指定分区
    • name 指定分区名字

    范例:

    [root@centos8 ~]# parted /dev/sdb mklabel gpt
    Information: You may need to update /etc/fstab.
    [root@centos8 ~]# parted /dev/sdb print                             
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    [root@centos8 ~]# parted /dev/sdb mkpart primary ext4 1001 2001           
    Information: You may need to update /etc/fstab
    [root@centos8 ~]# parted /dev/sdb print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    Number  Start   End     Size   Type      File system  Flags
     1      1049kB  1000MB  999MB  extended               lba
     2      1001MB  2001MB  999MB  primary
    
    [root@centos8 ~]# parted /dev/sdb rm 1
    Information: You may need to update /etc/fstab.
    [root@centos8 ~]# parted /dev/sdb print
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 21.5GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    Number  Start   End     Size   Type     File system  Flags
     2      1001MB  2001MB  999MB  primary
    

    2.2 磁盘使用三部曲之创建文件系统

    2.2.1 文件系统概念

    操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统

    查看支持的文件系统:

    /lib/modules/`uname -r`/kernel/fs
    cat /proc/filesystems
    

    帮助:man 5 fs

    2.2.2 文件系统类型

    Linux 常用文件系统

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

    Windows 常用文件系统

    • FAT32 :最多只能支持16TB的文件系统和4GB的文件
    • NTFS :最多只能支持16EB的文件系统和16EB的文件
    • exFAT
    2.2.3 创建文件系统

    mkfs:创建文件系统

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

    格式:

    mkfs [options] [-t type] [fs-options] device [size]
    mkfs.type device
    mke2fs [options] device
    

    常用选项:

    • -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 关闭指定特性
    2.2.4 查看文件系统

    blkid:显示设备属性信息

    格式:

    blkid [OPTION]... [DEVICE]
    

    常用选项:

    • -L LABEL 根据指定的LABEL来查找对应的设备
    • -U UUID 根据指定的UUID来查找对应的设备

    e2label:管理ext系列文件系统的LABEL

    格式:

    e2label DEVICE [LABEL]
    

    findfs:通过label和UUID查找分区

    格式:

    findfs [options] LABEL=<label>
    findfs [options] UUID=<uuid>
    

    dumpe2fs:显示ext文件系统信息,将磁盘块分组管理

    格式:

    dumpe2fs  [options] device
    

    常用选项:

    • -h:查看超级块信息,不显示分组信息

    xfs_info:显示示挂载或已挂载的 xfs 文件系统信息

    格式:

    xfs_info mountpoint|devname
    

    范例:

    [root@centos8 ~]# xfs_info /dev/sdb1
    meta-data=/dev/sdb1              isize=512    agcount=4, agsize=65536 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1
    data     =                       bsize=4096   blocks=262144, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
    2.2.5 修复文件系统

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

    注意:一定不要在挂载状态下执行下面命令修复

    fsck: File System Check

    格式:

    fsck.FS_TYPE
    fsck -t FS_TYPE 
    FS_TYPE 一定要与分区上已经文件类型相同
    

    常用选项:

    • -a 自动修复
    • -r 交互式修复错误

    e2fsck:ext系列文件专用的检测修复工具

    格式:

    -y 自动回答为yes
    -f 强制修复
    -p 自动进行安全的修复文件系统问题
    

    xfs_repair:xfs文件系统专用检测修复工具

    格式:

    xfs_repair  [options] device
    

    常用选项:

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

    2.3 磁盘使用三部曲之挂载文件系统

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

    2.3.1 挂载文件系统mount

    格式:

    mount [-fnrsvw] [-t fstype] [-o options] device dir
    

    device:指明要挂载的设备

    • 设备文件:例如:/dev/sda5
    • 卷标:-L 'LABEL', 例如 -L 'MYDATA'
    • UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
    • 伪文件系统名称:proc, sysfs, devtmpfs, configfs

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

    常用选项:

    • -t vsftype 指定要挂载的设备上的文件系统类型

    • -r readonly,只读挂载

    • -w read and write, 读写挂载

    • -n 不更新/etc/mtab,mount不可见

    • -a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有 auto功能)

    • -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

    挂载规则:

    • 一个挂载点同一时间只能挂载一个设备
    • 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
    • 一个设备可以同时挂载到多个挂载点
    2.3.2 卸载文件系统 umount

    格式:

    umount 设备名|挂载点
    
    2.3.3 查看挂载情况

    查看挂载

    #通过文件查看
    /etc/fstab, /etc/mtab and /proc/mounts
    
    #通过命令查看
    mount
    

    查看挂载点情况

    #用法
    findmnt [options] device|mountpoint
    
    #范例
    [root@centos8 ~]# findmnt /boot
    TARGET SOURCE    FSTYPE OPTIONS
    /boot  /dev/sda1 ext4   rw,relatime,seclabel
    

    管理正在访问指定文件系统的进程

    #lsof
    lsof MOUNT_POINT		查看所有正在访问文件系统的进程
    
    #fuser
    fuser -v MOUNT_POINT	查看所有正在访问文件系统的进程
    fuser -km MOUNT_POINT	终止所有正在访问文件系统的进程
    
    2.3.4 持久挂载

    将挂载保存到 /etc/fstab 中可以下次开机时,自动启用挂载

    查看帮助:

    man	5 	fstab
    mount	-a					#可以使新添加的挂载项生效
    

    fstab格式:

    [root@centos8 ~]# cat /etc/fstab 
    #
    UUID=ccd25378-c82e-4bea-ad12-81fba73fdf70 /                       xfs     defaults        0 0
    
    • 要挂载的设备信息(UUID、LABLE等)

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

    • 文件系统类型

    • 挂载选项

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

    • fsck检查的文件系统的顺序:允许的数字是0 1 2

      0:不自检 ,1:首先自检;一般只有rootfilesystems才用 2:非rootfilesystems使用

    2.4 swap分区

    2.4.1 swap 介绍

    当没有足够的 RAM 保存系统处理的数据 时会将数据写入 swap 分区,当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。

    官方推荐推荐系统 swap 空间

    https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_gui de/sect-disk-partitioning-setup-ppc#sect-recommended-partitioning-scheme-ppc

    2.4.2 交换分区实现过程

    1.创建交换分区或者文件

    [root@centos8 ~]#echo -e 'n\np\n\n\n+2G\nt\n82\nw\n' | fdisk /dev/sdc
    

    2.创建swap分区

    [root@centos8 ~]#mkswap /dev/sdc1
    

    3.写入配置文件fstab

    [root@centos8 ~]#vim /etc/fstab
    UUID=d3140a7a-65b7-4cb7-8a2b-12d38aa98c6f swap         swap defaults 0 0
    

    4.使用swapon -a 激活交换空间

    [root@centos8 ~]#swapon -a
    [root@centos8 ~]#free -h
                 total       used       free     shared buff/cache   available
    Mem:          3.7Gi       264Mi       3.2Gi       9.0Mi       261Mi       3.2Gi
    Swap:         4.0Gi         0B       4.0Gi
    [root@centos8 ~]#cat /proc/swaps
    Filename Type Size Used Priority
    /dev/sda5                               partition 2097148 0 -2
    /dev/sdc1                               partition 2097148 0 -3
    

    5.swapon和swapoff

    #启用swap分区
    swapon [OPTION]... [DEVICE]
    	-a:激活所有的交换分区
    	-p PRIORITY:指定优先级,也可在/etc/fstab 在第4列指定:pri=value
    	
    #禁用swap分区
    swapoff [OPTION]... [DEVICE]
    

    swap优先级说明:可以指定swap分区0到32767的优先级,值越大优先级越高

    2.5 移动介质使用

    2.5.1 使用光盘

    挂载和卸载

    [root@centos8 ~]# mount /dev/cdrom /mnt/
    [root@centos8 ~]# unmount	/mnt/
    

    创建ISO文件

    [root@centos8 ~]# cp /dev/cdrom /root/centos.iso
    [root@centos8 ~]# mkisofs -r -o /root/etc.iso /etc #来自于genisoimage包
    
    2.5.2 USB介质

    查看usb设备

    [root@centos8 ~]# lsusb
    [root@centos8 ~]#mount /dev/sdX# /mnt
    

    查看硬件设备日志

    [root@centos8 ~]#tail /var/log/messages -f
    [root@centos8 ~]#dmesg
    

    格式化U盘为 FAT32 文件系统

    [root@centos8 ~]#dnf -y install dosfstools
    [root@centos8 ~]#mkfs.vfat /dev/sdd1
    mkfs.fat 4.1 (2017-01-24)
    [root@centos8 ~]#mount /dev/sdd1 /mnt
    

    2.6 磁盘管理命令

    2.6.1 df

    df:查看文件系统磁盘的已经使用空间

    格式:

    df [OPTION]... [FILE]...
    

    常用选项:

    • -H 以10为单位
    • -T 文件系统类型
    • -h 以更容易阅读的单位显示
    • -i inode的占用数量
    • -P 以整理好的格式输出

    范例:

    [root@centos8 data]# df -TH
    Filesystem     Type      Size  Used Avail Use% Mounted on
    devtmpfs       devtmpfs  943M     0  943M   0% /dev
    tmpfs          tmpfs     958M     0  958M   0% /dev/shm
    tmpfs          tmpfs     958M  467k  958M   1% /run
    tmpfs          tmpfs     958M     0  958M   0% /sys/fs/cgroup
    /dev/vda1      xfs        54G  3.5G   51G   7% /
    tmpfs          tmpfs     192M     0  192M   0% /run/user/0
    [root@centos8 data]# df -Th
    Filesystem     Type      Size  Used Avail Use% Mounted on
    devtmpfs       devtmpfs  899M     0  899M   0% /dev
    tmpfs          tmpfs     914M     0  914M   0% /dev/shm
    tmpfs          tmpfs     914M  456K  914M   1% /run
    tmpfs          tmpfs     914M     0  914M   0% /sys/fs/cgroup
    /dev/vda1      xfs        50G  3.2G   47G   7% /
    tmpfs          tmpfs     183M     0  183M   0% /run/user/0
    
    2.6.2 du

    du:统计目录占用空间

    格式:

    du [OPTION]... [FILE]...
    

    常用选项:

    • -h 以更容易阅读的单位显示
    • -s 只统计文件夹的大小,而不统计子目录
    2.6.3 dd

    dd:convert and copy a file

    格式:

    dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#
    

    常用选项:

    • if=file 从所命名文件读取而不是从标准输入

    • of=file 写到所命名的文件而不是到标准输出

    • ibs=size 一次读size个byte

    • obs=size 一次写size个byte

    • bs=size block size, 指定块大小(既是是ibs也是obs)

    • skip=blocks 从开头忽略blocks个ibs大小的块

    • seek=blocks 从开头忽略blocks个obs大小的块

    • count=n 复制n个bs

    • conv=conversion[,conversion...] 用指定的参数转换文件

      ascii 转换 EBCDIC 为 ASCII

      ebcdic 转换 ASCII 为 EBCDIC

      lcase 把大写字符转换为小写字符

      ucase 把小写字符转换为大写字符

      nocreat 不创建输出文件

      noerror 出错时不停止

      notrunc 不截短输出文件

      sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐

      fdatasync 写完成前,物理写入输出文件

    范例:

    [root@centos8 data]# echo abcdef > f1.txt
    [root@centos8 data]# echo 12345678 > f2.txt
    [root@centos8 data]# dd if=f1.txt of=f2.txt bs=1 seek=3 
    7+0 records in
    7+0 records out
    7 bytes copied, 6.0037e-05 s, 117 kB/s
    [root@centos8 data]# cat f2.txt 
    123abcdef
    

    3.RAID

    3.1 什么是RAID

    RAID:Redundant Arrays of Inexpensive(Independent) Disks 廉价(独立)磁盘冗余阵列 1988年由加利福尼亚大学伯克利分校(University of California-Berkeley) “A Case for Redundant Arrays of Inexpensive Disks”,多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供

    3.2 RAID级别

    3.2.1 RAID-0

    以 chunk 单位,读写数据

    组合方式:

    • Disk0:A1 A3 A5 A7

    • Disk0:A2 A4 A6 A8

    最少磁盘数:2

    3.2.2 RAID-1

    组合方式:

    • Disk0:A1 A2 A3 A4
    • Disk1:A1 A2 A3 A4

    最少磁盘数:2

    3.2.3 RAID-4

    组合方式:

    • Disk0:A1 B1 C1 D1
    • Disk1:A2 B2 C2 D2
    • Disk2:Ap Bp Cp Dp

    使用一块硬盘做校验位,至少3块硬盘才可以实现(不过校验位硬盘容易损坏)

    3.2.4 RAID-5

    组合方式:

    • Disk0:A1 B1 Cp
    • Disk1:A2 Bp C2
    • Disk1:Ap B3 C3

    每块磁盘上都放置一个校验位,允许损坏1块磁盘,最少要3块硬盘实现

    3.2.5 RAID-6

    组合方式:

    • Disk0:A1 B1 Cp Dq
    • Disk1:A1 Bp Cq D1
    • Disk2:Ap Bq C2 D2
    • Disk3:Aq B3 C3 Dp

    每块磁盘上放置两个校验位,允许损坏2块磁盘,至少要4块硬盘实现

    3.2.6 RAID-10

    组合方式:

    • Disk0:A1 A2
    • Disk1:A1 A2
    • Disk2:A3 A4
    • Disk3:A3 A4

    先将Disk0和Disk1组成RAID1、Disk2和Disk3组成RAID1,在将两个RAID1组合成RAID0.至少要4块硬盘实现该功能。

    3.2.7 RAID-01

    组合方式:

    • Disk0:A1 A2
    • Disk1:A3 A4
    • Disk2:A1 A2
    • Disk3:A3 A4

    先将Disk0和Disk1组成RAID0、Disk2和Disk3组成RAID0,在将两个RAID1组合成RAID1.至少要4块硬盘实现该功能。

    3.2.8 JBOD

    组合方式:

    • Disk0:A1 A2 A3
    • Disk1:A4 A5 A6
    • Disk2:A7 A8 A9

    将多个磁盘空间合并成一个大空间使用

    RAID7 可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的 RAID模式

    常用级别: RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

    4.逻辑卷管理(LVM)

    4.1 LVM介绍

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

    实现过程

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

    4.2 实现逻辑卷

    4.2.1 pv管理工具

    显示pv信息

    pvs:简要pv信息显示
    pvdisplay
    

    删除和创建pv

    pvremove /dev/DEVICE
    pvcreate /dev/DEVICE
    
    4.2.2 vg管理工具

    显示卷组信息

    vgs
    vgdisplay
    

    创建卷组:

    vgcreate	[-s|--physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]]	VolumeGroupName PhysicalDevi‐cePath [PhysicalDevicePath...]
    

    扩展和减少卷组:

    vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
    
    4.2.3 lv管理工具

    显示逻辑卷

    lvs
    lvsdisplay
    

    创建逻辑卷

    lvcreate -L  #[mMgGtT] -n NAME VolumeGroup
    #范例
    lvcreate -l 60%VG -n mylv testvg
    lvcreate -l 100%FREE -n yourlv testvg
    

    删除逻辑卷

    lvremove /dev/VG_NAME/LV_NAME
    

    重设文件系统大小,用于新增逻辑卷后扩展旧文件系统大小

    fsadm [options] resize device [new_size[BKMGTEP]]
    #调整ext系列文件系统大小
    resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
    #调整xfs系列文件系统大小
    xfs_growfs /mountpoints
    
    4.2.4 扩展和缩减逻辑卷

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

    #1.扩展逻辑卷
    lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
    #针对ext
    resize2fs /dev/VG_NAME/LV_NAME
    #针对xfs
    xfs_growfs MOUNTPOINT
    lvresize -r -l +100%FREE /dev/VG_NAME/LV_NAME
    
    #2.缩减逻辑卷
    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
    

    4.3 逻辑卷快照

    4.3.1 逻辑卷快照原理

    快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移 动到快照区,没有改动的区域则由快照区和文件系统共享

    快照特点:

    • 备份速度快,瞬间完
    • 应用场景是测试环境,不能完成代替备份
    • 快照后,逻辑卷的修改速度会一定有影响
    4.3.2 实现逻辑卷快照

    范例:

    #为现有逻辑卷创建快照
    lvcreate -l 64 -s -n data-snapshot -p r /dev/vg0/data
    #挂载快照
    mkdir  -p /mnt/snap
    mount -o ro /dev/vg0/data-snapshot   /mnt/snap
    #恢复快照
    umount /dev/vg0/data-snapshot
    umount /dev/vg0/data
    lvconvert --merge /dev/vg0/data-snapshot
    #删除快照
    umount /mnt/databackup
    lvremove /dev/vg0/databackup
    

    练习:

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

    [root@centos8 ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.32.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Command (m for help): n
    Partition number (2-128, default 2): 2
    First sector (2099200-41943006, default 2099200): 
    Last sector, +sectors or +size{K,M,G,T,P} (2099200-41943006, default 41943006): +2G
    
    Created a new partition 2 of type 'Linux filesystem' and of size 2 GiB.
    
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Syncing disks.
    
    [root@centos8 ~]# mkfs.ext4 -L TEST -m 1 -b 2048 /dev/sdb2
    mke2fs 1.45.4 (23-Sep-2019)
    Creating filesystem with 524288 4k blocks and 131072 inodes
    Filesystem UUID: 49dcc4bf-f2c2-4ef0-b707-bbc1f3081d7a
    Superblock backups stored on blocks: 
    	32768, 98304, 163840, 229376, 294912
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    [root@centos8 ~]# blkid /dev/sdb2
    /dev/sdb2: LABEL="TEST" UUID="49dcc4bf-f2c2-4ef0-b707-bbc1f3081d7a" TYPE="ext4" PARTUUID="f88db445-edbd-0e43-8453-0f70b1fc198a"
    
    #写入配置文件实现持久挂载
    [root@centos8 ~]# vim /etc/fstab
    UUID=ccd25378-c82e-4bea-ad12-81fba73fdf70 /                       xfs     defaults        0 0
    UUID=49dcc4bf-f2c2-4ef0-b707-bbc1f3081d7a /test                   xfs     defaults,acl    0 0 
    [root@centos8 ~]# mount -a
    

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

    #1.添加两块新硬盘sdb和sdc,使用fdisk创建sdb1和sdc1并且将分区类型改为8e
    [root@Centos7 data]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  200G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    ├─sda2   8:2    0  100G  0 part /
    ├─sda3   8:3    0   50G  0 part /data
    ├─sda4   8:4    0    1K  0 part 
    └─sda5   8:5    0    4G  0 part [SWAP]
    sdb      8:16   0   20G  0 disk 
    └─sdb1   8:17   0   10G  0 part 
    sdc      8:32   0   20G  0 disk 
    sr0     11:0    1  9.5G  0 rom  /mnt
    
    [root@Centos7 data]# fdisk -l
    
    Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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: 0xcf597f02
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048    20973567    10485760   8e  Linux LVM
    
    Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 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: 0x5cec7bc0
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdc1            2048    20973567    10485760   8e  Linux LVM
    
    #2.创建pv
    [root@Centos7 data]# pvcreate /dev/sdb1 /dev/sdc1
      Physical volume "/dev/sdb1" successfully created.
      Physical volume "/dev/sdc1" successfully created.
    
    #3.创建物理卷组,设置PE大小为16M
    [root@Centos7 data]# vgcreate -s 16M testvg /dev/sdb1 /dev/sdc1
      Volume group "testvg" successfully created
    [root@Centos7 data]# vgdisplay
      --- Volume group ---
      VG Name               testvg
      System ID             
      Format                lvm2
      Metadata Areas        2
      Metadata Sequence No  1
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                0
      Open LV               0
      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       0 / 0   
      Free  PE / Size       1278 / <19.97 GiB
      VG UUID               H6l3Hu-WKI7-zAIo-A4Zy-k3hp-ojkP-YEqI1H
    
     #4.创建逻辑卷
    [root@Centos7 data]# lvcreate -L 5G -n testlv testvg
      Logical volume "testlv" created.
     [root@Centos7 data]# lvs
      LV     VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      testlv testvg -wi-a----- 5.00g                                      
    [root@Centos7 data]# lvdisplay
      --- Logical volume ---
      LV Path                /dev/testvg/testlv
      LV Name                testlv
      VG Name                testvg
      LV UUID                YCrkZc-J2PL-PwZF-DWvu-8xvO-EuQm-xo2RIk
      LV Write Access        read/write
      LV Creation host, time Centos7, 2021-02-04 19:56:33 +0800
      LV Status              available
      # open                 0
      LV Size                5.00 GiB
      Current LE             320
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     8192
      Block device           253:0
     
    #5.创建文件系统并挂载至挂载点
    [root@Centos7 data]# mkfs.ext4 /dev/testvg/testlv 
    [root@Centos7 data]# blkid
    /dev/sdb1: UUID="8Ru2tC-P9rW-3TDt-fHiH-BEDT-32sq-4rt9OK" TYPE="LVM2_member" 
    /dev/sdc1: UUID="vZDdu2-1obH-hLfi-NkZo-LCad-UJAU-ZlWLR7" TYPE="LVM2_member" 
    /dev/mapper/testvg-testlv: UUID="682fa042-9b2e-4376-8ef9-1c785fc13bca" TYPE="ext4"
    [root@Centos7 data]# vim /etc/fstab 
    UUID=682fa042-9b2e-4376-8ef9-1c785fc13bca /data/test              ext4    defaults        0 0
    [root@Centos7 data]# mount -a
    [root@Centos7 data]# df -h
    Filesystem                 Size  Used Avail Use% Mounted on
    devtmpfs                   900M     0  900M   0% /dev
    tmpfs                      910M     0  910M   0% /dev/shm
    tmpfs                      910M  9.6M  901M   2% /run
    tmpfs                      910M     0  910M   0% /sys/fs/cgroup
    /dev/sda2                  100G  1.5G   99G   2% /
    /dev/sda3                   50G   33M   50G   1% /data
    /dev/sda1                 1014M  142M  873M  14% /boot
    tmpfs                      182M     0  182M   0% /run/user/0
    /dev/sr0                   9.5G  9.5G     0 100% /mnt
    /dev/mapper/testvg-testlv  4.8G   20M  4.6G   1% /data/test
    
    #6.为逻辑卷扩展5G空间
    [root@Centos7 data]# lvextend -L +5G /dev/testvg/testlv 
      Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 10.00 GiB (640 extents).
      Logical volume testvg/testlv successfully resized.
    [root@Centos7 data]# resize2fs /dev/testvg/testlv 
    resize2fs 1.42.9 (28-Dec-2013)
    Filesystem at /dev/testvg/testlv is mounted on /data/test; on-line resizing required
    old_desc_blocks = 1, new_desc_blocks = 2
    The filesystem on /dev/testvg/testlv is now 2621440 blocks long.
    
    [root@Centos7 data]# df -h
    Filesystem                 Size  Used Avail Use% Mounted on
    devtmpfs                   900M     0  900M   0% /dev
    tmpfs                      910M     0  910M   0% /dev/shm
    tmpfs                      910M  9.6M  901M   2% /run
    tmpfs                      910M     0  910M   0% /sys/fs/cgroup
    /dev/sda2                  100G  1.5G   99G   2% /
    /dev/sda3                   50G   33M   50G   1% /data
    /dev/sda1                 1014M  142M  873M  14% /boot
    tmpfs                      182M     0  182M   0% /run/user/0
    /dev/sr0                   9.5G  9.5G     0 100% /mnt
    /dev/mapper/testvg-testlv  9.8G   23M  9.3G   1% /data/test
    
  • 相关阅读:
    Struts tags--Data tags
    Java NIO学习笔记七 Non-blocking Server
    Java NIO学习笔记六 SocketChannel 和 ServerSocketChannel
    Java NIO学习笔记五 FileChannel(文件通道)
    Java NIO学习笔记四 NIO选择器
    Java NIO学习笔记 三 散点/收集 和频道转换
    SpringMVC接收集合页面参数
    JAVA NIO学习笔记二 频道和缓冲区
    Java NIO学习笔记一 Java NIO概述
    通过举例了解java中的流
  • 原文地址:https://www.cnblogs.com/bestvae/p/14374183.html
Copyright © 2011-2022 走看看