Переміщення / var, / home, щоб розділити розділ


59

Я намагаюся перемістити деякі папки (наприклад, /varта /home) в окремий розділ, прочитавши цей посібник:

3.2.1 Виберіть інтелектуальну схему розділів

Мені вдалося перемістити одну папку успішно, дотримуючись цього керівництва.

Однак, схоже, це не працює для декількох папок, і всі мої папки скидаються в розділ без належних папок.

Я хотів би встановити /var, /homeі /tmpна окремий розділ; хтось може мене на цьому направляти?


Ви зробили додатковий розділ для кожного з каталогів або лише один?
mreithub

@mreithub Я хотів би, щоб в ідеалі всі зберігалися в одному розділі і змінювалися лише в папці. таким чином мені набагато простіше, не турбуючись про простір.
toffee.beanns

1
Я не рекомендую ставити /varна окремий розділ. Користі від цього немає. Зберігайте всю ОС на одному розділі ( /). Використовуйте окремі розділи лише для речей, які не є ОС - дані користувачів /home, поштова котушка (якщо у вас є велика) в /var/mail, бази даних, наприклад, /var/lib/mysqlабо /srv
Gilles,

7
@Gilles " В цьому немає користі " ?????? (Можливо, мені потрібно більше знаків питання) Звичайно, в цьому є користь. / переважно статичний. / var майже повністю динамічний. Якщо ви монтуєте / var на окремому розділі, ви можете змонтувати кореневий розділ лише для читання. Існує маса ситуацій, коли це є гарною річчю ™.
Auspex

Відповіді:


73

1. Спочатку вам знадобиться трохи нерозподіленого простору для створення розділів для кожної точки монтажу (/ var, / home, / tmp). Використовуйте для цього Gparted.

2. Потім потрібно створити файлові системи для цих розділів (це можна зробити і з Gparted) або скористатися:

mkfs.ext4 /dev/sdaX

наприклад, створити нову файлову систему ext4 на пристрої / dev / sdaX (замінити / dev / sdaX власним пристроєм)

3. Встановіть нову файлову систему під / mnt

mkdir /mnt/var        
mount /dev/sdaX /mnt/var

4. Перейдіть до режиму однокористування, щоб під час процесу не було активності rw у каталозі

init 1

5. Введіть свій кореневий пароль.

6. Резервне копіювання даних лише в var (не в самий каталог / var)

cd /var
cp -ax * /mnt/var

7. Перейменуйте каталог / var після успішної передачі ваших даних.

cd /
mv var var.old

8. Створіть новий каталог var

mkdir var

9. Демонтуйте новий розділ.

umount /dev/sdaX

10. Перерахуйте його як / var

mount /dev/sdaX /var

11. Відредагуйте / etc / fstab файл, щоб включити новий розділ, причому / var є точкою монтажу, щоб він автоматично був встановлений під час завантаження.

/dev/sdaX       /var     ext4    defaults    0 0

12. Повторіть кроки 1-11 для / home та / tmp.

13. Нарешті поверніться до багатозадачного режиму.

init 5

так, я думав використовувати gparted. дякую за відповідь. я планую виділити 30 Гб місця для цих кількох папок фактично / home, / tmp, / var /, / opt, / usr /, чи є у вас приблизна оцінка того, скільки я повинен дати відповідно (для простого сервера хостингу) ?
toffee.beanns

1
я шукав використання lvm, чи буде це краще порівняно з gparted?
toffee.beanns

LVM - зовсім інша тема. LVM використовується як шар для створення логічних томів поверх фізичних жорстких дисків. Gparted - це лише інструмент для створення фізичних томів LVM.
cioby23

1
Насправді cp -ax * /mnt/varце погана ідея , оскільки вона ігнорує приховані файли / dirs. Віддавайте перевагу cp -ax . /mnt/var. (@ cioby23, я думаю, ви повинні оновити свою відповідь)
berbt

6
Будь ласка, додайте остаточну init 5відповідь.
Роберт Поллак

16

Якщо ви хочете використовувати їх на одному і тому ж розділі, ви можете використовувати LVMабо три простих кріплення кріплення.

Щоб створити рішення, що базується на зв’язуванні, ви

  1. створити розділ з файловою системою
  2. перейти в режим порятунку (одному користувачеві ще потрібні деякі папки)
  3. змонтуйте його як /mnt/data
  4. Перемістіть усі папки, які ви хочете перемістити. Використання cpі mv dir dir.oldможе бути безпечніше, але так як я зробив це після того, як встановити це не має значення для мене.

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. створити відповідні записи монтажу в fstab, наприклад, у мене є

    UUID=01234567-89abc-def0-1234-567890abcde /mnt/data         ext4          noatime,nodiratime,relatime                           0       0
    
    # Binds
    /mnt/data/opt                             /opt              none          bind                                                  0       0
    /mnt/data/home                            /home             none          bind                                                  0       0
    /mnt/data/usr                             /usr              none          bind                                                  0       0
    
  6. перезавантажити


На сторінці mount(8)чоловіка під nodiratimeним написано: If noatime option is set, this option is not needed.Чи є перевага надмірності включення його все-таки?
brannerchinese

5

Я особисто або пішов би з рішенням @ Fabian для прив’язки або використав символьні посилання:

  1. створити /etc/fstabзапис для нового розділу (використовуйте, blkidщоб отримати потрібний UUID для нового розділу і не забудьте mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. Використовуйте mount -aабо щось подібне для монтажу нового розділу

  3. перемістіть оригінальні папки до нового розділу:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. Створіть символьні посилання

    ln -s /mnt/data/var /var
    ln -s /mnt/data/home /home
    # ...
    

Хоча метод прив’язки-кріплення - це, мабуть, найкраще практичне рішення, я начебто віддаю перевагу цьому, оскільки ви не закінчуєтесь надмірно довгими списками dfта mountрозділами.


1
Що відбувається з відповідними методами, якщо щось хоче / var перед тим, як його встановити? Я швидше підозрюю, що метод зв'язування буде чистішим, але я справді не знаю.
Auspex

@Auspex У цьому відношенні не повинно бути різниці між двома методами (оскільки afaik всі локальні розділи в /etc/fstabмонтуються одночасно під час завантаження). Перед /mnt/dataвстановленням всі ваші символьні посилання були б "мертвими", тому будь-яка спроба читання / запису на них (і на неіснуючих підкаталогах) буде невдалою (з ENOENT, якщо я правильно пам'ятаю). З bind-mounts ви отримуєте майже такий самий результат, але програми можуть насправді записати на кореневий розділ (якщо вони намагаються бути розумними щодо неіснуючих каталогів)
mreithub

1
Ну, це не зовсім точно. Корінь встановлюється спочатку, і я спеціально запитав, оскільки порада "лише для читання" Debian зазначає можливість процесів, які хочуть отримати доступ до / var, перш ніж його встановити. Але в моєму випадку, коли я маю Raspberry Pi і встановив файлову систему, доступну лише для читання, увімкнено / (оскільки SD-карта пошкоджується, коли живлення виходить з машини), ви заохочуєте мене, що будь-який метод буде працювати . Нічого не збирається писати в кореневу файлову систему, оскільки це RO, тому будь-який випадок призведе до помилки.
Auspex

0

На додаток до процедури cioby23, мені також довелося:

  restorecon -R /var

для того, щоб запустити sshd.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.