如何从命令行创建和调整ext4分区?
分区 (例如fdisk
)
有哪些有用的命令用于从命令行分区其他硬盘驱动器? 由于大多数已发布的指南都指向GParted和其他图形工具,因此一些命令行序列的摘要会很有帮助。
调整 – 保留空间,写回和访问时间
如果驱动器100%已满,请如何删除预留的磁盘空间(默认情况下)。 由于我只是“数据”的二级驱动器,因此删除保留区域可确保整个驱动器可供使用。
我也对写入和回写以及跳过访问时间更新(文件和目录)感到好奇,以便提高性能。
首要的是:
! 警告 !!
这些命令是示例 。 删除分区,修改和格式化文件系统会破坏数据和/或可能会阻止您的计算机启动。 进行备份。 使用风险自负。 试试你不介意丢失所有数据的机器。 警告管理员。
要快速将驱动器设置为单个ext4分区……
-
查看检测到的“DISK”类设备
lshw -C disk
-
查看现有分区表
fdisk -l
-
编辑我所选设备的分区表(在本例中为“sdx”)
fdisk /dev/sdx
在FDISK内,按:
-
d
…来选择当前分区 -
n
…创建一个新的分区 -
p
…将其指定为P RIMARY分区 -
1
…将其设置为1 ST主分区 -
w
…来改变这种变化。
-
-
显示新的分区表:
fdisk -l
-
将新分区的文件系统格式化为类型
ext4
mkfs -t ext4 /dev/sdx1
-
创建新驱动器将安装到的新目录:
mkdir /storage mount /dev/sdx1 /storage
TUNING
-
删除保留块(即设置为0%),因为此驱动器仅用于用户数据
tune2fs -m 0 /dev/sdx1
-
由于服务器在UPS上,因此设置回写,因此应用程序不会等待实际的磁盘写入
tune2fs -o journal_data_writeback /dev/sdx1
-
使用
/etc/fstab
在启动时挂载,并设置回写策略vi /etc/fstab
-
在
fstab
查找(或添加)驱动器的相关行。 fstab中的参数由空格分隔,例如上面描述的驱动器可能显示为:/dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1
- 第一个参数标识分区(通过/ dev /或长UUID);
- 第二个参数是分区将安装到的路径;
- 第三是文件系统类型;
- 第四个参数包含选项;
- 第五是备份的
dump
计划; 和, - 第六个参数是pass-number(用于控制
fsck
顺序)。
将选项(第4个参数)更改为:
noatime,nodiratime,data=writeback,barrier=0,nobh,errors=remount-ro
重新启动以检查一切进展顺利。
记住这些命令具有破坏性! 有备份,小心!
使用parted
下面的说明是在分区的新硬盘上创建一个新的ext4分区(在Ubuntu 14.04.4 LTS x64上测试)。 parted
支持GUID分区表(GPT) ,随后可用于2TB以上的分区,与fdisk
不同。
使用sudo lshw -C disk *-disk
查看新硬盘的逻辑名称:
description: ATA Disk product: ST6000NM0024-1HT vendor: Seagate physical id: 0.0.0 bus info: scsi@1:0.0.0 logical name: /dev/sdb version: SN05 serial: Z4D30T30 size: 5589GiB (6001GB) configuration: ansiversion=5 sectorsize=4096
逻辑名称是/dev/sdb
。 我们可以开始:
sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)
使用sudo parted /dev/sdb print
,我们可以看到创建了GPT:
username@server:~$ sudo parted /dev/sdb print Model: ATA ST6000NM0024-1HT (scsi) Disk /dev/sdb: 6001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags
我们还需要知道磁盘的大小(我们将使用MB作为单位):
sudo parted /dev/sdb print unit MB print free
这表明:
Disk /dev/sdb: 6001175MB
我们现在可以创建主分区,以便占用整个硬盘空间。 要设置分区标签:
sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB
(如果你想知道为什么我们使用--align optimal
),请参阅https://unix.stackexchange.com/a/49274/16704
使用sudo parted /dev/sdb print
,我们可以看到创建了主分区标签:
username@server:~$ sudo parted /dev/sdb print Model: ATA ST6000NM0024-1HT (scsi) Disk /dev/sdb: 6001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Number Start End Size File system Name Flags 1 1049kB 6001GB 6001GB xfs primary
然后我们需要使用mkfs来实际创建分区:
sudo mkfs.ext4 /dev/sdb1
现在创建了分区,我们需要安装它。 为此, sudo nano /etc/fstab
并添加以下行( /crimea
是我们选择安装新分区的文件夹):
/dev/sdb1 /crimea ext4 defaults 0 0
我们创建文件夹并重新加载/etc/fstab
:
sudo mkdir /crimea sudo mount -a # Remount /etc/fstab without rebooting in Linux
您可以使用df -h
查看新安装的分区:
/dev/sdb1 5.5T 58M 5.2T 1% /crimea
在sudo nano /etc/fstab
,您可以使用它的UUID
,而不是使用/dev/sdb1
您可以使用sudo lshw -C volume
找到它:
*-volume description: EXT4 volume vendor: Linux physical id: 1 bus info: scsi@1:0.0.0,1 logical name: /dev/sdb1 logical name: /crimea version: 1.0 serial: c3559307-795b-66db-9844-8e974c88a1cf size: 200MiB capacity: 5589GiB capabilities: journaled extended_attributes huge_files dir_nlink extents ext4 ext2 initialized configuration: created=2016-06-24 14:56:55 filesystem=ext4 lastmountpoint=/boot modified=2016-07-01 17:15:55 mount.fstype=ext4 mount.options=rw,relatime,data=ordered mounted=2016-07-01 17:07:19 name=primary state=mounted
否则你可以简单地做sudo blkid /dev/sdb1
:
/dev/sdb1: UUID="c3559307-795b-66db-9844-8e974c88a1cf" TYPE="ext4"
新行/etc/fstab
将是:
UUID=c3559307-795b-66db-9844-8e974c88a1cf 5.5T 58M 5.2T 1% /crimea
https://unix.stackexchange.com/a/137868/16704解释了为什么最好使用UUID(liquidat,cc by-sa 3.0):
使用UUID的优点是它独立于操作系统为您的硬盘提供的实际设备编号。 图像是你向系统添加另一个硬盘,由于某种原因,操作系统决定你的旧磁盘现在是
sdb
而不是sba
。 如果fstab指向设备名称,则启动过程将被搞砸。 但是,如果是UUID,那就没问题了。
摘要:
sudo lshw -C disk # Checking the location of the new drive. It is /dev/sdb. sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT) sudo parted /dev/sdb print # Checking that the GPT has been created sudo parted /dev/sdb print unit MB print free # see 6001175MB size sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB # Creating partition label sudo mkfs.ext4 /dev/sdb1 # Creating the partition sudo nano /etc/fstab # Add line `/dev/sdb1 /crimea ext4 defaults 0 0` sudo mount -a # Remount /etc/fstab without rebooting