Я новичок в Linux.

  • Мне было интересно, есть ли в Linux файл подкачки, похожий на Windows?(Если да, как я могу изменить его местоположение?)

  • Мой основной жесткий диск Linux не хватает места, я установил новый жесткий диск и установил его. Есть ли общий способ перенаправить все будущие установки приложений (и другие установки) на новый жесткий диск?

2 ответа2

1

Если вы готовы внести деструктивные изменения, я бы порекомендовал использовать диспетчер логических томов Linux (LVM2).

Это позволяет объединять несколько дисков разных размеров вместе, и вы можете добавлять диски, чтобы увеличить видимый размер логического "диска" без перезагрузки. Если вы используете файловую систему по умолчанию (ext4 наши дни), она также может выполнить онлайн-изменение размера файловой системы, поэтому снова не нужно перезагружаться.

Позвольте мне продемонстрировать это с использованием RAM-дисков (/dev/ram0 /dev/ram15). Сначала давайте рассмотрим разделы в моей системе:

# lvmdiskscan
  /dev/ram0  [      64.00 MiB]
  /dev/ram1  [      64.00 MiB]
  /dev/sda1  [      87.16 GiB]
  /dev/ram2  [      64.00 MiB]
  /dev/ram3  [      64.00 MiB]
  /dev/ram4  [      64.00 MiB]
  /dev/ram5  [      64.00 MiB]
  /dev/sda5  [       6.00 GiB]
  /dev/ram6  [      64.00 MiB]
  /dev/ram7  [      64.00 MiB]
  /dev/ram8  [      64.00 MiB]
  /dev/ram9  [      64.00 MiB]
  /dev/ram10 [      64.00 MiB]
  /dev/ram11 [      64.00 MiB]
  /dev/ram12 [      64.00 MiB]
  /dev/ram13 [      64.00 MiB]
  /dev/ram14 [      64.00 MiB]
  /dev/ram15 [      64.00 MiB]
  /dev/sdb1  [     294.09 GiB]
  /dev/sdb5  [       4.00 GiB]
  0 disks
  20 partitions
  0 LVM physical volume whole disks
  0 LVM physical volumes

Итак, давайте создадим установку на 2 диска, а позже я расширю ее до 3 дисков. Во-первых, отформатируйте мои "диски" для использования LVM. На этом этапе pv обозначает физический том, то есть реальное устройство, которое хранит данные:

# pvcreate /dev/ram0
  Physical volume "/dev/ram0" successfully created

# pvcreate /dev/ram1
  Physical volume "/dev/ram1" successfully created

# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/ram0  vg_main lvm2 a-   60.00m 60.00m
  /dev/ram1  vg_main lvm2 a-   60.00m 60.00m

затем создайте группу томов, которая по существу объединяет их в один неразмеченный "диск":

# vgcreate vg_main /dev/ram0 /dev/ram1
  Volume group "vg_main" successfully created

# vgs
  VG      #PV #LV #SN Attr   VSize   VFree
  vg_main   2   0   0 wz--n- 120.00m 120.00m

а теперь "разделить" этот присоединенный диск, создав логический том. Я собираюсь использовать все доступное пространство:

# lvcreate --extents 100%VG --name lv_main  vg_main
  Logical volume "lv_main" created

# lvs
  LV      VG      Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv_main vg_main -wi-a- 120.00m

Теперь у меня есть виртуальный раздел размером 120 МБ, на котором я могу хранить свои вещи. Узел устройства можно найти с помощью более подробной команды lvdisplay :

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vg_main/lv_main
  VG Name                vg_main
  LV UUID                tsKWeD-tjpB-yh32-Ong3-Jp7C-erT8-LRVlTg
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                120.00 MiB
  Current LE             30
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

Поэтому я должен поместить свою файловую систему в /dev/vg_main/lv_main . Это может означать копирование существующего с использованием такого инструмента, как dd , или в этой демонстрации создание нового:

# mkfs.ext4 -L fs_main /dev/vg_main/lv_main
mke2fs 1.42 (29-Nov-2011)
Discarding device blocks: done
Filesystem label=fs_main
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
30720 inodes, 122880 blocks
6144 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
15 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
    8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Теперь я могу смонтировать эту (пустую) файловую систему и заполнить ее некоторыми тестовыми данными:

# mkdir /tmp/demo

# mount /dev/vg_main/lv_main /tmp/demo

# df -h /tmp/demo
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_main-lv_main  117M  5.6M  105M   6% /tmp/demo

# ls /tmp/demo
lost+found

# dd if=/dev/zero of=/tmp/demo/bigfile
dd: writing to `/tmp/demo/bigfile': No space left on device
226701+0 records in
226700+0 records out
116070400 bytes (116 MB) copied, 0.982532 s, 118 MB/s

# ls -lh /tmp/demo
total 111M
-rw-r--r-- 1 root root 111M Mar 10 18:50 bigfile
drwx------ 2 root root  12K Mar 10 18:47 lost+found

Моя файловая система теперь полностью заполнена! Это можно проверить на уровне файловой системы, используя df и уровень объединенного диска, используя vgdisplay и проверив Free PE (Physical Extents) / Size (bytes):

# df -h /tmp/demo
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_main-lv_main  117M  117M     0 100% /tmp/demo

# vgdisplay
  --- Volume group ---
  VG Name               vg_main
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               120.00 MiB
  PE Size               4.00 MiB
  Total PE              30
  Alloc PE / Size       30 / 120.00 MiB
  Free  PE / Size       0 / 0
  VG UUID               zWxBml-xdZU-8wgh-IK1w-ij1N-Z3eo-sRtri3

Так что теперь давайте сделаем это больше! Давайте представим, что /dev/ram2 - это прекрасный новый диск SATA, который я только что подключил к своей работающей системе, и я хочу использовать его для увеличения размера моей полной файловой системы.

Как и раньше, используйте pvcreate чтобы подготовить "диск" для использования с LVM:

# pvcreate /dev/ram2
  Physical volume "/dev/ram2" successfully created

Теперь мы расширяем наш присоединенный диск (группа томов) и проверяем, что у vg_main есть свободное место:

# vgextend vg_main /dev/ram2
  Volume group "vg_main" successfully extended

# vgdisplay
  --- Volume group ---
  VG Name               vg_main
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               180.00 MiB
  PE Size               4.00 MiB
  Total PE              45
  Alloc PE / Size       30 / 120.00 MiB
  Free  PE / Size       15 / 60.00 MiB
  VG UUID               zWxBml-xdZU-8wgh-IK1w-ij1N-Z3eo-sRtri3

Это еще не освобождает пространство в нашей файловой системе, поскольку размер раздела (логического тома) такой же, как и до того, как мы добавили наш новый диск:

# df -h /tmp/demo
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_main-lv_main  117M  117M     0 100% /tmp/demo

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vg_main/lv_main
  VG Name                vg_main
  LV UUID                tsKWeD-tjpB-yh32-Ong3-Jp7C-erT8-LRVlTg
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                120.00 MiB
  Current LE             30
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

Здесь приходит волшебство - мы изменяем размер логического тома и сообщаем LVM2 изменить размер файловой системы внутри:

# lvresize --extents 100%VG --resizefs /dev/vg_main/lv_main
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/mapper/vg_main-lv_main is mounted.


WARNING!!!  The filesystem is mounted.   If you continue you ***WILL***
cause ***SEVERE*** filesystem damage.


Do you really want to continue<n>?

Это страшное предупреждение на самом деле не связано с изменением размера файловой системы, а с тем, что fsck перед полетом, который LVM2 хочет сделать с смонтированной файловой системой. Очевидно, мы отклоняем эту страшную подсказку и отвечаем "нет":

Do you really want to continue<n>? no

check aborted.
  Extending logical volume lv_main to 180.00 MiB
  Logical volume lv_main successfully resized
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/dm-0 is mounted on /tmp/demo; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/dm-0 to 184320 (1k) blocks.
The filesystem on /dev/dm-0 is now 184320 blocks long.

Затем LVM2 приступает к онлайн-изменению размера файловой системы, которую мы запросили. Вуаля!

# df -h /tmp/demo
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_main-lv_main  175M  117M   49M  71% /tmp/demo

Теперь я могу создать еще файлы:

# dd if=/dev/zero of=/tmp/demo/another_file
dd: writing to `/tmp/demo/another_file': No space left on device
118751+0 records in
118750+0 records out
60800000 bytes (61 MB) copied, 0.556078 s, 109 MB/s

# ls -lh /tmp/demo
total 169M
-rw-r--r-- 1 root root  58M Mar 10 19:04 another_file
-rw-r--r-- 1 root root 111M Mar 10 18:52 bigfile
drwx------ 2 root root  12K Mar 10 18:47 lost+found
0

1) В Linux нет файла подкачки, в Linux есть раздел подкачки. Вы можете изменить его местоположение после первоначальной настройки, отредактировав файл /etc /fstab от имени root, чтобы изменить раздел подкачки, но вам нужно создать еще один.

2) Я не знаю, как легко добиться этого, потому что Linux хранит исполняемые файлы, разбросанные по системным каталогам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .