openKylin论坛

 找回密码

文件系统与逻辑卷 [复制链接]

1.扩展的Linux文件系统

ext3文件系统:采用与ext2文件系统相同的文件节点,但给每个存储设备增加了一个日志文件,来将准备写入存储设备的数据先写进日志文件。

ext4文件系统:除支持数据压缩解密,还支持一个称为区段(extent)的特性,区段在设备上按快分配空间,但在索引节点表中只保存起始块的位置,节省了空间。还整合了块预分配(block preallocation)。
Reiser文件系统:只支持回写日志模式-只吧索引节点表数据写到日志文件。
JFS文件系统:顺序日志方法,采用基于区段的文件分配。
XFS文件系统:采用回写模式的日志,数据未存入日志文件(风险),很好的性能。
btrfs文件系统:被称为下一代文件系统
                        (1)扩展性,设计目标是应对大型机器对文件系统的扩展性要求,Extend,B-Tree和动态inode创建等特性保证了btrfs在大型机器仍有卓越表现,其整体性能不会随系统容量的增加而降低。

                         (2)数据一致性相关的特性。

                         (3)多设备管理相关的特性。

fsck命令用来检查和修复任意类型的Linux文件系统。
    只能在未挂载的文件系统上运行,对于大多数文件系统来说,只需卸载文件系统来检查,检查完成了重新挂载就好了。但因为根文件系统含有核心的Linux命令和日志文件,不能在运行的系统上卸载它。


2.逻辑卷管理布局
逻辑卷管理的核心是他如何处理安装在系统上的硬盘分区。
LVM是逻辑卷管理(Logical Volume Manager)的简称,他是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,和直接使用物理存储在管理上相比,提供了更好灵活性。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本.
安装:apt-get install lvm2
使用:
要创建一个LVM系统,一般需要经过以下步骤:
1、 创建分区
使用分区工具(如:fdisk等)创建LVM分区,方法和创建其他一般分区的方式是相同的,差别仅仅是LVM的分区类型为8e。
# fdisk -l /dev/sdb /dev/sdc
Disk /dev/sdb: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn’t contain a valid partition table
Disk /dev/sdc: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         200     1606468+  8e  Linux LVM
如果要将使用整块盘,能通过下面的命令来覆盖磁盘上的原有分区信息:
#dd if=/dev/zero of=/dev/sdc bs=512 count=1
  
2、 创建物理卷
创建物理卷的命令为pvcreate,利用该命令将希望添加到卷组的所有分区或磁盘创建为物理卷。将整个磁盘创建为物理卷的命令为:
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
  
将单个分区创建为物理卷的命令为:
# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
也能同时生成多个卷:
#pvcreate /dev/sdb /dev/sdc1

3、扫描块设备
通过lvmdiskscan能看到那些设备成为了物理卷.
#lvmdiskscan
  /dev/ramdisk             [       16.00 MB]
  /dev/sda                 [        4.00 GB]
  /dev/root                [        2.88 GB]
  /dev/ram                 [       16.00 MB]
  /dev/sda1                [      101.94 MB]
  /dev/VolGroup00/LogVol01 [        1.00 GB]
  /dev/ram2                [       16.00 MB]
  /dev/sda2                [        3.90 GB] LVM physical volume
  /dev/lvm_test/test       [      508.00 MB]
  /dev/ram3                [       16.00 MB]
  /dev/ram4                [       16.00 MB]
  /dev/ram5                [       16.00 MB]
  /dev/ram6                [       16.00 MB]
  /dev/ram7                [       16.00 MB]
  /dev/ram8                [       16.00 MB]
  /dev/ram9                [       16.00 MB]
  /dev/ram10               [       16.00 MB]
  /dev/ram11               [       16.00 MB]
  /dev/ram12               [       16.00 MB]
  /dev/ram13               [       16.00 MB]
  /dev/ram14               [       16.00 MB]
  /dev/ram15               [       16.00 MB]
  /dev/sdb                 [      512.00 MB] LVM physical volume
  /dev/sdc                 [      512.00 MB] LVM physical volume
  5 disks
  16 partitions
  2 LVM physical volume whole disks
  1 LVM physical volume

4、显示物理卷
能使用pvs,pvscan,pvdisplay来显示当前系统中的物理卷.
#pvs
  PV         VG         Fmt  Attr PSize   PFree  
  /dev/sda2  VolGroup00 lvm2 a-     3.88G      0
  /dev/sdb   lvm_test   lvm2 a-   508.00M      0
  /dev/sdc              lvm2 --   512.00M 512.00M
#pvscan
  PV /dev/sdb    VG lvm_test     lvm2 [508.00 MB / 0    free]
  PV /dev/sda2   VG VolGroup00   lvm2 [3.88 GB / 0    free]
  PV /dev/sdc                    lvm2 [512.00 MB]
  Total: 3 [4.87 GB] / in use: 2 [4.37 GB] / in no VG: 1 [512.00 MB]
#pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               lvm_test
  PV Size               512.00 MB / not usable 4.00 MB
  Allocatable           yes (but full)
  PE Size (KByte)       4096
  Total PE              127
  Free PE               0
  Allocated PE          127
  PV UUID               Pkp5Cq-SD1w-ANw2-cDDe-BGtw-nmFS-jTxXFD
   
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               512.00 MB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               BNCVEE-YWlK-0mrV-LOcf-0tCY-WWNw-DeySk0

5、移除物理卷
#pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped

6、 创建卷组
创建卷组的命令为vgcreate,将使用pvcreate建立的物理卷创建为一个完整的卷组:
# vgcreate lvm_test /dev/sdc1 /dev/sdb
Volume group "lvm_test" successfully created
vgcreate命令第一个参数是指定该卷组的逻辑名:lvm_test。后面参数是指定希望添加到该卷组的所有分区和磁盘。vgcreate在创建卷组 lvm_test 以外,还设置使用大小为4 MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以 4 MB 为增量单位来进行扩充或缩减。PE最小为1KB  ,并且必须总是1KB的 2^n 的倍数(使用-s指定,具体请参考man vgcreate)。

7、 激活卷组
卷组在创建时默认激活,也能使用vgchange来激活卷组:
# vgchange -a y lvm_test

8、 添加新的物理卷到卷组中
当系统安装了新的磁盘或新建分区并创建了新的物理卷,而要将其添加到已有卷组时,就需要使用vgextend命令:
#fdisk -l /dev/sdc
Disk /dev/sdc: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         200     1606468+  8e  Linux LVM
/dev/sdc2             201         400     1606500   8e  Linux LVM
         
#pvcreate /dev/sdc2
Physical volume "/dev/sdc2" successfully created
        
# vgextend lvm_test /dev/sdc2
Volume group "lvm_test" successfully extended
这里/dev/sdc2是新的物理卷。

9、显示卷组
显示卷组能使用vgs和vgdisplay.
# vgs
  VG         #PV #LV #SN Attr   VSize   VFree
  VolGroup00   1   2   0 wz--n-   3.88G    0
  lvm_test     1   1   0 wz--n- 508.00M    0

# vgdisplay
  --- Volume group ---
  VG Name               lvm_test
  System ID            
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  10
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               508.00 MB
  PE Size               4.00 MB
  Total PE              127
  Alloc PE / Size       127 / 508.00 MB
  Free  PE / Size       0 / 0   
  VG UUID               uJx24t-WWdY-vffu-97Of-mgFB-FEov-eRwzAf

10、扫描磁盘生成缓存文件
#vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "lvm_test" using metadata type lvm2
  Found volume group "VolGroup00" using metadata type lvm2
   
11、 从卷组中删除一个物理卷
要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被所有逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息:
#pvdisplay /dev/sdc2
--- Physical volume ---
PV Name               /dev/sdc2
VG Name               lvm_test
PV Size               1.53 GB / not usable 868.00 KB
Allocatable           yes
PE Size (KByte)       4096
Total PE              392
Free PE               392
Allocated PE          0 (表示未被使用)
PV UUID               jAiils-1vRz-Td9k-1AiD-kIJs-191z-YMz09H
  
如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据备份到其他地方,然后再删除。删除物理卷的命令为vgreduce:
# vgreduce lvm_test /dev/sdc2
Removed "/dev/sdc2" from volume group "lvm_test"

12、 创建逻辑卷
创建逻辑卷的命令为lvcreate:
# lvcreate -L 1500 ?n test lvm_test
Logical volume "test" created
该命令就在卷组lvm_test上创建名字为test,大小为1500M的逻辑卷,并且设备入口为/dev/lvm_test/test (lvm_test为卷组名,test为逻辑卷名)。如果希望创建一个使用全部卷组的逻辑卷,则需要首先察看该卷组的PE数,然后在创建逻辑卷时指定:
# vgdisplay lvm_test| grep "Total PE"
Total PE 4731
# lvcreate -l 4731 lvm_test -n test
Logical volume "test" created

13、创建条块化的逻辑卷
# lvcreate -L 500M -i2  -n test lvm_test
  Using default stripesize 64.00 KB
  Rounding size (125 extents) up to stripe boundary size (126 extents)
  Logical volume "test" created
-i2指此逻辑卷在两个物理卷中条块化存放数据,默认一块大小为64KB.

14、创建映像的逻辑卷。
#lvcreate -L 52M  -m1  -n test lvm_test /dev/sdb1 /dev/sdc1 /dev/sdb2
  Logical volume "test" created
-m1表示只生成一个单一映像,映像分别放在/dev/sdb1和/dev/sdc1上,映像日志放在/dev/sdb2上.

15、创建快照卷。
#lvcreate --size 10 --snapshot --name snaptest /dev/lvm_test/test
16、 创建文件系统
如使用ext3文件系统:
#mkfs.ext3 /dev/lvm_test/test
mke2fs 1.35 (28-Feb-2004)
max_blocks 4294967295, rsv_groups = 0, rsv_gdb = 1024
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2424832 inodes, 4844544 blocks
242227 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=8388608
148 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Writing inode tables: done                           
inode.i_blocks = 90120, i_size = 4243456
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
创建了文件系统以后,就能加载并使用他:
# mkdir /mnt/test
# mount /dev/lvm_test/test /mnt/test
如果希望系统启动时自动加载文件系统,则还需要在/etc/fstab中添加内容:
/dev/lvm_test/test /mnt/test ext3 defaults 1 2

17、 删除一个逻辑卷
删除逻辑卷以前首先需要将其卸载,然后删除:
# umount /dev/lvm_test/test
# lvremove /dev/lvm_test/test
Do you really want to remove active logical volume "test"? [y/n]: y
Logical volume "test" successfully removed
 
18、 扩展逻辑卷大小
LVM提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是lvextend:
# lvextend -L12G /dev/lvm_test/test
Extending logical volume test to 12.00 GB
Logical volume test successfully resized
  上面的命令就实现将逻辑卷test的大小扩大为12G。
# lvextend -L+1G /dev/lvm_test/test
Extending logical volume test to 13.00 GB
Logical volume test successfully resized
上面的命令就实现将逻辑卷test的大小增加1G。
增加了逻辑卷的容量以后,就需要修改文件系统大小以实现利用扩充的空间。
对于希望调整被加载的文件系统大小,使用ext2online(ext2resize) 或 resize2fs.
#df -h
# ext2online /dev/lvm_test/test
ext2online /dev/lvm_test/test
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b

#df -h
Filesystem            容量  已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol01
         16G   11G  3.6G  76% /
/dev/sda1             494M   18M  451M   4% /boot
none                      506M     0  506M   0% /dev/shm
/dev/mapper/lvm_test-test
         13G   63M   13G   1% /mnt/test
  
一般建议最佳将文件系统卸载,调整大小,然后再加载:
# umount /dev/lvm_test/test
#resize2fs /dev/lvm_test/test
# mount  /dev/lvm_test/test /mnt/test

19、 减少逻辑卷大小
使用lvreduce即可实现对逻辑卷的容量,同样需要首先将文件系统卸载:
# umount /mnt/test
#e2fsck -f /dev/lvm_test/test
# resize2fs /dev/lvm_test/test  11G
# lvreduce -L -1.992G /dev/lvm_test/test (少2个PE的大小)
# resize2fs /dev/lvm_test/test  (通过此命令确认是否文件系统大小和收缩后的逻辑卷大小匹配)
# mount /dev/lvm_test/test /mnt/test

20、显示逻辑卷
通过lvscan,lvs及lvdisplay能察看当前系统中存在的逻辑卷。
# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV UUID                sPmLMD-6xq4-wStB-uSAP-jlQc-YKTm-3bt8Pc
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                2.88 GB
  Current LE             92
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:0
  
#lvscan
lvscan
  ACTIVE            ’/dev/VolGroup00/LogVol00’ [2.88 GB] inherit
  ACTIVE            ’/dev/VolGroup00/LogVol01’ [1.00 GB] inherit

#lvs -o +devices
  LV       VG         Attr   LSize Origin Snap%  Move Log Copy%  Devices      
  LogVol00 VolGroup00 -wi-ao 2.88G                               /dev/sda2(0)
  LogVol01 VolGroup00 -wi-ao 1.00G                               /dev/sda2(92)  

21、使用过滤控制LVM的设备扫描
通过编辑/etc/lvm/lvm.conf 中的filter段,来定义过滤那些设备要扫描。
filter =[ "a|/dev/sd.*|", "a|/dev/hd.*|", "r|.*|" ]
上面对scsi及ide设备扫描,对其他设备均不扫描。

22、在线数据迁移
通过pvmove能将一个PV上的数据迁移到新的PV上,也能将PV上的某个LV迁移到另一个PV上。
#lvs -o +devices
  LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Devices      
  LogVol00 VolGroup00 -wi-ao  2.88G                               /dev/sda2(0)
  LogVol01 VolGroup00 -wi-ao  1.00G                               /dev/sda2(92)
  test     lvm_test   -wi-ao 52.00M                               /dev/sdb1(0)

#pvmove -n test /dev/sdb1 /dev/sdc1

#lvs -o +devices
  LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Devices      
  LogVol00 VolGroup00 -wi-ao  2.88G                               /dev/sda2(0)
  LogVol01 VolGroup00 -wi-ao  1.00G                               /dev/sda2(92)
  test     lvm_test   -wi-ao 52.00M                               /dev/sdc1(0)

23、删除卷组
按照顺序卸载文件系统,删除逻辑卷,然后删除卷组。
#umount /mnt/test
# lvremove /dev/lvm_test/test
Do you really want to remove active logical volume "test"? [y/n]: y
  Logical volume "test" successfully removed
#vgremove lvm_test
  Volume group "lvm_test" successfully removed
24、故障排查
通过在命令后加 -v,-vv,-vvv或-vvvv来获得更周详的命令输出。
通过在lvs,vgs后加-P能更好的查看失败设备.
#vgs -a -o +devices -P
  Partial mode. Incomplete volume groups will be activated read-only.
  VG         #PV #LV #SN Attr   VSize    VFree   Devices               
  VolGroup00   1   2   0 wz--n-    3.88G      0  /dev/sda2(0)           
  VolGroup00   1   2   0 wz--n-    3.88G      0  /dev/sda2(92)         
  lvm_test     2   2   0 wz--n- 1016.00M 896.00M pvmove0(0)            
  lvm_test     2   2   0 wz--n- 1016.00M 896.00M /dev/sdb(0),/dev/sdc(0)
#lvs -a -o +devices -P
  Partial mode. Incomplete volume groups will be activated read-only.
  Failure parsing mirror status fraction: 1 core
  Failure parsing mirror status fraction: 1 core
  LV        VG         Attr   LSize  Origin Snap%  Move     Log Copy%  Devices               
  LogVol00  VolGroup00 -wi-ao  2.88G                                   /dev/sda2(0)           
  LogVol01  VolGroup00 -wi-ao  1.00G                                   /dev/sda2(92)         
  [pvmove0] lvm_test   p-C-ao 60.00M               /dev/sdb            /dev/sdb(0),/dev/sdc(0)
  test      lvm_test   -wI-a- 60.00M                                   pvmove0(0)            

发表于 2017-10-22 16:27:17
回复

使用道具 举报

openKylin

GMT+8, 2024-3-29 16:13 , Processed in 0.020051 second(s), 18 queries , Gzip On.

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

快速回复 返回顶部 返回列表