Linux磁盘存储和文件系统

设备文件

磁盘设备的设备文件命名:/dev/dev-file

SCSI,SATA,SAS,IDE,USB:        /dev/sd*

虚拟磁盘:/dev/vd

不同磁盘标识:a-z,aa,ab...

/dev/sda,/dev/sdb,...

同一设备上的不同分区:1,2.。。

/dev/sda1,/dev/sda5

设备号码:     major number       标识设备类型

minor number      标识同一类型下的不同设备

    磁盘存储术语:

head               磁头

track              磁道

cylinder       柱面

sector             扇区

         CHS:

采用24bit寻址

其中前10位表示cylinder,中间8位表示head,后面6位表示sector

最大寻址空间8GB

LBA:(Logical block addressing)

LBA是一个整数,通过转换成CHS格式完成磁盘具体

LBA采用48位寻址

最大寻址空间128PB

    使用分区空间步骤:

  分区,创建文件系统,挂载

  设备识别

  设备分区

  创建文件系统

  标记文件系统

  在/etc/fstab文件中创建条目

  挂载新的文件系统

    磁盘分区:

  为什么分区:

优化I/O性能

实现磁盘空间配额限制

提高修复速度

隔离系统和程序

安装多个OS

采用不同文件系统

     分区:

两种分区方式:MBR,GPT

MBR:      Mater Boot Record,  1982年,使用32位表示扇区数,分区不超过2T

如何分区:按柱面

0磁道0扇区:512bytes

446bytes:     boot loader

64bytes:       分区表

16bytes:标识一个分区

2bytes: 55  aa

4个主分区; 3主分区+1扩展分区(n个逻辑分区)

GPT: GUID(Globals Unique ldentifiers)partition table  支持128个分区

使用64位寻址,支持8Z(512byte/block)64Z(4096byte/block)

使用128位UUID (Universally  Unique ldentifier)表示磁盘和分区GPT分区表

自动备份在头和尾两份,并有CRC校验位

UEFI(统一扩展固件接口)硬件支持GPT,是操作系统启动

    管理分区:

  列出块设备:        lsblk

  创建分区使用:

  fdisk       创建MBR分区

  gdisk       创建GPT分区

parted      级分区操作

      partprode-重新设置内存中的内核分区表版本

    parted 命令:

  ps:    parted的操作都是实时生效的,小心使用

  用法:

parted /dev/sdb mklabel gpt|msdos

parted /dev/sdb print

parted /dev/sdb mkpart primary 1 200 (默认M)

parted /dev/sdb rm 1

parted -l       列出分区信息

    fdisk

    fdisk -l [-u] [dvice]

    fdisk /dev/sdb 管理分区

子命令:

p    分区列表

t      更改分区类型

n     创建新分区

d    删除分区

u     转换单位

w     保存并退出

q     不保存并退出

v     校验分区

o     格式化为 msdos  新分区

g     格式化为 gpt  新分区

查看内核是否已经识别新的分区:

        cat /proc/partitions

    partx:

  centos6通知内核重新读取硬盘分区表

新增分区:

partx -a  /dev/sd*

删除分区:

partx -d --nr M-N  /dev/sd*

 centos5,7:使用 partprobe

        partprobe [/dev/sd*]

文件系统

  文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;

即在存储设备上组织文件的方法。操作系统中负责管理和存储的文件信息的软件结构称为文件管理系统,简称文件系统。

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体的说,它负责为用户建立文件

存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。

支持的文件系统:

          /lib/modules/`uname-r`/kernel/fs

文件系统类型:

linux文件系统:ext2(Extended file system),ext3,ext4,xfs(SGI),btrfs(Oracle)reiserfs,jfs(AIX),swap

光盘:iso9660

windows:FAT32 exfat ntfs

unix:ffs ufs jfs2

网络文件系统:NFS CIFS

集群文件系统:GFS2,OCFS2

分布式文件系统:fastdfs,ceph,moosefs,mogilefs,glusterfs,lustre

RAW:未经处理或者未经格式化产生的文件系统

文件系统分类:

根据是否支持日志‘journal’功能:

日志型文件系统:ext3 ,ext4,xfs..

非日志型文件系统:ext2,vfat(fat32)

文件系统的组成部分:

内核中的模块:ext4,xfs,vfat

用户空间的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat

linux的虚拟文件系统:VFS

查看支持的文件系统:

              cat /proc/filesystems

    创建文件系统:

      mkfs命令:

mkfs.fs_type /dev/sd*

ext4

xfs

btrfs

vfat

mkfs -t fs_type /dev/sd*

-L ‘LABEL‘:设定卷标

      mke2fs:    ext系列文件系统专用管理工具

-t {ext2|ext3|ext4}==  mkfs.ext2,3,4

-b  {1024|2048|4096}

-L  ‘LABLE‘

-i #  为数据空间中每多少个字节创建一个inode,此大小不应该

小于block的大小

-N #      指定分区中创建多少个inode

-l           一个inode记录占用的磁盘空间大小,

-m #      默认5%,为管理人员预留空间占总空间的百分比

-O FEATURE...:      启用指定特性

-O ^FEATURE..      关闭指定特性

文件系统标签:

指向设备的另一种方法:

与设备无关

blkid:

blkid:块设备属性信息查看

blkid /dev/sda1

-U UUID        根据指定的uuid  来查找对应的设备

-L Label  根据指定的label来查找对应的设备

e2lable:          管理ext系列文件系统的label

e2lable device  [lable]

findfs:      查找分区

findfs [options] LABEL  =label      等于  blkid -L

findfs [options]  UUID=uuid         等于 blkid -U

PS:

在centos7上,GPT分区,默认会多一个PARTUUID

创建文件系统之后才会有UUID

uuidgen         生成uuid

tune2fs:

重新设定ext系列文件系统可调整参数的值

-l                    查看指定文件系统(分区)超级块信息;super  block

无法查看xfs系统

-L ‘LABEL‘   修改卷标

-m #              修改预留给管理员的空间百分比

-j                   将ext2升级为ext4 (加上journal功能)

-O                  文件系统属性启用或禁用,-O ^has_journal

-o                  调整文件系统的默认挂载选项, -o ^acl

-U UUID        修改UUID号

dumpe2fs:

块分组管理,32768

-h   查看超级块信息,不显示分组信息

文件系统检测和修复:

常发生于死机或者非正常关机之后

挂载为文件系统标记为“no clean”

注意:一定不要再挂载状态下修复

fsck.fs_type

-p   自动修复错误

-r    交互式修复错误

fs_type一定要与分区上文件系统类型相同

e2fsck: ext系列文件专用的检测修复工具

-y: 自动回答yes

-f           强制修复

挂载,     nount

umount

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此

目录作为其他文件访问入口的行为

卸载:     解除此关联关系的过程

把设备关联挂载点: mount point

卸载时:可使用设备,也可以使用挂载点

挂载点下原有文件在挂载完成后会被临时隐藏

挂载点目录一般为空

mount命令:

挂载方法

mount device mount-point

mount:         通过查看/etc/mtab文件显示当前已挂载的所有设备

mount [-fnrsvw] [-t vfstpe] [-o options] device dir

device;指明要挂载的设备;

1.     设备文件;例如/dev/sda5

2.     卷标; -L  ‘LABEL‘,

3.     UUID,       -U ‘UUID‘

4.     伪文件系统名称: proc sysfs  devtmpfs configfs

dir:       挂载点

事先存在,建议使用空目录

进程正在使用中的设备无法被卸载

-t vsftype        指明要挂载的设备上的文件系统类型

-r                  readonly,只读挂载

-w                 read and write  读写挂载

-n                 不更新/etc/mtab, mount不可见 centos7无效

-a                   自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,

且挂载选项中有auto功能)

-L ’LABEL‘ 以卷标为指定挂载设备

-U ’UUID‘ 以UUID指定要挂载的设备

-B --bind       绑定目录到另一个目录上

查看内核追踪到的一挂载的所有设备

cat /proc/mounts

mount -o       挂载文件系统的选项,多个选项使用逗号分隔

async             异步模式

sync       同步模式

atime/noatime              包含目录和文件

diratime/nodiratime      目录的访问时间戳

auto/noauto                 是否支持自动挂载,是否支持-a选项

exec/noexec                  是否支持将文件系统上运行应用程序

dev/nodev                    是否支持在此文件系统上使用设备文件

suid/nosuid                  是否支持suid和sgid权限

remount                      重新挂载

ro                                 只读

rw                                读写

user/nouser                  是否允许普通用户挂载此设备, /etc/fstab使用

acl                                启用此文件系统上的acl功能

loop                      使用loop设备

defaults:       相当于rw,suid,dev,exec,auto,nouser,async

findmnt

findmnt mount-point | device      查看挂载情况

lsof

lsof mount-point                        查看正在访问指定文件系统的进程

fuser

fuser -v mount-point                 查看正在访问指定文件系统的进程

fuser -km mount-point                      终止所有正在访问指定的文件系统的进程

umount:取消挂载

umount device

umount mount-point

/etc/fstab

配置文件系统体系

被mount,fsck和其他程序使用

系统重启时保留文件系统体系

可以在设备栏使用文件系统卷标

使用mount -a 命令挂载/etc/fstab中的所有文件系统

每行定义一个要挂载的文件系统

1     要挂载的设备或伪文件系统

设备文件

LABEL:LABEL=""

UUID:      UUID=

伪文件系统名称:proc sysfs

2     挂载点

3     文件系统类型:

4     挂载选项:defaults,acl。。。

5     转储频率:

0     不做备份

1     每天备份

2     每隔一天转储

6     自检次序:

0     不自检

1     首先自检,一般只有rootfs才用1

处理交换文件和分区:

交换分区是系统RAM的补充

基本设置包括

创建交换分区或者文件

mkswap         使用mkswap  写入特殊签名

在/etc/fstab文件中添加适当的条目

使用swapon -a 激活交换空间

swapon   device                    启用交换分区

-a                          激活所有的交换分区

-s                          查看已经使用的swap分区

-p priority:   指定优先级

/etc/fstab:              pri=value

swapoff   device                    禁用交换分区

-a                          禁用所有交换分区

swap的优先级:

可以指定swap分区0-32676的优先级,值越大优先级越高

如果用户没有指定,那么核心会自动给swap指定一个优先级,这个优先级从

-1开始,每加入一个新的没有用户指定优先级的swap,会给这个优先级

-1

先添加的swap 的缺省优先级比较高,除非用户自己指定一个优先级,而用户

指定的优先级(是正数)永远高于核心缺省指定的优先级(是负数)

优化性能:分布存放,高性能磁盘存放

将文件当做swap使用:

dd if=/dev/zero of=p1 ps=1M count=2048     生成文件

mkswap p1           格式化

swapon p1            开启交换分区

写入/etc/fstab

swapon  -a

文件挂载到目录上:

mkfs.ext4 p1

mount -o loop p1 /dir         centos6挂载时需要加-o loop 选项

centos7可以直接挂载

/data/p1  /mnt/app1 ext4 loop 0  0   fstab文件书写格式

losetup -a                                  查看loop设备代表的源文件路径

ls /dev/loop*                        查看所有loop设备

centos6默认只有8个loop设备,centos7不限制

mknod /dev/loop8 b 7 8                    centos6手动生成loop文件来挂载

losetup /dev/loop8 p2                 loop8和文件做映射

mount /dev/loop8 /data/app3            此时挂载就不需要-o了

vim /boot/grub/grub.conf           centos6配置文件,可修改最大loop数量

在kernel行尾添加  max_loop=100,重启生效

挂载目录到目录

fstab书写格式:

/root  /mnt/root  none bind 0 0

移动介质:

挂载意味着使外来的文件系统看起来如同是主目录树的一部分

访问时,介质必须被挂载

摘除时,介质必须被卸载

按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软盘、USB等等)

挂载点通常在/media 或 /mnt  下

使用光盘:

在图形环境下自动启动挂载/run/media/user/label

否则就必须被手工挂载

mount /dev/cmrom  /mnt/

eject        卸载或弹出磁盘

创建ISO文件

cp /dev/sr0  /root/centos6.iso

mkisofs -r -o file.iso  /dir

此命令生成的iso文件,比如centos6光盘,可以做yum源,但是不能做引到盘

使用centos官方提供的mkdvdiso.sh  可以生成引到光盘

mkdvdiso.sh  /dir  centos6.iso

生成的iso文件需要挂载之后才可以查看

wodim -v -eject  centos.iso

挂载usb介质

查看usb设备是否识别

lsusb

被内核探测为scsi设备

/dev/sda* /dev/sdb*  或类似的设备

在图形环境中自动挂载

图标在【计算机】窗口中创建

挂载在/run/media/user/label

手动挂载:

mount /dev/sd*  /mnt/

常用工具:

df: 文件系统空间占用等信息的查看工具

df [option]..[file]..

-H          以1000为单位

-T           文件系统类型:

-h           human-readable

-i            inodes instead of  blocks 查看inode编号使用情况

-P          以Posix兼容的格式输出

设备名很长的情况下 1行显示

du:       查看某目录总体空间占用状态

du [option]..[dir]..

-h           human-readable

-s           summary

--max-depth=#    最大深度

hexdump:   查看二进制文件

hexdump -C /dev/sda -n512

mknod:              生成块设备文件

mknod /data/sdA b 8 1

mknod /data/zefofile c 1 5

cp -a   /dev/sda /data  -a  可以复制块设备

dd:          convert and copy a file

用法:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=# size       count=# number

ibs=size         一次读size个byte

obs=size        一次写入size个byte

cbs=size        一次转化size个byte

skip=numbem      从开头忽略num个ibs大小的块

seek=num            从开头忽略num个obs大小的块

count=n               只拷贝n个记录

conv=            用指定的参数转换文件

ascii        转换EBCDIC  为  ASCII

ebcdic            转换ASCII为EBCDIC

lcace              把大写字符转换为小写字符

ucace             把小写字符转换为大写字符

nocreat          不创建输出文件

noerror          出错时不停止

notrunt          不截短输出文件

sync       把每个输入块填充到ibs字节,不足部分用nul空字符补齐

示例:

备份MBR:

dd if=/dev/sda  of=/data/mar.bak bs=1 count=512

破坏分区表,保留MBR中的bootloader:

dd if=/dev/zero of=/dev/sda  bs=1 count=64 seek=446

有一个大与2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读

取的大小是128Byts。又有fileB,  想把上面读取到的128Bytes写到第32个字节开

始的位置,替换128Bytes,

dd if=fielA of=fileB bs=1  count=128 skip=63 seek=31 conv=notrunc

备份:

dd if=/dev/sdx  of=/dev/sdy

将本地/dev/sdx整盘备份到/dev/sdy

dd if=/dev/sdx  of=/path/file

将/dev/sdx全盘数据备份到指定路径的file文件

dd if=/dev/sdx | gzip >  /path/file.gz

备份/dev/sdx 全盘数据,并利用gzip压缩,保存到指定路径

恢复:

dd if=/path/file  of=/dev/sdx

将备份文件恢复到指定盘

gzip -dc /path/file.gz    | dd of=/dev/sdx

将压缩的备份文件恢复到指定盘

拷贝内存资料到硬盘

dd if=/dev/mem  of=/root/mem.bin bs=1024

将内存里的数据拷贝到root目录下的mem.bin文件

拷贝光盘数据:

销毁磁盘数据:

dd if=/dev/urandom  of=/dev/sda1

得到最恰当的block size

测试硬盘读写速度

修复硬盘:

dd if=/dev/sda  of=/dev/sda

当硬盘较长时间(比如1,2)年放置不使用后,磁盘上会产生消磁点。

当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况

影响到硬盘的第一个扇区时,可能导致硬盘报废,上边的命令有可能使

这些数据起死回生,且这个过程是安全高效的。

练习:

1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统

ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载

选项

echo -e "n\np\n2\n\n+2G\nw\n" |fdisk /dev/sdb

mkfs.ext4 -L TEST -m 1 -b 2048 /dev/sdb2

echo -e "LABEL=TEST /test\text4\tdefaults,acl\t 0\t 0" >>  /etc/fstab

mkdir /test

mount -a

lsblk

└─sdb2   8:18    0    2G  0 part /text

2、写一个脚本,完成如下功能:

(1) 列出当前系统识别到的所有磁盘设备

(2) 如磁盘数量为1,则显示其空间使用信息

否则,则显示最后一个磁盘上的空间使用信息

13 echo "device  checking"

14 sleep 1

15 lsblk

16

17 num=$(lsblk |grep ‘^sd‘|wc  -l)

18 last=$(lsblk |grep ‘^sd‘|tail -1|cut -d‘ ‘  -f1)

19

20 if [ $num = 1 ]; then

21          echo "There have just one device"

22          sleep 1

23          df -h | grep $last

24          exit 5

25 else

26          echo "There have $num device,the last one is: $last  "

27          sleep 1

28          df -h |grep $last

29          exit 10

30 fi

31

3、将CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.8-x86_64-Everything.iso文件,

并将其配置为yum源

cp /mnt/cd1   /data/centos6

cp /mnt/cd2   /data/centos6

mkisofs -r -o  CentOS-6.8-x86_64-bin-DVD2.iso  /centos6

RAID:

什么是RAID

RAID,Redundant Arrays of Inexpensive(Independent)  Disks

1988年由加利福利亚大学伯克利分校

多个磁盘合成一个阵列来提供更好的性能,冗余,或者两者都提供

提高IO能力:

磁盘并行读写

提高耐用性:

磁盘冗余来实现

级别:

多块磁盘组织在一起的工作方式有所不同

RAID实现的方式:

外接式磁盘阵列:       通过扩展卡提供适配能力

内接式RAID:             主板集成RAID控制器

安装OS前在bios里配置

软件RAID:                通过OS实现

RAID级别:

RAID-0   条带卷,strip

读、写性能提升

可用空间N*min

无容错能力

最少磁盘数2,2+

RAID-1   镜像卷,mirror

读性能提升,写性能略有下降

可用空间1*min

有冗余能力

最少磁盘数2,2N

RAID-2,3

RAID-4    多块数据盘异或运算值存于专用校验盘

读写提升,有容错

校验盘压力大容易坏

RAID-5

4的改进型,所有轮流充当校验盘

读,写性能提升

可用空间(N-1)*min

有容错能力:允许最多1块磁盘损坏

最少磁盘数3,3+

RAID-6

有2块校验盘

读写性能提升

可用空间:(N-2)*min

有容错能力:允许最多2块磁盘损坏

最少磁盘数:4,4+

RAID-10

多块磁盘先两两组成RAID-1,在组成RAID-0

读、写性能提升

可用空间:N*min/2

有容错能力:每组镜像最多只能坏一块

最少磁盘数:4,4+

RAID-01

多块磁盘先分成两组做RAID-0,再组成RADI-1

读,写性能提升

可用空间:N*min/2

容错,RAID1的两边不能同时坏硬盘

最少磁盘数4,4+

RAID-50

多块磁盘先实现RAID5,再组合成RAID-0

比RAID-10读写提升大,每组raid5里 最多允许坏一块硬盘

JBOD:

just a Bunch of  disks

功能:将多块磁盘的空间合并一个大的连续空间使用

可用空间 sum

不能容错

RAID-7

可以理解为一个独立存储计算机,自身带有操作系统和管理工具,

可以独立运行,理论上性能最高的RAID模式

常用级别:

RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD

软RAID:

mdadm:  为软RAID提供管理界面

为空余磁盘添加冗余

结合内核中的md(multi  devices)

RAID设备可命令为/dev/md0,/dev/md1...

mdadm:

语法格式:

mdadm [mode] <raiddevice> [options]  <component-devices>

支持的RAID级别:LINEAR,0,1,4,5,6,10

mode 模式:

创建       -C

装配       -A

监控       -F

管理       -f -r  -a

<raiddevice>:                     rainname  /dev/md#

<component-devices> :      任意块设备,磁盘,分区等

-C          创建模式

-n#               使用#个块设备来创建此RAID

-l#                 指明要创建的RAID的级别

-a{yes|no}      自动创建目标RAID设备的设备文件

-c    chunk-size     指明块大小,单位K

-x    指明空闲盘的个数

-D          显示raid的详细信息

mdadm -D  /dev/md*

管理模式:

-f           标记指定磁盘为损坏

-a           添加磁盘

-r          移除磁盘

观察md的状态:

cat /proc/mdstat

使用mdadm创建并定义RAID设备

mdadm -C /dev/md0 -a yes -l  5 -n 3 -x 1 /dev/sdb{1,2,3,5}

用文件系统对RAID设备进行格式化

mkfs.ext4  /dev/md0

测试RAID设备

mdadm -D|--detail  /dev/md0

增加新的成员

mdadm -G /dev/md0 -a  /dev/sdb1

模拟磁盘故障

mdadm /dev/md0 -f  /dev/sdb1

移除磁盘

mdadm /dev/md0 -r  /dev/sdb1

软RAID管理

mdadm -D -s >> /etc/mdadm.conf

生成配置文件

mdadm -S /dev/md0

停止设备

mdadm -A -s /dev/md0

激活设备,如果没有生成配置文件,停止之后会无法激活

mdadm -R /dev/md0

强制启动

mdadm --zero-superblock /dev/sdb1

删除磁盘的raid信息

PS:

RAID-0 不支持空闲盘

raid5,格式化raid,或者空闲盘顶替之后,会有一段时间的 clean, degraded, recovering 时间,

有一个盘显示 spare rebuilding 的状态

使用-n4 -a 添加磁盘 会添加成raid盘,无法添加成空闲盘

练习:?

1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,

开机可自动挂载至/backup目录

?                 fdisk 分出3个1G分区/dev/sdc{1,2,3}     类型fd

mdadm -C /dev/md0 -a yes  -l1 -n2 -x1 /dev/sdc{1,2,3}

mkfs.ext4  /dev/md0

mdadm -D -s >>  /etc/mdadm.conf

blkid

echo "UUID=‘‘\t  /backup\text4\tdefaults\t0\t0" >>/etc/fstab

mkdir  /dev/md0

mount  -a

2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为

256k,文件系统为ext4,开机可自动挂载至/mydata目录

fdisk 分出4个1G分区  /dev/sdb{1,2,3,4} 类型fd

mdadm -C /dev/md1 -a yes  -l5 -n3 -x1 -c 256 /dev/sdb{1,2,3,4}

mkfs.ext4  /dev/md1

mdadm -D -s >>  /etc/mdadm.conf

blkid

echo  "UUID=‘‘\t/madata\text4\tdefault\t 0\t0 "

mkdir  /mydata

mount  -a

LVM:逻辑卷管理器

允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小

允许在多个物理设备间重新组织文件系统

将设备指定为物理卷

用一个或者多个物理卷来创建一个娟阻

物理卷是用固定大小的物理区域(PE,Physical Extent)来定义的

在物理卷上创建的逻辑卷是由物理区域PE组成的

可在逻辑卷上创建文件系统

LVM:      Logical Volume  Manager, Version:2

dm:       device mapper :将一个或多个底层设备组织成一个逻辑设备的模块

设备名:/dev/dm-#

软链接:

/dev/mapper/VG-LV_NAME

/dev/mapper/vol0-root

/dev/VG_NAME/LV_NAME

/dev/vol0/root

LVM可以弹性的更改LVM的容量

通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV

的容量,或将其他设备中的PE加到LV中以加大容量

pv管理工具

pv

pvs                             简要pv信息显示

pvdisplay                            详细pv信息显示

pvcreate /dev/device    创建pv

pvmove                              转移pv上的内容到其他pv

pvmove  /dev/sd*

pvremove                           删除pv,

需要先执行    vgreduce /dev/vg  /dev/sd*

pvremove /dev/sd*

VG管理工具

vg

vgs                       显示卷组

vgdisplay              显示vg详细信息

vgcreate        创建卷组

-s    指定PE大小

vgreduce       卷组减容

vgreduce /dev/vg  /dev/sd*

vgextend       卷组扩容

vgextend /dev/vg  /dev/sd*

vgremove             卷组删除

vgchange             修改卷组属性,便于迁移

-a n 迁出

-a y 迁入

vgexport        输出卷组,便于迁移

vgimport       输入卷组

vgrename      vg改名

vgrename /dev/vg  name

lv管理工具

lv

lvcreate          创建逻辑卷lv

-L #        size,直接指定大小M/G

-l #,%{FREE|PVS|VG} PE数量,%FREE %VG  表示空闲百分比%和总百分比%

-n name        指定lv名

lvs                        查看lv

lvdisplay        查看lv详细信息

lvremove       删除lv

lvrename       lv改名

lvrename /dev/vg/lv  name

lvconvert       恢复逻辑卷快照

--merge

lvextend

-L [+]size      扩展、扩展到size

-l [+]num  50%FREE/VG 扩展、扩展到num个PE大小

lvreduce               lv减容

-L  [-]size

-l [-]num       50%FREE/VG

pv删除:

pvmove  /dev/sdb1

vgreduce /dev/vg1  /dev/sdb1

pvremore  /dev/sdb1

lv扩容:

lvextend  -L +5G /dev/vg/lv      扩展逻辑卷

resize2fs /dev/vg/lv            扩展文件系统

lvresize    lvresize -r -l +100%FREE /dev/vg1/lv1    此命令会将文件系统和lv一起扩展

lv减容:

umount /dev/vg/lv                            取消挂载

e2fsck            e2fsck -f /dev/vg/lv                    强制检查

resize2fs resize2fs /dev/vg/lv  5G           缩减文件系统 centos6

xfs_growfs                                                               centos7

lvreduce -L 5G  /dev/vg/lv

PS:   lv缩减或者删除必须取消挂载

lv扩展之后需要扩展文件系统

lv缩减之前需缩减文件系统

跨主机迁移卷组

源计算机上:

1.     umount所有卷组上的逻辑卷

2.     vgchange -a n vg

lvdisplay

3.     vgexport vg

pvscan    查看pv使用情况

vgdisplay

拆下硬盘

目标计算机上:

4.     安装硬盘,并 vgimport  vg

5.     vgchange -ay vg

6.     mount所有卷组上的逻辑卷

逻辑卷管理器快照:

快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝

对于需要备份或者复制的现有数据临时拷贝以及其他操作做来说,快照

是最合适的选择

快照只有在它们和原来的逻辑卷不同时才会消耗空间

在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者

快照有所改变的时候才会使用这些空间

当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中

快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中

更改的数据

建立快照的卷大小只需要原始逻辑卷的15%-20%就够了,也可以使用

lvextend放大快照

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据

改动了,则原始数据会被移动到快照区,没有改动的区域择优快照区的文件

系统共享

由于快照区与原来的LV公用很多PE的区块,因此快照与被快照的LV必须在同一个

VG中,系统恢复的时候的文件数量不能高于快照区的实际容量

使用LVM快照:

为现有的逻辑卷创建快照:

lvcreate -l 64 -s -n  data-snapshot -p r /dev/vg/lv

-s|--snapshot                    指明快照lv

-p|--permission  {r|rw}  指明权限,是读写还是只读

挂载快照:

mkdir -p  /mnt/snap

mount -o ro  /dev/vg/data-snapshot /mnt/snap

恢复快照:

umount  /dev/vg/data-snapshot

umount  /dev/vg/data

lvconvert --merge  /dev/vg/snapshot

删除快照:

umount  /mnt/snap

lvremove  /dev/vg/data-snapshot

    

原文地址:https://www.cnblogs.com/dengkui/p/10963008.html

时间: 2024-10-08 08:14:28

Linux磁盘存储和文件系统的相关文章

Linux篇 | 磁盘存储和文件系统

磁盘存储和文件系统 分区 文件系统 挂载设备 管理虚拟内存 RAID管理 LVM管理 我们从一个新硬盘安装到Linux系统,期间的配置,一直到正常使用的角度,来学习磁盘存储和文件系统,过程如下: 选择分区类型(MBR或GPT)-->创建分区-->同步分区-->创建文件系统-->文件系统检测和修复-->挂载-->虚拟内存的使用-->RAID的使用-->LVM的管理 一.分区 1.为什么分区 优化I/O性能 实现磁盘空间配额限制 提高修复速度 隔离系统和程序 安

linux文本处理sed、软件包管理、磁盘存储和文件系统

linux文本处理sed.软件包管理.磁盘存储和文件系统 1.取基名和文件名 [[email protected] scripts38]#echo /etc/sysconfig/network-scripts/ |sed -r '[email protected](^/.*/)([^/]+)/[email protected]\[email protected]' /etc/sysconfig/ [[email protected] scripts38]#echo /etc/sysconfig/

linux文本处理sed、软件包管理、磁盘存储、文件系统和挂载

Linux文本处理工具sed.软件包管理.磁盘存储及文件系统 文本处理工具sed巧妙用法 1.通过sed获取文件路径的基名和目录名 思路:采用正则表达式将文本字符串分组,取对应的分组后向引用即可. 获取基名 [[email protected] ~]#echo /etc/sysconfig/network-scripts/ |sed -r '[email protected](^/.*/)([^/]+)/[email protected]\[email protected]' network-s

Linux九阴真经之无影剑残卷(磁盘存储和文件系统)

一.磁盘简介 计算机的外部存储器中也采用了类似磁带的装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失. 1.硬盘的chs模式 是指chs(Cylinder/Head/Sector)模式,很久以前,硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘.也就是硬盘盘片的每一条磁道都具有相同扇区数. 由此产生了所谓的3D参数 (Disk Geometry). 既磁头数(Heads),柱面数(Cylinders), 扇区数(Sec

第11章,磁盘存储和文件系统学习笔记

更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 笔记整理开始时间:2018年4月24日11:25:33 第11章,磁盘存储和文件系统 本章内容: 磁盘结构 分区类型 管理分区 管理文件系统 挂载设备 管理虚拟内存 RAID管理 LVM管理 LVM快照 设备文件: 磁盘设备的设备文件命名:/dev/dev-file SCSI,SATA,SAS,IDE,USB:   

磁盘存储、文件系统的知识概括

磁盘存储与文件系统 分区 两种分区格式:MBR.GPT MBR分区 MBR分区磁盘的分区表信息存放在硬盘0磁道第0个扇区内总共512字节 前446字节为bootloader 中间64位为磁盘分区表信息,每个分区信息占16个字节,总计存放4个分区.(这段就是需要备份出来的数据) 最后的55AA为结束标志位 MBR分区结构 硬盘主引导记录MBR由4个部分组成 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序 出错信息数据区,偏移地址0089H--00E1H为

磁盘存储和文件系统 概述

磁盘存储和文件系统 概述 设备文件 磁盘设备的设备文件命名: /dev/DEV_FILE SCSI,SAS,IDE,USB:/dev/sd 虚拟磁盘:/dev/vd./dev/xvd 硬盘存储术语:head 磁头 .track 磁道.cylinder 柱面.sector 扇区,512bytes CHS 和 LBA CHS 采用24bit位寻址 其中前十位表示cylinder,中间8位表示head,后面6位表示sector 最大寻址空间8GLBA LBA是一个整数,通过转换化成chs格式完成磁盘具

Linux磁盘及文件系统(三)Linux文件系统

一.文件系统的组成 Linux常见的文件系统类型有ReiserFS,ext2,ext3,ext4,vfat,XFS等,文件系统是对一个存储设备上数据和元数据进行组织的机制.他的最终目的是把大量数据有组织的放入持久性的存储设备中,比如硬盘和磁盘.文件系统就是文件在逻辑上组织形式,他以一种更加清晰的方式来存放各个文件.数据被存放到某个分区中.一个典型的Linux分区包含有以下各个部分: boot block:任何分区的第一个块,存放系统的引导程序. super block(超级块):保存整个分区的全

Linux的Ext2文件系统(Inode&Block)详解

前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题.在Linux里面文件是由两部分数据组成,一部分是metadata,另一部分是data.那么这些数据都存放在文件系统的什么地方呢?这就让我们必须得了解文件系统的Inode与Block的基本原理了,而Linux最传统的磁盘文件系统使用的是Ext2,所以我们了解下它的内部原理. 第一部分:磁盘的组成和分区(基础) 磁盘的机械部分: 1.圆形