裸盘挂载与扩容

举报
阿柠 发表于 2022/11/28 01:08:42 2022/11/28
【摘要】 裸盘挂载与扩容我们之前尝试并且使用了LVM这种方式去挂载,但其实linux的文件系统还有一种裸盘挂载。我们之前的文章介绍过LVM是如盒挂载的,先用lsblk看有哪些块设备呀,然后看pvs里有哪些物理卷呀,然后创建卷组,创建逻辑卷,然后格式化,然后创建挂载点,然后我们把挂载点和逻辑卷一mount后,df -h就能看到我们的文件系统的使用情况。最后呢就是用blkid看到挂载点的uuid,然后写...

裸盘挂载与扩容

我们之前尝试并且使用了LVM这种方式去挂载,但其实linux的文件系统还有一种裸盘挂载。

我们之前的文章介绍过LVM是如盒挂载的,先用lsblk看有哪些块设备呀,然后看pvs里有哪些物理卷呀,然后创建卷组,创建逻辑卷,然后格式化,然后创建挂载点,然后我们把挂载点和逻辑卷一mount后,df -h就能看到我们的文件系统的使用情况。最后呢就是用blkid看到挂载点的uuid,然后写入/etc/fstab里面让这个挂载永久生效。

裸盘挂载

裸盘挂载呢就简单的很了,我们同样是看lsblk有哪些块设备,对于这些块设备,我们无需创建物理卷呀,创建卷组了,逻辑卷这些操作,只需要先lsblk确定自己需要挂载的磁盘,然后格式化,然后挂载,然后写入/etc/fastab就可。

  1. lsblk 查看目前机器所拥有的块设备。

    image-20221127213534755

    红框里的这四个块设备就是需要我们此次进行裸盘挂载的设备。

  2. 我们对着四块块设备进行一个xfs格式化。

mkfs.xfs -f -i attr=2 -l lazy-count=1,sectsize=4096 -b size=4096 -d sectsize=4096 -L data1 /dev/nvme0n1 

mkfs.xfs -f -i attr=2 -l lazy-count=1,sectsize=4096 -b size=4096 -d sectsize=4096 -L data2 /dev/sdc 

mkfs.xfs -f -i attr=2 -l lazy-count=1,sectsize=4096 -b size=4096 -d sectsize=4096 -L data3 /dev/sdd

mkfs.xfs -f -i attr=2 -l lazy-count=1,sectsize=4096 -b size=4096 -d sectsize=4096 -L app /dev/sdb

下面我们对这个mkfs.xfs磁盘格式化的命令的参数进行一个详解:

参数 含义
-b block_size(块大小) options
-d data_section_options(数据属性)(sunit/swidth(单位为512byte)=su/sw 条带大小/宽度)
mkfs.xfs -d su=4k(条块chunk大小),sw=16(数据盘个数) /dev/sdb
mkfs.xfs -d sunit=128,swidth= sunit*数据盘个数 /dev/sdd
数据属性有:
agvount= value 指定分配组(并发小文件系统(16M~1T))
agsize = value 与上类似,指定分配组大小
name= 指定文件系统内指定文件的名称。此时,日志段必需指定在内部(指定大小)。
file [=value] 指定上面要命名的是常规文件(默认1,可以为0)。
size= value 指定数据段大小,需要 -d file =1
sunit=value 指定条带单元大小(chunk,单位为512)
su=value 指定条带单元(chunk,单位为byte. 如:64k,必需为文件系统块大小的倍数)
swidth=value 指定条带宽度(单位为512, 为sunit的数据盘个数倍数)
sw =value 条带宽度(通常为数据盘个数)
noalign 忽略自动对齐(磁盘几何形状探测,文件不用几何对齐)。
-i inode_options 节点选项.(xfs inode 包含二部分:固定部份,可变部份)。
这些选项影响可变部份,包括:目录数据,属性数据,符号连接数据,文件extent列表,文件extent描述性根树。
选项有:
size = value | log=value | perblock =value 指定inode大小(256~2048)
maxpct=value 指定inode所有空间的百分比。(默认为:<1T=25%,<50T=5% >50T=1%)
align [=value] 指定分配inode时是否对齐。默认为1,对齐。
attr = value 指定属性版本号,默认为2
projid32bit [=value] 是否使能32位配额项目标识符。默为1.
-l log_section_options (日志属性)(internal/logdev)
选项有:
internal [=value] 指定日志段是否作为数据段的一部分。默认为1.
logdev = device 指定日志位于一个独立的设备上。(最小为10M,2560个4K块)
创建: mkfs.xfs -l logdev=/dev/ramhdb -f /dev/mapper/vggxxxxx
挂载: mount -o logdev=/dev/ramhdb /dev/mapper/vggxxxxx
size = value 指定日志段的大小。
version = value 指定日志的版本。默认为2
sunit = value 指定日志对齐写。单位为512
su= value 指定日志条带单元. 单位为byte
lazy-count = value 是否廷迟计数。默认为1.更改超级块中各种连续计数器的计录方法。在为1时,不会在计数器每一次变化时更新超级块。
-f 强制(force)
-n naming_options 命名空间(目录参数)
选项有:
size= value | log = value 块大小。不能小于文件系统block,且是2的幂。
版本2默认为4096,(如果文件系统block>4096,则为block)
version= value 命名空间的版本。默认为2 或’ci’ ,
ftype = value 允许inode类型存储在目录结构中,以便readdir,getdents不需要查找inode就可知道inode类型。默认为0,不存在目录结构中。(使能crc: -m crc=1 时,此选项会使能)
-p protofile
-r realtime_section_options (实时数据属性)(rtdev/size)
实时段选项:
rtdev =device 指定外部实时设备名
extsize=value指定实时段中块大小,必需为文件系统块大小的倍数。 最小为(max(文件系统块大小, 4K))。
默认大小为条带宽度(条带卷),或64K(非条带卷) ,最大为1G
size = value 指定实时段的大小
noalign 此选项禁止 条带大小探测,强制实时设备没有几何条带。
-s sector size(扇区大小),最小为512,最大为32768 (32k). 不能大于文件系统块大小。
-L label 指定文件系统标签。最多12个字符
-q (quiet 不打印)
-N 只打印信息,不执行实际的创建
  1. 完成格式化之后,就是创建对应的目录去挂载了。

  2. 目录创建完成后,就是使用mount命令去挂载这些块设备和对应的目录了

    mount -o rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc /dev/nvme0n1 /data1
    
    mount -o rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc /dev/sdc /data2
    
    mount -o rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc /dev/sdd /data3
    
    mount -o rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc /dev/sdb /app
    
  3. 完成上面的操作,我们使用blkid口令,查询块设备的uuid,然后写入到/etc/fstab

image-20221127223613880

/etc/fstab

UUID=b01dccae-bfd9-45f4-bf4a-3bd28ba81500 /app xfs rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc 0 0

UUID=affaf02f-d475-4a13-a025-603670fd0ea0 /data1 xfs rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc 0 0

UUID=5b709fe4-e106-4ce0-9fbe-4e346566064d /data2 xfs rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc 0 0

UUID=9826a75a-56bd-42ac-81c7-598933be7354 /data3 xfs rw,noatime,nodiratime,noikeep,nobarrier,allocsize=100M,attr2,largeio,inode64,swalloc 0 0

要提一嘴的是:

  • 这个文件的最后面那个0啊,是告诉操作系统这个文件系统挂载不起来,你就不要挂载了,如果你写为1,就代表告诉操作系统这个文件你必须挂载,如果出现故障,操作系统可能就会反复挂载最终导致系统无法启动,所以我们一般都是设置为0
  • 我们其实是可以使用块设备名字挂载的,但是为什么要使用uuid呢?因为新增一些块设备可能这个名字就不对了,所以我们要使用uuid这个唯一标识符来进行设置。

image-20221127225804938

以上的这些操作就是关于裸盘挂载的操作了。

df -h 关于挂载覆盖的一个点

image-20221127230053087

这里我想谈一个挂载覆盖的事,你比如说我们现在umount掉这个/app。那么我们去访问这/app文件目录肯定呢就是空的,此时我们若是往里写内容,会写到哪里呢?

**会写到 /**根的这个挂载目录下,因为所有的文件都是从根创建的,所以你此时写,就是写到根里去了。

如果你此时再把这个/app挂载上,你会发现之前的内容又回来了,但是你刚刚写的内容又没有了,这就叫挂载覆盖。

扩容

之前LVM的时候,我们介绍过,我们呢可以把一个新的块设备扩容进一个卷组/逻辑卷里去,所以对LVM的扩容是很简单的。对于裸盘挂载呢,一般就是有两种扩容方式:

  1. 软链接

    假设我们要针对/opt/db目录进行扩容,为了不影响原有数据,我们需要现将/opt/db目录的数据移动到新磁盘的对应/data/下
    
    cd /opt
    mv db /data
    
    cd /data
    ln -s db /opt/db
    

    利用上面的软链接,就可以间接达到一个扩容的目的。

  2. 重新部署为LVM形式挂载。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。