Як перемістити / var до іншого існуючого розділу?


16

У мене є / розділ, який містить / var і занадто малий. У мене є ще один існуючий розділ з достатньою кількістю місця.

Ось мій df:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

Як я можу перемістити папку / var з sda1 на sda2?

Відповіді:


19

Перейдіть в єдиний користувальницький режим і переконайтеся, що будь-яке записування процесу /varприпинено. (Перевірте lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# ви можете видалити, /var.oldколи закінчите, щоб повернути місце
  • mkdir -p /var
  • mount -o bind /home/var /var
  • оновіть свою, /etc/fstabщоб зробити встановлення прив'язки постійним.

/etc/fstab

 /home/var /var        none    bind

Думає! Як я можу перейти в режим єдиного користувача? Чи залишиться папка 'var' у / home?
Jérémie

Так, завжди буде /home/varкаталог, якщо ви вирішите проблему таким чином. Один із способів ви можете перейти в єдиний користувальницький режим, перезавантажившись і вибравши режим єдиного користувача з меню завантаження.
Зоредаче

Я не дуже впевнений, чи це буде працювати весь час. Якщо ви використовуєте більш нову версію (wheezy), можливо, ви будете в порядку, оскільки у ній є файлова система / запустити. OTOH: на початку процесу завантаження файли можуть відкриватися в / var, перш ніж його встановити.
cstamas

1
@cstamas, наявність / var в окремій файловій системі підтримується , і завжди була. Мати / var окремо навіть пропонується як хороша річ у FHS та офіційних документах Debian.
Zoredache

Гаразд, я думаю, ти маєш рацію. Мені було просто дивно це робити із кріпленнями кріплення.
cstamas

5

Ви також можете використовувати:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

Це здається набагато простішим, ніж возитися з елементами fstab та монтувати.


1
Не впевнений, чому хтось би мав це голосувати. Це спрацювало б чудово. Сим-ланка повинна добре працювати. Я просто використовую кріплення кріплення для інших речей, тому я схильний думати про них першими.
Zoredache

1
Щоб додати до цього, це може бути не так безпечно, але насправді це працює. Я нещодавно робив це на машині до того, як розмістити його у виробництві. Буду обережним у використанні, якщо це машина, яка використовується або має багато процесів. У моєму випадку це був свіжий сервер, призначений для запуску лише tomcat.
AJ Brown

1
Symlinking / var працює, але замість того, щоб робити це, я вважаю за краще вводити запис у / etc / fstab, щоб пам’ятати себе, на який розділ / том я ставлю що і чому (ви можете додавати коментарі). Цей спосіб також більш зрозумілий для мене, що я повинен змінити в конфігурації, якщо мені потрібно щось змінити в апараті.
герлос

1
Я не бачу, як це буде працювати. Я хочу, щоб це працювало, але основні речі, такі як init use / var, чи не так?
Сью Спенс

1

Переміщення /varбез переходу в режим однокористувача

Коли я взяв на себе новий віртуальний сервер , який був ініціалізувати для мене хостингової компанією мого роботодавця, я створив додатковий логічний томи для varі homeякі були регулярні каталогами в кореневому розділі. Оскільки постачальник віртуальних серверів не надав KVM-інтерфейс, за допомогою якого я міг отримати доступ до сервера в режимі однокористування, наведені вище відповіді не застосовуються до моєї настройки. Я сподіваюся, що ця відповідь корисна для інших у подібній ситуації (я зберігав деталі LVM, але їх можна пропустити, оскільки це не особливо актуально, чи створена нова файлова система на логічному томі чи на диску диска).

Створіть та використовуйте нову /varфайлову систему з LVM

Створіть файлову систему для нового varтома, змонтуйте її (використовуючи тимчасовий каталог) та скопіюйте файли з поточного /varв нову файлову систему. Копіюючи файли з rsync, використовуйте його -a, --archiveпараметр для збереження часових -X, --xattrsпозначок , права власності, режимів тощо, а також його варіант збереження розширених атрибутів, таких як мітки безпеки, що використовуються AppArmor та SELinux.

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
sudo rsync -raX /var/ /var.new/

Оновіть таблицю файлової системи

Налаштуйте нову файлову систему, яка буде використовуватись як нова точка монтування /var, додавши наступний рядок до /etc/fstab. Зауважте, що 0використовується як номер пропуску (останнє поле), щоб файлова система не була автоматично перевірена ( fsck) після певної кількості перезавантажень (я не маю доступу для входу на сервер в режимі однокористування).

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

Оскільки я не можу перейти в режим одного користувача, перезавантажте комп'ютер, щоб використовувати цей новий том як /var.

Відновлення дискового простору з кореневої файлової системи

Після перезавантаження машини виконайте наступні дії для очищення тимчасового каталогу та видалення старих /varфайлів із кореневої файлової системи:

  1. Видаліть тимчасову точку кріплення:

    sudo rmdir /var.new
    
  2. Створіть нову точку монтування, щоб створити альтернативний шлях до файлів у старому /varкаталозі кореневої файлової системи (наразі "маскується" новою /varфайловою системою, встановленою в каталозі):

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.