zoukankan      html  css  js  c++  java
  • LVM的一些问题汇总 tune2fs命令

    LVM的一些问题汇总  tune2fs命令
    --http://www.aminglinux.com/bbs/forum.php?mod=viewthread&tid=7664&page=1&extra=#pid38836
     
     
    看了几篇文章和视频,跟啊铭老师也沟通过,下面列出啊铭老师没有说到的命令和自己的一些问题总结
    RHCA会考到LVM 扩容 缩容

    九个查看命令
    pvdisplay
    vgdisplay
    lvdisplay
    pvs 常用
    vgs 常用
    lvs 常用
    pvscan
    vgscan
    lvscan

    激活命令
    lvchange -ay /dev/vg0 激活,如果逻辑卷还未激活的话就激活
    lvchange -an /dev/vg0  休眠


    root@steven ~]# pvscan
      PV /dev/sda2   VG VolGroup   lvm2 [19.51 GiB / 0    free]
      Total: 1 [19.51 GiB] / in use: 1 [19.51 GiB] / in no VG: 0 [0   ]
    [root@steven ~]# vgscan
      Reading all physical volumes.  This may take a while...
      Found volume group "VolGroup" using metadata type lvm2
    [root@steven ~]# lvscan
      ACTIVE            '/dev/VolGroup/lv_root' [17.54 GiB] inherit
      ACTIVE            '/dev/VolGroup/lv_swap' [1.97 GiB] inherit
    [root@steven ~]# pvs                   #Attr不是 a-- 表示未激活  大小是19.51g  没有剩余空间
      PV                      VG           Fmt      Attr     PSize      PFree
      /dev/sda2      VolGroup     lvm2      a--      19.51g       0 
    [root@steven ~]# vgs              # 这个vg下有一个pv  2个lv  大小跟pv的大小一样都是19.51g  没有剩余空间
      VG               #PV  #LV #SN      Attr          VSize      VFree
      VolGroup         1      2      0      wz--n-        19.51g        0 
    [root@steven ~]# lvs
      LV                      VG                Attr             LSize          Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      lv_root           VolGroup        -wi-ao----     17.54g                                                    
      lv_swap          VolGroup        -wi-ao----      1.97g      

    lvreduce -L 700M /dev/vgdata/lvdata1
    一般用大L 指定大小,弊端就是有可能用不完vg里面的空间
    用小 l,-l 127, 127 个PE ,弊端是需要计算,比如一个PE 4M 127*4M=508M 但是不会出现用不完vg的空间的情况

    问题一
    使用lvreduce进行缩容的时候需要umount  ,如果apache相关文件放在/data下,你要对/data进行缩容,那么apache只能停机


    问题二
    扩容步骤1、先fdisk分区 
    fdisk /dev/sdb
    n new
    l  login分区
    +200M  
    t  分区类型
    15  第15个分区
    8e  lvm类型
    w   保存

    2、重新读取分区
    partprobe  

    3、建pv ,扩展vg,扩展lv,resize
    pvcreate /dev/sdb15   
    vgextend vg0 /dev/sdb15
    lvextend –L 1G /dev/vg0/LV01  #扩展LV
    resize2fs /dev/vg0/LV01    


    http://video.baomihua.com/11386501/19695773




    问题三
    5) 当磁盘或分区损坏时,如何转移数据
    pvmove 转移空间数据 --> vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去 --> pvremove命令将即将坏的磁盘或者分区从系统中删除掉 --> 拆除或修复磁盘
    pvmove /dev/sdb1 
    vgreduce vgdata /dev/sdb1
    pvremove  /dev/sdb1

    执行pvmove 的时候,Linux是把sdb1 的数据移动到别的分区




    lvm配置 (参考内容,大家自行实践)
    LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。支持动态扩充磁盘空间。
    首先从空的硬盘sdb上创建两个分区sdb1 1G, sdb2 2G。
    1)创建逻辑卷
    pvcreate /dev/sdb1 /dev/sdb2   //创建物理卷
    pvdisplay   //可以列出已经创建的物理卷
    vgcreate vgdata /dev/sdb1 /dev/sdb2        //创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组
    vgdisplay //可以列出已经建好的卷组
    # 默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。

    lvcreate -L 500M -n lvdata1 vgdata  //分割500M给新的逻辑卷lvdata1-n :指定 lv的名字
    lvdisplay //列出当前的逻辑卷

    mkfs.ext4 /dev/vgdata/lvdata1  //格式化逻辑卷
    mount /dev/vgdata/lvdata1  /aming  //挂载逻辑卷

    2) 扩展逻辑卷
    逻辑卷lvdata1不够用了,我们如何给他增加空间呢?
    lvextend –L +500M /dev/vgdata/lvdata1  //给lvdata1增加500M空间。
    resize2fs  /dev/vgdata/lvdata1  //同步文件系统


    3)扩展卷组
    当卷组不够用的情况下,我们也是可以扩展卷组的。我们再创建一个新的分区叫做/dev/sdb3.
    vgextend vgdata /dev/sdb3  //把sdb3加入到卷组vgdata中

    4)减少逻辑卷大小
    卸载 --> e2fsck 检测剩余空间 --> resize2fs 同步文件系统 --> 使用lvreduce命令将逻辑卷减少
    注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。

    umount  /data1
    e2fsck -yf /dev/mapper/vgdata-lvdata1resize2fs /dev/mapper/vgdata-lvdata1 
    lvreduce -L 700M /dev/vgdata/lvdata1
    mount /dev/vgdata/lvdata1 /data1

    5) 当磁盘或分区损坏时,如何转移数据
    pvmove 转移空间数据 --> vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去 --> pvremove命令将即将坏的磁盘或者分区从系统中删除掉 --> 拆除或修复磁盘
    pvmove /dev/sdb1 
    vgreduce vgdata /dev/sdb1
    pvremove  /dev/sdb1

    6) 删除整个逻辑卷
    umount卸载逻辑卷 --> 修改配置文件/etc/fstab(若是之前更改过) --> lvremove 删除逻辑卷lvdata1 --> vgremove 删除卷组vgdata --> pvremove 将物理卷转化成普通分区
    umount /dev/vgdata/lvdata1 
    lvremove /dev/vgdata/lvdata1
    vgremove vgdata
    pvremove /dev/sdb2
    pvremove /dev/sdb3


    ------------------------------------------------------------------------------------------------------------------
    -------------------------------------------------------------------------------------------------------------------
    动手实验 动态扩容和缩容

    扩容
    1、在线加一块磁盘
     

     

     

    添加1G大小的磁盘
     

    完成
     


    2、在终端里面 fdisk -l 就能看到新添加的磁盘
    在终端里面 fdisk -l 就能看到新添加的磁盘,如果看不到可以使用这个方法
    地址:http://blog.chinaunix.net/uid-21288388-id-4928598.html

    确定主机总线号,磁盘是有总线连接着的
    [root@steven ~]# ls /sys/class/scsi_host/
    host0 host1 host2




    重新扫描SCSI总线来添加设备,因为添加的是SCSI磁盘,所以扫描的是SCSI总线
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
     

    3、用fdisk分出一个扩展分区 ,当然分出主分区也是可以的
    fdisk /dev/sdb
    n new
    e
    +500M  大小500m  (我这里只分了500M,当然用尽1G也是可以的)
    w   保存
     

    4、再在/dev/sdb 上分逻辑分区
    1. [root@steven ~]# fdisk /dev/sdb
    复制代码
    n
    l
    +200M
    p  打印出来看一下分区号
    1. Device Boot      Start         End      Blocks   Id  System
    2. /dev/sdb2               1          65      522081    5  Extended
    3. /dev/sdb5               1          26      208782   83  Linux
    复制代码
    t
    5
    8e
    w
    5、重新读取分区partprobe  
    partprobe

    6、建pv 
    pvcreate /dev/sdb5 
    1. [root@steven ~]# pvcreate /dev/sdb5 
    2.   Physical volume "/dev/sdb5" successfully created
    复制代码

    7、查看当前系统中的vg情况
    vgs
    1. [root@steven ~]# vgs
    2.   VG       #PV #LV #SN Attr   VSize  VFree
    3.   VolGroup   1   2   0 wz--n- 19.51g    0
    复制代码
    8、扩展vg   增加了200M的vg
    vgextend VolGroup /dev/sdb5   
    1. [root@steven ~]# vgextend VolGroup /dev/sdb5
    2. .  Volume group "VolGroup" successfully extended
    复制代码

    扩容前


     


    9、扩展lv

    lvextend -L +200M /dev/VolGroup/lv_root

    设备文件名规律 /dev/VG名/LV名
    1. [root@steven dev]# lvextend -L +200M /dev/VolGroup/lv_root
    2.   Size of logical volume VolGroup/lv_root changed from 17.54 GiB (4490 extents) to 17.73 GiB (4540 extents).
    3.   Logical volume lv_root successfully resized
    复制代码
    10、同步
    resize2fs  /dev/VolGroup/lv_root
    1. [root@steven dev]# resize2fs  /dev/VolGroup/lv_root
    2. resize2fs 1.41.12 (17-May-2010)
    3. Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required
    4. old desc_blocks = 2, new_desc_blocks = 2
    5. Performing an on-line resize of /dev/VolGroup/lv_root to 4648960 (4k) blocks.
    6. The filesystem on /dev/VolGroup/lv_root is now 4648960 blocks long.
    复制代码

    扩容后  Use% 比之前少了,说明扩容成功
     


    扩容时的两个谣言
    1、将新的磁盘分区加入到卷组vg之前,需要对分区进行格式化为lv所用的文件系统,通过实验证明是不需要格式化的,直接加入到卷组vg即可
    2、对lv进行扩容,需要先umount才能扩容,通过实验证明是不需要umount的,也就是说在Apache服务或者其他服务正常运行的情况下就可以扩容


    ====================================================================
    ===============================================================
    缩容 (扩容可以在线扩容,但是缩容不能是在线的)

    因为刚才扩容是在根分区扩容的,那么缩容涉及到umount,那么就不在根分区上面做了,我们另外新建一个分区
    1、建立文件夹
    mkdir /aming
    1. [root@steven ~]# mkdir /aming
    复制代码

    2、我们刚才还有500M的空间可以利用,我们利用250M建立一个主分区,再用250M建立另一个主分区

    fdisk /dev/sdb
    n
    p
    1
    +250M
    t
    1
    8e
    w
    sdb1 lvm


    fdisk /dev/sdb
    n
    p
    3
    +220M
    t
    3
    8e
    w
    sdb3  lvm

    3、创建物理卷
    1.    Device Boot      Start         End      Blocks   Id  System
    2. /dev/sdb1              66          98      265072+  8e  Linux LVM
    3. /dev/sdb2               1          65      522081    5  Extended
    4. /dev/sdb3              99         127      232942+  8e  Linux LVM
    5. /dev/sdb5               1          26      208782   8e  Linux LVM
    复制代码
    partprobe
    pvcreate     /dev/sdb1     /dev/sdb3 
    1. [root@steven ~]# pvcreate /dev/sdb1
    2.   Physical volume "/dev/sdb1" successfully created
    3. [root@steven ~]# pvcreate /dev/sdb3
    4.   Physical volume "/dev/sdb3" successfully created
    复制代码
    4、查看物理卷pvs
     

    5、创建卷组vgdata
    vgcreate vgdata /dev/sdb1
    1. [root@steven ~]# vgcreate vgdata /dev/sdb1
    2.   Volume group "vgdata" successfully created
    复制代码

    查看卷组
     

    6、创建逻辑卷
    lvcreate -L +240M -n lvdata1 vgdata
    1. [root@steven ~]# lvcreate -L +240M -n lvdata1 vgdata
    2.   Logical volume "lvdata1" created
    复制代码
    查看逻辑卷
    lvs
     

    7、格式化逻辑卷mkfs.ext4  /dev/vgdata/lvdata1
    1. [root@steven ~]# mkfs.ext4 /dev/vgdata/lvdata1
    2. mke2fs 1.41.12 (17-May-2010)
    3. 文件系统标签=
    4. 操作系统:Linux
    5. 块大小=1024 (log=0)
    6. 分块大小=1024 (log=0)
    7. Stride=0 blocks, Stripe width=0 blocks
    8. 61440 inodes, 245760 blocks
    9. 12288 blocks (5.00%) reserved for the super user
    10. 第一个数据块=1
    11. Maximum filesystem blocks=67371008
    12. 30 block groups
    13. 8192 blocks per group, 8192 fragments per group
    14. 2048 inodes per group
    15. Superblock backups stored on blocks: 
    16.         8193, 24577, 40961, 57345, 73729, 204801, 221185
    17. 正在写入inode表: 完成                            
    18. Creating journal (4096 blocks): 完成
    19. Writing superblocks and filesystem accounting information: 完成
    20. This filesystem will be automatically checked every 24 mounts or
    21. 180 days, whichever comes first.  Use tune2fs -c or -i to override.
    复制代码

    8、挂载 如果要永久挂载 就要写在/etc/fstab 文件里面
    mount /dev/vgdata/lvdata1  /aming
    1. [root@steven ~]# cd /aming
    2. [root@steven aming]# ls
    3. lost+found
    复制代码
    fdisk -l
    1. Disk /dev/mapper/vgdata-lvdata1: 251 MB, 251658240 bytes
    2. 255 heads, 63 sectors/track, 30 cylinders
    3. Units = cylinders of 16065 * 512 = 8225280 bytes
    4. Sector size (logical/physical): 512 bytes / 512 bytes
    5. I/O size (minimum/optimal): 512 bytes / 512 bytes
    6. Disk identifier: 0x00000000
    复制代码

    9、扩展vg ,将sdb3加进来
    vgextend  vgdata  /dev/sdb3
    1. [root@steven aming]# vgextend  vgdata  /dev/sdb3
    2.   Volume group "vgdata" successfully extended
    复制代码
    10、扩展lv
    lvextend -L +230M /dev/vgdata/lvdata1
    1. [root@steven aming]# lvextend -L +230M /dev/vgdata/lvdata1
    2.   Rounding size to boundary between physical extents: 232.00 MiB
    3.   Size of logical volume vgdata/lvdata1 changed from 240.00 MiB (60 extents) to 472.00 MiB (118 extents).
    4.   Logical volume lvdata1 successfully resized
    复制代码

    11、同步
    resize2fs   /dev/vgdata/lvdata1
    1. [root@steven aming]# resize2fs   /dev/vgdata/lvdata1
    2. resize2fs 1.41.12 (17-May-2010)
    3. Filesystem at /dev/vgdata/lvdata1 is mounted on /aming; on-line resizing required
    4. old desc_blocks = 1, new_desc_blocks = 2
    5. Performing an on-line resize of /dev/vgdata/lvdata1 to 483328 (1k) blocks.
    6. The filesystem on /dev/vgdata/lvdata1 is now 483328 blocks long.
    复制代码
    查看空间占用df -h
     


    缩容
    12、减少逻辑卷大小
    先cd回去root目录 cd
    umount -l  /aming  强制卸载


    13、e2fsck 检测剩余空间
    e2fsck -yf /dev/vgdata/lvdata1
    -yf:不询问
    1. [root@steven ~]# e2fsck -yf /dev/vgdata/lvdata1
    2. e2fsck 1.41.12 (17-May-2010)
    3. 第一步: 检查inode,块,和大小
    4. 第二步: 检查目录结构
    5. 第3步: 检查目录连接性
    6. Pass 4: Checking reference counts
    7. 第5步: 检查簇概要信息
    8. /dev/vgdata/lvdata1: 13/120832 files (0.0% non-contiguous), 21656/483328 blocks
    复制代码

    14、resize2fs 同步文件系统 
    resize2fs  -f /dev/vgdata/lvdata1
    1. [root@steven ~]# resize2fs  -f /dev/vgdata/lvdata1
    2. resize2fs 1.41.12 (17-May-2010)
    3. The filesystem is already 483328 blocks long.  Nothing to do!
    复制代码

    15、使用lvreduce命令将逻辑卷减少注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。
    lvreduce -L -230M /dev/vgdata/lvdata1
    1. [root@steven ~]# lvreduce -L -230M /dev/vgdata/lvdata1
    2.   Rounding size to boundary between physical extents: 228.00 MiB
    3.   WARNING: Reducing active logical volume to 244.00 MiB
    4.   THIS MAY DESTROY YOUR DATA (filesystem etc.)
    5. Do you really want to reduce lvdata1? [y/n]: y
    6.   Size of logical volume vgdata/lvdata1 changed from 472.00 MiB (118 extents) to 244.00 MiB (61 extents).
    7.   Logical volume lvdata1 successfully resized
    复制代码

    16、重新挂载
    mount  /dev/vgdata/lvdata1  /aming

    不知道为何superblock损坏,mount不上[root@steven ~]# mount  /dev/vgdata/lvdata1  /aming
    mount: wrong fs type, bad option, bad superblock on /dev/mapper/vgdata-lvdata1,
           missing codepage or helper program, or other error
           In some cases useful info is found in syslog - try
           dmesg | tail  or so

    ===================================================================================================================
    删除LVM

    1、umount卸载逻辑卷
    先cd回去root目录 cd
    umount -l  /aming  强制卸载


    修改配置文件/etc/fstab(若是之前更改过) 


    2、lvremove 删除逻辑卷lvdata1
    lvremove  /dev/vgdata/lvdata1
    1. [root@steven ~]# lvremove  /dev/vgdata/lvdata1
    2. Do you really want to remove active logical volume lvdata1? [y/n]: y
    3.   Logical volume "lvdata1" successfully removed
    复制代码

    3、vgremove 删除卷组
    vgremove  vgdata
    1. [root@steven ~]# vgremove  vgdata
    2.   Volume group "vgdata" successfully removed
    复制代码

    4、pvremove 将物理卷转化成普通分区
    pvremove /dev/sdb1  /dev/sdb3

    1. [root@steven ~]# pvremove /dev/sdb1  /dev/sdb3
    2.   Labels on physical volume "/dev/sdb1" successfully wiped
    3.   Labels on physical volume "/dev/sdb3" successfully wiped
    复制代码

    5、将sdb1和sdb3 转换回 83 Linux分区类型
    fdisk /dev/sdb
    l
    1. Command (m for help): l
    2. 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
    3. 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
    4. 2  XENIX root      3c  PartitionMagic  83  Linux   
    复制代码
    t
    1
    t
    3
    w
    6、查看分区类型
    partprobe
    fdisk -l
    1. Disk /dev/sdb: 1073 MB, 1073741824 bytes
    2. 255 heads, 63 sectors/track, 130 cylinders
    3. Units = cylinders of 16065 * 512 = 8225280 bytes
    4. Sector size (logical/physical): 512 bytes / 512 bytes
    5. I/O size (minimum/optimal): 512 bytes / 512 bytes
    6. Disk identifier: 0xf27bd8ef
    7.    Device Boot      Start         End      Blocks   Id  System
    8. /dev/sdb1              66          98      265072+  83  Linux
    9. /dev/sdb2               1          65      522081    5  Extended
    10. /dev/sdb3              99         127      232942+  83  Linux
    11. /dev/sdb5               1          26      208782   8e  Linux LVM
    复制代码

    7、格式化 sdb1和sdb3
    mkfs -t ext4 /dev/sdb1 
    mkfs -t ext4 /dev/sdb3
    1. [root@steven aming]# mkfs -t ext4 /dev/sdb3
    2. mke2fs 1.41.12 (17-May-2010)
    3. 文件系统标签=
    4. 操作系统:Linux
    5. 块大小=1024 (log=0)
    6. 分块大小=1024 (log=0)
    7. Stride=0 blocks, Stripe width=0 blocks
    8. 58464 inodes, 232940 blocks
    9. 11647 blocks (5.00%) reserved for the super user
    10. 第一个数据块=1
    11. Maximum filesystem blocks=67371008
    12. 29 block groups
    13. 8192 blocks per group, 8192 fragments per group
    14. 2016 inodes per group
    15. Superblock backups stored on blocks: 
    16.         8193, 24577, 40961, 57345, 73729, 204801, 221185
    17. 正在写入inode表: 完成                            
    18. Creating journal (4096 blocks): 完成
    19. Writing superblocks and filesystem accounting information: 完成
    20. This filesystem will be automatically checked every 38 mounts or
    21. 180 days, whichever comes first.  Use tune2fs -c or -i to override.
    复制代码

    8、创建目录
    [root@steven ~]# mkdir /testsdb1
    [root@steven ~]# mkdir /testsdb3




    9、挂载
    [root@steven ~]# mount /dev/sdb1 /testsdb1
    [root@steven ~]# mount /dev/sdb3 /testsdb3


    10、查看挂载情况
    1. [root@steven testsdb3]# mount
    2. /dev/mapper/VolGroup-lv_root on / type ext4 (rw)
    3. proc on /proc type proc (rw)
    4. sysfs on /sys type sysfs (rw)
    5. devpts on /dev/pts type devpts (rw,gid=5,mode=620)
    6. tmpfs on /dev/shm type tmpfs (rw)
    7. /dev/sda1 on /boot type ext4 (rw)
    8. none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
    9. sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
    10. /dev/sdb1 on /testsdb1 type ext4 (rw)
    11. /dev/sdb3 on /testsdb3 type ext4 (rw)
    复制代码

    11、卸载先cd 回根目录
    [root@steven testsdb3]# umount  -l /testsdb3
    [root@steven testsdb3]# umount  -l /testsdb1
     
     
    12、删除sdb1和sdb3fdisk /dev/sdb
    d
    1
    d
    3
    w

    partprobe
    fdisk -l
    1.   Device Boot      Start         End      Blocks   Id  System
    2. /dev/sdb2               1          65      522081    5  Extended
    3. /dev/sdb5               1          26      208782   8e  Linux LVM
    复制代码

    s

    EMC中文支持论坛

    介绍

    Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命令是什么?本文总结了Linux主机对磁盘设备进行重新配置的方式,并附加命令实例。

    更多信息

    Linux系统提供多重机制以重新扫描SCSI总线并重认系统中加入的SCSI设备。在2.4内核方案中,由于动态LUN扫描机制不具备一致性,往往需要中断I/O。

    2.6内核里,LUN扫描有了显著改进并添加了动态LUN扫描机制。Linux目前缺乏像drvconfig或ioscan那样允许动态SCSI通道重配的命令。

    Linux主机对磁盘设备进行重新配置的方式包括:

      • 重启系统
      • 卸载并重新加载HBA驱动模块
      • Echo /proc下的SCSI设备列表
      • 通过/sys下的属性设置运行SCSI扫描
      • 通过HBA厂商脚本运行SCSI扫描

    系统重启

    重启主机是检测新添加磁盘设备的可靠方式。在所有I/O停止之后方可重启主机,同时静态或以模块方式连接磁盘驱动。系统初始化时会扫描PCI总线,因此挂载其上的SCSI host adapter会被扫描到,并生成一个PCI device。之后扫描软件会为该PCI device加载相应的驱动程序。加载SCSI host驱动时,其探测函数会初始化SCSI host,注册中断处理函数,最后调用scsi_scan_host函数扫描scsi host adapter所管理的所有scsi总线。

    重新加载HBA驱动

    通常情况下,HBA驱动在系统中以模块形式加载。从而允许模块被卸载并重新加载,在该过程中SCSI扫描函数得以调用。通常,在卸载HBA驱动之前,SCSI设备的所有I/O都应该停止,卸载文件系统,多路径服务应用也需停止。如果有代理或HBA应用帮助模块,也应当中止。

    命令示例:

    例如,rac节点上某台服务器执行fdisk –l命令看不到共享磁盘,可尝试执行如下命令:

    # modprobe -r lpfc(卸载驱动)

    # modprobe lpfc(加载驱动)

    /procSCSI扫描

    2.4内核中,/proc文件系统提供了可用SCSI设备的列表。如果系统中SCSI设备重新配置,那么所有这些改变通过echo /proc接口反映到SCSI设备中。添加一个设备,主机,channel,target ID,以及磁盘设备的LUN编号会被添加到/proc/scsi/,需指定scsi编号。

    命令示例:

    # echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi

    0:主机ID

    1:channel ID

    2:target ID

    3:LUN编号

    该命令会将新磁盘设备添加到/proc/scsi/scsi文件中。如果没有找到相应文件,需为/dev路径下新增磁盘设备创建设备文件名。

    如果要删除一个磁盘设备,使用适当的主机,channel,target ID及LUN编号运行如下格式命令:

    # echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi

    0:主机ID

    1:channel ID

    2:target ID

    3:LUN编号

    /sysSCSI扫描

    2.6内核中,HBA驱动将SCAN功能导出至/sys目录下,可用来重新扫描该接口下的SCSI磁盘设备。命令如下:

    # cd /sys/class/scsi_host/host4/

    # ls -al scan

    # echo ‘- - -’ > scan

    ‘- - -’代表channel,target和LUN编号。以上命令会导致hba4下所有channel,target以及可见LUN被扫描。

    RHEL5 SUSE10

    echo ‘- - -’  > /sys/class/scsi_host/host0/scan         

    /sys/class/scsi_host/ 下面有几个host 就扫描几次

    RHEL4 SUSE9

    echo 1 >> /sys/class/scsi_host/host0/issue_lip    

    同样是/sys/class/scsi_host/ 下面有几个host 就执行几次

    echo ‘- - -’ >> /sys/class/scsi_host/host0/scan

    在现有PowerPath环境中增加LUN:

    1. 1.确保存储端已配置好LUN并输出给Linux 主机
    2. 2.通过powermt命令获得HBA 卡列表,并扫描列表中所有的HBA

    echo ‘- - -’ > /sys/class/scsi_host/host#/scan

    例如, 如果powermt 显示列出HBA 4 和5, 使用如下命令开始扫描:

    echo ‘- - -’ > /sys/class/scsi_host/host4/scan

    echo ‘- - -’ > /sys/class/scsi_host/host5/scan

    1. 3.运行powermt config 配置新认到的磁盘,生成虚拟设备
    2. 4.用powermt display 检查新认到的LUN 及设备路径

    在现有PowerPath环境中动态删除 LUN

    注意,必须严格遵守操作次序,如果次序有误可能会造成主机OS panic。

    1. 1.在将要删除的设备上停止所有的I/O。
    2. 2.通过以下命令确定虚拟设备对应的原始SCSI设备:

    powermt display dev=emcpower

    1. 3.删除虚拟设备

          powermt remove dev=emcpower

    1. 4.回收虚拟设备号以备后用

          powermt release

          如果此命令失败,已删除的虚拟设备仍会存在于/dev 和/sys/block 下,并且在以后动态添加新LUN时可能会引发问题。

    1. 5.对每个原始SCSI 设备执行以下命令:

          echo 1 > /sys/block/sd/device/delete

          此命令使PowerPath 停止这些原始sd 设备上的I/O 并且将其从/dev 和/sys/block下移除。如此命令执行不成功,在以后动态添加新LUN时可能会引发问题。

    1. 6.在存储阵列中删除对应的LUN,执行powermt display 验证设备已被删除。

    通过HBA厂商脚本进行SCSI扫描

    QLogic

    利用QLogic FC HBA LUN Scan Utility 脚本即可无需重启动系统而识别新添加的LUN。也无需对QLogic FC driver 的重新加载。

    命令示例:

    通过以下命令重新扫描所有HBA:

    # ./ql-dynamic-tgt-lun-disc.sh

    # ./ql-dynamic-tgt-lun-disc.sh -s

    # ./ql-dynamic-tgt-lun-disc.sh –scan

    重新扫描并删除丢失的LUN,使用以下两个命令其中任何一个:

    # ./ql-dynamic-tgt-lun-disc.sh -s -r

    # ./ql-dynamic-tgt-lun-disc.sh --scan –refresh

    Emulex

    使用 Emulex LUN Scan Utility 脚本可以动态扫描新添加的LUN。

    命令示例:

    # gunzip lun_scan.sh.gz

    # chmod a+x lun_scan

    扫描所有lpfc HBA:

    # lun_scan all

    扫描scsi主机编号2的lpfc HBA:

    # lun_scan 2

    之后确认OS 识别到新设备:

    # fdisk -l

    如果系统中有PowerPath ,还需要运行:

    # powermt config


    scsi总线扫描原理

    http://blog.chinaunix.net/uid-28391754-id-3421932.html

    2、在终端里面 fdisk -l 就能看到新添加的磁盘
    在终端里面 fdisk -l 就能看到新添加的磁盘,如果看不到可以使用这个方法
    地址:http://blog.chinaunix.net/uid-21288388-id-4928598.html
    
    确定主机总线号,磁盘是有总线连接着的
    [root@steven ~]# ls /sys/class/scsi_host/
    host0 host1 host2
    
    
    
    
    重新扫描SCSI总线来添加设备,因为添加的是SCSI磁盘,所以扫描的是SCSI总线
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
    
    
    --------------------------------------
    
    重启系统
    卸载并重新加载HBA驱动模块
    Echo /proc下的SCSI设备列表
    通过/sys下的属性设置运行SCSI扫描
    通过HBA厂商脚本运行SCSI扫描
    
    
    /proc下SCSI扫描
    2.4内核中,/proc文件系统提供了可用SCSI设备的列表。如果系统中SCSI设备重新配置,那么所有这些改变通过echo /proc接口反映到SCSI设备中。添加一个设备,主机,channel,target ID,以及磁盘设备的LUN编号会被添加到/proc/scsi/,需指定scsi编号。
    
    命令示例:
    
    # echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi
    
    0:主机ID
    1:channel ID
    2:target ID
    3:LUN编号
    
    该命令会将新磁盘设备添加到/proc/scsi/scsi文件中。如果没有找到相应文件,需为/dev路径下新增磁盘设备创建设备文件名。
    
     
    
    如果要删除一个磁盘设备,使用适当的主机,channel,target ID及LUN编号运行如下格式命令:
    
    # echo "scsi remove-single-device 0 1 2 3" > /proc/scsi/scsi
    
    0:主机ID
    1:channel ID
    2:target ID
    3:LUN编号
    
     
    
    /sys下SCSI扫描
    2.6内核中,HBA驱动将SCAN功能导出至/sys目录下,可用来重新扫描该接口下的SCSI磁盘设备。命令如下:
    
    # cd /sys/class/scsi_host/host4/
    # ls -al scan
    # echo ‘- - -’ > scan
    ‘- - -’代表channel,target和LUN编号。以上命令会导致hba4下所有channel,target以及可见LUN被扫描。
    
     
    
    RHEL5 或SUSE10:
    echo ‘- - -’  > /sys/class/scsi_host/host0/scan         
    /sys/class/scsi_host/ 下面有几个host 就扫描几次
    
    
    确定主机总线号,磁盘是有总线连接着的, 有多少分区就扫描多少次,比如有sda1,sda2,sda3 扫三次
    [root@steven ~]# ls /sys/class/scsi_host/
    host0 host1 host2
    
    
    
    
    重新扫描SCSI总线来添加设备,因为添加的是SCSI磁盘,所以扫描的是SCSI总线,命令会导致sda1,sda2,sda3 下所有channel,target以及可见LUN被扫描。
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
    [root@steven ~]# echo "- - -" > /sys/class/scsi_host/host2/scan


    --自己虚拟机
    [root@steven linux]# cat /proc/scsi/scsi
    Attached devices:
    Host: scsi1 Channel: 00 Id: 00 Lun: 00
      Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
      Type:   CD-ROM                           ANSI  SCSI revision: 05
    Host: scsi2 Channel: 00 Id: 00 Lun: 00
      Vendor: VMware,  Model: VMware Virtual S Rev: 1.0
      Type:   Direct-Access                    ANSI  SCSI revision: 02

    # ls /sys/class/scsi_host/
    host0  host1  host2


    --腾讯云
    [steven@VM_xxcentos ~]$ cat /proc/scsi/scsi
    Attached devices:
    [steven@VMxx_centos ~]$ ls /sys/class/scsi_host/
    host0  host1


    LVM 常用命令 2012-03-14 09:55:06

    http://blog.chinaunix.net/uid-21795529-id-3132599.html



    表 B-1 LVM 命令摘要
    命令
    说明
    extendfs
    扩充文件系统:

    # extendfs /dev/vg00/rlvol3

    lvchange
    更改逻辑卷的特性:

    # lvchange -t 60 /dev/vg00/lvol3

    lvcreate
    在卷组中创建逻辑卷:

    # lvcreate -L 100 /dev/vg00

    lvdisplay
    显示有关逻辑卷的信息:

    # lvdisplay -v /dev/vg00/lvol1

    lvextend
    为逻辑卷添加镜像

    # lvextend -m 1 /dev/vg00/lvol3

    lvextend
    增加逻辑卷的大小

    # lvextend -L 120 /dev/vg00/lvol3

    lvlnboot
    准备将逻辑卷用作根区域、交换区域或转储区域:

    # lvlnboot -d /dev/vg00/lvol2

    lvmerge
    将拆分卷合并为一个逻辑卷:

    # lvmerge /dev/vg00/lvol4b /dev/vg00/lvol4

    lvreduce
    减小逻辑卷的大小:

    # lvreduce -L 100 /dev/vg00/lvol3

    lvreduce
    减小逻辑卷的镜像副本的数量:

    # lvreduce -m 0 /dev/vg00/lvol3

    lvremove
    从卷组中删除逻辑卷:

    # lvremove /dev/vg00/lvol6

    lvrmboot
    删除到根区域、交换区域或转储区域的逻辑卷链路:

    # lvrmboot -d /dev/vg00/lvol2

    lvsplit
    将一个镜像逻辑卷拆分为两个逻辑卷:

    # lvsplit /dev/vg00/lvol4

    lvsync
    同步过时的逻辑卷镜像:

    # lvsync /dev/vg00/lvol1

    pvchange
    更改物理卷的特性:

    # pvchange -a n /dev/disk/disk2

    pvck
    对物理卷执行一致性检查:

    # pvck /dev/disk/disk47_p2

    pvcreate
    创建用作卷组的一部分的物理卷:

    # pvcreate /dev/rdisk/disk2

    pvdisplay
    显示有关物理卷的信息:

    # pvdisplay -v /dev/disk/disk2

    pvmove
    将盘区从一个物理卷移动到另一个物理卷:

    # pvmove /dev/disk/disk2 /dev/disk/disk3

    pvremove
    从物理卷中删除 LVM 数据结构:

    # pvremove /dev/rdisk/disk2

    vgcfgbackup
    保存卷组的 LVM 配置:

    # vgcfgbackup vg00

    vgcfgrestore
    恢复 LVM 配置:

    # vgcfgrestore -n /dev/vg00 /dev/rdisk/disk2

    vgchange
    打开或关闭卷组:

    # vgchange -a y /dev/vg00

    vgchgid
    更改物理卷的卷组 ID:

    # vgchgid /dev/rdisk/disk3

    vgcreate
    创建卷组:

    # vgcreate /dev/vg01 /dev/disk/disk2 /dev/disk/disk3

    vgdisplay
    显示有关卷组的信息:

    # vgdisplay -v /dev/vg00

    vgextend
    通过添加物理卷来扩充卷组:

    # vgextend /dev/vg00 /dev/disk/disk2

    vgexport
    从系统中删除卷组:

    # vgexport /dev/vg01

    vgimport
    向系统添加现有卷组:

    # mkdir /dev/vg04
    # mknod /dev/vg04/group c 640x0n0000
    # vgimport -v /dev/vg04

    (n 编号在所有卷组中是唯一的)。
    vgmodify
    修改卷组的配置参数:

    # vgmodify -v -t -n -r /dev/disk/disk3

    vgscan
    扫描卷组的系统磁盘:

    # vgscan -v

    vgreduce
    通过从卷组中删除一个或多个物理卷来缩小卷组:

    # vgreduce /dev/vg00 /dev/disk/disk2

    vgremove
    从系统和磁盘中删除卷组定义:

    # vgremove /dev/vg00 /dev/disk/disk2

    vgsync
    同步卷组中的所有镜像逻辑卷:

    # vgsync vg00


    tune2fs命令

    http://blog.chinaunix.net/uid-7530389-id-2050094.html
    tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。


    参数------------------------------------------
    tune2fs [ -l ] [ -c max-mount-counts ] [ -e errors-behavior ] [ -f ] [ -i interval-between-checks ] [ -j ] [ -J journal-options ] [ -m
      reserved-blocks-percentage ] [ -o [^]mount-options[,...] ] [ -r reserved-blocks-count ] [ -s sparse-super-flag ] [ -u user ] [ -g
      group ] [ -C mount-count ] [ -L volume-name ] [ -M last-mounted-directory ] [ -O [^]feature[,...] ] [ -T time-last-checked ] [ -U
      UUID ] device
    常用选项说明:
      -l 查看文件系统信息
      -c max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次数就会强制自检
      -i interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周]
      -m reserved-blocks-percentage 保留块的百分比
      -j 将ext2文件系统转换为ext3类型的文件系统
      -L volume-label 类似e2label的功能,可以修改文件系统的标签
      -r reserved-blocks-count 调整系统保留空间
      -o [^]mount-option[,...] Set or clear the indicated default mount options in the filesystem. 设置或清除默认挂载的文件系统选项

    示例-----------------------------------
    tune2fs -c 30 /dev/hda1 设置强制检查文件系统可以挂载的次数
      tune2fs -c -l /dev/hda1 关闭强制检查挂载次数限制。
      tune2fs -i 10 /dev/hda1 10天后检查
      tune2fs -i 1d /dev/hda1 1天后检查
      tune2fs -i 3w /dev/hda1 3周后检查
      tune2fs -i 6m /dev/hda1 半年后检查
      tune2fs -i 0 /dev/hda1 禁用时间检查
    tune2fs -j /dev/hda1 添加日志功能,将ext2转换成ext3文件系统
    tune2fs -r 40000 /dev/hda1 调整/dev/hda1分区的保留空间为40000个磁盘块
    tune2fs -o acl,user_xattr /dev/hda1 设置/dev/hda1挂载选项,启用Posix Access Control Lists和用户指定的扩展属性
    开机取消自检:
    tune2fs -l /dev/sdb1 | grep -E ‘Maximum mount count:|Check interval’
    tune2fs -i 0 -c 0 /dev/sdb1

    f

  • 相关阅读:
    Debug入门之旅StackoverFlow exception的调试
    [软件调试学习笔记]WinDbg演示IA32 CPU下的Windows 分页机制下的地址转换过程
    转载推荐:COM中不同字符类型相互转换,例如char*, BSTR, CString等等
    一种强行指定dll assembly读取其相应*.dll.config配置文件的方法(又名:如何创建.net 的DCOM)
    COM中的error handling机制及示例(ISupportEfforInfo,ICreateErrorInfo,IErrorInfo)
    (转载)如何在WCF实现impersonnate客户端的功能
    如何实现DCOM或者COM+的远程调用
    [软件调试学习笔记]防止栈缓冲区溢出的基于Cookie的安全检查机制
    关于COM的RegFree(免注册)技术简介及实例讲解。
    如何通过扩展WCF来定制和扩展WCF行为
  • 原文地址:https://www.cnblogs.com/MYSQLZOUQI/p/4885123.html
Copyright © 2011-2022 走看看