当前位置:文档之家› Linux XFS文件系统描述观察及磁盘命令详解

Linux XFS文件系统描述观察及磁盘命令详解

Linux XFS文件系统描述观察及磁盘命令详解
Linux XFS文件系统描述观察及磁盘命令详解

XFS文件系统的描述数据观察

EXT家族的dumpe2fs去观,而XFS家族用xfs_info去观察

[root@study ~]# xfs_info挂载点|装置文件名

[root@study ~]# df - - T /boot

FilesystemType1K-blocksUsedAvailableUse%Mounted on

/dev/vda2xfs1038336 133704 904632 13% /boot

# 没错!可以看得出来是 xfs 文件系统的!来观察一下内容吧!

[root@study ~]# xfs_info /dev/vda2

1 meta-data=/dev/vda

2 isize=256 agcount=4, agsize=65536 blks

2 = sectsz=512 attr=2, projid32bit=1

3 = crc=0 finobt=0

4 data = bsize=4096blocks=262144, imaxpct=25

5 = sunit=0swidth=0blks

6 naming =version 2 bsize=4096 ascii-ci=0 ftype=0

7 log =internal bsize=4096 blocks=2560, version=2

8 = sectsz=512 sunit=0 blks, lazy-count=1

9 realtime =none extsz=4096blocks=0, rtextents=0

?第1 行里面的isize指的是inode的容量,每个有256bytes 这么大。至于agcount则是前面谈到的储存区群组(allocation group) 的个数,共有4 个,agsize则是指每个储存区群组具有65536 个block 。配合第4 行的block 设定为4K,因此整个档案系统的容量应该就是4*65536*4K 这么大!

?第2 行里面sectsz指的是逻辑磁区(sector) 的容量设定为512bytes 这么大的意思。

?第4 行里面的bsize指的是block 的容量,每个block 为4K 的意思,共有262144 个block 在这个档案系统内。

?第5 行里面的sunit与swidth与磁碟阵列的stripe 相关性较高。这部份我们底下格式化的时候会举一个例子来说明。

?第7 行里面的internal 指的是这个登录区的位置在档案系统内,而不是外部设备的意思。且占用了4K * 2560 个block,总共约10M 的容量。

?第9 行里面的realtime区域,里面的extent 容量为4K。不过目前没有使用。

磁盘与目录的容量

df:列出文件系统的整体磁盘使用量;

[root@study ~]#df [- - ahikHTm] [ 目录或文件名] ]

选项与参数:

-a :列出所有的文件系统,包括系统特有的/proc等文件系统;

-k:以 KBytes 的容量显示各文件系统;

-m:以 MBytes 的容量显示各文件系统;

-h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

-H:以 M=1000K 取代 M=1024K 的进位方式;

-T:连同该 partition的filesystem名称 (例如xfs) 也列出;

-i:不用磁盘容量,而以inode的数量来显示

du:评估文件系统的磁盘使用量(常用在推估目录所占容量)

[root@study ~]# du [- - ahskm] 文件或目录名称

选项与参数:

-a:列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。

-h:以人们较易读的容量格式 (G/M) 显示;

-s:列出总量而已,而不列出每个各别的目录占用容量;

-S:不包括子目录下的总计,与-s有点差别。

-k:以 KBytes 列出容量显示;

-m:以 MBytes 列出容量显示;

parted列出磁盘的分区表类型与分区信息

[root@study ~]# parted /dev/vda print

Model: Virtio Block Device (virtblk)# 磁盘的模块名称(厂商)

Disk /dev/vda: 42.9GB # 磁盘的总容量

Sector size (logical/physical): 512B/512B# 磁盘的每个逻辑/物理扇区容量

Partition Table: gpt # 分区表的格式 (MBR/GPT)小为4K最大为1G blkid 列出装置的 UUID 等参数

lsblk 列出系统上的所有磁盘列表

[root@study ~]# lsblk [- - dfimpt] [device]

选项与参数:

-d:仅列出磁盘本身,并不会列出该磁盘的分区数据

-f:同时列出该磁盘内的文件系统名称

-i:使用 ASCII 的线段输出,不要使用复杂的编码 (再某些环境下很有用)

-m:同时输出该装置在/dev底下的权限数据 (rwx的数据)

-p:列出该装置的完整文件名!而不是仅列出最后的名字而已。

-t:列出该磁盘装置的详细数据,包括磁盘队列机制、预读写的数据量大小等

默认输出的信息详解:

NAME:就是装置的文件名啰!会省略 /dev等前导目录!

MAJ:MIN:其实核心认识的装置都是透过这两个代码来熟悉的!分别是主要:次要装置代码! RM:是否为可卸除装置 (removable device),如光盘、USB 磁盘等等

SIZE:当然就是容量啰!

RO:是否为只读装置的意思

TYPE:是磁盘 (disk)、分区槽 (partition) 还是只读存储器 (rom) 等输出

MOUTPOINT:就是前一章谈到的挂载点!

使用parted命令可以分辨分区表类型,『MBR 分区表使用fdisk分区,GPT 分区表使用gdisk分区!』

[root@study ~]# gdisk装置名称具体看下行

[root@study ~]# gdisk/dev/vda<==仔细看,不要加上数字喔!

Command (? for help): ?

前面省略。。。

d t

e a partition # 删除一个分区

中间省略。。。

n add a new partition # 增加一个分区

省略一行

p print the partition table# 印出分区表(常用)

q quit without saving changes# 不储存分区就直接离开gdisk

省略部分。。。

w write table to disk and exit # 储存分区操作后离开gdisk

不管你进行了什么动作,只要离开 gdisk 时按下『q』,那么所有的动作『都不会生效!』相反的,按下『w』就是动作生效的意思。

使用的『装置文件名』请不要加上数字,因为 partition是针对『整个磁盘装置』而不是某个 partition 呢!

Linux XFS系统格式化命令

[root@study ~]# mkfs.xfs [- - b bsize] [- - d parms] [- - i parms] [ [- - l parms] [- - L label] [- - f] \ \

[ [- - r parms] 装置名称

选项与参数:

关于单位:底下只要谈到『数值』时,没有加单位则为bytes 值,可以用k,m,g,t,p(小写)等来解释

比较特殊的是s这个单位,它指的是sector的『个数』喔!

-b:后面接的是block容量,可由512到64k,不过最大容量限制为Linux的4k 喔!

-d:后面接的是重要的data section 的相关参数值,主要的值有:

agcount=数值:设定需要几个储存群组的意思(AG),通常与CPU 有关

agsize=数值:每个AG设定为多少容量的意思,通常agcount/agsize只选一个设定即可

file :指的是『格式化的装置是个文件而不是个装置』的意思!(例如虚拟磁盘)

size=数值:data section的容量,亦即你可以不将全部的装置容量用完的意思

su=数值:当有RAID时,那个stripe数值的意思,与底下的sw搭配使用

sw=数值:当有RAID时,用于储存数据的磁盘数量(须扣除备份碟与备用碟)

sunit=数值:与su相当,不过单位使用的是『几个sector(512bytes大小)』的意思

swidth=数值:就是su*sw的数值,但是以『几个sector(512bytes大小)』来设定

-f:如果装置内已经有文件系统,则需要使用这个-f来强制格式化才行!

-i:与inode有较相关的设定,主要的设定值有:

size=数值:最小是256bytes最大是2k,一般保留256就足够使用了!

internal=[0|1]:log 装置是否为内建?预设为1内建,如果要用外部装置,使用底下设定

logdev=device :log 装置为后面接的那个装置上头的意思,需设定internal=0才可!

size=数值:指定这块登录区的容量,通常最小得要有512个block,大约2M 以上才行!

-L:后面接这个文件系统的标头名称Label name的意思!

-r:指定realtime section 的相关设定值,常见的有:

extsize=数值:就是那个重要的extent数值,一般不须设定,但有RAID时,

最好设定与swidth的数值相同较佳!最范例一:列出/dev/vda磁盘的相关数据

文件系统课程设计报告

设计时间: 2011-1-5至2011-1-7 专业年级:08计科4班: 一.设计目的: 通过操作系统其中一个子系统的设计和实现,掌握Linux文件系统的基本原理、结构和实现方法,掌握Linux文件系统中文件的建立、打开、读/写、执行、属性等系统调用的使用,学会设计简单的文件系统并实现一组操作,以及学习文件系统的系统调用命令,提高对文件系统实现功能的理解和掌握。同时,掌握操作系统设计的方法与技巧,增强系统软件设计的实际工作能力。 二.设计容: 为LINUX 设计一个简单的二级文件系统。本文件系统采用类似DOS系统的文件管理方式,每次调用该文件系统时,首先申请一定的存空间,然后对该存空间进行分配。将申请到的空间划分为目录区,文件区;采用位示图进行空间管理,盘块的分配使用显示(FAT 表)的方式。每次调用该文件系统时自动为其分配空间,并将上次操作的结果从硬盘上调入存;当结束调用时则将操作的结果重新存入硬盘,以便下次调用。(每次使用都会自动搜索文件系统,以此确定是否是第一次使用;若是则格式化生成文件系统,否则读取已存在的文件系统。) 三.设计过程 1、实现功能 该系统具备下列功能: login 用户登录logout 注销 mkdir/md 创建目录rmdir/rd 删除目录 cd/cd .. 修改目录creat 创建文件 open 打开文件dir 显示当前目录和文件 write 读文件 delete 删除文件 close 关闭文件 2、添加功能 (1)制作了一个“操作命令符”列表框,说明接下来如何操作,这样有利于更好地阅读、操作和运行程序,使不懂得程序代码的人也可以运行该程序,更好地理解该程序实现的功能。 (2)在命令解释层函数cmdexp()里加了一些选择和操作功能,增加程序实现的功能,如原来程序只有显示当前目录和文件、创建目录和修改目录的功能,把它拓展到系统所要求的全部功能,并在原有的程序的基础上进行相应的修改,使程序更加完善。 3、设计思路 (1)要将文件存储在磁盘上,必须为之分配相应的存储空间,并对文件存储空间进行管

分布式文件系统Hadoop HDFS与传统文件系统Linux FS的比较与分析

6苏州大学学报(工科版)第30卷 图1I-IDFS架构 2HDFS与LinuxFS比较 HDFS的节点不管是DataNode还是NameNode都运行在Linux上,HDFS的每次读/写操作都要通过LinuxFS的读/写操作来完成,从这个角度来看,LinuxPS是HDFS的底层文件系统。 2.1目录树(DirectoryTree) 两种文件系统都选择“树”来组织文件,我们称之为目录树。文件存储在“树叶”,其余的节点都是目录。但两者细节结构存在区别,如图2与图3所示。 一二 Root \ 图2ItDFS目录树围3LinuxFS目录树 2.2数据块(Block) Block是LinuxFS读/写操作的最小单元,大小相等。典型的LinuxFSBlock大小为4MB,Block与DataN-ode之间的对应关系是固定的、天然存在的,不需要系统定义。 HDFS读/写操作的最小单元也称为Block,大小可以由用户定义,默认值是64MB。Block与DataNode的对应关系是动态的,需要系统进行描述、管理。整个集群来看,每个Block存在至少三个内容一样的备份,且一定存放在不同的计算机上。 2.3索引节点(INode) LinuxFS中的每个文件及目录都由一个INode代表,INode中定义一组外存上的Block。 HDPS中INode是目录树的单元,HDFS的目录树正是在INode的集合之上生成的。INode分为两类,一类INode代表文件,指向一组Block,没有子INode,是目录树的叶节点;另一类INode代表目录,没有Block,指向一组子INode,作为索引节点。在Hadoop0.16.0之前,只有一类INode,每个INode都指向Block和子IN-ode,比现有的INode占用更多的内存空间。 2.4目录项(Dentry) Dentry是LinuxFS的核心数据结构,通过指向父Den姆和子Dentry生成目录树,同时也记录了文件名并 指向INode,事实上是建立了<FileName,INode>,目录树中同一个INode可以有多个这样的映射,这正是连

二级文件系统演示

湖南工业大学 课程设计 资料袋 学院(系、部)学年第学期课程名称计算机操作系统指导教师职称 学生姓名专业班级学号 题目文件系统演示 成绩起止日期年月日~年月日 目录清单

课程设计任务书 — 学年第 学期 学院(系、部) 专业 班级 课程名称: 计算机操作系统 学生姓名: 设计题目: 文件系统演示 指导教师: 完成期限:自 年 月 日至 年 月 日 共 周 内 容 及 任 务 一、设计内容 设计一个简单的多用户文件系统。即 ①在系统中用一个文件来模拟一个磁盘; ②此系统至少有:Create 、delete 、open 、close 、read 、write 等和部分文件属性的功能。 ③实现这个文件系统。 ④能实际演示这个文件系统。 基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。 二、设计任务 课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 三、设计要求 1. 按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。 2. 课程设计所使用的编程语言任选,但建议使用C 或C++; 3. 绿色软件:程序运行不需安装,避免写系统和注册表; 进 度 安 排 起止日期 工作内容 完成选题、课题分析、课题设计、编写程序 程序调试、完善代码 优化测试系统、程序答辩 撰写并提交课程设计说明书 (含电子文档)、源程序等。 主 要 参 考 资 料 [1] 胡志刚,谭长庚等. 《计算机操作系统》.中南大学出版社. 2005 [2] 罗宇,邹鹏,邓胜兰.操作系统[M].北京:电子工业出版社,2012. [3] 面向对象程序设计与C++语言.朱战立,宋新爱.电子工业出版社,2010.7 [4] C++面向对象程序设计.谭浩强.清华大学出版社,2006.1 [5] 任爱华,李鹏,刘方毅.操作系统实验指导, 清华大学出版社,2004. [6] 徐虹.操作系统实验指导-基于LINUX 内核, 清华大学出版社, 2004. 指导教师(签字): 年 月 日 系(教研室)主任(签字): 年 月 日

Btrfs文件系统

第二章Btrfs文件系统 2.1 Btrfs文件系统简介 Btrfs(B-tree file system,B-tree文件系统)是针对Linux开发的一个新的CoW (copy-on-write,写时复制)文件系统。它最初是由甲骨文公司在2007年着手开始开发的,并在2014年8月正式发布其稳定版。开发Btrfs的目的在于解决Linux 文件系统中缺少池、快照、校验和以及集成的跨多设备访问等问题,目标在于实现Linux的规模化存储。规模化不仅仅是指解决存储问题,也意味着通过简洁的界面提供对存储的管控和管理能力,让大家能看到已使用的内容并使它更可靠。 2.2 Btrfs文件系统新特性 ?基于扩展的文件存储 ?文件大小上限16EiB ?小文件和索引目录的高效空间利用 ?动态索引节点分配 ?支持快照可写和快照只读 ?子卷(分离内部文件系统的根) ?支持数据和元数据的校验和 ?压缩(gzip和LZO) ?整合的多设备支持 ?支持文件条块化、文件镜像和文件条块化+镜像三种部署方案 ?高效的增量备份 ?后台消除进程支持查找和修复冗余副本上的文件错误 ?支持在线文件系统碎片整理和离线文件系统检查 ?Btrfs文件系统对RAID 5/RAID 6加强支持,在linux 3.19中添加了许多漏洞修补 2.3 Btrfs在linux内核的各版本中的变化 ● 3.0 Btrfs实现自动碎片整理、数据校验和检查,并且提升了部分性能 ● 3.2 BTRFS:更快的数据清理、tree roots自动备份、详细的错误消息、 元数据手动检查

● 3.3 BTRFS:支持不同RAID级别之间restriping,改善了平衡和调试工 具 ● 3.4 Btrfs文件系统大量改进:修复与数据恢复工具、元数据区块大于4KB、 性能改进、更好的错误处理 ● 3.5 Btrfs:I/O故障统计和一些不明显的提升 I/O故障统计支持新增:I/O故障、CRC故障和生成的元数据块跟踪检查每个驱动器,Btrfs 检查并返回驱动器状态,将在未来的btrfs-progs中包含,即:btrfs device stats。 ● 3.6 Btrfs:子卷配额、配额组、快照差别、跨子卷复制 ● 3.7 更新Btrfs文件系统,加快fsync()系统调用,移除单目录硬链接限制, 支持chattr per-file NOCOW,允许关闭使用nodatacow选项的文件数据写时复制 ● 3.9 Btrfs文件系统实验性支持RAID5和6。嵌入RAID特性可以让文件系统 摆脱复杂的底层存储阵列细节,例如因为文件系统自己知道数据备份数据存放在哪里,它自己就可以在发生磁盘损坏时恢复数据。嵌入RAID也有助于提高了文件系统对数据错误的容忍度,例如可以使用校验和,甚至也可以在元数据和数据上分别使用不同的RAID模式。这层抽象也意味着无法使用mdadm工具,因而必须整体恢复存储卷,比较耗时。 ● 3.10 Btrfs文件系统支持skinny extent,quota也进行了一些重建 ● 3.11例行的Btrfs和XFS文件系统bug修正和性能改进,F2FS修正了Linux 3.10中发现的一个性能退化bug,首次加入高性能并行分布式文件系统 Lustre ● 3.12 小幅改善了F2FS、XFS和Btrfs文件系统 ● 3.13 Btrfs和F2FS文件系统改进 ● 3.14 F2FS及BTRFS文件系统改进 ● 3.16 Btrfs及XFS文件系统的重大更新 ● 3.19 Btrfs文件系统改进RAID5 / RAID6支持

ZFS文件系统ARC缓存

减少ZFS文件系统ARC缓存的方法减少ZFS文件系统ARC缓存的方法 1. ARC缓存简介 ZFS文件系统是Solaris 11系统的默认文件系统,ZFS文件系统简介可见附录。 ZFS使用在内存中建立缓存的方式来提升性能,这种做法在海量数据时尤为有效。ZFS的缓存使用ARC(Adjustable Replacement Cache)算法,它是基于IBM的Megiddo和Modha提出的ARC 淘汰算法演化而来的。所以这个缓存通常被称为ARC缓存。 Solaris系统中有两个内核参数来限制ARC缓存的大小: zfs_arc_min:确定ARC缓存的最小大小,设置单位为字节。默认64MB。 zfs_arc_max:确定ARC缓存的最大大小,设置单位为字节。默认在内存少于4 GB的系统上为物理内存的75%,在内存大于4 GB的系统上为物理内存减去1 GB。 这两个内核参数都是使用容量单位来设定的,并不能根据物理内存的大小来自动调节,所以在Solaris 11.2系统上增加了一个内核参数,使用百分比来设定: user_reserve_hint_pct:设置留给应用程序的物理内存百分比。查阅Oracle官方文档,并没有给出详细的说明,经试验,默认值应为0,且zfs_arc_min、zfs_arc_max参数依然有效,即user_reserve_hint_pct参数确定的ARC缓存占用量低于zfs_arc_min时,取zfs_arc_min的容量;高于zfs_arc_max时,取zfs_arc_max的容量。该参数在Solaris 11.2之前的系统中不存在。 2. 内存占用情况及产生的问题 使用以下命令可以查看内存使用明细: echo “::memstat” | mdb -k 在一台16GB的机器上,进行大量IO操作后(充分建立缓存),运行以上命令,如下图:

操作系统课程设计二级文件系统

操作系统课程设计报告 专业:计算机信息处理 学号:09103408 姓名:纪旻材 提交日期:2011-12-28

【设计目的】 1. 课程设计目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。 2. 结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 3. 通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 1、delete 删除文件 2、open 打开文件 3、close 关闭文件 4、write 写文件 【实验环境】 Windows7系统

Visual studio 2010 【相关知识综述】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 【设计思路】 1 主要数据结构 #define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/ #define MAXCHILD 50 /*the largest child每个用户名下最多有50个文件*/ #define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/ typedef struct/*the structure of OSFILE定义主文件*/

一次Linux下testdisk+gdisk恢复XFS文件系统及数据的经历

一次Linux下testdisk+gdisk恢复XFS文件系统及数据的经历 硬盘之前状况,用gdisk进行硬盘分区(SATA标准,3.6T容量),1.6T+2.0T两个分区,然后用mkfs.xfs格式化分区,最后结果就是,GPT分区表+两个XFS文件系统的硬盘(/dev/sdb,/dev/sdb1,/dev/sdb2) 我已无法确定引起这次硬盘错误的原因,但我确实这么做过: 原因一,从另一个硬盘的/home挂载点复制了大量数据到/dev/sdb1,然后我就将硬盘的数据线和电源线都拔掉了,这个动作在系统运行和关闭的两种情况下都做过,(SATA 硬盘是否安全的支持热插拔?) 原因二,在这次准备复制数据的之前,我没有将硬盘固定,也没有平放在台面(有一点斜度),然后开机,(胡乱的猜想着斜坡加载技术) 下面进入正题: 1,硬盘错误引起分区无法读取,挂载,开始纳闷哪里出了问题 2,运行gdisk -l /dev/sdb,显示如下

有警告信息及注意事项,虽然这里的标记GPT:damaged说明GPT有问题,但最后还是显示出了有分区的信息存在,(GPT分区表信息应该没有彻底损坏,不然怎么读取到两个分区的信息的呢),两个分区里Code标记都变成了0700(Microsoft basic data),正常的应该是8300(Linux filesystem),这个标记应该说明的是XFS文件系统的superblock信息毁了,这是后来经过XFS文件系统工具xfs_repair知道的 详细分区情况,但是是得出来的结果有问题的

gdisk检测到五个问题,(惊讶,这么多的问题) 3,进行到这里,我着急了,于是寻求帮助 首先,尝试了xfs_repair /dev/sdb,这个命令进行了几次,因为中途中断过,这个修复时间是比较长的,几小时(差不多3,4小时?)后得到的结果却是无法检测验证到有效的备份superblock信息,(失败,心都凉了) 然后,找到testdisk工具,大略的看了下说明就上手做(英文实在是差,仔细地看也不明白),第一次进行Analyse后,完全不知道做什么,就直接退出 然后就去测试查看,运行lsblk,gdisk,没有任何改变,(此刻是没抱什么希望的),输出的日志文件testdisk.log也完全看不懂,但我在日志文件里看到了有XFS这三个

【大数据软件】Gcluster集群的文件系统

1 理论知识 1.1 概念 1.1.1 全局统一命名空间的定义 全局统一命名空间将磁盘和内存资源集成一个单一的虚拟存储池,对上层用户屏蔽了底层的物理硬件。 1.1.2 GlusterFS的定义 GlusterFS是一套可扩展的开源群集文件系统,并能够轻松地为客户提供全局命名空间、分布式前端以及高达数百PB级别的扩展性。 1.1.3 元数据的定义 元数据,是用来描述一个给定的文件或是区块在分布式文件系统中所处的位置。注:元数据时网络附加存储解决方案在规模化方面的致命弱点,因其所有节点都必须不断与服务器(或集群组)保持联系以延续真个群集的元数据,故增加了额外的开销,致使硬件在等待响应元数据请求过程中而效率低下。 1.2 数据定位技术 Gluster通过其自有的弹性Hash算法可计算出文件在群集中每个节点的位置, 而无需联系群集内的其他节点,从而降低了追踪元数据的变化而带来额外的开销。 1.2.1 数据访问流程 - 根据输入的文件路径和文件名计算hash值 - 根据hash值在群集中选择子卷(存储服务器),进行文件定位 - 对所选择的子卷进行数据访问 1.2.2 Davies-Meyer算法 Gluster使用Davies-Meyer算法计算文件名的hash值,获得一个32位整数,算法特点如下: - 非常好的hash分布性

- 高效率的计算 1.3 Gluster的架构 1.3.1 存储服务器(Brick Server) - 存储服务器主要提供基本的数据存储功能 - 最终通过统一调度策略分布在不同的存储服务器上(通过Glusterfsd来处理数据服务请求) - 数据以原始格式直接存储于服务器本地文件系统(EXT3/EXT4/XFS/ZFS 等) 1.3.2 客户端和存储网关(NFS/Samba)

Linux命令大全完整版

Linux命令大全完整版 目录 目录........................................................................................................................................... I 1. linux系统管理命令 (1) adduser (1) chfn(change finger information) (1) chsh(change shell) (1) date (2) exit (3) finger (4) free (5) fwhois (5) gitps(gnu interactive tools process status) (5) groupdel(group delete) (6) groupmod(group modify) (6) halt (7) id (7) kill (8) last (8) lastb (8) login (9) logname (9) logout (9) logrotate (9) newgrp (10) nice (10) procinfo(process information) (11) ps(process status) (11) pstree(process status tree) (14) reboot (15)

rlogin(remote login) (16) rsh(remote shell) (16) rwho (16) screen (17) shutdown (17) sliplogin (18) su(super user) (18) sudo (19) suspend (19) swatch(simple watcher) (20) tload (20) top (21) uname (21) useradd (22) userconf (22) userdel (23) usermod (23) vlock(virtual console lock) (24) w (24) who (25) whoami (25) whois (25) 2. linux系统设置命令 (27) alias (27) apmd(advanced power management BIOS daemon) (27) aumix(audio mixer) (27) bind (29) chkconfig(check config) (29) chroot(change root) (30)

操作系统课程设计Linux二级文件系统设计

操作系统课程设计Linux二级文件系 统设计

操作系统课程设计报告专业:软件工程

学号: 姓名:马 提交日期: /1/10 【设计目的】 1、经过一个简单多用户文件系统的设计,加深理解文件系统的内 部功能和内部实现 2、结合数据结构、程序设计、计算机原理等课程的知识,设计一 个二级文件系统,进一步理解操作系统 3、经过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.能够实现下列几条命令: login 用户登录

dir 列目录 create 创立文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件能够进行读写保护 【实验环境】 C++ DevCpp 【设计思路】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。

首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创立的文件,能够编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 结构体: typedef struct /*the structure of OSFILE*/ { int fpaddr; /*file physical address*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fname[MAXNAME]; /*file name*/ } OSFILE; //存放重要信息 typedef struct /*the structure of OSUFD*/ { char ufdname[MAXNAME]; /*ufd name*/

比较Unix操作系统的各个版本:AIX、HP-UX和Solaris

在我上一篇文章中,我编了一份使用频率位居前50位的Unix命令清单。我提到的所有命令都适用于Unix最为流行的三个版本:Solaris、AIX和HP-UX操作系统。在本文中,我将引导您回顾Unix这些版本的发展史,讨论他们一些根本的区别,在文章最后部分还将以表格的形式对其常用命令进行对比。 Sun的Solaris操作系统 Solaris操作系统是Sun的Unix版本,它实际上是承袭于SunOS,而SunOS的历史则可追溯至1992年。起初SunOS是基于BSD Unix的,而SunOS的5.0及其之后的更高版本都是基于Unix SVR4的(更名为Solaris操作系统)。 其中究竟有什么奥妙?让我们进一步往前追溯。SunOS的1.0版本发布于1983年,支持Sun-1和Sun-2系统。1985年推出了2.0版本——让其声名卓著的是虚拟文件系统(VFS)和网络文件系统(NFS)。到了1987年,AT&T公司和Sun公司共同宣布,他们将基于SVR4合作开发一个旨在合并System V和BSD的项目,并对外发布。2.4版本的Solaris是Sun SparcX86操作系统的第一个版本。而SunOS的最后一次发布则是在1994年9月的4.1.4版本。Solaris 7则是第一个64位Ultra Sparc的版本,它能为Solaris的文件系统元数据记录提供本地支持。2002年推出的Solaris 9增添了对Solaris 卷标管理器和Linux的支持。2005年首次推出的Solaris 10有许多创新之处,其中包括了对其新ZFS文件系统、Solaris容器和逻辑域的支持。 目前Solaris的最高版本为10,其最新一次发布是在2008年10月。创新之一就是支持半虚拟化,在Solaris 10中基于Xen环境客户可以只用半虚拟化技术。 基本区别和特征 Solaris免费、开源,并通过OpenSolaris操作系统进行分布。Solaris基于Unix操作系统,相对于HP-UX或AIX而言,它的命令行更多。坦率地讲,相对于HP-UX中的系统管理器(SAM)或AIX中的系统管理界面工具(SMIT)Solaris都没有任何可比性。Solaris 操作系统能在Sparc和X86环境下运行。也配有最新的文件系统ZFS,近年来在这方面已取得了极大的进步,包括目前将其作为ROOT文件系统的能力。ZFS具有成为最佳全方位Unix文件系统的潜质。Solaris操作系统有许多方法来执行虚拟化,包括容器区、xVM服务器、逻辑域和硬件分区。 惠普的HP-UX HP-UX操作系统最初是在System V第三版的基础上研发出来的。它最初完全用于PA-RISC HP 9000平台。HP-UX的第一版发布于1984年。第九版采用了基于字符的图形用户界面(GUI)和SAM管理系统。发布于1995年的第十版改变了系统文件和目录结构的布局,而这一点与AT&T公司的SVR4极为相似。第十一版发布于1997年,同时也

了解Linux默认文件系统的发展历史

了解Linux默认文件系统的发展历史 目前的大部分Linux 文件系统都默认采用ext4 文件系统,正如以前的Linux 发行版默认使用ext3、ext2 以及更久前的ext。 对于不熟悉Linux 或文件系统的朋友而言,你可能不清楚ext4 相对于上一版本ext3 带来了什么变化。你可能还想知道在一连串关于替代的文件系统例如Btrfs、XFS 和ZFS 不断被发布的情况下,ext4 是否仍然能得到进一步的发展。 在一篇文章中,我们不可能讲述文件系统的所有方面,但我们尝试让你尽快了解Linux 默认文件系统的发展历史,包括它的诞生以及未来发展。 我仔细研究了维基百科里的各种关于ext 文件系统文章、kernel 的wiki 中关于ext4 的条目以及结合自己的经验写下这篇文章。 ext 简史 MINIX 文件系统 在有ext 之前,使用的是MINIX 文件系统。如果你不熟悉Linux 历史,那么可以理解为MINIX 是用于IBM PC/AT 微型计算机的一个非常小的类Unix 系统。Andrew Tannenbaum 为了教学的目的而开发了它,并于1987 年发布了源代码(以印刷版的格式!)。 IBM 1980 中期的PC/AT,MBlairMartin,CC BY-SA 4.0 虽然你可以细读MINIX 的源代码,但实际上它并不是自由开源软件(FOSS)。出版Tannebaum 著作的出版商要求你花69 美元的许可费来运行MINIX,而这笔费用包含在书籍的费用中。尽管如此,在那时来说非常便宜,并且MINIX 的使用得到迅速发展,很快超过了Tannebaum 当初使用它来教授操作系统编码的意图。在整个20 世纪90 年代,你可以发现MINIX 的安装在世界各个大学里面非常流行。而此时,年轻的Linus Torvalds 使用MINIX 来开发原始Linux 内核,并于1991 年首次公布,而后在1992 年12 月在GPL 开源协议下发布。

Linux XFS文件系统描述观察及磁盘命令详解

XFS文件系统的描述数据观察 EXT家族的dumpe2fs去观,而XFS家族用xfs_info去观察 [root@study ~]# xfs_info挂载点|装置文件名 [root@study ~]# df - - T /boot FilesystemType1K-blocksUsedAvailableUse%Mounted on /dev/vda2xfs1038336 133704 904632 13% /boot # 没错!可以看得出来是 xfs 文件系统的!来观察一下内容吧! [root@study ~]# xfs_info /dev/vda2 1 meta-data=/dev/vda 2 isize=256 agcount=4, agsize=65536 blks 2 = sectsz=512 attr=2, projid32bit=1 3 = crc=0 finobt=0 4 data = bsize=4096blocks=262144, imaxpct=25 5 = sunit=0swidth=0blks 6 naming =version 2 bsize=4096 ascii-ci=0 ftype=0 7 log =internal bsize=4096 blocks=2560, version=2 8 = sectsz=512 sunit=0 blks, lazy-count=1 9 realtime =none extsz=4096blocks=0, rtextents=0 ?第1 行里面的isize指的是inode的容量,每个有256bytes 这么大。至于agcount则是前面谈到的储存区群组(allocation group) 的个数,共有4 个,agsize则是指每个储存区群组具有65536 个block 。配合第4 行的block 设定为4K,因此整个档案系统的容量应该就是4*65536*4K 这么大! ?第2 行里面sectsz指的是逻辑磁区(sector) 的容量设定为512bytes 这么大的意思。 ?第4 行里面的bsize指的是block 的容量,每个block 为4K 的意思,共有262144 个block 在这个档案系统内。 ?第5 行里面的sunit与swidth与磁碟阵列的stripe 相关性较高。这部份我们底下格式化的时候会举一个例子来说明。 ?第7 行里面的internal 指的是这个登录区的位置在档案系统内,而不是外部设备的意思。且占用了4K * 2560 个block,总共约10M 的容量。 ?第9 行里面的realtime区域,里面的extent 容量为4K。不过目前没有使用。 磁盘与目录的容量 df:列出文件系统的整体磁盘使用量; [root@study ~]#df [- - ahikHTm] [ 目录或文件名] ] 选项与参数: -a :列出所有的文件系统,包括系统特有的/proc等文件系统; -k:以 KBytes 的容量显示各文件系统; -m:以 MBytes 的容量显示各文件系统; -h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H:以 M=1000K 取代 M=1024K 的进位方式; -T:连同该 partition的filesystem名称 (例如xfs) 也列出; -i:不用磁盘容量,而以inode的数量来显示

ZFS 学习笔记

ZFS 学习笔记 第一章zpool的管理 (2) 1.1 创建zpool (3) 1.1.1 创建单边zpool (3) 1.1.2 创建mirror pool (4) 1.1.3 创建raidz zpool (6) 1.2 删除zpool (7) 1.3 对zpool进行管理 (8) 1.3.1 镜像和拆镜像 (8) 1.3.2 添加zpool空间 (9) 1.3.3 spare盘的添加和删除 (10) 1.4 zpool的维护/故障盘的更换 (12) 1.5 zpool的迁移 (15) 1.6 恢复销毁的zpool (16) 1.7 zpool的I/O统计 (18) 1.8 迁移ZFS 存储池 (19) 1.9 zpool的版本升级 (20) 第二章ZFS文件系统的建立和设置 (22) 2.1 ZFS文件系统的创建和删除 (22) 2.1.1 ZFS文件系统的创建 (22) 2.1.2 ZFS文件系统重命名 (23) 2.1.3 删除ZFS文件系统 (23) 2.2 ZFS属性介绍 (24) 2.3 查询ZFS文件系统信息 (25) 2.4 管理ZFS属性 (25) 2.4.1 设置set (26) 2.4.2 继承inherit (27) 2.4.3 查询get (27) 2.4.4 ZFS文件系统的mount和umount (34) 2.4.5 ZFS文件系统的share和unshare (36) 2.4.6 ZFS文件系统的配额和预留空间 (37) 第三章使用ZFS进行快照或者克隆 (40) 3.1 快照snapshot (40) 3.1.1 创建和销毁快照 (40) 3.1.2 快照的显示和重命名 (41) 3.1.3 使用快照回滚 (41) 3.2 克隆 (43) 3.2.1 创建clone (43) 3.2.2 删除clone (44)

Linux基本命令大全

下面我们来介绍常用基本命令 一、注销,关机,重启 注销系统的logout命令 1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可: [root@localhost root]#logout Red Hat Linuxrelease 9(Shike) Kernel 2.4.20.8 on an i686 Login: ←回到登陆的画面 2,关机或重新启动的shutdown命令 Shutdown命令可以关闭所有程序,依照用户的需要,重新启动或关机。 参数说明如下: λ立即关机:-h 参数让系统立即关机。范例如下: [root@localhost root]#shutdown –h now ←要求系统立即关机 λ指定关机时间:time参数可指定关机的时间;或设置多久时间后运行shutdown命令,范例如下: [root@localhost root]#shutdown now ←立刻关机 [root@localhost root]#shutdown +5 ←5分钟后关机 [root@localhost root]#shutdown 10:30 ←在10:30时关机 关机后自动重启:-rλ参数设置关机后重新启动。范例如下: [root@localhost root]#shutdown -r now ←立刻关闭系统并重启 [root@localhost root]#shutdown -r 23:59 ←指定在23:59时重启动 3,重新启动计算机的reboot命令 顾名思义,reboot命令是用来重新启动系统的。常用的参数如下: λ-f 参数:不依正常的程序运行关机,直接关闭系统并重新启动计算机。 -Iλ参数:在在重新启动之前关闭所有网络接口。 虽然reboot命令有个参数可以使用,但是一般只需要单独运行reboot命令就可以了 二、文件与目录的操作 列出文件列表的ls命令 1,ls(list)命令是非常有用的命令,用来显示当前目录中的文件和子目录列表。配合参数的使用,能以不同的方式显示目录内容。范例如下: ? 显示当前目录的内容: [tony@free tony]$ ls Desktop mail myinstall.log test.txt ←有两个目录及两个文件夹 ? 当运行ls命令时,并不会显示名称以―.‖开头的文件。因此可加上―-a‖参数指定要列出这些文件。范例如下: [tony@free tony]$ ls –a ? 以―-s‖参数显示每个文件所有的空间,并以―-S‖参数指定按所有占用空间的大小排序。范例如下: [tony@free tony]$ ls –s –S 总计36 4 Desktop 4 mail 24 myinstall.log 4 test.txt ? 在ls命令后直接加上欲显示的目录路径,就会列出该目录的内容。范例如下: [tony@free tony]$ ls –l/usr/games 2,切换目录的cd命令

操作系统课程设计--为Linux系统设计一个简单的二级文件系统

操作系统课程设计--为Linux系统设计一个简单的二级文件系统

操作系统课程设计报告 题目: 为Linux系统设计一个简单的二级文件系统 指导老师: 时间:2012.8.30

一课程设计的目的 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 二课程设计的要求 1.可以实现下列几条命令: login用户登录 dir 列目录

create创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 三算法设计 本次二级文件系统主要分为五大模块,分别是用户登录模块、新建目录模块、新建文件模块、删除文件模块和读取文件模块。用户登录成功后才可以进行其他模块的操作。 1 用户登录模块 用户登录模块要求用户输入用户,当输入正确后才能进行其他模块操作,否则提示用户名不存在并询问用户是否用此名进行注册。若用户名未满,则提示注册成功,否则提示用现有注册用户,进行登录,并返回到登录界面。用户登录模块流程图如图1所示。

否 是 否 是 图1 用户登录模块流程图 2新建文件模块 新建文件模块是在用户出入create 指令后进行的,进入后会要求用户输入文件名,并判断文件名是否存在,若没有则在要求用户输入文件读写权限,否则重新输入新的文件名。新建文件模块流程图如图2所示。 开输入login 输入用户用户是否存在 进行其是否注册 输入create 命令 开

CentsOS 7下在LVM中对基于xfs的文件系统进行扩容

以前没接触过CentsOS 7 ,对其所改变的特性不了解,偶然在centos 7中接触到LVM,创建LVM的方法和6中没有区别,但是对LVM进行扩容就有点不一样了,使用以前的方法进行扩容后始终没有生效,折腾了半天才搞清楚其扩容的方法。 Xfs是CentOS7的默认文件系统类型,而不同文件系统类型对应的创建、检查、调整命令不同。 在xfs文件系统中,只能增大分区而不能减小。 [root@localhost ~]# ls /lib/modules/3.10.0-229.20.1.el7.x86_64/kernel/f s #查看内核所支持的所有文件系统类型 binfmt_misc.ko ceph dlm fat gfs2 lockd nfs_common overlayfs udf btrfs cifs exofs fscache isofs mbcache.ko nfsd pstore xfs cachefiles cramfs ext4 fuse jbd2 nfs nls squashfs 我之前已经新建了分区并加入到vg中,对物理边界也已扩展。 扩展逻辑边界时,报错如下所示: [root@localhost ~]# resize2fs -p /dev/mapper/centos-root resize2fs 1.42.9(28-Dec-2013) resize2fs:Bad magic number in super-block 当尝试打开/dev/mapper/centos-r oot 时找不到有效的文件系统超级块. 首先想到使用fsck进行修复下,并没有用,看到错误信息,才知道xfs文件要使用xfs_repair进行修复 [root@localhost ~]# fsck /dev/mapper/centos-root fsck,来自 util-linux 2.23.2If you wish to check the consistency of an X FS filesystem or

操作系统课程设计Linux二级文件系统设计

操作系统课程设计报告 专业:软件工程 学号: 姓名:马 提交日期:2017/1/10

【设计目的】 1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现 2、结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步 理解操作系统 3、通过对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计内容】 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 【实验环境】 C++ DevCpp 【设计思路】 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 结构体: typedef struct /*the structure of OSFILE*/ { int fpaddr; /*file physical address*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fname[MAXNAME]; /*file name*/ } OSFILE; //存放重要信息 typedef struct /*the structure of OSUFD*/ { char ufdname[MAXNAME]; /*ufd name*/ OSFILE ufdfile[MAXCHILD]; /*ufd own file*/ }OSUFD; //用户下面的文件

相关主题
文本预览
相关文档 最新文档