如何从命令行创建和调整ext4分区?

分区 (例如fdisk
有哪些有用的命令用于从命令行分区其他硬盘驱动器? 由于大多数已发布的指南都指向GParted和其他图形工具,因此一些命令行序列的摘要会很有帮助。

调整 – 保留空间,写回和访问时间
如果驱动器100%已满,请如何删除预留的磁盘空间(默认情况下)。 由于我只是“数据”的二级驱动器,因此删除保留区域可确保整个驱动器可供使用。

我也对写入和回写以及跳过访问时间更新(文件和目录)感到好奇,以便提高性能。

首要的是:

! 警告 !!

这些命令是示例 。 删除分区,修改和格式化文件系统会破坏数据和/或可能会阻止您的计算机启动。 进行备份。 使用风险自负。 试试你不介意丢失所有数据的机器。 警告管理员。


要快速将驱动器设置为单个ext4分区……

  1. 查看检测到的“DISK”类设备

     lshw -C disk 
  2. 查看现有分区表

     fdisk -l 
  3. 编辑我所选设备的分区表(在本例中为“sdx”)

     fdisk /dev/sdx 

    在FDISK内,按:

    • d …来选择当前分区

    • n …创建一个新的分区

    • p …将其指定为P RIMARY分区

    • 1 …将其设置为1 ST主分区

    • w …来改变这种变化。

  4. 显示新的分区表:

     fdisk -l 
  5. 将新分区的文件系统格式化为类型ext4

     mkfs -t ext4 /dev/sdx1 
  6. 创建新驱动器将安装到的新目录:

     mkdir /storage mount /dev/sdx1 /storage 

TUNING

  1. 删除保留块(即设置为0%),因为此驱动器仅用于用户数据

     tune2fs -m 0 /dev/sdx1 
  2. 由于服务器在UPS上,因此设置回写,因此应用程序不会等待实际的磁盘写入

     tune2fs -o journal_data_writeback /dev/sdx1 
  3. 使用/etc/fstab在启动时挂载,并设置回写策略

     vi /etc/fstab 
  4. 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