文件系统挂载、ext文件系统及read命令、Linux RAID、lvm应用

文件系统管理:
将额外文件系统与根文件系统某现存的目录建立起关系,进而使得此目录作为其他文件访问入口的行为称之为挂载

解除此关联关系的过程称之为卸载

把设备关联至挂载点:mount_point

卸载时:可使用设备,也可以使用挂载点
umount /dev/device
umount mount_point

注意:挂载点下原有文件在挂载/卸载完成后会被临时隐藏

挂载方法:mount device mount_point

mount 通过查看/etc/mtab文件显示当前系统已挂载的所有设备
[[email protected] ~]# mount
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

[[email protected] ~]# cat /etc/mtab
/dev/mapper/VolGroup-lv_root / ext4 rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs rw,rootcontext="system_u:object_r:tmpfs_t:s0" 0 0
/dev/sda1 /boot ext4 rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0

mount [-fnrsvw] [-t vfstype] [-o options] device dir
device 指明要挂载的设备
1、设备文件,例如 /dev/sda5
[[email protected] ~]# mount /dev/sdb1 /mydata1

2、卷标 -L ‘LABEL’ 例如 -L ‘mydata‘
[[email protected] ~]# mount -L ‘mydata1‘ /mydata1

3、UUID -U ‘UUID’ 例如 -U ‘1cd75ebd-c3d8-4a0b-941b-43d520d4d71b’
[[email protected] ~]# mount -U ‘1cd75ebd-c3d8-4a0b-941b-43d520d4d71b‘ /mydata1

4、伪文件系统 proc sysfs devtmpfs configfs

dir 挂载点
事先存在,建议使用空目录
进程正在使用中的设备无法被卸载
[[email protected] mydata1]# pwd
/mydata1
[[email protected] mydata1]# umount /mydata1
umount: /mydata1: device is busy.
                (In some cases useful info about processes that use
                 the device is found by lsof(8) or fuser(1))

常用选项:
-t vfstype 指定要挂载的设备上的文件系统类型
[[email protected] ~]# mount -t ext4 /dev/sdb1 /mydata1

-r readonly 只读挂载
[[email protected] ~]# mount -r /dev/sdb1 /mydata1

-w read and write 读写挂载
[[email protected] ~]# mount -w /dev/sdb1 /mydata1

-a 自动挂载所有支持自动挂载的设备(定义在/etc/fstab文件中,且挂载选项中有"自动挂载"功能)
[[email protected] ~]# mount -a /dev/sdb1 /mydata1
[[email protected] ~]# cat /etc/mtab | grep "mydata1"
/dev/sdb1 /mydata1 ext4 rw 0 0
[[email protected] ~]# cat /proc/mounts | grep "mydata1"
/dev/sdb1 /mydata1 ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0
[[email protected] ~]# cat /etc/fstab | grep "mydata1"

-n 不更新/etc/mtab
[[email protected] ~]# mount -n /dev/sdb1 /mydata1
[[email protected] ~]# cat /etc/mtab | grep "mydata1"

-L ‘LABEL‘ 以卷标指定挂载设备
[[email protected] ~]# mount -L ‘mydata1‘ /mydata1

-U ‘UUID’ 以uuid指定要挂载的设备
[[email protected] ~]# mount -U ‘1cd75ebd-c3d8-4a0b-941b-43d520d4d71b‘ /mydata1

-B --bind 绑定目录到另一个目录上,在挂载点目录上操作文件,该操作会同步到被被绑定的目录上
[[email protected] ~]# mount /dev/sdb1 /mydata1
[[email protected] ~]# mount -B /mydata11 /mydata1

[[email protected] ~]# mkdir /mydata1/abc
[[email protected] ~]# touch /mydata1/123
[[email protected] ~]# ll /mydata1 /mydata11
/mydata1:
total 4
-rw-r--r--. 1 root root    0 May 21 11:21 123
drwxr-xr-x. 2 root root 4096 May 21 11:20 abc

/mydata11:
total 4
-rw-r--r--. 1 root root    0 May 21 11:21 123
drwxr-xr-x. 2 root root 4096 May 21 11:20 abc

注意:查看内核追踪到的已挂载的所有设备 cat /proc/mounts
[[email protected] ~]# cat /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,relatime,size=233488k,nr_inodes=58372,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,seclabel,relatime 0 0
/dev/mapper/VolGroup-lv_root / ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0
none /selinux selinuxfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,relatime,size=233488k,nr_inodes=58372,mode=755 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sda1 /boot ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
/dev/sdb1 /mydata1 ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0
/dev/mapper/VolGroup-lv_root /mydata1 ext4 rw,seclabel,relatime,barrier=1,data=ordered 0 0

-o options (挂载文件系统的选项)
async 异步模式
[[email protected] ~]# mount -o async /dev/sdb1 /mydata1

sync 同步模式
[[email protected] ~]# mount -o sync /dev/sdb1 /mydata1

atime/noatime 是否更新访问时间戳,包含目录和文件
[[email protected] ~]# mount -o atime /dev/sdb1 /mydata1
[[email protected] ~]# mount -o noatime /dev/sdb1 /mydata1

diratime/nodiratime 是否更新访问时间戳,目录的访问时间戳
[[email protected] ~]# mount -o diratime /dev/sdb1 /mydata1
[[email protected] ~]# mount -o nodiratime /dev/sdb1 /mydata1

auto/noauto 是否支持自动挂载
[[email protected] ~]# mount -o auto /dev/sdb1 /mydata1
[[email protected] ~]# mount -o noauto /dev/sdb1 /mydata1

exec/noexec 是否支持将文件系统上应用程序运行为进程
[[email protected] ~]# mount -o exec /dev/sdb1 /mydata1
[[email protected] ~]# mount -o noexec /dev/sdb1 /mydata1

dev/nodev 是否支持在此文件系统上使用设备文件
[[email protected] ~]# mount -o dev /dev/sdb1 /mydata1
[[email protected] ~]# mount -o nodev /dev/sdb1 /mydata1

suid/nosuid 是否支持在此文件系统上设置suid权限
[[email protected] ~]# mount -o suid /dev/sdb1 /mydata1
[[email protected] ~]# mount -o nosuid /dev/sdb1 /mydata1

remount 重新挂载
[[email protected] ~]# mount /dev/sdb1 /mydata1
[[email protected] ~]# mount -o remount /dev/sdb1 /mydata1

ro 只读挂载
[[email protected] ~]# mount -o ro /dev/sdb1 /mydata1

rw 读写挂载
[[email protected] ~]# mount -o rw /dev/sdb1 /mydata1

user/nouser 是否允许普通用户挂载此设备
[[email protected] ~]# mount -o user /dev/sdb1 /mydata1
[[email protected] ~]# mount -o nouser /dev/sdb1 /mydata1

acl 启用此文件系统的acl功能,访问控制列表
[[email protected] ~]# mount -o acl /dev/sdb1 /mydata1

注意 上述选项可多个同时使用,彼此使用逗号分隔
默认挂载选项 defaults(包含 rw suid dev exec auto nouser sync)
[[email protected] ~]# mount -o defaults /dev/sdb1 /mydata1
[[email protected] ~]# mount -o rw,suid,dev,exec,auto,nouser,sync /dev/sdb1 /mydata1

卸载命令
umount device
umount mount_point
[[email protected] ~]# umount /dev/sdb1
[[email protected] ~]# umount /mydata1

查看正在访问指定文件系统的进程
fuser -v mount_point
[[email protected] mydata1]# fuser -v /mydata1
                                         USER        PID ACCESS COMMAND
/mydata1:            root       1132 ..c.. bash

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

挂载交换分区
启用 swapon
swapon [option]... [device]
-a 激活所有的交换分区
-p priority 指定优先级
[[email protected] ~]# swapon -a
[[email protected] ~]# swapon -p 1 /dev/sdb1

禁用 swapoff [option]... [device]
[[email protected] ~]# swapoff /dev/sdb1

内存空间使用状态
free [option]
-m 以mb为单位
-g 以gb为单位 不满1G 则显示为0

    [[email protected] ~]# free -m
                             total       used       free     shared    buffers     cached
    Mem:           474        139        335          0          9         38
    -/+ buffers/cache:         90        383
    Swap:          959          0        959

    [[email protected] ~]# free -g
                             total       used       free     shared    buffers     cached
    Mem:             0          0          0          0          0          0
    -/+ buffers/cache:          0          0
    Swap:            0          0          0

文件系统空间占用等信息的查看工具
    df [option]... [device]
    -h human-readable 以人类易读的格式输出
    -i inode instead of blocks 输出inode的使用情况
    -P 以posix兼容的格式输出
    [[email protected] ~]# df -h
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root   19G  765M   17G   5% /
    tmpfs                         238M     0  238M   0% /dev/shm
    /dev/sda1                     485M   33M  427M   8% /boot

    [[email protected] ~]# df -h /dev/sda1
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda1       485M   33M  427M   8% /boot

    [[email protected] ~]# df -i
    Filesystem                    Inodes IUsed   IFree IUse% Mounted on
    /dev/mapper/VolGroup-lv_root 1218224 18620 1199604    2% /
    tmpfs                          60785     1   60784    1% /dev/shm
    /dev/sda1                     128016    38  127978    1% /boot

    [[email protected] ~]# df -P
    Filesystem                   1024-blocks   Used Available Capacity Mounted on
    /dev/mapper/VolGroup-lv_root    19166504 783284  17409604       5% /
    tmpfs                             243140      0    243140       0% /dev/shm
    /dev/sda1                         495844  33451    436793       8% /boot

查看某目录总体空间占用状态
du
du [option]... dir
-h human-readable 以人类易读的格式输出
-s summary 输出总体情况

[[email protected] ~]# du -h /boot
13K /boot/lost+found
276K    /boot/grub
251K    /boot/efi/EFI/redhat
253K    /boot/efi/EFI
255K    /boot/efi
23M /boot

[[email protected] ~]# du -sh /boot
23M /boot

文件挂载的配置文件 /etc/fstab
每一行定义一个要挂载的文件系统

/etc/fstab 定义每个字段的意义
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序

要挂载的设备或伪文件系统
设备文件 label(label=‘‘) uuid(uuid=‘‘) 伪文件系统(proc sysfs)

挂载点
事先存在的目录,最好为空目录

文件系统
ext2、ext3、ext4、btrfs、xfs

挂载选项
defaults(nouser sync suid rw dev exec auto)

转储频率(备份频率)
0 不做备份
1 每天转储
2 每隔一天转储

自检次序
0 不自检
1 首先自检 一般只有rootfs才用1
...

文件系统上的其他概念
inode: index node 索引节点
地址指针(直接指针 间接指针 三级指针)

inode bitmap (索引节点位图) 对位标识每个inode空闲与否的状态信息

链接文件
硬链接
不能够对目录进行
不能够跨分区进行
指向同一个inode的多个不同路径,创建文件的硬链接即为inode创建新的引用路径,因此会增加其引用计数

符号链接(软链接)
可以对目录进行
可以跨分区进行
指向的是另一个文件的路径,其大小为指向的路径字符串的长度,不增加或减少目标文件inode的引用计数

ln [-sv] src dest 创建硬链接,默认不用带选项
-s symboic link
-v verbose

[[email protected] ~]# ln -v fstab fstab.hl
`fstab.hl‘ => `fstab‘
[[email protected] ~]# ll fstab*
-rw-r--r--. 2 root root 779 May 21 15:48 fstab
-rw-r--r--. 2 root root 779 May 21 15:48 fstab.hl

[[email protected] ~]# ln -sv fstab fstab.sl
`fstab.sl‘ -> `fstab‘
[[email protected] ~]# ll fstab*
-rw-r--r--. 2 root root 779 May 21 15:48 fstab
lrwxrwxrwx. 1 root root   5 May 21 15:49 fstab.sl -> fstab

练习:
1、创建一个20G的文件系统,块大小为2048,文件系统为ext4,卷标为test,要求此分区开机后自动挂载至/testing    目录,且默认有acl挂载选项
mkfs -b 2048 -t ext4 -L ‘test‘ /dev/sdb1
mount -o acl /dev/sdb1 /testing
[[email protected] ~]# grep "testing" /etc/fstab
/dev/sdb1       /testing        ext4    acl     0 0

2、创建一个5G的文件系统,卷标为huge,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext3
mkfs -L ‘huge‘ -t ext3 /dev/sdb1
mount /dev/sdb1 /mogdata
[[email protected] ~]# grep "mogdata" /etc/fstab
/dev/sdb1       /mogdata        ext3    defaults    0 0

3、写一个脚本,完成如下功能
    列出当前系统识别到的所有磁盘设备
    如果磁盘数量为1,则显示其空间使用信息,否则,则显示最后一个磁盘上的空间使用信息
    [[email protected] ~]# cat /tmp/disk.sh

#!/bin/bash

fdisk -l

disknum=fdisk -l | grep "^Disk /dev" | wc -l

if [ $disknum -eq 1 ];then
diskfile1=fdisk -l | grep "^Disk /dev" | cut -d‘ ‘ -f2 | grep -o "^/dev\(/[[:alpha:]]\).*\>"
df -h $diskfile1
else
fdisk -l | grep "^Disk /dev" | cut -d‘ ‘ -f2 | grep -o "^/dev(/[[:alpha:]]).*\>" > /tmp/disk.txt
diskfile2=tail -1 /tmp/disk.txt
df -h $diskfile2
fi

bash脚本编程之用户交互
read [option]... [name...] 用作传递变量
-p ‘prompt‘ 提示信息
-t timeout 超时时间

    [[email protected] ~]# read name
    tom
    [[email protected] ~]# echo $name
    tom

    [[email protected] ~]# read a b c
    1 2 3
    [[email protected] ~]# echo $a $b $c
    1 2 3

    [[email protected] ~]# read a b c
    how are you?
    [[email protected] ~]# echo $a
    how
    [[email protected] ~]# echo $b
    are
    [[email protected] ~]# echo $c
    you?

    没有给出足够的字段,则靠后的变量为空
    [[email protected] ~]# read a b c
    how are
    [[email protected] ~]# echo $a
    how
    [[email protected] ~]# echo $b
    are
    [[email protected] ~]# echo $c

    如果字段数大于变量数,则多余的字段赋值给最后一个变量
    [[email protected] ~]# read a b c
    how old are you?
    [[email protected] ~]# echo $a
    how
    [[email protected] ~]# echo $b
    old
    [[email protected] ~]# echo $c
    are you?

    -p 选项为输出提示信息
    [[email protected] ~]# read -p "enter a username:" username
    enter a username:tom
    [[email protected] ~]# echo $username
    tom

    -t 选项为提示超时时间,在超时时间内没有输出,变量则为空
    [[email protected] ~]# read -t 5 -p "enter a username:" username
    enter a username:[[email protected] ~]#
    [[email protected] ~]# echo $username

    [[email protected] ~]# read -t 5 -p "enter a username:" username
    enter a username:allen
    [[email protected] ~]# echo $username
    allen

    bash -n /path/to/some_script
        检测脚本中的语法错误

    bash -x /path/to/some_script
        调试执行 逐步执行

脚本示例
#!/bin/bash
#version
#author
#description

read -p "enter a disk special file:" diskfile
[ -z $diskfile ] && echo "fool" && exit 1

if fdisk -l | grep "^Disk $diskfile" &> /dev/null;then
fdisk -l $diskfile
else
echo "wrong disk special file."
exit 2
fi

raid
redundant arrays of indxpensive disks 廉价冗余磁盘阵列
redundant arrays of independent disks 独立冗余磁盘阵列

作用:提高IO能力(磁盘并行读写)、提高耐用性(磁盘冗余)

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

raid实现的方式
外接式磁盘阵列,通过扩展卡提供适配能力
内接式raid 主板集成raid控制器
software raid 软件方式实现

raid级别表示磁盘的不同组合方式,用数字表示,如下
raid 0 (条带卷 strip)
raid 1 (镜像卷 mirror)
raid 2
...
raid 5
raid 6
raid 10
raid 01

以下是各raid级别的特性
raid 0
连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的raid结构。raid 0知识单纯第提高性能,并没有为数据的可靠性提供保证,而且其中的一次盘失效将影响到所有数据。因此,raid 0不能应用于数据安全性要求高的场合。
读写性能提升
可用空间 n*min(s1,s2...) 取决于容量最小的磁盘,还有磁盘数量
无容错能力
最少磁盘数 2,2+ (2块及2块以上)

raid 1
它是通过磁盘数据镜像实现数据冗余,在成对的对立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此raid 1可以提高读取性能。raid 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
读性能提升,写性能略有下降
可用空间1*min(s1,s2...) 取决于容量最小的磁盘
有冗余能力
最少磁盘数 2,2+ (2块及2块以上)

raid 4
raid 4同样也将数据条带化并分布于不同的磁盘上,但条带单位为块或记录。raid 4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,这时奇偶校验盘会成为写操作的瓶颈,因此raid 4在商业环境中也很少使用。
两块数据盘 一块校验盘(基于或运算)
至少磁盘数 3,3+(3块及3块以上)

raid 5
raid 5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在raid 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。raid 5 更适合于小数据和随机读写的数据。
读写性能提升
可用空间 (n-1)*min(s1,s2,...) 取决于容量最小的磁盘,还有磁盘的数量
有容错能力,在组合3块硬盘的情况下,仅可坏1块磁盘
最少磁盘数 3,3+ (3块及3块以上)

raid 6
与raid 5相比,raid 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但raid 6需要分配给奇偶校验信息更大的磁盘空间。
读写性能提升
可用空间(n-2)*min(s1,s2,...) 取决于容量最小的磁盘,还有磁盘的数量
有容错能力,在组合4块硬盘的情况下,仅可坏2块磁盘
最小磁盘数 4,4+ (4块及4块以上)

混合类型
raid 10
raid 10其实结构非常简单,首先创建2个独立的raid 1,然后将这两个独立的raid 1组成一个raid 0,当往这个逻辑raid 0中写数据时,数据被有序的写入两个raid 1中。磁盘1和磁盘2组成一个raid 1,磁盘3和磁盘4又组成另外一个raid 1,这两个raid 1 组成了一个新的raid 0。如写在硬盘1上的数据1,3,5,7,写在硬盘2中则为数据1,3,5,7,硬盘3中的数据为0,2,4,6,硬盘4中的数据则为0,2,4,6,因此数据在这四个硬盘上组合成raid 10,且具有raid 0和raid 1 两者的特性。

raid 10以raid 0为执行阵列,以raid 1为数据保护阵列,它具有与raid 1一样的容错能力,用于容错处理的系统开销与单独的镜像操作基本一样,由于使用raid 0作为执行等级,因此具有较高的I/O宽带,对于那些想在raid 1基础上大幅提高性能的用户,它是一个完美的解决方案。raid 10适用于数据库存储服务器等需要高性能,高容错但对容量要求不大的场合。
读写性能提升
可用空间 n*min(s1,s2,...)/2 取决于容量最小的磁盘,还有磁盘数量
有容错能力,每组镜像最多只能坏1块
最少磁盘数 4,4+ (4块及4块以上 必须是偶数块)

raid 01、raid 50 raid 7

JBOD just a bunch of disks
功能:将多块磁盘的空间合并一个大的连续空间使用

常用级别:raid 0 raid 1 raid 5 raid 10 raid 50 jbod

实现方式:
硬件实现方式
软件实现方式

centos 6的软件raid的实现
结合内核中的md(multi devices) 多磁盘 多设备

mdadm 模式化的工具
命令的语法格式 mdadm [mode] <raiddevice> [options] <component-devices>
支持的raid级别 LINEAR raid 0 raid 1 raid 4 raid 5 raid 6 raid 10

模式:
创建 -C
装配 -A
监控 -F
管理 -f -r -a

<raiddevice> /dev/md#
<component-devices> 任意块设备 任意磁盘分区

-C 创建模式
-n # 使用#个块设备来创建此raid
-l # 指明要创建的raid 级别
-a {yes|no} 自动创建目标raid设备的设备文件
-c chunk_size 指明块大小
-x # 指明空闲盘的个数

[[email protected] ~]# mdadm -C /dev/md0 -n 3 -l 5 -a yes -c 512 -x 1 /dev/sdb{1,2,3,5}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

例如 创建一个10G可用的raid 5

-D 显示raid的详细信息
mdadm -D /dev/md#

[[email protected] ~]# mdadm -D /dev/md0
/dev/md0:
                Version : 1.2
    Creation Time : Mon May 28 15:54:18 2018
         Raid Level : raid5
         Array Size : 10401792 (9.92 GiB 10.65 GB)
    Used Dev Size : 5200896 (4.96 GiB 5.33 GB)
     Raid Devices : 3
    Total Devices : 4
        Persistence : Superblock is persistent

        Update Time : Mon May 28 15:55:13 2018
                    State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
    Spare Devices : 1

                 Layout : left-symmetric
         Chunk Size : 512K

                     Name : localhost.localdomain:0  (local to host localhost.localdomain)
                     UUID : f5ecea12:b78a3317:92082083:095814f7
                 Events : 18

        Number   Major   Minor   RaidDevice State
             0       8       17        0      active sync   /dev/sdb1
             1       8       18        1      active sync   /dev/sdb2
             4       8       19        2      active sync   /dev/sdb3

             3       8       21        -      spare   /dev/sdb5

管理模式:
-f 标记指定磁盘为损坏
[[email protected] ~]# mdadm /dev/md0 -f /dev/sdb5
mdadm: set /dev/sdb5 faulty in /dev/md0

-r 移除磁盘
[[email protected] ~]# mdadm /dev/md0 -r /dev/sdb5
mdadm: hot removed /dev/sdb5 from /dev/md0

-a 添加磁盘
[[email protected] ~]# mdadm /dev/md0 -a /dev/sdb5
mdadm: added /dev/sdb5

观察md的状态
cat /proc/mdstat
[[email protected] ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb53 sdb3[4] sdb2[1] sdb1[0]
10401792 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

watch命令:
-n# 刷新间隔 单位是秒
watch -n# ‘command’
[[email protected] ~]# watch -n1 ‘cat /proc/mdstat‘

练习1:创建一个可用空间为10G的raid 0设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录

[[email protected] ~]# mdadm -C /dev/md0 -n 2 -l 0 -a yes -c 128 /dev/sdb{1,2}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

[[email protected] ~]# mkfs -t ext4 /dev/md0

[[email protected] ~]# mount /dev/md0 /backup

[[email protected] ~]# grep "backup" /etc/fstab
UUID=0a7d0347-1b81-4bac-af2b-47a4b9748037 /backup ext4 defaults 0 0

练习2:创建一个可用空间为10G的raid 10设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录

[[email protected] ~]# mdadm -C /dev/md0 -n 4 -l 10 -a yes -c 256 /dev/sdb{1,2,3,5}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

[[email protected] ~]# mkfs -t ext4 /dev/md0

[[email protected] ~]# mount /dev/md0 /mydata

[[email protected] ~]# grep "mydata" /etc/fstab
UUID=17c2420f-9ea7-453c-bc7d-b0b87b363b18 /mydata ext4 defaults 0 0

lvm2
lvm logical volume manager version 2 逻辑卷管理器

内核模块 dm device mapper 将一个或多个底层块设备组织成一个逻辑设备的模块(/dev/dm-#)

/dev/mapper/vg_name-lv_name
/dev/mapper/myvg-mylv <-- /dev/vg_name/lv_name(/dev/myvg/mylv) 后者为链接文件

pv管理工具
pvs 简要pv信息显示
[[email protected] ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a--u 19.51g 0

pvdisplay 显示pv的详细信息
[[email protected] ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name VolGroup
PV Size 19.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4994
Free PE 0
Allocated PE 4994
PV UUID QcPKeC-S2FO-QMMn-ZaVT-aqAE-5BaG-zZH9IK

pvcreate /dev/device 创建pv
[[email protected] ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

vg管理工具
vgs 简要vg信息显示
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- 19.51g 0

vgdisplay 显示vg的详细信息
[[email protected] ~]# vgdisplay
--- Volume group ---
VG Name VolGroup
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.51 GiB
PE Size 4.00 MiB
Total PE 4994
Alloc PE / Size 4994 / 19.51 GiB
Free PE / Size 0 / 0
VG UUID WlXRlE-ytaQ-x8U0-zQcC-KnEz-VS6m-dfGE0s

vgcreate [-s #[kKmMgGtTpPeE]] 指定pe大小 volumegroupname physicaldevicepath [physicaldevicepath...] 创建vg
[[email protected] ~]# vgcreate myvg /dev/sdb1
Volume group "myvg" successfully created

[[email protected] ~]# vgcreate -s 8M mylv /dev/sdb1
Volume group "mylv" successfully created

vgextend volumegroupname physicaldevicepath [physicaldevicepath...] 扩展vg
[[email protected] ~]# vgextend myvg /dev/sdb2
Volume group "myvg" successfully extended

vgreduce volumegroupname physicaldevicepath [physicaldevicepath...] 缩减vg
先做pvmove
[[email protected] ~]# pvmove /dev/sdb2
No data to move for myvg
[[email protected] ~]# vgreduce myvg /dev/sdb2
Removed "/dev/sdb2" from volume group "myvg"

vgremove volumegroupname 删除vg
[[email protected] ~]# vgremove myvg
Volume group "myvg" successfully removed

lv管理工具
lvs 简要lv信息显示
[[email protected] ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root VolGroup -wi-ao---- 18.57g
lv_swap VolGroup -wi-ao---- 960.00m

lvdisplay 显示lv的详细信息
[[email protected] ~]# lvdisplay
--- Logical volume ---
LV Path /dev/VolGroup/lv_root
LV Name lv_root
VG Name VolGroup
LV UUID 0lIuzI-Yc6X-UCB1-Nv9B-LWv1-FrUE-uguRMA
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-05-26 23:27:17 +0800
LV Status available
#open 1
LV Size 18.57 GiB
Current LE 4754
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 256
    Block device 253:0

    --- Logical volume ---
    LV Path /dev/VolGroup/lv_swap
    LV Name lv_swap
    VG Name VolGroup
    LV UUID 5U3Eu5-OVRJ-b37u-pllp-SXYm-eaTP-vmosNB
    LV Write Access read/write
    LV Creation host, time localhost.localdomain, 2018-05-26 23:27:18 +0800
    LV Status available
    #open 1
    LV Size 960.00 MiB
    Current LE 240
    Segments 1
    Allocation inherit
    Read ahead sectors auto

  • currently set to 256
    Block device 253:1

lvcreate -L #[mMgGtT] -n name volumegroup 创建lv
[[email protected] ~]# lvcreate -L 5G -n mylv myvg
Logical volume "mylv" created.

lvremove /dev/vg_name/lv_name 删除lv
[[email protected] ~]# lvremove /dev/myvg/mylv
Do you really want to remove active logical volume mylv? [y/n]: y
Logical volume "mylv" successfully removed

扩展逻辑卷
lvextend -L [+]#[mMgGtT] /dev/vg_name/lv_name
resize2fs /dev/vg_name/lv_name
[[email protected] ~]# lvextend -L 10G /dev/myvg/mylv
Size of logical volume myvg/mylv changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents).
Logical volume mylv successfully resized.

[[email protected] ~]# resize2fs /dev/myvg/mylv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv is mounted on /backup; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv to 2621440 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 2621440 blocks long.

缩减逻辑卷
umount /dev/vg_name/lv_name
e2fsck -f /dev/vg_name/lv_name
resize2fs /dev/vg_name/lv_name #[mMgGtT]
lvreduce -L [-]#[mMgGtT] /dev/vg_name/lv_name
mount /dev/vg_name/lv_name

[[email protected] ~]# umount /dev/myvg/mylv
[[email protected] ~]# e2fsck -f /dev/myvg//mylv
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg//mylv: 14/655360 files (0.0% non-contiguous), 76786/2621440 blocks
[[email protected] ~]# resize2fs /dev/myvg/mylv 5G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv to 1310720 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 1310720 blocks long.
[[email protected] ~]# lvreduce -L 5G /dev/myvg/mylv
WARNING: Reducing active logical volume to 5.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
Size of logical volume myvg/mylv changed from 10.00 GiB (2560 extents) to 5.00 GiB (1280 extents).
Logical volume mylv successfully resized.
[[email protected] ~]# mount /dev/myvg/mylv /backup

快照:snapshot
lvcreate -L #[mMgGtT] -p(权限) r(只读) -s(快照) -n(名字) snapshot_lv_name original_lv_name
[[email protected] mydata]# lvcreate -L 1G -p r -s -n mylv-snap /dev/myvg/mylv
Logical volume "mylv-snap" created.

[[email protected] mydata]# mount /dev/myvg/mylv-snap /mydata
创建快照卷后,无须格式化,直接挂载

练习1:创建一个至少有两个pv组成的大小为20G的名为testvg的vg,要求pe大小为16mb,而后在卷组中创建大小为5g的逻辑卷testlv,挂载至/users目录;
[[email protected] ~]# pvcreate /dev/sdb{1,2}
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created

[[email protected] ~]# vgcreate -s 16m testvg /dev/sdb{1,2}
Volume group "testvg" successfully created

[[email protected] ~]# lvcreate -L 5g -n testlv testvg
Logical volume "testlv" created.

[[email protected] ~]# mke2fs /dev/testvg/testlv

[[email protected] ~]# mount /dev/testvg/testlv /users

练习2:新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制/etc/pam.d目录至自己的家目录;
[[email protected] ~]# useradd -d /users/archlinux archlinux

[[email protected] ~]# su - archlinux
[[email protected] ~]$ pwd
/users/archlinux

[[email protected] ~]$ cp -r /etc/pam.d /users/archlinux
[[email protected] ~]$ ll /users/archlinux
total 8
drwxr-xr-x. 2 archlinux archlinux 4096 May 29 17:12 pam.d

练习3:扩展testlv至7g,要求archlinux用户的文件不能丢失;
[[email protected] ~]# lvextend -L 7g /dev/testvg/testlv
Size of logical volume testvg/testlv changed from 5.00 GiB (320 extents) to 7.00 GiB (448 extents).
Logical volume testlv successfully resized.

[[email protected] ~]# resize2fs /dev/testvg/testlv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/testvg/testlv is mounted on /users; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/testvg/testlv to 1835008 (4k) blocks.
The filesystem on /dev/testvg/testlv is now 1835008 blocks long.

[[email protected] ~]# ll /users/archlinux/
total 4
drwxr-xr-x. 2 archlinux archlinux 4096 May 29 17:23 pam.d

练习4:收缩testlv至3g,要求archlinux用户的文件不能丢失;
[[email protected] ~]# umount /dev/testvg/testlv

[[email protected] ~]# e2fsck -f /dev/testvg/testlv

[[email protected] ~]# resize2fs /dev/testvg/testlv 3g

[[email protected] ~]# lvreduce -L 3g /dev/testvg/testlv

[[email protected] ~]# mount /dev/testvg/testlv /users

[[email protected] ~]# ll /users/archlinux
total 4
drwxr-xr-x. 2 archlinux archlinux 4096 May 29 17:23 pam.d

练习5:对testlv创建快照,并尝试基于快照备份数据,验证快照的功能;
[[email protected] ~]# lvcreate -L 1g -p rw -s -n testlv-snap /dev/testvg/testlv
Logical volume "testlv-snap" created.

[[email protected] ~]# mount /dev/testvg/testlv-snap /users-snap

[[email protected] ~]# ll /users-snap/
total 20
drwx------. 3 archlinux archlinux 4096 May 29 17:24 archlinux
drwx------. 2 root root 16384 May 29 17:21 lost+found

文件系统挂载使用
挂载光盘设备
光盘设备文件
ide /dev/hdc
sata /dev/sr0

符号链接文件
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw

mount -r /dev/cdrom /media
umount /dev/cdrom

dd命令 convert and copy a file
用法 dd if=/path/frome/src of=/path/to/dest
bs=# block size 复制单元大小
count=# 复制多少个bs

磁盘拷贝
dd if=/dev/sda of=/dev/sdb

备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

删除MBR
dd if=/dev/zero of=/dev/sda bs=512 count=1

两个特殊设备
/dev/null 数据黑洞
/dev/zero 吐零机

原文地址:http://blog.51cto.com/3832598/2121906

时间: 2024-10-09 21:51:02

文件系统挂载、ext文件系统及read命令、Linux RAID、lvm应用的相关文章

linux RAID,LVM

mdadm:用户空间管理工具,将任何块设备做成RAID 模式化命令 创建命令 -C 专用选项 -l:级别 -n #:设备个数 -a {yes|no}:是否自动为其创建设备文件 -c:CHUNK大小,2^n,默认为64K -x #:指定空闲盘个数 管理模式 -add,-remove,--fail mdadm /dev/md# --fail /dev/sda# 监控模式 -F 增长模式 -G 装备模式 -A 查看RAID阵列的详细信息 mdadm -D /dev/md# --detail 停止阵列

关于Linux磁盘分区,文件系统创建命令,文件系统挂载略提

Linux磁盘管理 (1) 创建磁盘分区 fdisk /dev/sda   子命令 :p 打印磁盘分区信息 d 删除分区 n 新建分区 w 保存并退出 t 修改分区ID l 列表所分区ID (2) 在新的分区上创建文件系统,用户空间的管理工具   mkfs.ext2 device mke2fs -t ext3 -b 1024 -m 3 -L '卷标' /dev/DEVICE     解释:-t 指明文件系统 -j = -t ext3   -b 说明块分区大小 -N 创建多少个 inode -m

linux磁盘分区格式化、挂载,文件系统

一.硬盘分区&格式化&挂载 RHEL5强制刷新分区表 partprobe /dev/sdb RHEL6强制刷新分区表 partx -a /dev/sdb 1.创建文件系统:挂载分区&格式化 mkfs.TAB 查看当前系统可创建分区类型 [[email protected] ~]# mkfs. mkfs.cramfs  mkfs.ext3    mkfs.vfat    mkfs.ext2    mkfs.msdos 格式化第一个分区   mkfs.ext3 /dev/sdb1 创建

Linux学习之CentOS(十二)----认识ext文件系统(转)

认识ext文件系统 硬盘组成与分割 文件系统特性 Linux 的 EXT2 文件系统(inode) 与目录树的关系 EXT2/EXT3 文件的存取与日志式文件系统的功能 Linux 文件系统的运行 挂载点的意义 其他 Linux 支持的文件系统与 VFS 认识 EXT2 文件系统 Linux最传统的磁盘文件系统(filesystem)使用的是EXT2这个啦!所以要了解文件系统就得要由认识EXT2开始! 而文件系统是创建在硬盘上面的,因此我们得了解硬盘的物理组成才行,所以底下只会很快的复习这两部份

文件系统基础及ext文件系统创建及管理详解、文件系统的使用及卸载、fstab文件格式及自动挂载系统的

创建文件系统--分区格式化 格式化: 低级格式化: 划分磁道 高级格式化: 创建文件系统,按照某种特定的标准,将整个分区划分为大小相同的若干小的逻辑编址单元,每个这样的单元称为块(block)[windows中称为簇]: 划分块的标准: 在Linux的文件系统中,主要的块的划分标准就是:每个块包括2^1或2^2或2^3个扇区:即块大小可以是1024字节或者是2048字节或者是4096字节: 注意: 1.被划分出来的块,每一个只能存放一个文件的内容,一个文件可以存储在多个块上: 2.如果在某个分区

linux系统ext文件系统知识

ext2文件系统细节 我们都知道,操作系统中的数据分为文件内容和文件属性两部分,其中文件内容就是文件的实体数据,而文件属性就是文件类型.权限.属主.修改时间等信息.操作系统会将上述文件的内容放入磁盘文件系统的inode中,而把文件的实体数据存放于对应的block中.除了inode和block信息外,操作系统还会记录文件系统的整体信息于superblock中,这个superblock包括整个文件系统的inode和block的总的数量,已经使用的数量,剩余数量等. 在linux支持的文件系统类型中,

Linux入门之磁盘管理(3)文件系统挂载

当磁盘建立了分区,创建了文件系统,只是说明该设备可以用来存储,但是要想访问设备,就需要通过建立一个或多个挂载点,来提供给用户进行访问,在linux中,提供了强大的命令来用于实现文件系统的挂载及管理. 挂载命令的使用 mount 命令 用法: mount  [option]    DEVICE  mountdir DEVICE(要挂载的设备): 设备名:如/dev/sdb1 /dev/hda2 卷标名:-L  "LABLE"  如  -L mydata UUID :-U  UUID 伪文

linux(centos)下挂载nefs文件系统

有时候,在将硬盘插到Linux系统上,挂载硬盘时一直提示:unknown filesystem type 'ntfs'.在尝试网上的方法也遇到了一些问题. 这是有的 linux 发行版并不默认支持挂载 ntfs 的文件系统.我们可以使用 3g-ntfs 来挂载 ntfs 文件系统的设备. 下面是 3g-ntfs 的安装步骤. 1.安装 3g-ntfs. 首先下载 3g-ntfs 的源代码. 下面是官网地址: http://www.tuxera.com/community/open-source-

Linux系统挂载NTFS文件系统(转载)

转自:http://hermesbox.blogbus.com/logs/47386987.html 今天尝试并成功的将一块500G的移动硬盘挂载到了RHEL5的系统上,甚感欣慰.想到也许以后自己或其他同学们会有类似经历,于是尽量细致的记录于此.     无论是一块安装了Windows/Linux双系统的硬盘,还是通过USB连接的移动硬盘/U盘,都是可以挂载到Linux系统中的.不过由于Windows本身常用的文件系统包括fat32和NTFS,因此还是需要区别的.废话少说,进入正题. 系统环境如