2017.7.25
操作文件系统
创建分区
fdisk
工具用来帮助管理安装在系统上的任何存储设备的分区。它是交互式程序,允许你输入命令来逐步完成硬盘分区操作。
使用它需要有超级用户权限和指定要分区的存储设备的设备名。
Linux采用了一种标准格式来为硬盘分配设备名称。对于老式的IDE驱动器,Linux使用的是/dev/hdx。其中x表示一个字母,从a开始(第一个驱动器是a,第二个驱动器是b)。对于SATA驱动器和SCSI驱动器,Linux使用的是/dev/sdx。
root@wsx-ubuntu:/home/wsx# fdisk /dev/sd
sda sda1 sda2 sda3 sda4 sda5 sda6 sdb sdb1 sdb2 sdb3 sdb4
root@wsx-ubuntu:/home/wsx# fdisk /dev/sda
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
命令(输入 m 获取帮助): p #显示分区详细信息
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 273EEEA8-0192-4208-BB82-74914AEB9E17
设备 Start 末尾 扇区 Size 类型
/dev/sda1 2048 485517311 485515264 231.5G Microsoft basic data
/dev/sda2 485517312 1329291263 843773952 402.4G Microsoft basic data
/dev/sda3 1534093312 1953521663 419428352 200G Microsoft basic data
/dev/sda4 1329291264 1330341887 1050624 513M EFI System
/dev/sda5 1330341888 1517514751 187172864 89.3G Linux filesystem
/dev/sda6 1517514752 1534093311 16578560 7.9G Linux swap
Partition table entries are not in disk order.
命令(输入 m 获取帮助): m #显示帮助和各命令含义
Help:
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
通过n
我们可以创建新的分区,分区可以按主分区或扩展分区创建。
创建文件系统
将数据存储到分区之前,我们必须用某种文件系统对其进行格式化,这样Linux才能使用它。
我们在使用Windows常见的为NTFS文件系统。
创建文件系统的命令行程序
工具 | 用途 |
---|---|
mkefs | 创建一个ext文件系统 |
mke2fs | 创建一个ext2文件系统 |
mkfs.ext3 | 创建一个ext3文件系统 |
mkfs.ext4 | 创建一个ext4文件系统 |
mkreiserfs | 创建一个ReiserFS文件系统 |
jfs_mkfs | 创建一个JFS文件系统 |
mkfs.xfs | 创建一个XFS文件系统 |
mkfs.zfs | 创建一个ZFS文件系统 |
mkfs.btrfs | 创建一个Btrfs文件系统 |
注意,并非所有的命令工具都默认安装了,我们可以通过type
命令查询:
root@wsx-ubuntu:/home/wsx# type mkfs.ext4
mkfs.ext4 是 /sbin/mkfs.ext4
root@wsx-ubuntu:/home/wsx# type mkfs.btrfs
bash: type: mkfs.btrfs: 未找到
所有的系统命令都允许通过不带选项的简单命令来创建一个默认的文件系统,比如Ubuntu中用的ext4:
$ sudo mkfs.ext4 /dev/sdb1
为分区创建了文件系统之后,下一步是将它挂载到虚拟目录的某个挂载点,这样就可以将数据存储在新文件系统中了。我们可以将文件系统挂载到虚拟目录中需要额外空间的任何位置。
$ ls /mnt
$ sudo mkdir /mnt/my_partition
$ ls -al /mnt/my_partition
$
$ ls -dF /mnt/my_partition
/mnt/my_partition/
$ sudo mount -t ext4 /dev/sdb1 /mnt/my_partition #指明挂载及文件类型
$ ls -al /mnt/my_partition
这种方式效果为临时挂载,我们可以将其添加到/etc/fstab文件中让系统自动挂载。
文件系统的检查和修复
fsck
命令能够检查和修复大部分类型的Linux文件系统。命令格式为
fsck options filesystem
可以列出多个要检查的文件系统。文件系统可以通过设备名、在虚拟目录中的挂载点以及分配给文件系统的唯一UUID值来引用。
选项参考
Emergency help:
-p Automatic repair (no questions)
-n Make no changes to the filesystem
-y Assume "yes" to all questions
-c Check for bad blocks and add them to the badblock list
-f Force checking even if filesystem is marked clean
-v Be verbose
-b superblock Use alternative superblock
-B blocksize Force blocksize when looking for superblock
-j external_journal Set location of the external journal
-l bad_blocks_file Add to badblocks list
-L bad_blocks_file Set badblocks list
只能在未挂载的文件系统上运行fsck
命令。当我们需要检查挂载了的文件系统时,我们系统先卸载该文件系统,检查后重新挂载即可。
逻辑卷管理
Linux逻辑卷管理器(LVM)软件包可以将另一个硬盘上的分区加入已有的文件系统,动态地添加硬盘空间。它可以让我们在无需重建整个文件系统的情况下,轻松地管理磁盘空间。
逻辑卷管理的核心在于如何处理安装在系统上的硬盘分区。在逻辑卷管理的世界里,硬盘分区称作物理卷(PV)。每个物理卷都会映射到硬盘上特定的物理分区。多个物理卷集中在一起可以形成一个卷组(VG)。整个结构中的最后一层是逻辑卷(LV)。逻辑卷为Linux提供了创建文件系统的分区环境,作用类似于Linux中的物理硬盘分区。Linux系统将逻辑卷视为物理分区。
上面理解来说,我们实际的物理硬盘可以分为不同的物理分区,这些分区对应着物理卷的概念,所有的物理卷形成了一个卷组。这个卷组为逻辑分区提供了一个平台,我们可以根据需求把卷组划分为不同的逻辑分区,它们对应着挂载在系统上的文件目录。对于linux系统而言,逻辑卷就是它进行文件操作的“物理分区”,而实际上,这些分区由真实的物理卷映射而成。
Linux中的LVM
Linux中的LVM有两个版本:
- LVM1: 只能用于Linux内核版本2.4,它仅提供基本的逻辑卷管理功能
- LVM2: LVM的更新版本,可以适用于Linux内核版本2.6。
LVM2提供了好用的功能:
- 快照:Linux LVM允许我们在逻辑卷在线的状态下将其复制到另一个设备。快照允许我们在复制的同时,保证允许关键任务的服务器继续工作。LVM1只创建只读快照,LVM2支持创建可读可写快照。
- 条带化:有了条带化,可以跨多个物理硬盘创建逻辑卷。
- 镜像:镜像是一个实时更新的逻辑卷的完整副本,当我们创建镜像逻辑卷时,LVM会将原始逻辑卷同步到镜像副本中。
使用LVM
-
定义物理卷:通过
fdisk
命令创建分区后,用t
命令改变分区类型。比如之前创建了/dev/sdb1分区,然后接上t #改变分区类型 8e #表示这个分区将被用作LVM系统的一部分,而不是一个直接的文件系统 p #显示详细信息 w #保存
-
用分区创建实际的物理卷
$ sudo pvcreate /dev/sdb1 # 结果显示成功即可,如果pvcreate命令不正常,可能是lvm2包没有安装好
查看
$ sudo pvdisplay /dev/sdb1
-
创建卷组:可以将所有可用的物理卷加到一个卷组,也可以结合不同的物理卷创建多个卷组。
使用
vgcreate
命令$ sudo vgcreate Vol1 /dev/sdb1 # 创建名为Vo11的卷组 # 同样地,可以用vgdisplay显示卷组细节
创建逻辑卷:使用
lvcreate
命令-
创建文件系统:运行完
lvcreate
命令之后,逻辑卷就产生了,但它还没有文件系统。我们需要用相应的命令来创建文件系统:$ sudo mkfs.ext4 /dev/Vol1/lvtest # lvtest为创建的逻辑卷
在创建了新的文件系统后,可以用标准Linux mount命令进行挂载。
-
修改LVM
Linux LVM包的常见命令
命令 功能 vgchange 激活和禁用卷组 vgremove 删除卷组 vgextend 将物理卷加到卷组 vgreduce 从卷组中删除物理卷 lvextend 增加逻辑卷的大小 lvreduce 减小逻辑卷的大小