在系统运维和服务器管理过程中,经常遇到服务器磁盘容量不足,需要在线扩容的情况。普通磁盘分区的管理方式在逻辑分区划好之后就无法改变其大小。而LVM可以实现Linux服务器下面磁盘空间的在线扩容和动态管理,相对于普通的磁盘分区有很大的灵活性。

一、LVM简介

LVM是 Logical VolumeManager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上进行组合,做为一个大的硬盘空间来使用,当硬盘的剩余空间不够的时候,可以将其它的硬盘加入到分区当中,这样可以实现磁盘空间的动态管理。

二、LVM基本术语

物理卷(physical volume,PV):物理卷就是指硬盘分区,也可以是整个硬盘或已创建的RAID ,是LVM的基本存储设备,与普通物理存储介质的区别是该设备包含有LVM相关的管理参数。

卷组(volume group,VG):卷组是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个“LVM分区”(逻辑卷)。

逻辑卷(logical volume,LV):LVM的逻辑卷类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。

物理块(physical extent,PE):物理卷以大小相等的物理块为存储的基本单位,同时也是LVM寻址的最小单元。

逻辑块(logical extent,LE):逻辑卷以大小相等的逻辑块为存储的基本单位,在同一个卷组中,LE的大小和PE是相等的,并且一一对应。

三、通过LVM分区方式安装Centos

1.选择安装类型,选择最后一个复选框,即创建自定义布局。

2.首先划分/boot分区,/boot分区建议使用物理分区。

3.将剩余空间划分为一个物理卷(PV)。

4.创建一个卷组(VG)。默认卷组名为VolGroup00,修改卷组名为vg51cto_lv。

5.在VG上面创建逻辑卷(LV)。逻辑卷默认为LogVol00,LogVol01……末两位由00开始依次递增。

6.LVM分区完成。

7.df -h 查看磁盘空间。

[root@hadoop01 ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg51cto_lv-LogVol01  9.9G 1.2G  8.2G  13% /
tmpfs                            495M     0 495M   0% /dev/shm
/dev/sda1                        194M   29M 155M  16% /boot
/dev/mapper/vg51cto_lv-LogVol03   20G 172M   19G   1% /data
/dev/mapper/vg51cto_lv-LogVol02  5.0G 138M  4.6G   3% /home
/dev/mapper/vg51cto_lv-LogVol04   23G 173M   22G   1% /usr/local

四、LVM管理

第一部分:卷组(volume group ,VG)相关的操作。

1.查看卷组(VG)名,卷组名为vg51cto_lv。

[root@hadoop01 ~]# vgscanReading allphysical volumes.  This may take awhile...Foundvolume group "vg51cto_lv" using metadata type lvm2

2.查看卷组(VG)包含的PV、LV信息。

[root@hadoop01 ~]# vgdisplay -v vg51cto_lvUsingvolume group(s) on command lineFindingvolume group "vg51cto_lv"--- Volumegroup ---VGName               vg51cto_lvSystemID            Format                lvm2MetadataAreas        1MetadataSequence No  6VGAccess             read/writeVGStatus             resizableMAX LV                0Cur LV                5OpenLV               5Max PV                0Cur PV                1Act PV                1VGSize               59.80 GiBPESize               4.00 MiBTotalPE              15309Alloc PE /Size       15309 / 59.80 GiBFree  PE / Size       0 / 0  VGUUID               uF4S1y-21AZ-KOfs-rNIF-lFmN-wQ75-2sX7F1--- Logicalvolume ---LVPath               /dev/vg51cto_lv/LogVol04LVName                LogVol04VGName                vg51cto_lvLVUUID               rvOZeO-Oz2G-wx7Z-u0b6-CvXj-FKEj-RwCLXOLV WriteAccess        read/writeLV Creationhost, time hadoop01, 2015-11-05 17:30:51 +0800LVStatus              available# open                 1LVSize                22.80 GiBCurrentLE             5837Segments               1Allocation             inheritRead aheadsectors     auto- currentlyset to     256Blockdevice           253:2--- Logicalvolume ---LVPath               /dev/vg51cto_lv/LogVol01LVName                LogVol01VGName                vg51cto_lvLVUUID               d6YKrd-fWMJ-x61I-cfWG-v2me-Hn8V-xdm96LLV WriteAccess        read/writeLV Creationhost, time hadoop01, 2015-11-05 17:30:56 +0800LVStatus              available# open                 1LVSize                10.00 GiBCurrentLE             2560Segments               1Allocation             inheritRead aheadsectors     auto- currentlyset to     256Blockdevice           253:0--- Logicalvolume ---LVPath               /dev/vg51cto_lv/LogVol00LVName                LogVol00VGName                vg51cto_lvLVUUID               hSyH2r-mvMV-th7q-geKg-sVpm-O1zJ-D6DwT8LV WriteAccess        read/writeLV Creationhost, time hadoop01, 2015-11-05 17:30:58 +0800LVStatus              available# open                 1LVSize                2.00 GiBCurrentLE             512Segments               1Allocation             inheritRead aheadsectors     auto- currentlyset to     256Blockdevice           253:1--- Logicalvolume ---LVPath               /dev/vg51cto_lv/LogVol03LVName                LogVol03VGName                vg51cto_lvLVUUID               gKHLfz-O5Lm-TGMq-2LcF-xcH1-ASea-QCVVNcLV WriteAccess        read/writeLV Creationhost, time hadoop01, 2015-11-05 17:30:58 +0800LVStatus              available# open                 1LVSize                20.00 GiBCurrentLE             5120Segments               1Allocation             inheritRead aheadsectors     auto- currentlyset to     256Blockdevice           253:3--- Logicalvolume ---LVPath               /dev/vg51cto_lv/LogVol02LVName                LogVol02VGName                vg51cto_lvLVUUID               lkqKmO-Dt0u-3CnB-UqeD-d6gc-2rmP-gWtKVpLV WriteAccess        read/writeLV Creationhost, time hadoop01, 2015-11-05 17:31:00 +0800LVStatus              available# open                 1LVSize                5.00 GiBCurrentLE             1280Segments               1Allocation             inheritRead aheadsectors     auto- currentlyset to     256Blockdevice           253:4---Physical volumes ---PV Name               /dev/sda2    PVUUID              pKC6SA-fkfe-OAl2-scVr-tq0h-EAXD-AWpwgXPVStatus             allocatableTotal PE /Free PE    15309 / 0

3.修改卷组名,由vg51cto_lv修改成vg51cto。

1)修改卷组名的命令为vgrename,语法如下:

vgrename OldVolumeGroupNameNew VolumeGroupName

[root@hadoop01 ~]# vgrename vg51cto_lv vg51ctoVolumegroup "vg51cto_lv" successfully renamed to "vg51cto"

2)修改/etc/fstab配置文件,把vg51cto_lv修改成vg51cto。

[root@hadoop01 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Nov  5 17:33:46 2015
#
# Accessible filesystems, by reference, aremaintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8)and/or blkid(8) for more info
#
/dev/mapper/vg51cto-LogVol01 /                       ext4    defaults        1 1
UUID=9c02e519-3b85-4918-b9fd-395535cab496/boot       ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol03 /data                   ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol02 /home                   ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol04 /usr/local              ext4    defaults        1 2
/dev/mapper/vg51cto-LogVol00 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

3)修改grub.conf配置文件,把vg51cto_lv修改成vg51cto。

[root@hadoop01 ~]# vim /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub aftermaking changes to this file
# NOTICE: You have a /boot partition.  Thismeans that
#         all kernel and initrd paths are relative to /boot/, eg.
#         root (hd0,0)
#         kernel /vmlinuz-version ro root=/dev/mapper/vg51cto_lv-LogVol01
#         initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)root(hd0,0)kernel/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg51cto-LogVol01 rd_NO_LUKSrd_LVM_LV=vg51cto/LogVol01 rd_LVM_LV=vg51cto/LogVol00 rd_NO_MD crashkernel=autoLANG=zh_CN.UTF-8  KEYBOARDTYPE=pcKEYTABLE=us rd_NO_DM rhgb quietinitrd/initramfs-2.6.32-431.el6.x86_64.img

4)reboot重启后用df -h查看。

[root@hadoop01 ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg51cto-LogVol01  9.9G 1.2G  8.2G  13% /
tmpfs                         495M     0 495M   0% /dev/shm
/dev/sda1                     194M  29M  155M  16% /boot
/dev/mapper/vg51cto-LogVol03   20G 172M   19G   1% /data
/dev/mapper/vg51cto-LogVol02  5.0G 138M  4.6G   3% /home
/dev/mapper/vg51cto-LogVol04   23G 173M   22G   1% /usr/local

第二部分:逻辑卷(logical volume,LV)相关的操作。

1.查看逻辑卷(LV)名。

使用LVM安装系统时,默认的卷组名为VolGroup00,卷组内的逻辑卷为LogVol00,LogVol01……末两位由00开始依次递增。

[root@hadoop01 ~]# lvscanACTIVE            '/dev/vg51cto/LogVol04' [22.80 GiB]inheritACTIVE            '/dev/vg51cto/LogVol01' [10.00 GiB]inheritACTIVE            '/dev/vg51cto/LogVol00' [2.00 GiB]inheritACTIVE            '/dev/vg51cto/LogVol03' [20.00 GiB]inheritACTIVE            '/dev/vg51cto/LogVol02' [5.00 GiB]inherit

2.查看逻辑卷详细信息

lvdisplay 命令查看所有逻辑卷的详细信息

lvdisplay  逻辑卷名称

[root@hadoop01 ~]# lvdisplay /dev/vg51cto/LogVol00--- Logicalvolume ---LVPath                /dev/vg51cto/LogVol00LVName                LogVol00VGName                vg51ctoLVUUID               hSyH2r-mvMV-th7q-geKg-sVpm-O1zJ-D6DwT8LV WriteAccess        read/writeLV Creationhost, time hadoop01, 2015-11-05 17:30:58 +0800LVStatus              available# open                 1LVSize                2.00 GiBCurrentLE             512Segments               1Allocation             inheritRead aheadsectors     auto- currentlyset to     256Block device           253:1

3.修改逻辑卷名

1)修改逻辑卷命令为lvrename,语法如下:

lvrename OldLogicalVolumePath NewLogicalVolumePath
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol00 /dev/vg51cto/lv_swapRenamed"LogVol00" to "lv_swap" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol01 /dev/vg51cto/lv_rootRenamed"LogVol01" to "lv_root" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol02 /dev/vg51cto/lv_homeRenamed"LogVol02" to "lv_home" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol03 /dev/vg51cto/lv_dataRenamed"LogVol03" to "lv_data" in volume group "vg51cto"
[root@hadoop01 ~]# lvrename /dev/vg51cto/LogVol04 /dev/vg51cto/lv_usrRenamed"LogVol04" to "lv_usr" in volume group "vg51cto"

2)修改/etc/fstab配置文件。

[root@hadoop01 ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Nov  5 17:33:46 2015
#
# Accessible filesystems, by reference, aremaintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8)and/or blkid(8) for more info
#
/dev/mapper/vg51cto-lv_root /                       ext4    defaults        1 1
UUID=9c02e519-3b85-4918-b9fd-395535cab496/boot      ext4    defaults        1 2
/dev/mapper/vg51cto-lv_data /data                   ext4    defaults        1 2
/dev/mapper/vg51cto-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg51cto-lv_usr /usr/local               ext4    defaults        1 2
/dev/mapper/vg51cto-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc   defaults        0 0

3)修改grub.conf配置文件。

[root@hadoop01 ~]# vim /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub aftermaking changes to this file
# NOTICE: You have a /boot partition.  Thismeans that
#         all kernel and initrd paths are relative to /boot/, eg.
#         root (hd0,0)
#         kernel /vmlinuz-version ro root=/dev/mapper/vg51cto_lv-LogVol01
#         initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.el6.x86_64)root(hd0,0)kernel/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg51cto-lv_root rd_NO_LUKSrd_LVM_LV=vg51cto/lv_root rd_LVM_LV=vg51cto/lv_swap rd_NO_MD crashkernel=autoLANG=zh_CN.UTF-8  KEYBOARDTYPE=pc KEYTABLE=usrd_NO_DM rhgb quietinitrd/initramfs-2.6.32-431.el6.x86_64.img

第三部分:物理卷(physical volume,PV)相关操作。

1.查看物理卷(PV)名,这里为/dev/sda2,linux中SCSI的第1块硬盘为/dev/sda,第2块硬盘为/dev/sdb,依此类推。

[root@hadoop01 ~]# pvscanPV /dev/sda2   VG vg51cto  lvm2 [59.80 GiB / 0    free]Total: 1[59.80 GiB] / in use: 1 [59.80 GiB] / in no VG: 0 [0   ]

2.查看物理卷详细信息。

[root@hadoop01 ~]# pvdisplay---Physical volume ---PVName               /dev/sda2VGName               vg51ctoPVSize               59.80 GiB / not usable 3.00 MiBAllocatable           yes (butfull)PESize               4.00 MiBTotalPE              15309FreePE               0AllocatedPE          15309PVUUID              pKC6SA-fkfe-OAl2-scVr-tq0h-EAXD-AWpwgX

四、LVM空间管理

1.LVM减少LV空间

举例:减少/data空间,从20G减少到10G。

1)卸载设备(Unmount thefilesystem)

[root@hadoop01 ~]# umount  /data/

2)e2fsck命令检查文件系统(Checkthe filesystem)

[root@hadoop01 ~]# e2fsck -f/dev/mapper/vg51cto-lv_data
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/mapper/vg51cto-lv_data: 11/1310720files (0.0% non-contiguous), 126289/5242880 blocks

3)resize2fs命令调整lv大小,10G表示调整后/data剩余空间。

[root@hadoop01 ~]# resize2fs/dev/mapper/vg51cto-lv_data 10G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on/dev/mapper/vg51cto-lv_data to 2621440 (4k) blocks.
The filesystem on/dev/mapper/vg51cto-lv_data is now 2621440 blocks long.

4)lvreduce命令减少文件系统大小(Resizethe filesystem),表示将/data的空间减少9G。

[root@hadoop01 ~]# lvreduce -L -9G  /dev/mapper/vg51cto-lv_dataWARNING: Reducing active logical volume to 11.00 GiBTHIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_data?[y/n]: yReducing logical volume lv_data to 11.00 GiBLogical volume lv_data successfully resized

5)vgs命令查看卷组剩余空间为9G。

6)mount 文件系统并查看磁盘空间剩余空间。

2.LVM增加LV空间

举例:将刚才9G空间增加到/home分区。

1)vgs命令查看是否有空闲空间可以扩容。

[root@hadoop01 ~]# vgsVG      #PV #LV #SN Attr   VSize VFreevg51cto   1   5   0wz--n- 59.80g 9.00g

2)df -h查看当前磁盘空间

3)lvextend命令将home分区空间增加9G。

[root@hadoop01 ~]# lvextend -L +9G -f -r /dev/mapper/vg51cto-lv_homeExtending logical volume lv_home to 14.00 GiBLogical volume lv_home successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg51cto-lv_homeis mounted on /home; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of/dev/mapper/vg51cto-lv_home to 3670016 (4k) blocks.
The filesystem on/dev/mapper/vg51cto-lv_home is now 3670016 blocks long.

4)查看分区是否增加成功。

五、LVM 在线扩容

服务器磁盘空间不足,添加新的硬盘后,需要把空间添加当前分区当中。

linux中SCSI的第1个硬盘/dev/sda,第2个硬盘/dev/sdb依此类推。其中服务器第一块硬盘/dev/sda已经划分为LVM分区。/dev/sdb是新加的硬盘。

1)  用pvcreate  /dev/sdb命令初始化分区sdb为物理卷(PV)。

[root@hadoop01 ~]# pvcreate /dev/sdbPhysical volume "/dev/sdb" successfully created

2)pvdisplay命令显示物理卷的信息

[root@hadoop01 ~]# pvdisplay---Physical volume ---PVName               /dev/sda2VGName               vg51ctoPVSize               59.80 GiB / not usable3.00 MiBAllocatable           yes (butfull)PESize               4.00 MiBTotal PE              15309Free PE               0Allocated PE          15309PVUUID              pKC6SA-fkfe-OAl2-scVr-tq0h-EAXD-AWpwgX"/dev/sdb" is a new physical volume of "40.00 GiB"---NEW Physical volume ---PVName               /dev/sdbVGName              PVSize               40.00 GiBAllocatable           NOPESize               0  Total PE              0Free PE               0Allocated PE          0PVUUID              dMeOLS-Sks3-8k3q-pVWp-Iuz2-0Hh2-8njjhY

3)vgextend命令将pv加入到vg,vgcreate命令为新创建vg(vgcreate  vg51cto  /dev/sdb),这里的vg51cto已经存在,只需要用vgextend加入即可。

[root@hadoop01 ~]# vgextend vg51cto/dev/sdbVolume group "vg51cto" successfully extended

4)用vgdisplay命令查看vg信息,看到已经有40G空闲PE。

5)lvextend命令扩展分区,将40G空间全部添加到/data分区。

直接增加40G空间不足,报下面的错误,因此添加39.9G的空间。

Insufficient free space:10240 extents needed, but only 10239 available

[root@hadoop01 ~]# lvextend -L +39.99G/dev/mapper/vg51cto-lv_dataRounding size to boundary between physical extents: 39.99 GiBExtending logical volume lv_data to 50.99 GiBLogicalvolume lv_data successfully resized

6)上一步操作只是增加了逻辑卷的大小,用resize2fs命令重新定义文件系统的大小。

[root@hadoop01 ~]# resize2fs  /dev/mapper/vg51cto-lv_data
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg51cto-lv_datais mounted on /data; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 4
Performing an on-line resize of/dev/mapper/vg51cto-lv_data to 13367296 (4k) blocks.
The filesystem on/dev/mapper/vg51cto-lv_data is now 13367296 blocks long.

7)查看磁盘在线扩容是否正常。

总结:

1)/分区不能umount,说明/分区只能扩容,不能减少/分区的空间。

2)减少分区的时候需要卸载分区,进行umount操作。

3)扩容的分区的时候不需要卸载分区。

4)重命名vg,lv命名后,需要修改/etc/fstab和/etc/grub.conf引导文件。

转载于:https://blog.51cto.com/sfzhang88/1710059

CentOS 6.5 LVM磁盘管理学习笔记相关推荐

  1. sqlserver 2012实施与管理学习笔记(一):选型和部署之单机部署、故障转移群集与日志传送

    sqlserver 2012实施与管理学习笔记(一):选型和部署之单机部署.故障转移群集与日志传送 数据库的选型和部署 sqlserver的安装和升级 选择高可用性和灾难恢复技术 故障转移群集 日志传 ...

  2. 郝健: Linux内存管理学习笔记-第5节课

    前序文章: 郝健: Linux内存管理学习笔记-第1节课 郝健: Linux内存管理学习笔记-第2节课 郝健: Linux内存管理学习笔记-第3节课 郝健: Linux内存管理学习笔记-第4节课 摘要 ...

  3. 郝健: Linux内存管理学习笔记-第6节课

    前序文章: 郝健: Linux内存管理学习笔记-第1节课 郝健: Linux内存管理学习笔记-第2节课 郝健: Linux内存管理学习笔记-第3节课 郝健: Linux内存管理学习笔记-第4节课 郝健 ...

  4. 郝健: Linux内存管理学习笔记-第4节课

    前序文章: 郝健: Linux内存管理学习笔记-第1节课 郝健: Linux内存管理学习笔记-第2节课 郝健: Linux内存管理学习笔记-第3节课 摘要 page cache free命令的详细解释 ...

  5. DB2 UDB V8.1 管理 学习笔记

    DB2 UDB V8.1 管理 学习笔记 DB2 学习笔记 - AIview.com Last updated on Wednesday, August 24, 2005 Skip to naviga ...

  6. Windows内存管理学习笔记(三)—— 无处不在的缺页异常

    Windows内存管理学习笔记(三)-- 无处不在的缺页异常 缺页异常 实验一:设置虚拟内存 无处不在的缺页 位于页面文件 保留与提交的误区 实验二:理解缺页异常 EXECUTE_WRITECOPY ...

  7. Windows内存管理学习笔记(二)—— 物理内存的管理

    Windows内存管理学习笔记(二)-- 物理内存的管理 物理内存 实验一:理解MmNumberOfPhysicalPages MmPfnDatabase _MMPFN 物理页状态 六个链表 实验二: ...

  8. Windows内存管理学习笔记(一)—— 线性地址的管理

    Windows内存管理学习笔记(一)-- 线性地址的管理 用户空间线性地址的管理 实验一:理解用户空间线性地址管理 Private Memory 实验二:理解Private Memory 堆 实验三: ...

  9. RAID磁盘阵列和LVM磁盘管理

    RAID是英文Redundant Array of Independent Disks的缩写,中文简称为独立冗余磁盘阵列.简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一 ...

最新文章

  1. Navicat For Mysql快捷键
  2. 这个开源项目...看了就停不下来啊!
  3. Android常用权限
  4. 网络服务器开发总结(转:http://my.oschina.net/u/181613/blog/596022)
  5. 使用MVCPager做AJAX分页所需要注意的地方
  6. php在数据库中上传图片格式,如何上传图片并在php中保存数据库中的URL
  7. jq之mouseleave()
  8. 算法高级(41)-推荐算法实现
  9. DropDMG for Mac(dmg打包软件)
  10. linux切换机器ssh命令,linux – 如何编写一个bash shell脚本来ssh到远程机器并更改用户并导出一个env变量并执行其他命令...
  11. Qt编写自定义控件属性设计器
  12. android7.0电话录音,芒果录音手机版-芒果通话录音app(电话通话录音软件)下载7.3.2官方安卓版-西西软件下载...
  13. python 知乎 sklearn_最全知乎专栏合集:编程、python、爬虫、数据分析、挖掘、ML、NLP、DL......
  14. simulink教程(自动控制原理)
  15. Photoshop将图片转为RGB颜色模式 您还不会吗?
  16. 服务器自带的ftp报错505,使用Delphi带的FTP控件删除服务器上的文件,该文件正在被使用(ASF格式影片,正在被点播)(100分)...
  17. win10打开任务管理器的快捷键
  18. python之路——进程
  19. 4.1 用格雷戈里公式求π的近似值
  20. 720全景展示是什么?全景展示有什么用?

热门文章

  1. java七大设计原则
  2. 用TortoiseSVN忽略文件或文件夹(ignore)(网络摘抄记录)
  3. jQuery之防止冒泡事件
  4. 2.8 FSM之Moore和Mealy part1
  5. 迅雷离线工具 小众雷友 测试版
  6. 页面是可以这样设计的
  7. Java Set接口
  8. c语言作业集答案,C语言习题集及答案
  9. IE中页面不居中,火狐谷歌等正常
  10. 當前主流防拷光碟的備份