草庐IT

RHEL本地存储管理:逻辑卷管理

人啊人~飘 2023-07-30 原文

项目一

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

  1. 准备两个10G的分区(linux LVM)。
    在这里,我新建了一块大小为20G的硬盘名为:sdd。
    使用分区工具fdisk创建LVM分区,通过t命令将LVM分区类型改为8e。
    保存退出后,需要重启系统使分区生效。或者在创建新的分区后,需要执行partprobe,将磁盘分区的变化信息通知内核,请求操作系统重新加载分区表。不然很有可能找不到你新建的分区。
fdisk /dev/sdd


  1. 创建PV物理卷、查看PV物理卷。
    将上个步骤产生的分区当作LVM物理卷,使用pvcreate DEVICE将分区修改为LVM物理卷。
pvcreate /dev/sdd{1..2}  //创建物理卷
pvs                      //查看物理卷

  1. 创建VG卷组,查看分配的PE相关信息。
    LVM每一个卷组都是有一个或多个物理卷组合而成,使用vgcreate命令建立卷组。
    vgcreate VGNAME PVDEVICES
vgcreate -s 16M testvg /dev/sdd{1..2}
vgs

  1. 创建5G的逻辑卷,名称为testlv,查看LV列表。
    产生出卷组后,就可以从卷组中划分一块空间作为逻辑卷。
    lvcreate [-L SIZE] - n LVNAME VGNAME
    其中SIZE是逻辑卷大小,LVNAME是逻辑卷识别名称,VGNAME是卷组识别名称。
lvcreate -L 5G -n testlv testvg
lvs

  1. 创建文件系统(格式化为ext4文件系统类型)。
    当逻辑卷创建完成后,要能够识别并使用RED HAT Enterprise Linux必须创建文件系统,建议使用ext4专有格式。
mkfs -t ext4 /dev/testvg/testlv
blkid /dev/testvg/testlv    //检查是否分配UID


  1. 创建一个目录并挂载,查看分区情况及大小。
mkdir /users
mount /dev/testvg/testlv /users
df -h |grep users

  1. 设置自动挂载。

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

  1. 创建用户并指定其家目录。
mkdir /users  //如果之前已经创建了,此步跳过。
useradd -d /users/archlinux archlinux

  1. 切换用户,并复制文件。
su - archlinux
cp -a /etc/pam.d .

  1. 查看文件个数。
ls /users/archlinux/pam.d/ |wc -l

3.扩展testlv至7G,要求archlinux用户的文件不能丢失。

  1. 先检查需要扩展的大小,VG是否有足够可用空间。
vgs

  1. 查看逻辑卷
lvs

  1. 扩展逻辑卷大小。
    放大逻辑卷:lvextend -L SIZE LV_DEVICE
lvextnd -L +2G /dev/testvg/testlv

  1. 再次查看逻辑卷大小。
lvs

  1. 查看拷贝的pam.d目录下的文件个数。
ls /users/archlinux/pam.d |wc -l

4.收缩testlv至3G,要求archlinux用户的文件不能丢失。

  1. 卸载文件系统。
umount /users

  1. 检查文件系统是否完好。
e2fsck -f /dev/testvg/testlv

  1. 设置文件系统大小。
resize2fs -p /dev/testvg/testlv 3G

  1. 缩减逻辑卷。
    缩小逻辑卷:lvreduce -L SIZE LV_DEVICE
lvreduce -L 3G /dev/testvg/testlv

  1. 再次查看逻辑卷大小。
lvs

  1. 再次挂载。
mount /dev/testvg/testlv /users
df -h|grep users

  1. 查看pam.d目录中文件个数。
ls /users/archlinux/pam.d |wc -l

5.对testlv创建快照,并尝试基于快照备份数据,验正快照的功能。

  1. 创建大小为1G只读快照。
    利用lvcreate产生一个逻辑卷快照:lvcreate -L SIZE -s -n LVNAME LVDEVICE
lvcreate -n testnap -s -L 1G /dev/testvg/testlv

  1. 查看快照。
lvdispaly /dev/testvg/testnap

  1. 创建快照目录并挂载。
    如果需要读取逻辑卷快照,只需要挂载逻辑卷快照即可。
mkdir /users/testnap
mount /dev/testvg/testnap /users/testnap
df -h|grep /users/testnap

  1. 删除/users/archlinux/pam.d中以a开头的文件。
rm -f /users/archlinux/pam.d/a*
ls /users/archlinux/pam.d/ |wc -l


这里文件个数为45了,之前是46

  1. 查看快照中pam.d中的文件个数。
ls /users/testnap/archlinux/pam.d |wc -l


46个,上步删除没有对此产生影响

  1. 备份快照卷数据(打包成tar.gz的包)。
tar -zcf /tmp/testnap.tar.gz /users/testnap/archlinux/pam.d/*

  1. 取消挂载。
umount /users/testnap
df -h|grep users

  1. 还原文件(解压缩包)
tar -zxf /tmp/testnap.tar.gz -C ./
  1. 查看原文件个数,数据是否恢复成功?
ls /testnap/archlinux/pam.d/ |wc -l


文件个数为46,数据恢复成功。

项目二

  1. 创建逻辑卷vshare,卷组的名称为devgroup,PE的大小为16M,共使用50个PE块,文件系统为vfat,要求永久挂载到/mnt/vshare目录下。
    (1)、创建一个大小为16*50M以上的分区。这里我创了个1000M的分区。
fdisk /dev/sde
partprobe /dev/sde  //创建成功后更新磁盘


(2)、创建PV

pvcreate /dev/sde1


(3)、创建卷组devgroup,PE的大小为16M。
我在创建卷组命名时命名错了,所以改了下命名。

vgcreate -s 16M devgroup /dev/sde1


(4)、创建逻辑卷vshare

lvcreate -l 50 -n vshare devgroup //使用小写-l,表示设置的逻辑卷大小是以PE的块数为单位的。
lvs
vgdispaly devgroup

(5)、文件系统为vfat,要求永久挂载到/mnt/vshare目录下

mkdir -p /mnt/vshare
mkfs -t vfat /dev/devgroup/vshare
mount /dev/devgroup/vshare /mnt/vshare
df -h|grep /mnt/vshare
vi /etc/fstab
shutdown -r now
df -h|grep /mnt/vshare




  1. 创建一个新分区,大小为2G,将新分区添加到根分区所在的卷组,将根分区的大小增加1.8G。
    df -h

    (1)、新增一块硬盘,将新添加的磁盘创建大小为2G的分区
    lsblk

    fdisk /dev/sdf
    lsblk

    (2)、将sdf1分区创建为物理卷
pvcreate /dev/sdf1


(3)、将新分区添加到根分区所在的卷组
vgdisplay -v
/dev/centos/root:根分区所挂载的逻辑卷路径
centos:根分区所在卷组名字。

lvs

(4)、扩展卷组容量
vgextend centos /dev/sdf1

(5)、扩展根分区所挂载的逻辑卷路径并使扩容生效。

lvextend -L +1.8G /dev/centos/root


lvs

之前为17,增加了1.8G后显示18.8,扩容成功。
lsblk

df -h 容量由17到19G了。

有关RHEL本地存储管理:逻辑卷管理的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  4. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  5. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  6. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  7. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  8. ruby - Rack:如何将 URL 存储为变量? - 2

    我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.

  9. ruby-on-rails - 为什么在 Rails 5.1.1 中删除了 session 存储初始化程序 - 2

    我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于

  10. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

随机推荐